From 36750a11e78eb72b419e0ec45b008c22b3d50a2d Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Mon, 20 Mar 2017 10:21:10 +1100 Subject: [PATCH] created ValueFunction --- .../bytezone/diskbrowser/visicalc/Abs.java | 17 ++--------- .../bytezone/diskbrowser/visicalc/Acos.java | 16 ++-------- .../bytezone/diskbrowser/visicalc/Asin.java | 17 ++--------- .../bytezone/diskbrowser/visicalc/Atan.java | 17 ++--------- .../bytezone/diskbrowser/visicalc/Cos.java | 17 ++--------- .../bytezone/diskbrowser/visicalc/Exp.java | 17 ++--------- .../bytezone/diskbrowser/visicalc/Int.java | 11 ++----- .../diskbrowser/visicalc/IsError.java | 11 ++----- .../bytezone/diskbrowser/visicalc/IsNa.java | 11 ++----- src/com/bytezone/diskbrowser/visicalc/Ln.java | 17 ++--------- .../bytezone/diskbrowser/visicalc/Log10.java | 17 ++--------- .../bytezone/diskbrowser/visicalc/Lookup.java | 1 - .../bytezone/diskbrowser/visicalc/Sin.java | 17 ++--------- .../bytezone/diskbrowser/visicalc/Sqrt.java | 17 ++--------- .../bytezone/diskbrowser/visicalc/Tan.java | 17 ++--------- .../diskbrowser/visicalc/ValueFunction.java | 30 +++++++++++++++++++ .../diskbrowser/visicalc/ValueList.java | 1 - 17 files changed, 58 insertions(+), 193 deletions(-) create mode 100644 src/com/bytezone/diskbrowser/visicalc/ValueFunction.java diff --git a/src/com/bytezone/diskbrowser/visicalc/Abs.java b/src/com/bytezone/diskbrowser/visicalc/Abs.java index baff109..d306528 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Abs.java +++ b/src/com/bytezone/diskbrowser/visicalc/Abs.java @@ -1,29 +1,16 @@ package com.bytezone.diskbrowser.visicalc; -public class Abs extends Function +public class Abs extends ValueFunction { Abs (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@ABS(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + void setValue () { - source.calculate (); - - if (!source.isValueType (ValueType.VALUE)) - { - valueType = source.getValueType (); - return; - } - value = Math.abs (source.getValue ()); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Acos.java b/src/com/bytezone/diskbrowser/visicalc/Acos.java index cb0a7a5..7f5355a 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Acos.java +++ b/src/com/bytezone/diskbrowser/visicalc/Acos.java @@ -1,29 +1,17 @@ package com.bytezone.diskbrowser.visicalc; -public class Acos extends Function +public class Acos extends ValueFunction { Acos (Cell cell, String text) { super (cell, text); assert text.startsWith ("@ACOS(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + public void setValue () { - source.calculate (); - - if (!source.isValueType (ValueType.VALUE)) - { - valueType = source.getValueType (); - return; - } - value = Math.acos (source.getValue ()); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Asin.java b/src/com/bytezone/diskbrowser/visicalc/Asin.java index 7e0fac1..f2afd45 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Asin.java +++ b/src/com/bytezone/diskbrowser/visicalc/Asin.java @@ -1,29 +1,16 @@ package com.bytezone.diskbrowser.visicalc; -public class Asin extends Function +public class Asin extends ValueFunction { Asin (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@ASIN(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + public void setValue () { - source.calculate (); - - if (!source.isValueType (ValueType.VALUE)) - { - valueType = source.getValueType (); - return; - } - value = Math.asin (source.getValue ()); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Atan.java b/src/com/bytezone/diskbrowser/visicalc/Atan.java index 3807426..32e00ea 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Atan.java +++ b/src/com/bytezone/diskbrowser/visicalc/Atan.java @@ -1,29 +1,16 @@ package com.bytezone.diskbrowser.visicalc; -public class Atan extends Function +public class Atan extends ValueFunction { Atan (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@ATAN(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + public void setValue () { - source.calculate (); - - if (!source.isValueType (ValueType.VALUE)) - { - valueType = source.getValueType (); - return; - } - value = Math.atan (source.getValue ()); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Cos.java b/src/com/bytezone/diskbrowser/visicalc/Cos.java index 35b0359..96cf3e8 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Cos.java +++ b/src/com/bytezone/diskbrowser/visicalc/Cos.java @@ -1,29 +1,16 @@ package com.bytezone.diskbrowser.visicalc; -public class Cos extends Function +public class Cos extends ValueFunction { Cos (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@COS(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + public void setValue () { - source.calculate (); - - if (!source.isValueType (ValueType.VALUE)) - { - valueType = source.getValueType (); - return; - } - value = Math.cos (source.getValue ()); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Exp.java b/src/com/bytezone/diskbrowser/visicalc/Exp.java index b117e86..de4f884 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Exp.java +++ b/src/com/bytezone/diskbrowser/visicalc/Exp.java @@ -1,29 +1,16 @@ package com.bytezone.diskbrowser.visicalc; -public class Exp extends Function +public class Exp extends ValueFunction { Exp (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@EXP(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + public void setValue () { - source.calculate (); - - if (!source.isValueType (ValueType.VALUE)) - { - valueType = source.getValueType (); - return; - } - value = Math.exp (source.getValue ()); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Int.java b/src/com/bytezone/diskbrowser/visicalc/Int.java index 0585b9b..cf9359e 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Int.java +++ b/src/com/bytezone/diskbrowser/visicalc/Int.java @@ -1,23 +1,16 @@ package com.bytezone.diskbrowser.visicalc; -public class Int extends Function +public class Int extends ValueFunction { Int (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@INT(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + public void setValue () { - source.calculate (); - value = (int) source.getValue (); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/IsError.java b/src/com/bytezone/diskbrowser/visicalc/IsError.java index 2862a33..0791937 100644 --- a/src/com/bytezone/diskbrowser/visicalc/IsError.java +++ b/src/com/bytezone/diskbrowser/visicalc/IsError.java @@ -1,15 +1,11 @@ package com.bytezone.diskbrowser.visicalc; -class IsError extends Function +class IsError extends ValueFunction { public IsError (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@ISERROR(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override @@ -19,11 +15,8 @@ class IsError extends Function } @Override - public void calculate () + public void setValue () { - source.calculate (); - value = source.isValueType (ValueType.ERROR) ? 1 : 0; - valueType = ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/IsNa.java b/src/com/bytezone/diskbrowser/visicalc/IsNa.java index fd49671..d509e11 100644 --- a/src/com/bytezone/diskbrowser/visicalc/IsNa.java +++ b/src/com/bytezone/diskbrowser/visicalc/IsNa.java @@ -1,15 +1,11 @@ package com.bytezone.diskbrowser.visicalc; -public class IsNa extends Function +public class IsNa extends ValueFunction { IsNa (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@ISNA(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override @@ -19,11 +15,8 @@ public class IsNa extends Function } @Override - public void calculate () + public void setValue () { - source.calculate (); - value = source.isValueType (ValueType.NA) ? 1 : 0; - valueType = source.getValueType (); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Ln.java b/src/com/bytezone/diskbrowser/visicalc/Ln.java index 21b55a6..bb3ec1b 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Ln.java +++ b/src/com/bytezone/diskbrowser/visicalc/Ln.java @@ -1,29 +1,16 @@ package com.bytezone.diskbrowser.visicalc; -public class Ln extends Function +public class Ln extends ValueFunction { Ln (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@LN(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + public void setValue () { - source.calculate (); - - if (!source.isValueType (ValueType.VALUE)) - { - valueType = source.getValueType (); - return; - } - value = Math.log (source.getValue ()); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Log10.java b/src/com/bytezone/diskbrowser/visicalc/Log10.java index c2230f6..9fad0fc 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Log10.java +++ b/src/com/bytezone/diskbrowser/visicalc/Log10.java @@ -1,29 +1,16 @@ package com.bytezone.diskbrowser.visicalc; -public class Log10 extends Function +public class Log10 extends ValueFunction { Log10 (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@LOG10(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + public void setValue () { - source.calculate (); - - if (!source.isValueType (ValueType.VALUE)) - { - valueType = source.getValueType (); - return; - } - value = Math.log10 (source.getValue ()); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Lookup.java b/src/com/bytezone/diskbrowser/visicalc/Lookup.java index 8c36baa..ce2efd7 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Lookup.java +++ b/src/com/bytezone/diskbrowser/visicalc/Lookup.java @@ -57,7 +57,6 @@ class Lookup extends Function { Address adjacentAddress = isVertical ? target.nextColumn () : target.nextRow (); - // Sheet parent = cell.getParent (); if (cell.cellExists (adjacentAddress)) { value = cell.getCell (adjacentAddress).getValue (); diff --git a/src/com/bytezone/diskbrowser/visicalc/Sin.java b/src/com/bytezone/diskbrowser/visicalc/Sin.java index a58b30e..d53bf11 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Sin.java +++ b/src/com/bytezone/diskbrowser/visicalc/Sin.java @@ -1,29 +1,16 @@ package com.bytezone.diskbrowser.visicalc; -public class Sin extends Function +public class Sin extends ValueFunction { Sin (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@SIN(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + public void setValue () { - source.calculate (); - - if (!source.isValueType (ValueType.VALUE)) - { - valueType = source.getValueType (); - return; - } - value = Math.sin (source.getValue ()); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Sqrt.java b/src/com/bytezone/diskbrowser/visicalc/Sqrt.java index abdbba9..a2ec445 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Sqrt.java +++ b/src/com/bytezone/diskbrowser/visicalc/Sqrt.java @@ -1,29 +1,16 @@ package com.bytezone.diskbrowser.visicalc; -public class Sqrt extends Function +public class Sqrt extends ValueFunction { Sqrt (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@SQRT(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + public void setValue () { - source.calculate (); - - if (!source.isValueType (ValueType.VALUE)) - { - valueType = source.getValueType (); - return; - } - value = Math.sqrt (source.getValue ()); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Tan.java b/src/com/bytezone/diskbrowser/visicalc/Tan.java index 70f6ff7..74c9691 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Tan.java +++ b/src/com/bytezone/diskbrowser/visicalc/Tan.java @@ -1,29 +1,16 @@ package com.bytezone.diskbrowser.visicalc; -public class Tan extends Function +public class Tan extends ValueFunction { Tan (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@TAN(") : text; - - source = cell.getExpressionValue (functionText); - values.add (source); } @Override - public void calculate () + public void setValue () { - source.calculate (); - - if (!source.isValueType (ValueType.VALUE)) - { - valueType = source.getValueType (); - return; - } - value = Math.tan (source.getValue ()); - valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/ValueFunction.java b/src/com/bytezone/diskbrowser/visicalc/ValueFunction.java new file mode 100644 index 0000000..f9ed9eb --- /dev/null +++ b/src/com/bytezone/diskbrowser/visicalc/ValueFunction.java @@ -0,0 +1,30 @@ +package com.bytezone.diskbrowser.visicalc; + +public abstract class ValueFunction extends Function +{ + ValueFunction (Cell cell, String text) + { + super (cell, text); + + source = cell.getExpressionValue (functionText); + values.add (source); + } + + @Override + public void calculate () + { + source.calculate (); + + if (!source.isValueType (ValueType.VALUE)) + { + valueType = source.getValueType (); + return; + } + + // value = Math.abs (source.getValue ()); + setValue (); + valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; + } + + abstract void setValue (); +} \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/ValueList.java b/src/com/bytezone/diskbrowser/visicalc/ValueList.java index 865e81d..2dad4ed 100644 --- a/src/com/bytezone/diskbrowser/visicalc/ValueList.java +++ b/src/com/bytezone/diskbrowser/visicalc/ValueList.java @@ -11,7 +11,6 @@ public class ValueList implements Iterable public ValueList (Cell cell, String text) { - // Sheet parent = cell.getParent (); String remainder = text; while (true)