양 변으로 구성된 값을 비교하기 하여 그 결과를 참, 거짓으로 구성하기 위한 class 입니다.
양 변의 값은 대부분 앞서 구성한 계산 class 를 활용하여 구성하게 됩니다.
public class CompareSyntaxBaseDTO extends SyntaxBaseDTO {
private SyntaxBaseDTO leftDTO = null;
private SyntaxBaseDTO rightDTO = null;
private int markType = -1;
public CompareSyntaxBaseDTO(String syntax) {
super(syntax);
initResource();
}
private void initResource() {
parseCurrentSyntaxValue();
}
@Override
public boolean parseCurrentSyntaxValue() {
// TODO Auto-generated method stub
this.setMainType(MAIN_TYPE.COMPARE_TYPE);
if ( isConstValue() ) {
return true;
}
if ( CommonBaseUtility.isEmptyValue(syntax)) {
return false;
}
specialKeySet = CommonParserUtility.parseSpecialKeyValues(syntax);
variableMap = CommonParserUtility.parseVariableValues(syntax);
if ( CommonParserUtility.hasCompareValue(syntax)) {
Map<String,String> parsedMap = CommonParserUtility.parseStringCompareBlocks(syntax);
String rightStr = parsedMap.get("RIGHT");
String markStr = parsedMap.get("MARK");
String leftStr = parsedMap.get("LEFT");
if ( !CommonBaseUtility.isEmptyValue(markStr)) {
markStr = markStr.trim();
switch ( markStr ) {
case ">" :
markType = 1;
break;
case ">=" :
markType = 2;
break;
case "<" :
markType = 3;
break;
case "<=" :
markType = 4;
break;
case "==" :
markType = 5;
break;
case "!=" :
markType = 6;
break;
default :
markType = -1;
break;
}
}
if ( CommonParserUtility.hasCompareValue(rightStr) ) {
rightDTO = new CompareSyntaxBaseDTO(rightStr);
} else {
rightDTO = new CalculationSyntaxBaseDTO(rightStr);
}
if ( CommonParserUtility.hasCompareValue(leftStr)) {
leftDTO = new CompareSyntaxBaseDTO(leftStr);
} else {
leftDTO = new CalculationSyntaxBaseDTO(leftStr);
}
}
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 ( leftDTO == null || rightDTO == null || markType == -1 )
return false;
String lv = leftDTO.getValue(transMap);
if ( leftDTO.getMainType() == MAIN_TYPE.COMPARE_TYPE ) {
lv = leftDTO.getLogicalValue(transMap)+"";
}
String rv = rightDTO.getValue(transMap);
if ( rightDTO.getMainType() == MAIN_TYPE.COMPARE_TYPE ) {
rv = rightDTO.getLogicalValue(transMap)+"";
}
boolean result = false;
if ( CommonBaseUtility.isNumericValue(lv)
&& CommonBaseUtility.isNumericValue(rv) ) {
float left = Float.parseFloat(lv);
float right = Float.parseFloat(rv);
switch(markType) {
case 1 :
result = left > right;
break;
case 2 :
result = left >= right;
break;
case 3 :
result = (left < right);
break;
case 4 :
result = (left <= right);
break;
case 5 :
result = (left == right );
break;
case 6 :
result = (left != right );
break;
default :
result = false;
}
} else if ( !CommonBaseUtility.isEmptyValue(lv)
&& !CommonBaseUtility.isEmptyValue(rv) ) {
switch(markType) {
case 5 :
result = (lv.equals(rv) );
break;
case 6 :
result = (!lv.equals(rv));
break;
default :
result = false;
}
}
return result;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
댓글 없음:
댓글 쓰기