00001 /* 00002 * OpenMobileIS - a free Java(TM) Framework for mobile applications Java(TM) 00003 * Copyright (C) 2004-2005 Philippe Delrieu 00004 * All rights reserved. 00005 * Contact: openmobileis@e-care.fr 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00020 * USA 00021 * 00022 * Author : Philippe Delrieu 00023 * 00024 * Modifications : 00025 * 2004 Creation P.Delrieu 00026 * 2004 Modified by Romain Beaugrand 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 }