New architecture

This commit is contained in:
Sergey Solovyev
2012-09-23 19:25:05 +04:00
parent bb2bf70cc2
commit b2fe1d43c9
14 changed files with 36 additions and 221 deletions

View File

@@ -3,7 +3,6 @@ package org.solovyev.android.calculator;
import jscl.AbstractJsclArithmeticException;
import jscl.NumeralBase;
import jscl.NumeralBaseException;
import jscl.math.Expression;
import jscl.math.Generic;
import jscl.text.ParseInterruptedException;
import org.jetbrains.annotations.NotNull;
@@ -238,8 +237,7 @@ public class CalculatorImpl implements Calculator, CalculatorEventListener {
expression = expression.trim();
if (StringUtils.isEmpty(expression)) {
final CalculatorOutputImpl data = new CalculatorOutputImpl("", operation, Expression.valueOf(""));
fireCalculatorEvent(newCalculationEventData(operation, expression, sequenceId), CalculatorEventType.calculation_result, data);
fireCalculatorEvent(newCalculationEventData(operation, expression, sequenceId), CalculatorEventType.calculation_result, CalculatorOutputImpl.newEmptyOutput(operation));
} else {
preparedExpression = preprocessor.process(expression);
@@ -252,7 +250,7 @@ public class CalculatorImpl implements Calculator, CalculatorEventListener {
// NOTE: toString() method must be called here as ArithmeticOperationException may occur in it (just to avoid later check!)
result.toString();
final CalculatorOutputImpl data = new CalculatorOutputImpl(operation.getFromProcessor().process(result), operation, result);
final CalculatorOutput data = CalculatorOutputImpl.newOutput(operation.getFromProcessor().process(result), operation, result);
fireCalculatorEvent(newCalculationEventData(operation, expression, sequenceId), CalculatorEventType.calculation_result, data);
} catch (AbstractJsclArithmeticException e) {

View File

@@ -2,6 +2,7 @@ package org.solovyev.android.calculator;
import jscl.math.Generic;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.solovyev.android.calculator.jscl.JsclOperation;
/**
@@ -17,6 +18,8 @@ public interface CalculatorOutput {
@NotNull
JsclOperation getOperation();
@NotNull
// null in case of empty expression
@Nullable
Generic getResult();
}

View File

@@ -2,6 +2,7 @@ package org.solovyev.android.calculator;
import jscl.math.Generic;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.solovyev.android.calculator.jscl.JsclOperation;
/**
@@ -11,7 +12,7 @@ import org.solovyev.android.calculator.jscl.JsclOperation;
*/
public class CalculatorOutputImpl implements CalculatorOutput {
@NotNull
@Nullable
private Generic result;
@NotNull
@@ -20,12 +21,26 @@ public class CalculatorOutputImpl implements CalculatorOutput {
@NotNull
private JsclOperation operation;
public CalculatorOutputImpl(@NotNull String stringResult, @NotNull JsclOperation operation, @NotNull Generic result) {
private CalculatorOutputImpl(@NotNull String stringResult,
@NotNull JsclOperation operation,
@Nullable Generic result) {
this.stringResult = stringResult;
this.operation = operation;
this.result = result;
}
@NotNull
public static CalculatorOutput newOutput(@NotNull String stringResult,
@NotNull JsclOperation operation,
@NotNull Generic result) {
return new CalculatorOutputImpl(stringResult, operation, result);
}
@NotNull
public static CalculatorOutput newEmptyOutput(@NotNull JsclOperation operation) {
return new CalculatorOutputImpl("", operation, null);
}
@Override
@NotNull
public String getStringResult() {
@@ -39,7 +54,7 @@ public class CalculatorOutputImpl implements CalculatorOutput {
}
@Override
@NotNull
@Nullable
public Generic getResult() {
return result;
}