public Unknown(String value) { super(value, Collections.singletonList(new Expression("unknown", new Expression(value))), null); } }
@Override public List<IDictionary.IWord> getWords() { String[] splitPhrase = value.split(" "); List<IDictionary.IWord> words = new LinkedList<>(); Arrays.stream(splitPhrase).forEach(word -> { Expression unusedExp = new Expression("unused", new Expression(word)); words.add(new Word(word, Collections.singletonList(unusedExp), null, 0, true)); }); return words; }
@Override public Expression parseExpression(String expression) { expression = expression.trim(); Expression exp; int indexOfOpening = expression.indexOf("("); int indexOfClosing = expression.lastIndexOf(")"); if (indexOfOpening > -1 && indexOfClosing > -1) { String tmp = expression.substring(0, indexOfOpening); exp = new Expression(tmp.trim()); try { String subExpressions = expression.substring(indexOfOpening + 1, indexOfClosing); List<Expression> expressions = parseExpressions(subExpressions); exp.setSubExpressions(expressions); } catch (Exception e) { log.error("Error while parsing Expression: %s, indexOfOpening: %s, indexOfClosing: %s, message: %s", expression, indexOfOpening, indexOfClosing, e.getLocalizedMessage()); } } else { exp = new Expression(expression); } return expressionFactory.getExpression(exp); }
@Override public Expression getExpression(Expression exp) { try { if (exp != null) { if (expressions.containsKey(exp.getExpressionName())) { Expression tmpExp = exp; exp = (Expression) expressions.get(exp.getExpressionName()).clone(); exp.setSubExpressions(tmpExp.getSubExpressions()); } else { if (exp.getSubExpressions().length == 0 && CharacterUtilities.isNumber(exp.getExpressionName(), false)) { exp = new Value(exp.getExpressionName()); } else { exp = new Expression(exp.getExpressionName(), exp.getSubExpressions()); } } exp.setDomain(exp.getDomain()); } } catch (CloneNotSupportedException e) { log.error(e.getLocalizedMessage(), e); } return exp; } }