From 61a4bf7f9490d339194da29d9bf8dd9651502c1f Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Sun, 19 Mar 2017 14:49:14 +1100 Subject: [PATCH] created ConditionList --- .../bytezone/diskbrowser/visicalc/And.java | 15 +------ .../diskbrowser/visicalc/ConditionList.java | 41 +++++++++++++++++++ src/com/bytezone/diskbrowser/visicalc/Or.java | 15 +------ 3 files changed, 45 insertions(+), 26 deletions(-) create mode 100644 src/com/bytezone/diskbrowser/visicalc/ConditionList.java diff --git a/src/com/bytezone/diskbrowser/visicalc/And.java b/src/com/bytezone/diskbrowser/visicalc/And.java index 156fbf1..a12ae65 100644 --- a/src/com/bytezone/diskbrowser/visicalc/And.java +++ b/src/com/bytezone/diskbrowser/visicalc/And.java @@ -1,11 +1,8 @@ package com.bytezone.diskbrowser.visicalc; -import java.util.ArrayList; -import java.util.List; - class And extends Function { - private final List conditions = new ArrayList (); + private final ConditionList conditions; public And (Cell cell, String text) { @@ -13,15 +10,7 @@ class And extends Function assert text.startsWith ("@AND(") : text; - String remainder = functionText; - while (true) - { - String parameter = Expression.getParameter (remainder); - conditions.add (new Condition (parent, cell, parameter)); - if (remainder.length () == parameter.length ()) - break; - remainder = remainder.substring (parameter.length () + 1); - } + conditions = new ConditionList (cell, functionText); } @Override diff --git a/src/com/bytezone/diskbrowser/visicalc/ConditionList.java b/src/com/bytezone/diskbrowser/visicalc/ConditionList.java new file mode 100644 index 0000000..d5b6e67 --- /dev/null +++ b/src/com/bytezone/diskbrowser/visicalc/ConditionList.java @@ -0,0 +1,41 @@ +package com.bytezone.diskbrowser.visicalc; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class ConditionList implements Iterable +{ + protected final List conditions = new ArrayList (); + + public ConditionList (Cell cell, String text) + { + Sheet parent = cell.getParent (); + String remainder = text; + + while (true) + { + String parameter = Expression.getParameter (remainder); + conditions.add (new Condition (parent, cell, parameter)); + if (remainder.length () == parameter.length ()) + break; + remainder = remainder.substring (parameter.length () + 1); + } + } + + public Condition get (int index) + { + return conditions.get (index); + } + + public int size () + { + return conditions.size (); + } + + @Override + public Iterator iterator () + { + return conditions.iterator (); + } +} \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Or.java b/src/com/bytezone/diskbrowser/visicalc/Or.java index 6ffb616..c54866d 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Or.java +++ b/src/com/bytezone/diskbrowser/visicalc/Or.java @@ -1,11 +1,8 @@ package com.bytezone.diskbrowser.visicalc; -import java.util.ArrayList; -import java.util.List; - class Or extends Function { - private final List conditions = new ArrayList (); + ConditionList conditions; public Or (Cell cell, String text) { @@ -13,15 +10,7 @@ class Or extends Function assert text.startsWith ("@OR(") : text; - String remainder = functionText; - while (true) - { - String parameter = Expression.getParameter (remainder); - conditions.add (new Condition (parent, cell, parameter)); - if (remainder.length () == parameter.length ()) - break; - remainder = remainder.substring (parameter.length () + 1); - } + conditions = new ConditionList (cell, functionText); } @Override