앞서 구성되었던 CalucationSyntaxBaseDTO, CompareSyntaxBaseDTO 등의 class를
사용하여 각 구분의 and or 의 항목을 연결하여 최종 참, 거짓으로 가져오기 위한 calss
public class LogicSyntaxBaseDTO extends SyntaxBaseDTO {
private SyntaxBaseDTO leftDTO = null;
private SyntaxBaseDTO rightDTO = null;
private int markType = -1;
public LogicSyntaxBaseDTO(String syntax) {
super(syntax);
initResource();
}
private void initResource() {
parseCurrentSyntaxValue();
}
@Override
public boolean parseCurrentSyntaxValue() {
// TODO Auto-generated method stub
this.setMainType(MAIN_TYPE.LOGIC_TYPE);
if (CommonBaseUtility.isEmptyValue(syntax)) {
return false;
}
if ( isConstValue() ) {
return true;
}
specialKeySet = CommonParserUtility.parseSpecialKeyValues(syntax);
variableMap = CommonParserUtility.parseVariableValues(syntax);
if ( CommonParserUtility.hasLogicalValue(syntax) ) {
List<Map<String,String>> logicMapList = CommonParserUtility.parseStringLogicalBlocks(syntax);
String rightStr = logicMapList.get(0).get("RIGHT");
String markStr = logicMapList.get(0).get("MARK");
String leftStr = logicMapList.get(0).get("LEFT");
if ( !CommonBaseUtility.isEmptyValue(markStr)) {
markStr = markStr.trim().toUpperCase();
if ( markStr.equals("AND") || markStr.equals("&&")) {
markType = 1;
} else {
markType = 2;
}
}
if ( CommonParserUtility.hasCompareValue(rightStr) ) {
rightDTO = new CompareSyntaxBaseDTO(rightStr);
} else {
rightDTO = new CalculationSyntaxBaseDTO(rightStr);
}
if ( logicMapList != null && logicMapList.size() > 1 ) {
leftDTO = new LogicSyntaxBaseDTO(logicMapList.get(0).get("LEFT"));
} else {
if ( CommonParserUtility.hasCompareValue(leftStr) ) {
leftDTO = new CompareSyntaxBaseDTO(leftStr);
} else {
leftDTO = new CalculationSyntaxBaseDTO(leftStr);
}
}
} else {
if ( CommonParserUtility.hasLogicalValue(syntax) ) {
} else if ( CommonParserUtility.hasCompareValue(syntax)) {
} else if ( CommonParserUtility.hasCalculationValue(syntax)) {
}
}
return true;
}
@Override
public String getValue(Map<String, String> transMap) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getLogicalValue(Map<String, String> transMap) {
// TODO Auto-generated method stub
if ( this.markType == 2 ) {
if ( rightDTO.getLogicalValue(transMap) ) {
return true;
}
if ( leftDTO == null ) {
System.out.println ( "Left class is null!!! Syntax is " + this.getSyntax() );
return false;
}
return leftDTO.getLogicalValue(transMap);
} else {
if ( !rightDTO.getLogicalValue(transMap)) {
return false;
}
return leftDTO.getLogicalValue(transMap);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println ( false && false && false || true );
}
}
댓글 없음:
댓글 쓰기