aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java')
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java20
1 files changed, 11 insertions, 9 deletions
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java
index 3dcf6b1f..8fd60364 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java
@@ -8,7 +8,6 @@ package tools.refinery.language.resource;
8import com.google.common.collect.ImmutableMap; 8import com.google.common.collect.ImmutableMap;
9import com.google.inject.Inject; 9import com.google.inject.Inject;
10import com.google.inject.Singleton; 10import com.google.inject.Singleton;
11import com.google.inject.name.Named;
12import org.eclipse.emf.ecore.EObject; 11import org.eclipse.emf.ecore.EObject;
13import org.eclipse.xtext.EcoreUtil2; 12import org.eclipse.xtext.EcoreUtil2;
14import org.eclipse.xtext.naming.IQualifiedNameConverter; 13import org.eclipse.xtext.naming.IQualifiedNameConverter;
@@ -19,10 +18,9 @@ import org.eclipse.xtext.resource.IEObjectDescription;
19import org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy; 18import org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy;
20import org.eclipse.xtext.util.IAcceptor; 19import org.eclipse.xtext.util.IAcceptor;
21import tools.refinery.language.documentation.DocumentationCommentParser; 20import tools.refinery.language.documentation.DocumentationCommentParser;
22import tools.refinery.language.naming.ProblemQualifiedNameProvider;
23import tools.refinery.language.scoping.imports.ImportCollector;
24import tools.refinery.language.model.problem.*; 21import tools.refinery.language.model.problem.*;
25import tools.refinery.language.naming.NamingUtil; 22import tools.refinery.language.naming.NamingUtil;
23import tools.refinery.language.scoping.imports.ImportCollector;
26import tools.refinery.language.utils.ProblemUtil; 24import tools.refinery.language.utils.ProblemUtil;
27 25
28import java.util.Map; 26import java.util.Map;
@@ -32,13 +30,15 @@ import java.util.stream.Collectors;
32public class ProblemResourceDescriptionStrategy extends DefaultResourceDescriptionStrategy { 30public class ProblemResourceDescriptionStrategy extends DefaultResourceDescriptionStrategy {
33 private static final String DATA_PREFIX = "tools.refinery.language.resource.ProblemResourceDescriptionStrategy."; 31 private static final String DATA_PREFIX = "tools.refinery.language.resource.ProblemResourceDescriptionStrategy.";
34 32
35 public static final String ARITY = DATA_PREFIX + "ARITY"; 33 public static final String TYPE_LIKE = DATA_PREFIX + "ARITY";
34 public static final String TYPE_LIKE_TRUE = "true";
36 public static final String ERROR_PREDICATE = DATA_PREFIX + "ERROR_PREDICATE"; 35 public static final String ERROR_PREDICATE = DATA_PREFIX + "ERROR_PREDICATE";
37 public static final String ERROR_PREDICATE_TRUE = "true"; 36 public static final String ERROR_PREDICATE_TRUE = "true";
38 public static final String SHADOWING_KEY = DATA_PREFIX + "SHADOWING_KEY"; 37 public static final String SHADOWING_KEY = DATA_PREFIX + "SHADOWING_KEY";
39 public static final String SHADOWING_KEY_PROBLEM = "problem"; 38 public static final String SHADOWING_KEY_PROBLEM = "problem";
40 public static final String SHADOWING_KEY_NODE = "node"; 39 public static final String SHADOWING_KEY_NODE = "node";
41 public static final String SHADOWING_KEY_RELATION = "relation"; 40 public static final String SHADOWING_KEY_RELATION = "relation";
41 public static final String SHADOWING_KEY_AGGREGATOR = "aggregator";
42 public static final String PREFERRED_NAME = DATA_PREFIX + "PREFERRED_NAME"; 42 public static final String PREFERRED_NAME = DATA_PREFIX + "PREFERRED_NAME";
43 public static final String PREFERRED_NAME_TRUE = "true"; 43 public static final String PREFERRED_NAME_TRUE = "true";
44 public static final String IMPORTS = DATA_PREFIX + "IMPORTS"; 44 public static final String IMPORTS = DATA_PREFIX + "IMPORTS";
@@ -51,8 +51,7 @@ public class ProblemResourceDescriptionStrategy extends DefaultResourceDescripti
51 private IQualifiedNameConverter qualifiedNameConverter; 51 private IQualifiedNameConverter qualifiedNameConverter;
52 52
53 @Inject 53 @Inject
54 @Named(ProblemQualifiedNameProvider.NAMED_DELEGATE) 54 private IQualifiedNameProvider qualifiedNameProvider;
55 private IQualifiedNameProvider delegateQualifiedNameProvider;
56 55
57 @Inject 56 @Inject
58 private ImportCollector importCollector; 57 private ImportCollector importCollector;
@@ -123,7 +122,7 @@ public class ProblemResourceDescriptionStrategy extends DefaultResourceDescripti
123 if (problem == null) { 122 if (problem == null) {
124 return QualifiedName.EMPTY; 123 return QualifiedName.EMPTY;
125 } 124 }
126 var qualifiedName = delegateQualifiedNameProvider.getFullyQualifiedName(problem); 125 var qualifiedName = qualifiedNameProvider.getFullyQualifiedName(problem);
127 return qualifiedName == null ? QualifiedName.EMPTY : qualifiedName; 126 return qualifiedName == null ? QualifiedName.EMPTY : qualifiedName;
128 } 127 }
129 128
@@ -152,8 +151,11 @@ public class ProblemResourceDescriptionStrategy extends DefaultResourceDescripti
152 builder.put(SHADOWING_KEY, SHADOWING_KEY_NODE); 151 builder.put(SHADOWING_KEY, SHADOWING_KEY_NODE);
153 } else if (eObject instanceof Relation relation) { 152 } else if (eObject instanceof Relation relation) {
154 builder.put(SHADOWING_KEY, SHADOWING_KEY_RELATION); 153 builder.put(SHADOWING_KEY, SHADOWING_KEY_RELATION);
155 int arity = ProblemUtil.getArity(relation); 154 if (ProblemUtil.isTypeLike(relation)) {
156 builder.put(ARITY, Integer.toString(arity)); 155 builder.put(TYPE_LIKE, TYPE_LIKE_TRUE);
156 }
157 } else if (eObject instanceof AggregatorDeclaration) {
158 builder.put(SHADOWING_KEY, SHADOWING_KEY_AGGREGATOR);
157 } 159 }
158 if (eObject instanceof PredicateDefinition predicateDefinition && predicateDefinition.isError()) { 160 if (eObject instanceof PredicateDefinition predicateDefinition && predicateDefinition.isError()) {
159 builder.put(ERROR_PREDICATE, ERROR_PREDICATE_TRUE); 161 builder.put(ERROR_PREDICATE, ERROR_PREDICATE_TRUE);