1 package com.daffodilwoods.daffodildb.server.sql99.utils.parser; 2 3 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*; 4 import com.daffodilwoods.daffodildb.server.serversystem.*; 5 import com.daffodilwoods.daffodildb.server.sql99.common.*; 6 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*; 14 import com.daffodilwoods.daffodildb.utils.parser.*; 15 import com.daffodilwoods.database.general.*; 16 import com.daffodilwoods.database.resource.*; 17 18 public class ConditionParser { 19 20 static ProductionRules ruleBVE; 21 public ConditionParser() { 22 } 23 24 public static booleanvalueexpression parseCondition(String inputCondition) throws DException { 25 initializeBVE(); 26 booleanvalueexpression condition = (booleanvalueexpression) ruleBVE.parseUsingTokens(inputCondition); 27 condition.getColumnDetails(); 28 return condition; 29 } 30 31 public static booleanvalueexpression parseConstraintsCondition(String inputCondition) throws DException { 32 initializeBVE(); 33 booleanvalueexpression condition = (booleanvalueexpression) ruleBVE.parseUsingTokens(inputCondition); 34 ColumnDetails[] columns = condition.getColumnDetails(); 35 for (int i = 0, length = columns.length; i < length; i++) { 36 if (columns[i].getType() == TypeConstants.REFERENCE) { 37 columns[i].setSessionConditionFlag(); 38 } 39 } 40 return condition; 41 } 42 43 public static booleanvalueexpression parseCondition(String conditionBVE, _ServerSession serverSession, QualifiedIdentifier tableName) throws DException { 44 initializeBVE(); 45 booleanvalueexpression condition = (booleanvalueexpression) ruleBVE.parseUsingTokens(conditionBVE); 46 ColumnDetails[] columns = condition.getColumnDetails(); 47 _ColumnCharacteristics clmchs = serverSession.getColumnCharacteristics(tableName); 48 49 for (int i = 0, length = columns.length; i < length; i++) { 50 if (columns[i].getType() == TypeConstants.REFERENCE) { 51 columns[i].setDatatype(clmchs.getColumnType(clmchs.getColumnIndex(columns[i].getColumn()))); 52 columns[i].setSize(clmchs.getSize(clmchs.getColumnIndex(columns[i].getColumn()))); 53 columns[i].setSessionConditionFlag(); 54 } 55 } 56 57 return condition; 58 } 59 60 private static void initializeBVE() throws DException { 61 if (ruleBVE == null) { 62 ruleBVE = Parser.findProductionRule("boolean value expression"); 63 } 64 } 65 66 public void initializeRule() throws DException { 67 if (ruleBVE == null) { 68 ruleBVE = Parser.findProductionRule("boolean value expression"); 69 } 70 } 71 } 72 | Popular Tags |