From 4dab60c3fa06f1d39825b41f5e5ba50a841177f0 Mon Sep 17 00:00:00 2001 From: Giovanni Di Grezia Date: Sat, 17 May 2014 21:19:18 +0200 Subject: [PATCH] riordinato alcuni package e creato una prima implementazione di set e mergetemplate --- set/OrderedListSet.java | 140 ++++++++++++++++++ set/Set.java | 25 ++++ .../euler_tour}/EulerTour.java | 2 +- .../expressions/AdditionOperator.java | 2 +- .../expressions/EvaluateExpressionTour.java | 4 +- .../expressions/ExpressionOperator.java | 2 +- .../expressions/ExpressionTerm.java | 2 +- .../expressions/ExpressionVariable.java | 2 +- .../expressions/StringExpressionTour.java | 4 +- utility/merge/MergeTemplate.java | 80 ++++++++++ 10 files changed, 254 insertions(+), 9 deletions(-) create mode 100644 set/OrderedListSet.java create mode 100644 set/Set.java rename {euler_tour => utility/euler_tour}/EulerTour.java (96%) rename {euler_tour => utility/euler_tour}/expressions/AdditionOperator.java (88%) rename {euler_tour => utility/euler_tour}/expressions/EvaluateExpressionTour.java (89%) rename {euler_tour => utility/euler_tour}/expressions/ExpressionOperator.java (88%) rename {euler_tour => utility/euler_tour}/expressions/ExpressionTerm.java (86%) rename {euler_tour => utility/euler_tour}/expressions/ExpressionVariable.java (90%) rename {euler_tour => utility/euler_tour}/expressions/StringExpressionTour.java (92%) create mode 100644 utility/merge/MergeTemplate.java diff --git a/set/OrderedListSet.java b/set/OrderedListSet.java new file mode 100644 index 0000000..fa7f1c4 --- /dev/null +++ b/set/OrderedListSet.java @@ -0,0 +1,140 @@ +package set; + +import position.NodePositionList; +import position.PositionList; +import utility.DefaultComparator; +import utility.merge.MergeTemplate; + +import java.util.Comparator; + +/** + * Created with xgiovio.macbookair. + * User: xgiovio + * Date: 14/05/14 + * Time: 14:23 + */ + +public class OrderedListSet implements Set { + private Comparator c; + private PositionList L; + + + + OrderedListSet() { + L = new NodePositionList(); + c = new DefaultComparator(); + } + + OrderedListSet(Comparator in_c) { + L = new NodePositionList(); + c = in_c; + } + + + + + @Override + public int size() { + return L.size(); + } + + @Override + public boolean isEmpty() { + return L.isEmpty(); + } + + + + + @Override + public Set union(Set B) { + new MergeUnion(this.L, ,c); + } + + @Override + public Set intersect(Set B) { + return null; + } + + @Override + public Set subtract(Set B) { + return null; + } + + + + + + //////////////////////// inner class override methods from merge template ///// + + protected class MergeUnion extends MergeTemplate{ + + public MergeUnion (PositionList A , PositionList B, DefaultComparator c){ + super(A,B,c); + } + + @Override + protected void aIsLess(E a) { + + } + + @Override + protected void bIsLess(E b) { + + } + + @Override + protected void bothAreEqual(E a, E b) { + + } + } + + protected class MergeIntersect extends MergeTemplate{ + + public MergeIntersect (PositionList A , PositionList B, DefaultComparator c){ + super(A,B,c); + } + + @Override + protected void aIsLess(E a) { + + } + + @Override + protected void bIsLess(E b) { + + } + + @Override + protected void bothAreEqual(E a, E b) { + + } + } + + protected class MergeSubtract extends MergeTemplate{ + + public MergeSubtract (PositionList A , PositionList B, DefaultComparator c){ + super(A,B,c); + } + + @Override + protected void aIsLess(E a) { + + } + + @Override + protected void bIsLess(E b) { + + } + + @Override + protected void bothAreEqual(E a, E b) { + + } + } + + + + + +} \ No newline at end of file diff --git a/set/Set.java b/set/Set.java new file mode 100644 index 0000000..193ab67 --- /dev/null +++ b/set/Set.java @@ -0,0 +1,25 @@ +package set; + +/** + * Created with xgiovio.macbookair. + * User: xgiovio + * Date: 14/05/14 + * Time: 14:18 + */ +public interface Set { + // Restituisce il numero degli elementi nell’insieme + public int size(); + + // Restituisce true se l’insieme è vuoto + public boolean isEmpty(); + + // Rimpiazza this con l’unione di this e B + public Set union(Set B) ; + + // Rimpiazza this con l’intersezione di this e B + public Set intersect(Set B) ; + + // Rimpiazza this con la differenza di this e B + public Set subtract(Set B) ; + +} diff --git a/euler_tour/EulerTour.java b/utility/euler_tour/EulerTour.java similarity index 96% rename from euler_tour/EulerTour.java rename to utility/euler_tour/EulerTour.java index ff03cbb..6ae1963 100644 --- a/euler_tour/EulerTour.java +++ b/utility/euler_tour/EulerTour.java @@ -1,4 +1,4 @@ -package euler_tour; +package utility.euler_tour; import tree.binarytree.*; import position.Position; diff --git a/euler_tour/expressions/AdditionOperator.java b/utility/euler_tour/expressions/AdditionOperator.java similarity index 88% rename from euler_tour/expressions/AdditionOperator.java rename to utility/euler_tour/expressions/AdditionOperator.java index ed5192b..9c9b5f7 100644 --- a/euler_tour/expressions/AdditionOperator.java +++ b/utility/euler_tour/expressions/AdditionOperator.java @@ -1,4 +1,4 @@ -package euler_tour.expressions; +package utility.euler_tour.expressions; /** * Created with MONSTER. diff --git a/euler_tour/expressions/EvaluateExpressionTour.java b/utility/euler_tour/expressions/EvaluateExpressionTour.java similarity index 89% rename from euler_tour/expressions/EvaluateExpressionTour.java rename to utility/euler_tour/expressions/EvaluateExpressionTour.java index 3803cb7..83edfde 100644 --- a/euler_tour/expressions/EvaluateExpressionTour.java +++ b/utility/euler_tour/expressions/EvaluateExpressionTour.java @@ -1,6 +1,6 @@ -package euler_tour.expressions; +package utility.euler_tour.expressions; -import euler_tour.EulerTour; +import utility.euler_tour.EulerTour; import position.Position; import tree.binarytree.BinaryTree; diff --git a/euler_tour/expressions/ExpressionOperator.java b/utility/euler_tour/expressions/ExpressionOperator.java similarity index 88% rename from euler_tour/expressions/ExpressionOperator.java rename to utility/euler_tour/expressions/ExpressionOperator.java index 9159582..b61774b 100644 --- a/euler_tour/expressions/ExpressionOperator.java +++ b/utility/euler_tour/expressions/ExpressionOperator.java @@ -1,4 +1,4 @@ -package euler_tour.expressions; +package utility.euler_tour.expressions; /** * Created with MONSTER. diff --git a/euler_tour/expressions/ExpressionTerm.java b/utility/euler_tour/expressions/ExpressionTerm.java similarity index 86% rename from euler_tour/expressions/ExpressionTerm.java rename to utility/euler_tour/expressions/ExpressionTerm.java index ceb992a..79e5147 100644 --- a/euler_tour/expressions/ExpressionTerm.java +++ b/utility/euler_tour/expressions/ExpressionTerm.java @@ -1,4 +1,4 @@ -package euler_tour.expressions; +package utility.euler_tour.expressions; /** * Created with MONSTER. diff --git a/euler_tour/expressions/ExpressionVariable.java b/utility/euler_tour/expressions/ExpressionVariable.java similarity index 90% rename from euler_tour/expressions/ExpressionVariable.java rename to utility/euler_tour/expressions/ExpressionVariable.java index 1dfdee2..4ad58b1 100644 --- a/euler_tour/expressions/ExpressionVariable.java +++ b/utility/euler_tour/expressions/ExpressionVariable.java @@ -1,4 +1,4 @@ -package euler_tour.expressions; +package utility.euler_tour.expressions; /** * Created with MONSTER. diff --git a/euler_tour/expressions/StringExpressionTour.java b/utility/euler_tour/expressions/StringExpressionTour.java similarity index 92% rename from euler_tour/expressions/StringExpressionTour.java rename to utility/euler_tour/expressions/StringExpressionTour.java index 701c3ab..381c32b 100644 --- a/euler_tour/expressions/StringExpressionTour.java +++ b/utility/euler_tour/expressions/StringExpressionTour.java @@ -1,6 +1,6 @@ -package euler_tour.expressions; +package utility.euler_tour.expressions; -import euler_tour.EulerTour; +import utility.euler_tour.EulerTour; import position.Position; import tree.binarytree.BinaryTree; diff --git a/utility/merge/MergeTemplate.java b/utility/merge/MergeTemplate.java new file mode 100644 index 0000000..64f298a --- /dev/null +++ b/utility/merge/MergeTemplate.java @@ -0,0 +1,80 @@ +package utility.merge; + +import exceptions.BoundaryViolationException; +import exceptions.EmptyListException; +import exceptions.InvalidPositionException; +import position.NodePositionList; +import position.Position; +import position.PositionList; +import utility.DefaultComparator; + +import java.util.Comparator; +import java.util.Iterator; + +/** + * Created with xgiovio.macbookair. + * User: xgiovio + * Date: 14/05/14 + * Time: 14:48 + */ +public abstract class MergeTemplate { + + PositionList s = new NodePositionList(); + Comparator c = null; + + public MergeTemplate (PositionList A, PositionList B){ + this(A,B,new DefaultComparator()); + } + + public MergeTemplate (PositionList A, PositionList B, Comparator in_c){ + + c = in_c; + E a,b; + Iterator Ait, Bit; + Ait = A.iterator(); + Bit = B.iterator(); + + while (!(Ait.hasNext()) && !(Bit.hasNext())) { + + a = Ait.next(); + b= Bit.next(); + + if ( c.compare(a,b) < 0 ) + aIsLess(a); + else if (c.compare(a,b) > 0) + bIsLess(b); + else // se b = a + bothAreEqual(a, b); + + } + while (!(Ait.hasNext())) { + a = Ait.next(); + aIsLess(a); + } + while (!(Bit.hasNext())) { + b = Bit.next(); + bIsLess(b); + } + + + } + + + abstract protected void aIsLess (E a); + + abstract protected void bIsLess (E b); + + abstract protected void bothAreEqual (E a, E b); + + + public PositionList getResult () { + return s; + } + + + + + + + +}