00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 package org.openmobileis.database.fastobjectdb.db.query.soda;
00030
00037 public abstract class SodaIndexComparator {
00038 public static final int INF_EQUALS_TRAVERSAL = 1;
00039 public static final int SUP_EQUALS_TRAVERSAL = 2;
00040 public static final int FULL_TRAVERSAL = 3;
00041
00042 public abstract boolean setOperand(Object ope);
00043
00044 public abstract boolean addComparator(int comparator);
00045
00046 public abstract int getSearchAlgo();
00047 public abstract void mergeIndexComporator(SodaIndexComparator index);
00048
00049 protected int getTraversalWayWithComparator(int comp) {
00050 switch (comp) {
00051 case BaseConstraint.EQUALS:
00052 case BaseConstraint.EQUALSMALLER:
00053 case BaseConstraint.SMALLER:
00054 case BaseConstraint.IDENTITY:
00055 case BaseConstraint.LIKE:
00056 return SodaIndexComparator.INF_EQUALS_TRAVERSAL;
00057 case BaseConstraint.EQUALGREATER:
00058 case BaseConstraint.GREATER:
00059 return SodaIndexComparator.SUP_EQUALS_TRAVERSAL;
00060 case BaseConstraint.NOT:
00061 case BaseConstraint.CONTAINS:
00062 case BaseConstraint.DISTINCT:
00063 default:
00064 return SodaIndexComparator.FULL_TRAVERSAL;
00065 }
00066 }
00067
00068
00069
00070 }