From 18311aa335ae167d6947440b9fb7deacbe406239 Mon Sep 17 00:00:00 2001 From: Chrissi <christopher@hbsc-werner.de> Date: Sun, 4 Aug 2019 13:25:30 +0200 Subject: [PATCH] Add new abstract builder that collects the attributes of the compound keep expressions --- .../grammar/CompoundKeepBuilder.java | 37 +++++++++++++++++++ .../grammar/KeepReferenceExpression.java | 24 +----------- .../grammar/KeepSubTypeExpression.java | 25 +------------ .../grammar/KeepSuperTypeExpression.java | 23 +----------- 4 files changed, 41 insertions(+), 68 deletions(-) create mode 100644 src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/CompoundKeepBuilder.java diff --git a/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/CompoundKeepBuilder.java b/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/CompoundKeepBuilder.java new file mode 100644 index 0000000..2315a3a --- /dev/null +++ b/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/CompoundKeepBuilder.java @@ -0,0 +1,37 @@ +package org.rosi_project.model_sync.model_join.representation.grammar; + +import java.util.List; + +import javax.annotation.Nonnull; + +import org.rosi_project.model_sync.model_join.representation.core.ClassResource; + +public abstract class CompoundKeepBuilder { + + protected ClassResource target; + @Nonnull + protected List<KeepExpression> keeps; + + /** + * Specifies the name of the class that should be generated for the subtype instances. + */ + @Nonnull + public CompoundKeepBuilder as(@Nonnull ClassResource target) { + this.target = target; + return this; + } + + /** + * Adds a {@link KeepExpression keep statement} for the subtype-class. The described attribute + * will be initialized for each instantiated subtype element. + */ + @Nonnull + public CompoundKeepBuilder keep(@Nonnull KeepExpression keep) { + this.keeps.add(keep); + return this; + } + + @Nonnull + public abstract KeepExpression buildExpression(); + +} diff --git a/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepReferenceExpression.java b/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepReferenceExpression.java index 5d6f0f3..307be52 100644 --- a/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepReferenceExpression.java +++ b/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepReferenceExpression.java @@ -53,14 +53,10 @@ public class KeepReferenceExpression extends CompoundKeepExpression { * * @author Rico Bergmann */ - public static class KeepReferenceBuilder { + public static class KeepReferenceBuilder extends CompoundKeepBuilder { private ReferenceDirection referenceDirection; private AttributePath attribute; - private ClassResource target; - - @Nonnull - private List<KeepExpression> keeps; /** * Default constructor. @@ -89,24 +85,6 @@ public class KeepReferenceExpression extends CompoundKeepExpression { return this; } - /** - * Specifies the name of the attribute in the target join. - */ - @Nonnull - public KeepReferenceBuilder as(@Nonnull ClassResource target) { - this.target = target; - return this; - } - - /** - * Adds an attribute to the view for the referenced instances. - */ - @Nonnull - public KeepReferenceBuilder keep(@Nonnull KeepExpression keepExpression) { - this.keeps.add(keepExpression); - return this; - } - /** * Finishes the construction process. */ diff --git a/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepSubTypeExpression.java b/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepSubTypeExpression.java index 76e8d60..f3b82c3 100644 --- a/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepSubTypeExpression.java +++ b/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepSubTypeExpression.java @@ -25,11 +25,9 @@ public class KeepSubTypeExpression extends CompoundKeepExpression { * * @author Rico Bergmann */ - public static class KeepSubTypeBuilder { + public static class KeepSubTypeBuilder extends CompoundKeepBuilder { private ClassResource typeToKeep; - private ClassResource target; - private List<KeepExpression> keeps; /** * Default constructor. @@ -45,26 +43,7 @@ public class KeepSubTypeExpression extends CompoundKeepExpression { public KeepSubTypeBuilder subtype(@Nonnull ClassResource type) { this.typeToKeep = type; return this; - } - - /** - * Specifies the name of the class that should be generated for the subtype instances. - */ - @Nonnull - public KeepSubTypeBuilder as(@Nonnull ClassResource target) { - this.target = target; - return this; - } - - /** - * Adds a {@link KeepExpression keep statement} for the subtype-class. The described attribute - * will be initialized for each instantiated subtype element. - */ - @Nonnull - public KeepSubTypeBuilder keep(@Nonnull KeepExpression keep) { - this.keeps.add(keep); - return this; - } + } /** * Finishes the construction process. diff --git a/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepSuperTypeExpression.java b/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepSuperTypeExpression.java index 6c72a3d..e4b1b81 100644 --- a/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepSuperTypeExpression.java +++ b/src/main/java/org/rosi_project/model_sync/model_join/representation/grammar/KeepSuperTypeExpression.java @@ -24,11 +24,9 @@ public class KeepSuperTypeExpression extends CompoundKeepExpression { * * @author Rico Bergmann */ - public static class KeepSuperTypeBuilder { + public static class KeepSuperTypeBuilder extends CompoundKeepBuilder { private ClassResource typeToKeep; - private ClassResource target; - private List<KeepExpression> keeps; /** * Default constructor. @@ -46,25 +44,6 @@ public class KeepSuperTypeExpression extends CompoundKeepExpression { return this; } - /** - * Specifies the name of the class that should be generated for the subtype instances. - */ - @Nonnull - public KeepSuperTypeBuilder as(@Nonnull ClassResource target) { - this.target = target; - return this; - } - - /** - * Adds a {@link KeepExpression keep statement} for the subtype-class. The described attribute - * will be initialized for each instantiated subtype element. - */ - @Nonnull - public KeepSuperTypeBuilder keep(@Nonnull KeepExpression keep) { - this.keeps.add(keep); - return this; - } - /** * Finishes the construction process. */ -- GitLab