|
1 | 1 | package de.vill.main; |
2 | 2 |
|
3 | 3 | import de.vill.model.*; |
| 4 | +import de.vill.model.building.AbstractUVLElementFactory; |
| 5 | +import de.vill.model.building.DefaultUVLElementFactory; |
| 6 | +import de.vill.model.building.FeatureModelBuilder; |
4 | 7 | import de.vill.model.building.VariableReference; |
5 | 8 | import de.vill.model.constraint.*; |
6 | 9 | import de.vill.model.expression.*; |
@@ -43,10 +46,16 @@ public class UVLModelFactory { |
43 | 46 |
|
44 | 47 | private final Map<LanguageLevel, Class<? extends IConversionStrategy>> conversionStrategiesDrop; |
45 | 48 | private final Map<LanguageLevel, Class<? extends IConversionStrategy>> conversionStrategiesConvert; |
| 49 | + private final AbstractUVLElementFactory elementFactory; |
46 | 50 |
|
47 | 51 | private final List<ParseError> errorList = new LinkedList<>(); |
48 | 52 |
|
49 | 53 | public UVLModelFactory() { |
| 54 | + this(new DefaultUVLElementFactory()); |
| 55 | + } |
| 56 | + |
| 57 | + public UVLModelFactory(AbstractUVLElementFactory elementFactory) { |
| 58 | + this.elementFactory = elementFactory; |
50 | 59 | this.conversionStrategiesDrop = new HashMap<>(); |
51 | 60 | this.conversionStrategiesDrop.put(LanguageLevel.GROUP_CARDINALITY, DropGroupCardinality.class); |
52 | 61 | this.conversionStrategiesDrop.put(LanguageLevel.FEATURE_CARDINALITY, DropFeatureCardinality.class); |
@@ -124,7 +133,7 @@ public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int |
124 | 133 | } |
125 | 134 | }); |
126 | 135 |
|
127 | | - UVLListener uvlListener = new UVLListener(); |
| 136 | + UVLListener uvlListener = createUVLListener(); |
128 | 137 | ParseTreeWalker walker = new ParseTreeWalker(); |
129 | 138 | walker.walk(uvlListener, UVLJavaParser.constraintLine()); |
130 | 139 |
|
@@ -272,6 +281,10 @@ private List<LanguageLevel> getActualLanguageLevelsToRemoveInOrder(FeatureModel |
272 | 281 | return completeOrderedLevelsToRemove; |
273 | 282 | } |
274 | 283 |
|
| 284 | + private UVLListener createUVLListener() { |
| 285 | + return new UVLListener(new FeatureModelBuilder(elementFactory)); |
| 286 | + } |
| 287 | + |
275 | 288 | private String getPath(String rootPath, Import referencedImport) { |
276 | 289 | return rootPath + FileSystems.getDefault().getSeparator() + referencedImport.getNamespace().replace(".", FileSystems.getDefault().getSeparator()) + ".uvl"; |
277 | 290 | } |
@@ -301,7 +314,7 @@ public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int |
301 | 314 | }); |
302 | 315 |
|
303 | 316 |
|
304 | | - UVLListener uvlListener = new UVLListener(); |
| 317 | + UVLListener uvlListener = createUVLListener(); |
305 | 318 | ParseTreeWalker walker = new ParseTreeWalker(); |
306 | 319 | walker.walk(uvlListener, UVLJavaParser.featureModel()); |
307 | 320 | FeatureModel featureModel = null; |
|
0 commit comments