diff options
Diffstat (limited to 'subprojects/language/src')
2 files changed, 20 insertions, 2 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 a16f77eb..cac1f265 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 | |||
@@ -24,8 +24,9 @@ import java.util.Map; | |||
24 | 24 | ||
25 | @Singleton | 25 | @Singleton |
26 | public class ProblemResourceDescriptionStrategy extends DefaultResourceDescriptionStrategy { | 26 | public class ProblemResourceDescriptionStrategy extends DefaultResourceDescriptionStrategy { |
27 | public static final String ERROR_PREDICATE = "tools.refinery.language.resource" + | 27 | private static final String DATA_PREFIX = "tools.refinery.language.resource.ProblemResourceDescriptionStrategy."; |
28 | ".ProblemResourceDescriptionStrategy.ERROR_PREDICATE"; | 28 | public static final String ARITY = DATA_PREFIX + "ARITY"; |
29 | public static final String ERROR_PREDICATE = DATA_PREFIX + "ERROR_PREDICATE"; | ||
29 | public static final String ERROR_PREDICATE_TRUE = "true"; | 30 | public static final String ERROR_PREDICATE_TRUE = "true"; |
30 | 31 | ||
31 | @Inject | 32 | @Inject |
@@ -97,6 +98,10 @@ public class ProblemResourceDescriptionStrategy extends DefaultResourceDescripti | |||
97 | 98 | ||
98 | protected Map<String, String> getUserData(EObject eObject) { | 99 | protected Map<String, String> getUserData(EObject eObject) { |
99 | var builder = ImmutableMap.<String, String>builder(); | 100 | var builder = ImmutableMap.<String, String>builder(); |
101 | if (eObject instanceof Relation relation) { | ||
102 | int arity = ProblemUtil.getArity(relation); | ||
103 | builder.put(ARITY, Integer.toString(arity)); | ||
104 | } | ||
100 | if (eObject instanceof PredicateDefinition predicateDefinition && predicateDefinition.isError()) { | 105 | if (eObject instanceof PredicateDefinition predicateDefinition && predicateDefinition.isError()) { |
101 | builder.put(ERROR_PREDICATE, ERROR_PREDICATE_TRUE); | 106 | builder.put(ERROR_PREDICATE, ERROR_PREDICATE_TRUE); |
102 | } | 107 | } |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java b/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java index a9efc4bb..b3c93b07 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java +++ b/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java | |||
@@ -83,6 +83,19 @@ public final class ProblemUtil { | |||
83 | return true; | 83 | return true; |
84 | } | 84 | } |
85 | 85 | ||
86 | public static int getArity(Relation relation) { | ||
87 | if (relation instanceof ClassDeclaration || relation instanceof EnumDeclaration) { | ||
88 | return 1; | ||
89 | } | ||
90 | if (relation instanceof ReferenceDeclaration) { | ||
91 | return 2; | ||
92 | } | ||
93 | if (relation instanceof PredicateDefinition predicateDefinition) { | ||
94 | return predicateDefinition.getParameters().size(); | ||
95 | } | ||
96 | throw new IllegalArgumentException("Unknown Relation: " + relation); | ||
97 | } | ||
98 | |||
86 | private static URI getLibraryUri(String libraryName) { | 99 | private static URI getLibraryUri(String libraryName) { |
87 | return URI.createURI(ProblemUtil.class.getClassLoader() | 100 | return URI.createURI(ProblemUtil.class.getClassLoader() |
88 | .getResource("tools/refinery/language/%s.problem".formatted(libraryName)).toString()); | 101 | .getResource("tools/refinery/language/%s.problem".formatted(libraryName)).toString()); |