앞서 구성한 SyntaxBaseDTO 클래스를 상속 받은 class 를 구성 합니다.
간단한 연산 (+, -, *, / ) 만을 대상으로 합니다.
public class CalculationSyntaxBaseDTO extends SyntaxBaseDTO {
public CalculationSyntaxBaseDTO(String syntax) {
super(syntax);
initResource();
}
private void initResource() {
parseCurrentSyntaxValue();
}
@Override
public boolean parseCurrentSyntaxValue() {
// TODO Auto-generated method stub
this.setMainType(MAIN_TYPE.CALCULATION_TYPE);
if (CommonBaseUtility.isEmptyValue(syntax)) {
return false;
}
if ( isConstValue() ) {
return true;
}
specialKeySet = CommonParserUtility.parseSpecialKeyValues(syntax);
variableMap = CommonParserUtility.parseVariableValues(syntax);
return true;
}
public String getValue(Map<String,String> transMap) {
if ( isConstValue() ) {
return syntax;
}
String trStr = syntax;
if ( transMap != null ) {
for ( String s : transMap.keySet()) {
if ( specialKeySet.contains(s) || variableMap.containsKey(s)) {
trStr = trStr.replaceAll("\\b" + s + "\\b", transMap.get(s));
}
if ( s.equals(trStr.trim())) {
trStr = transMap.get(s);
break;
}
}
}
if ( "true".equalsIgnoreCase(trStr.trim())) {
return trStr.trim();
} else if ( "false".equalsIgnoreCase(trStr.trim())) {
return trStr.trim();
}
return CommonParserUtility.parseStringBasicCalulation(trStr)+"";
}
public boolean getLogicalValue(Map<String,String> transMap) {
double d = Double.NaN;
if ( isConstValue() ) {
d = Double.parseDouble(syntax);
if ( Double.isNaN(d) || d == 0.0 )
return false;
else
return true;
}
String trStr = syntax;
if ( transMap != null ) {
for ( String s : transMap.keySet()) {
trStr = trStr.replaceAll("\\b" + s + "\\b", transMap.get(s));
if ( s.equals(trStr.trim())) {
trStr = transMap.get(s);
break;
}
}
}
if ( trStr != null )
trStr = trStr.trim();
if ( trStr.equalsIgnoreCase("true")) {
return true;
}
if ( trStr.equalsIgnoreCase("false")) {
return false;
}
d = CommonParserUtility.parseStringBasicCalulation(trStr);
if ( Double.isNaN(d) || d == 0.0 )
return false;
else
return true;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
댓글 없음:
댓글 쓰기