From 7c2ec8b3ace7a838d4270e06ab349c1a008482c7 Mon Sep 17 00:00:00 2001 From: Julia Pham Date: Fri, 17 Oct 2025 17:35:34 +0200 Subject: [PATCH 1/6] feat(and-constraint): allow more than two children --- .DS_Store | Bin 0 -> 6148 bytes src/.DS_Store | Bin 0 -> 6148 bytes src/main/.DS_Store | Bin 0 -> 6148 bytes src/main/java/.DS_Store | Bin 0 -> 6148 bytes src/main/java/de/.DS_Store | Bin 0 -> 6148 bytes .../vill/model/constraint/AndConstraint.java | 66 ++++++++++++------ 6 files changed, 43 insertions(+), 23 deletions(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store create mode 100644 src/main/.DS_Store create mode 100644 src/main/java/.DS_Store create mode 100644 src/main/java/de/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b0557cef18e300f7717a8eec4e9fc1502a62ee7f GIT binary patch literal 6148 zcmeHKL2uJA6n<{YnrK4m0i<1!EOD($p%V;o$-4G12{~IZ$~SrTKWO328D$%DXpd zo~U_W&GMws+|YD*zUPlxJBvkc_eop!_V$)-xp?}h+m^e%$IGSf-M#SG@UsGoB~dP8!KRU zByao1443E>a0>h{3h@3Q;f#UB%AnplQ0OZFuz|2P)cK>4InrWau`-Arm@rhJp$dD& z5QdJpw0VKW%Alc>u$K>EpDgSRMd+tve5un(1O{E{6mSZxDo{7g7N7sa-{1dNNv`D- za0>iW3W&xa9P}|Id$w*&j?Y>N{{Uy>yvpDu1r>c1BbSfj9k@2cC0Brf#mXQeF!v## MWpIU4;EyWs3rkLgo&W#< literal 0 HcmV?d00001 diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..acabdc49236a35e3c3488defa796663c73817b57 GIT binary patch literal 6148 zcmeHKy-ve05I(m7QX!-cAa#tyT0x z=iasKdAXl=vzFgErPh&@NieMY!Eqe*+SU18ndW|+MjaIphY`A*oy2JE;r>P~ZWb5M8sTdR$_v({W63@Y}*;_~)k`zEod{4K~Kf(-HrKAy1eJs;R)VFs81X5ddUV9rK+_D_C2e>5||416a8 zbUrw!gs#CtqdGdUP$>W+JtLK1T|NB~9Wo%g1`Ca7K@mC>QHKhXVhEEt2px|7uJJE4 z>TnQhW*o=NEKG(XOyVINF!;MIs8RBB?2Mq^f*v^kVQ&iX@siNB*W zyPJYmPl8C9f!Vj2o!KyN!%l`V#@$hWi!qBaW`ZJ?sxW*bxQ;p}C2c7Ka@^xM5;s94 z0(iy^N&Y_rcyshOZB2N7<9t>qb*dKt)<#`zQMdpf8+)rez zrxwhrS?yW%$)wfZZP=|&XWFnQd)v*1-EQqnr&V)peRKb$_YghC;#pD8;k%TwqOpJ% zn9TASd&4*q@h#X2|H6-u7$63Sfkk9M-*skf5tE~whyh~YR}A3&V1pt$8gqs6>VQGE z0DuOVrNCVN`UBc%0CY6w3c&)xRVbhe<+{b-x^v(v9M&D}pDR@1jLSE}KKjjEcPLyp z9^97hj5`WxBnF6q&kSJi2V!CUKl-`HZ^wAp;+rE+CyxoTCdnsw#f z$;?arbTaPxqYHdGl`;+r+Yip7LDqLx4`q`2Q8E~*fG8Y*%jJ2Lgfi>ONfM4#tfv<& z+p_ykeL8KmcN?PB>C75py0_hIh<0mdHnXj@_09d0{(bzA$R|xVhyPK@iopV&!BDw8 zdZQ$k$t^q=zJ(7VF+dCu1B=dpIrpsEq9;oE5d*})uNlDeL4YE<26K(-=zu}B0Du*k zRsuF&|1m}wbPeVjVFiTiP(U5ZO^d;GILr&<=Nim4>Tt$Q^TExVx#>{2dOPedlsn_D zMjD9$V&F3a*!zJvSpScH?*Ek&4a5L3u$T<+O3&+cAvaT7=d#3FD?qP7QP3~f_z?nz iD#hT7rMM2N1m*=AfUdz@Bg}x%ML^L&12OQY47>yOiBRDH literal 0 HcmV?d00001 diff --git a/src/main/java/de/.DS_Store b/src/main/java/de/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..dfdda8d1ee8ab99e931e744b4c22bb09bcedac41 GIT binary patch literal 6148 zcmeHK!Ab)$5KY=@Q;N`oLXQEjMXN1Z@v^S<;MEm9sMM}4x)?X5-L{8P*t7nSU*hlR zOp+F~dJ;s+3`|~jGLvOqmdp-gjQhjR4r3+8m;go06kzy9a2<6)GR~3($fQJi8nlv4|*S+DI)rvEFf_|)Yd=Ivn|ICk&7$63Sfn{XC-F2e4jLA_>!~ikyD+cg>kf4a3!_=a=I$$s@ z0ALQxMqqA!{Q)H!06mAPMX-Qy8wzMcxoa`F>m0ZZhjq{SrxtBE children = new ArrayList<>(); + + public AndConstraint(Constraint... constraints) { + for (Constraint c : constraints) { + if (c != null) { + children.add(c); + } + } } - public Constraint getLeft() { - return left; + public AndConstraint(Constraint left, Constraint right) { + this(new Constraint[]{left, right}); } - public Constraint getRight() { - return right; + public List getChildren() { + return children; } @Override public String toString(boolean withSubmodels, String currentAlias) { - return left.toString(withSubmodels, currentAlias) + - " & " + - right.toString(withSubmodels, currentAlias); + return + // Constraint-Stream - jeder constraint in einen String umgewandelt und mit einem & verknüpft + children.stream() + .map(c -> c.toString(withSubmodels, currentAlias)) + .collect(Collectors.joining(" & ")); } @Override public List getConstraintSubParts() { - return Arrays.asList(left, right); + return new ArrayList<>(children); } @Override public void replaceConstraintSubPart(Constraint oldSubConstraint, Constraint newSubConstraint) { - if (left == oldSubConstraint) { - left = newSubConstraint; - } else if (right == oldSubConstraint) { - right = newSubConstraint; + for (int i = 0; i< children.size(); i++) { + if (children.get(i) == oldSubConstraint){ + children.set(i, newSubConstraint); + } } } @Override public Constraint clone() { - return new AndConstraint(left.clone(), right.clone()); + AndConstraint clone = new AndConstraint(); + for (Constraint c : children) { + clone.addChild(c.clone()); + } + return clone; + } + + public void addChild(Constraint constraint){ + if (constraint != null) { + children.add(constraint); + } } @Override public int hashCode(int level) { final int prime = 31; - int result = prime * level + (left == null ? 0 : left.hashCode(1 + level)); - result = prime * result + (right == null ? 0 : right.hashCode(1 + level)); + int result = prime * level; + for(Constraint c: children) { + result = prime * result + (c == null ? 0 : c.hashCode(1 + level)); + } return result; } @@ -67,14 +86,15 @@ public boolean equals(Object obj) { return false; } AndConstraint other = (AndConstraint) obj; - return Objects.equals(left, other.left) && Objects.equals(right, other.right); + return Objects.equals(children, other.children); } @Override public List getReferences() { List references = new ArrayList<>(); - references.addAll(left.getReferences()); - references.addAll(right.getReferences()); + for(Constraint c: children){ + references.addAll(c.getReferences()); + } return references; } } From a7daa3a9b6e14190badef3bdf5ffd5f81936de1d Mon Sep 17 00:00:00 2001 From: Julia Pham Date: Fri, 21 Nov 2025 18:12:06 +0100 Subject: [PATCH 2/6] feat: added getLeft and getRight for backwards compatibility --- .../vill/model/constraint/AndConstraint.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/vill/model/constraint/AndConstraint.java b/src/main/java/de/vill/model/constraint/AndConstraint.java index e102357..1cb5a49 100644 --- a/src/main/java/de/vill/model/constraint/AndConstraint.java +++ b/src/main/java/de/vill/model/constraint/AndConstraint.java @@ -22,7 +22,26 @@ public AndConstraint(Constraint... constraints) { } public AndConstraint(Constraint left, Constraint right) { - this(new Constraint[]{left, right}); + this.children.add(left); + this.children.add(right); + } + + public Constraint getLeft() { + if (children.isEmpty()){ + return null; + } + else{ + return children.get(0); + } + } + + public Constraint getRight() { + if (children.isEmpty() || children.size() < 2){ + return null; + } + else{ + return children.get(children.size() - 1); + } } public List getChildren() { From d5155b7e53a4c5765b758a9a28179feec63eddc5 Mon Sep 17 00:00:00 2001 From: Julia Pham Date: Mon, 1 Dec 2025 09:01:26 +0100 Subject: [PATCH 3/6] fix: implemented OrConstraint like AndConstraint allowing multiple children --- .../vill/model/constraint/OrConstraint.java | 77 ++++++++++++++----- 1 file changed, 57 insertions(+), 20 deletions(-) diff --git a/src/main/java/de/vill/model/constraint/OrConstraint.java b/src/main/java/de/vill/model/constraint/OrConstraint.java index f770df8..cbc74ca 100644 --- a/src/main/java/de/vill/model/constraint/OrConstraint.java +++ b/src/main/java/de/vill/model/constraint/OrConstraint.java @@ -6,56 +6,92 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; public class OrConstraint extends Constraint { - private Constraint left; - private Constraint right; + private final List children = new ArrayList<>(); + + public OrConstraint(Constraint... constraints) { + for (Constraint c : constraints) { + if (c != null) { + children.add(c); + } + } + } public OrConstraint(Constraint left, Constraint right) { - this.left = left; - this.right = right; + this.children.add(left); + this.children.add(right); } public Constraint getLeft() { - return left; + if (children.isEmpty()){ + return null; + } + else{ + return children.get(0); + } } public Constraint getRight() { - return right; + if (children.isEmpty() || children.size() < 2){ + return null; + } + else{ + return children.get(children.size() - 1); + } + } + + public List getChildren() { + return children; } @Override public String toString(boolean withSubmodels, String currentAlias) { - return left.toString(withSubmodels, currentAlias) + - " | " + - right.toString(withSubmodels, currentAlias); + return + // Constraint-Stream - jeder constraint in einen String umgewandelt und mit einem & verknüpft + children.stream() + .map(c -> c.toString(withSubmodels, currentAlias)) + .collect(Collectors.joining(" | ")); } @Override public List getConstraintSubParts() { - return Arrays.asList(left, right); + return new ArrayList<>(children); } @Override public void replaceConstraintSubPart(Constraint oldSubConstraint, Constraint newSubConstraint) { - if (left == oldSubConstraint) { - left = newSubConstraint; - } else if (right == oldSubConstraint) { - right = newSubConstraint; + for (int i = 0; i< children.size(); i++) { + if (children.get(i) == oldSubConstraint){ + children.set(i, newSubConstraint); + } } } @Override public Constraint clone() { - return new OrConstraint(left.clone(), right.clone()); + OrConstraint clone = new OrConstraint(); + for (Constraint c : children) { + clone.addChild(c.clone()); + } + return clone; + } + + public void addChild(Constraint constraint){ + if (constraint != null) { + children.add(constraint); + } } @Override public int hashCode(int level) { final int prime = 31; - int result = prime * level + (left == null ? 0 : left.hashCode(1 + level)); - result = prime * result + (right == null ? 0 : right.hashCode(1 + level)); + int result = prime * level; + for(Constraint c: children) { + result = prime * result + (c == null ? 0 : c.hashCode(1 + level)); + } return result; } @@ -68,14 +104,15 @@ public boolean equals(Object obj) { return false; } OrConstraint other = (OrConstraint) obj; - return Objects.equals(left, other.left) && Objects.equals(right, other.right); + return Objects.equals(children, other.children); } @Override public List getReferences() { List references = new ArrayList<>(); - references.addAll(left.getReferences()); - references.addAll(right.getReferences()); + for(Constraint c: children){ + references.addAll(c.getReferences()); + } return references; } } From ccd4b1447c4520ea55e89455baf08fe53143a824 Mon Sep 17 00:00:00 2001 From: Julia Pham Date: Mon, 8 Dec 2025 17:03:29 +0100 Subject: [PATCH 4/6] fix: throw ParseError in getLeft/getRight, also added setLeft/setRight for backwards compatibility and deleted the .DS files --- .DS_Store | Bin 6148 -> 0 bytes src/.DS_Store | Bin 6148 -> 0 bytes src/main/.DS_Store | Bin 6148 -> 0 bytes src/main/java/.DS_Store | Bin 6148 -> 0 bytes src/main/java/de/.DS_Store | Bin 6148 -> 0 bytes .../vill/model/constraint/AndConstraint.java | 37 ++++++++++++++---- .../vill/model/constraint/OrConstraint.java | 35 +++++++++++++---- 7 files changed, 57 insertions(+), 15 deletions(-) delete mode 100644 .DS_Store delete mode 100644 src/.DS_Store delete mode 100644 src/main/.DS_Store delete mode 100644 src/main/java/.DS_Store delete mode 100644 src/main/java/de/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index b0557cef18e300f7717a8eec4e9fc1502a62ee7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKL2uJA6n<{YnrK4m0i<1!EOD($p%V;o$-4G12{~IZ$~SrTKWO328D$%DXpd zo~U_W&GMws+|YD*zUPlxJBvkc_eop!_V$)-xp?}h+m^e%$IGSf-M#SG@UsGoB~dP8!KRU zByao1443E>a0>h{3h@3Q;f#UB%AnplQ0OZFuz|2P)cK>4InrWau`-Arm@rhJp$dD& z5QdJpw0VKW%Alc>u$K>EpDgSRMd+tve5un(1O{E{6mSZxDo{7g7N7sa-{1dNNv`D- za0>iW3W&xa9P}|Id$w*&j?Y>N{{Uy>yvpDu1r>c1BbSfj9k@2cC0Brf#mXQeF!v## MWpIU4;EyWs3rkLgo&W#< diff --git a/src/.DS_Store b/src/.DS_Store deleted file mode 100644 index acabdc49236a35e3c3488defa796663c73817b57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKy-ve05I(m7QX!-cAa#tyT0x z=iasKdAXl=vzFgErPh&@NieMY!Eqe*+SU18ndW|+MjaIphY`A*oy2JE;r>P~ZWb5M8sTdR$_v({W63@Y}*;_~)k`zEod{4K~Kf(-HrKAy1eJs;R)VFs81X5ddUV9rK+_D_C2e>5||416a8 zbUrw!gs#CtqdGdUP$>W+JtLK1T|NB~9Wo%g1`Ca7K@mC>QHKhXVhEEt2px|7uJJE4 z>TnQhW*o=NEKG(XOyVINF!;MIs8RBB?2Mq^f*v^kVQ&iX@siNB*W zyPJYmPl8C9f!Vj2o!KyN!%l`V#@$hWi!qBaW`ZJ?sxW*bxQ;p}C2c7Ka@^xM5;s94 z0(iy^N&Y_rcyshOZB2N7<9t>qb*dKt)<#`zQMdpf8+)rez zrxwhrS?yW%$)wfZZP=|&XWFnQd)v*1-EQqnr&V)peRKb$_YghC;#pD8;k%TwqOpJ% zn9TASd&4*q@h#X2|H6-u7$63Sfkk9M-*skf5tE~whyh~YR}A3&V1pt$8gqs6>VQGE z0DuOVrNCVN`UBc%0CY6w3c&)xRVbhe<+{b-x^v(v9M&D}pDR@1jLSE}KKjjEcPLyp z9^97hj5`WxBnF6q&kSJi2V!CUKl-`HZ^wAp;+rE+CyxoTCdnsw#f z$;?arbTaPxqYHdGl`;+r+Yip7LDqLx4`q`2Q8E~*fG8Y*%jJ2Lgfi>ONfM4#tfv<& z+p_ykeL8KmcN?PB>C75py0_hIh<0mdHnXj@_09d0{(bzA$R|xVhyPK@iopV&!BDw8 zdZQ$k$t^q=zJ(7VF+dCu1B=dpIrpsEq9;oE5d*})uNlDeL4YE<26K(-=zu}B0Du*k zRsuF&|1m}wbPeVjVFiTiP(U5ZO^d;GILr&<=Nim4>Tt$Q^TExVx#>{2dOPedlsn_D zMjD9$V&F3a*!zJvSpScH?*Ek&4a5L3u$T<+O3&+cAvaT7=d#3FD?qP7QP3~f_z?nz iD#hT7rMM2N1m*=AfUdz@Bg}x%ML^L&12OQY47>yOiBRDH diff --git a/src/main/java/de/.DS_Store b/src/main/java/de/.DS_Store deleted file mode 100644 index dfdda8d1ee8ab99e931e744b4c22bb09bcedac41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!Ab)$5KY=@Q;N`oLXQEjMXN1Z@v^S<;MEm9sMM}4x)?X5-L{8P*t7nSU*hlR zOp+F~dJ;s+3`|~jGLvOqmdp-gjQhjR4r3+8m;go06kzy9a2<6)GR~3($fQJi8nlv4|*S+DI)rvEFf_|)Yd=Ivn|ICk&7$63Sfn{XC-F2e4jLA_>!~ikyD+cg>kf4a3!_=a=I$$s@ z0ALQxMqqA!{Q)H!06mAPMX-Qy8wzMcxoa`F>m0ZZhjq{SrxtBE children = new ArrayList<>(); public AndConstraint(Constraint... constraints) { @@ -28,7 +30,7 @@ public AndConstraint(Constraint left, Constraint right) { public Constraint getLeft() { if (children.isEmpty()){ - return null; + throw new ParseError("Left child can not be returned because there are no children."); } else{ return children.get(0); @@ -37,7 +39,7 @@ public Constraint getLeft() { public Constraint getRight() { if (children.isEmpty() || children.size() < 2){ - return null; + throw new ParseError("Right child can not be returned because there are less than two children.");; } else{ return children.get(children.size() - 1); @@ -48,13 +50,32 @@ public List getChildren() { return children; } + public void setLeft(Constraint left) { + if (children.isEmpty()) { + children.add(left); + } + else { + children.set(0, left); + } + } + + public void setRight(Constraint right){ + if (children.size() < 2) { + if (children.size() < 1) { + children.add(null); + } + children.add(right); + } + else { + children.set(children.size() - 1, right); + } + } + @Override public String toString(boolean withSubmodels, String currentAlias) { - return - // Constraint-Stream - jeder constraint in einen String umgewandelt und mit einem & verknüpft - children.stream() - .map(c -> c.toString(withSubmodels, currentAlias)) - .collect(Collectors.joining(" & ")); + return children.stream() + .map(c -> AutomaticBrackets.enforceConstraintBracketsIfNecessary(this, c, withSubmodels, currentAlias)) + .collect(Collectors.joining(" & ")); } @Override diff --git a/src/main/java/de/vill/model/constraint/OrConstraint.java b/src/main/java/de/vill/model/constraint/OrConstraint.java index cbc74ca..806692a 100644 --- a/src/main/java/de/vill/model/constraint/OrConstraint.java +++ b/src/main/java/de/vill/model/constraint/OrConstraint.java @@ -1,5 +1,7 @@ package de.vill.model.constraint; +import de.vill.exception.ParseError; +import de.vill.model.building.AutomaticBrackets; import de.vill.model.building.VariableReference; import java.util.ArrayList; @@ -27,7 +29,7 @@ public OrConstraint(Constraint left, Constraint right) { public Constraint getLeft() { if (children.isEmpty()){ - return null; + throw new ParseError("Left child can not be returned because there are no children."); } else{ return children.get(0); @@ -36,7 +38,7 @@ public Constraint getLeft() { public Constraint getRight() { if (children.isEmpty() || children.size() < 2){ - return null; + throw new ParseError("RIght child can not be returned because there are less than two children."); } else{ return children.get(children.size() - 1); @@ -47,13 +49,32 @@ public List getChildren() { return children; } + public void setLeft(Constraint left) { + if (children.isEmpty()) { + children.add(left); + } + else { + children.set(0, left); + } + } + + public void setRight(Constraint right){ + if (children.size() < 2) { + if (children.size() < 1) { + children.add(null); + } + children.add(right); + } + else { + children.set(children.size() - 1, right); + } + } + @Override public String toString(boolean withSubmodels, String currentAlias) { - return - // Constraint-Stream - jeder constraint in einen String umgewandelt und mit einem & verknüpft - children.stream() - .map(c -> c.toString(withSubmodels, currentAlias)) - .collect(Collectors.joining(" | ")); + return children.stream() + .map(c -> AutomaticBrackets.enforceConstraintBracketsIfNecessary(this, c, withSubmodels, currentAlias)) + .collect(Collectors.joining(" | ")); } @Override From c4506ebeb5d089f7b39f3cb32e5f36d474d4431b Mon Sep 17 00:00:00 2001 From: Julia Pham Date: Mon, 8 Dec 2025 17:34:07 +0100 Subject: [PATCH 5/6] style: fix indentation --- .../vill/model/constraint/AndConstraint.java | 37 +++++++++---------- .../vill/model/constraint/OrConstraint.java | 32 +++++++--------- 2 files changed, 31 insertions(+), 38 deletions(-) diff --git a/src/main/java/de/vill/model/constraint/AndConstraint.java b/src/main/java/de/vill/model/constraint/AndConstraint.java index c230801..5dcfcc8 100644 --- a/src/main/java/de/vill/model/constraint/AndConstraint.java +++ b/src/main/java/de/vill/model/constraint/AndConstraint.java @@ -29,19 +29,18 @@ public AndConstraint(Constraint left, Constraint right) { } public Constraint getLeft() { - if (children.isEmpty()){ + if (children.isEmpty()) { throw new ParseError("Left child can not be returned because there are no children."); - } - else{ + } else { return children.get(0); } } public Constraint getRight() { - if (children.isEmpty() || children.size() < 2){ - throw new ParseError("Right child can not be returned because there are less than two children.");; - } - else{ + if (children.isEmpty() || children.size() < 2) { + throw new ParseError("Right child can not be returned because there are less than two children."); + ; + } else { return children.get(children.size() - 1); } } @@ -53,29 +52,27 @@ public List getChildren() { public void setLeft(Constraint left) { if (children.isEmpty()) { children.add(left); - } - else { + } else { children.set(0, left); } } - public void setRight(Constraint right){ + public void setRight(Constraint right) { if (children.size() < 2) { if (children.size() < 1) { children.add(null); } children.add(right); - } - else { + } else { children.set(children.size() - 1, right); } } @Override public String toString(boolean withSubmodels, String currentAlias) { - return children.stream() - .map(c -> AutomaticBrackets.enforceConstraintBracketsIfNecessary(this, c, withSubmodels, currentAlias)) - .collect(Collectors.joining(" & ")); + return children.stream() + .map(c -> AutomaticBrackets.enforceConstraintBracketsIfNecessary(this, c, withSubmodels, currentAlias)) + .collect(Collectors.joining(" & ")); } @Override @@ -85,8 +82,8 @@ public List getConstraintSubParts() { @Override public void replaceConstraintSubPart(Constraint oldSubConstraint, Constraint newSubConstraint) { - for (int i = 0; i< children.size(); i++) { - if (children.get(i) == oldSubConstraint){ + for (int i = 0; i < children.size(); i++) { + if (children.get(i) == oldSubConstraint) { children.set(i, newSubConstraint); } } @@ -101,7 +98,7 @@ public Constraint clone() { return clone; } - public void addChild(Constraint constraint){ + public void addChild(Constraint constraint) { if (constraint != null) { children.add(constraint); } @@ -111,7 +108,7 @@ public void addChild(Constraint constraint){ public int hashCode(int level) { final int prime = 31; int result = prime * level; - for(Constraint c: children) { + for (Constraint c : children) { result = prime * result + (c == null ? 0 : c.hashCode(1 + level)); } return result; @@ -132,7 +129,7 @@ public boolean equals(Object obj) { @Override public List getReferences() { List references = new ArrayList<>(); - for(Constraint c: children){ + for (Constraint c : children) { references.addAll(c.getReferences()); } return references; diff --git a/src/main/java/de/vill/model/constraint/OrConstraint.java b/src/main/java/de/vill/model/constraint/OrConstraint.java index 806692a..526ec72 100644 --- a/src/main/java/de/vill/model/constraint/OrConstraint.java +++ b/src/main/java/de/vill/model/constraint/OrConstraint.java @@ -28,19 +28,17 @@ public OrConstraint(Constraint left, Constraint right) { } public Constraint getLeft() { - if (children.isEmpty()){ + if (children.isEmpty()) { throw new ParseError("Left child can not be returned because there are no children."); - } - else{ + } else { return children.get(0); } } public Constraint getRight() { - if (children.isEmpty() || children.size() < 2){ + if (children.isEmpty() || children.size() < 2) { throw new ParseError("RIght child can not be returned because there are less than two children."); - } - else{ + } else { return children.get(children.size() - 1); } } @@ -52,20 +50,18 @@ public List getChildren() { public void setLeft(Constraint left) { if (children.isEmpty()) { children.add(left); - } - else { + } else { children.set(0, left); } } - public void setRight(Constraint right){ + public void setRight(Constraint right) { if (children.size() < 2) { if (children.size() < 1) { children.add(null); } children.add(right); - } - else { + } else { children.set(children.size() - 1, right); } } @@ -73,8 +69,8 @@ public void setRight(Constraint right){ @Override public String toString(boolean withSubmodels, String currentAlias) { return children.stream() - .map(c -> AutomaticBrackets.enforceConstraintBracketsIfNecessary(this, c, withSubmodels, currentAlias)) - .collect(Collectors.joining(" | ")); + .map(c -> AutomaticBrackets.enforceConstraintBracketsIfNecessary(this, c, withSubmodels, currentAlias)) + .collect(Collectors.joining(" | ")); } @Override @@ -84,8 +80,8 @@ public List getConstraintSubParts() { @Override public void replaceConstraintSubPart(Constraint oldSubConstraint, Constraint newSubConstraint) { - for (int i = 0; i< children.size(); i++) { - if (children.get(i) == oldSubConstraint){ + for (int i = 0; i < children.size(); i++) { + if (children.get(i) == oldSubConstraint) { children.set(i, newSubConstraint); } } @@ -100,7 +96,7 @@ public Constraint clone() { return clone; } - public void addChild(Constraint constraint){ + public void addChild(Constraint constraint) { if (constraint != null) { children.add(constraint); } @@ -110,7 +106,7 @@ public void addChild(Constraint constraint){ public int hashCode(int level) { final int prime = 31; int result = prime * level; - for(Constraint c: children) { + for (Constraint c : children) { result = prime * result + (c == null ? 0 : c.hashCode(1 + level)); } return result; @@ -131,7 +127,7 @@ public boolean equals(Object obj) { @Override public List getReferences() { List references = new ArrayList<>(); - for(Constraint c: children){ + for (Constraint c : children) { references.addAll(c.getReferences()); } return references; From c6cdc8e2c6122425f9b0c495d102d1d400a12df4 Mon Sep 17 00:00:00 2001 From: Julia Pham Date: Thu, 11 Dec 2025 15:39:18 +0100 Subject: [PATCH 6/6] refactor: replaced MultiOr with Or, also returning the actual list instead of the copy in And and OrConstraint --- src/main/java/de/vill/conversion/ConvertGroupCardinality.java | 4 ++-- src/main/java/de/vill/conversion/ConvertSMTLevel.java | 4 ++-- src/main/java/de/vill/model/building/AutomaticBrackets.java | 1 - src/main/java/de/vill/model/constraint/AndConstraint.java | 2 +- src/main/java/de/vill/model/constraint/OrConstraint.java | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/vill/conversion/ConvertGroupCardinality.java b/src/main/java/de/vill/conversion/ConvertGroupCardinality.java index 89f051e..01bfa41 100644 --- a/src/main/java/de/vill/conversion/ConvertGroupCardinality.java +++ b/src/main/java/de/vill/conversion/ConvertGroupCardinality.java @@ -81,9 +81,9 @@ private Constraint createConjunction(Set selectedFeatures, Set } private Constraint createDisjunction(Set constraints) { - MultiOrConstraint orConstraint = new MultiOrConstraint(); + OrConstraint orConstraint = new OrConstraint(); for (Constraint constraint : constraints) { - orConstraint.add_sub_part(constraint); + orConstraint.addChild(constraint); } return orConstraint; } diff --git a/src/main/java/de/vill/conversion/ConvertSMTLevel.java b/src/main/java/de/vill/conversion/ConvertSMTLevel.java index b45b99f..bbfd5b1 100644 --- a/src/main/java/de/vill/conversion/ConvertSMTLevel.java +++ b/src/main/java/de/vill/conversion/ConvertSMTLevel.java @@ -136,9 +136,9 @@ private Constraint createConjunction(Set selectedFeatures, Set } private Constraint createDisjunction(Set constraints) { - MultiOrConstraint orConstraint = new MultiOrConstraint(); + OrConstraint orConstraint = new OrConstraint(); for (Constraint constraint : constraints) { - orConstraint.add_sub_part(constraint); + orConstraint.addChild(constraint); } return orConstraint; } diff --git a/src/main/java/de/vill/model/building/AutomaticBrackets.java b/src/main/java/de/vill/model/building/AutomaticBrackets.java index fa9a80e..ca690fb 100644 --- a/src/main/java/de/vill/model/building/AutomaticBrackets.java +++ b/src/main/java/de/vill/model/building/AutomaticBrackets.java @@ -40,7 +40,6 @@ private AutomaticBrackets() {} constraintprecedenceLookup.put(EquivalenceConstraint.class, IFF_PRECEDENCE); constraintprecedenceLookup.put(ImplicationConstraint.class, IMPLY_PRECEDENCE); constraintprecedenceLookup.put(OrConstraint.class, OR_PRECEDENCE); - constraintprecedenceLookup.put(MultiOrConstraint.class, OR_PRECEDENCE); constraintprecedenceLookup.put(AndConstraint.class, AND_PRECEDENCE); constraintprecedenceLookup.put(GreaterEquationConstraint.class, GEQ_LEQ_PRECEDENCE); constraintprecedenceLookup.put(LowerEquationConstraint.class, GEQ_LEQ_PRECEDENCE); diff --git a/src/main/java/de/vill/model/constraint/AndConstraint.java b/src/main/java/de/vill/model/constraint/AndConstraint.java index e69354e..cd49b1d 100644 --- a/src/main/java/de/vill/model/constraint/AndConstraint.java +++ b/src/main/java/de/vill/model/constraint/AndConstraint.java @@ -76,7 +76,7 @@ public String toString(boolean withSubmodels, String currentAlias) { @Override public List getConstraintSubParts() { - return new ArrayList<>(children); + return children; } @Override diff --git a/src/main/java/de/vill/model/constraint/OrConstraint.java b/src/main/java/de/vill/model/constraint/OrConstraint.java index 88cb9d8..6e7cd8c 100644 --- a/src/main/java/de/vill/model/constraint/OrConstraint.java +++ b/src/main/java/de/vill/model/constraint/OrConstraint.java @@ -75,7 +75,7 @@ public String toString(boolean withSubmodels, String currentAlias) { @Override public List getConstraintSubParts() { - return new ArrayList<>(children); + return children; } @Override