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