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
00031 import org.openmobileis.database.fastobjectdb.FODBStringIndexDescriptor;
00032 import org.openmobileis.database.fastobjectdb.db.exception.FODBException;
00033 import org.openmobileis.database.fastobjectdb.db.index.FODBIndex;
00034 import org.openmobileis.database.fastobjectdb.db.index.FODBIntIndex;
00035 import org.openmobileis.database.fastobjectdb.db.index.FODBLongIndex;
00036 import org.openmobileis.database.fastobjectdb.db.index.FODBStringIndex;
00037
00044 public final class FODBSodaIndexPath {
00045 private FODBIndex index;
00046 private SodaIndexComparator comparator;
00050 public FODBSodaIndexPath(FODBIndex index) {
00051 super();
00052 this.index = index;
00053 if (index instanceof FODBStringIndex) {
00054 FODBStringIndexDescriptor descr = (FODBStringIndexDescriptor)index.getIndexDescriptor();
00055 comparator = new SodaStringIndexComparator(descr.isCaseSensitive());
00056 } else if (index instanceof FODBIntIndex) {
00057 comparator = new SodaIntIndexComparator();
00058 } else if (index instanceof FODBLongIndex) {
00059 comparator = new SodaLongIndexComparator();
00060 }
00061 }
00062 SodaIndexComparator getIndexComparator() {
00063 return comparator;
00064 }
00065
00066 void mergeIndexComporator(SodaIndexComparator index) {
00067 comparator.mergeIndexComporator(index);
00068 }
00069
00070 public String getIndexMember() {
00071 return this.index.getIndexDescriptor().getMemberName();
00072 }
00073
00074 public boolean setOperand(Object ope) {
00075 if (comparator != null) {
00076 return comparator.setOperand(ope);
00077 }
00078 return false;
00079 }
00080 public long[] execute() throws FODBException {
00081 return index.query(comparator);
00082 }
00083
00084 public boolean addComparator(int comp) {
00085 if (comparator != null) {
00086 return comparator.addComparator(comp);
00087 }
00088 return false;
00089
00090 }
00091
00092 }