Skip to content

Commit f380c5d

Browse files
author
Julia Pham
committed
feat: added abstract factory and default factory
1 parent 5fc736c commit f380c5d

File tree

3 files changed

+44
-3
lines changed

3 files changed

+44
-3
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package de.vill.model.building;
2+
3+
import de.vill.exception.ParseError;
4+
import de.vill.model.*;
5+
6+
public abstract class AbstractUVLElementFactory {
7+
8+
public abstract Feature createFeature(String name);
9+
10+
public abstract <T> Attribute<T> createAttribute(String name, T value, Feature correspondingFeature);
11+
12+
public abstract GlobalAttribute createGlobalAttribute(String identifier, FeatureModel featureModel);
13+
14+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package de.vill.model.building;
2+
3+
import de.vill.exception.ParseError;
4+
import de.vill.model.*;
5+
6+
public class DefaultUVLElementFactory extends AbstractUVLElementFactory{
7+
8+
@Override
9+
public Feature createFeature(String name){
10+
return new Feature(name);
11+
}
12+
13+
@Override
14+
public <T> Attribute<T> createAttribute(String name, T value, Feature correspondingFeature){
15+
return new Attribute<>(name, value, correspondingFeature);
16+
}
17+
18+
@Override
19+
public GlobalAttribute createGlobalAttribute(String identifier, FeatureModel featureModel){
20+
return new GlobalAttribute(identifier, featureModel);
21+
}
22+
}

src/main/java/de/vill/model/building/FeatureModelBuilder.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,20 @@
1111
import java.util.List;
1212
import java.util.Map;
1313
import java.util.Set;
14+
import java.util.function.Function;
1415

1516
/**
1617
*
1718
*/
1819
public class FeatureModelBuilder {
1920

21+
private Function<String, Feature> featureFactory = Feature::new;
2022
private FeatureModel fmInConstruction;
2123

24+
public void setFeatureFactory(Function<String, Feature> featureFactory){
25+
this.featureFactory = featureFactory;
26+
}
27+
2228
public FeatureModelBuilder() {
2329
fmInConstruction = new FeatureModel();
2430
}
@@ -27,7 +33,6 @@ public FeatureModelBuilder(FeatureModel old) {
2733
fmInConstruction = old;
2834
}
2935

30-
3136
public void addImport(Import importToAdd) {
3237
fmInConstruction.getImports().add(importToAdd);
3338
}
@@ -49,7 +54,7 @@ public boolean setRootFeature(Feature feature) {
4954
}
5055

5156
public Feature addRootFeature(String featureName, FeatureType featureType, Cardinality cardinality) {
52-
Feature rootFeature = new Feature(featureName);
57+
Feature rootFeature = featureFactory.apply(featureName);
5358
rootFeature.setFeatureType(featureType);
5459
rootFeature.setCardinality(cardinality);
5560

@@ -71,7 +76,7 @@ public Feature addFeature(String featureName, Group group, Import featureOrigin,
7176
}
7277

7378
public Feature addFeature(String featureName, Group group, Import featureOrigin, FeatureType type, Cardinality cardinality) {
74-
Feature feature = new Feature(featureName);
79+
Feature feature = featureFactory.apply(featureName);
7580
feature.setRelatedImport(featureOrigin);
7681
feature.setFeatureType(type);
7782
feature.setCardinality(cardinality);

0 commit comments

Comments
 (0)