diff options
Diffstat (limited to 'org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemResourceDescriptionStrategy.java')
-rw-r--r-- | org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemResourceDescriptionStrategy.java | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemResourceDescriptionStrategy.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemResourceDescriptionStrategy.java deleted file mode 100644 index edb25a1c..00000000 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemResourceDescriptionStrategy.java +++ /dev/null | |||
@@ -1,89 +0,0 @@ | |||
1 | package org.eclipse.viatra.solver.language.resource; | ||
2 | |||
3 | import org.eclipse.emf.ecore.EObject; | ||
4 | import org.eclipse.viatra.solver.language.ProblemUtil; | ||
5 | import org.eclipse.viatra.solver.language.model.problem.NamedElement; | ||
6 | import org.eclipse.viatra.solver.language.model.problem.Node; | ||
7 | import org.eclipse.viatra.solver.language.model.problem.Problem; | ||
8 | import org.eclipse.viatra.solver.language.model.problem.Variable; | ||
9 | import org.eclipse.xtext.EcoreUtil2; | ||
10 | import org.eclipse.xtext.naming.IQualifiedNameConverter; | ||
11 | import org.eclipse.xtext.naming.QualifiedName; | ||
12 | import org.eclipse.xtext.resource.EObjectDescription; | ||
13 | import org.eclipse.xtext.resource.IEObjectDescription; | ||
14 | import org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy; | ||
15 | import org.eclipse.xtext.util.IAcceptor; | ||
16 | |||
17 | import com.google.inject.Inject; | ||
18 | import com.google.inject.Singleton; | ||
19 | |||
20 | @Singleton | ||
21 | public class ProblemResourceDescriptionStrategy extends DefaultResourceDescriptionStrategy { | ||
22 | @Inject | ||
23 | private IQualifiedNameConverter qualifiedNameConverter; | ||
24 | |||
25 | @Override | ||
26 | public boolean createEObjectDescriptions(EObject eObject, IAcceptor<IEObjectDescription> acceptor) { | ||
27 | if (eObject instanceof Variable) { | ||
28 | return false; | ||
29 | } | ||
30 | if (eObject instanceof NamedElement) { | ||
31 | NamedElement namedElement = (NamedElement) eObject; | ||
32 | String name = namedElement.getName(); | ||
33 | if (name == null || name.isEmpty()) { | ||
34 | return true; | ||
35 | } | ||
36 | Problem problem = EcoreUtil2.getContainerOfType(namedElement, Problem.class); | ||
37 | QualifiedName problemQualifiedName = null; | ||
38 | if (problem != null) { | ||
39 | String problemName = problem.getName(); | ||
40 | if (problemName != null && !problemName.isEmpty()) { | ||
41 | problemQualifiedName = qualifiedNameConverter.toQualifiedName(problemName); | ||
42 | } | ||
43 | } | ||
44 | QualifiedName qualifiedName = qualifiedNameConverter.toQualifiedName(namedElement.getName()); | ||
45 | boolean nameExported; | ||
46 | if (shouldExportSimpleName(namedElement)) { | ||
47 | acceptEObjectDescription(namedElement, problemQualifiedName, qualifiedName, acceptor); | ||
48 | nameExported = true; | ||
49 | } else { | ||
50 | nameExported = false; | ||
51 | } | ||
52 | EObject parent = namedElement.eContainer(); | ||
53 | while (parent != null && parent != problem) { | ||
54 | if (parent instanceof NamedElement) { | ||
55 | NamedElement namedParent = (NamedElement) parent; | ||
56 | String parentName = namedParent.getName(); | ||
57 | if (parentName != null || !name.isEmpty()) { | ||
58 | QualifiedName parentQualifiedName = qualifiedNameConverter.toQualifiedName(parentName); | ||
59 | qualifiedName = parentQualifiedName.append(qualifiedName); | ||
60 | if (shouldExportSimpleName(parent)) { | ||
61 | acceptEObjectDescription(namedElement, problemQualifiedName, qualifiedName, acceptor); | ||
62 | nameExported = true; | ||
63 | } else { | ||
64 | nameExported = false; | ||
65 | } | ||
66 | } | ||
67 | } | ||
68 | parent = parent.eContainer(); | ||
69 | } | ||
70 | if (!nameExported) { | ||
71 | acceptEObjectDescription(namedElement, problemQualifiedName, qualifiedName, acceptor); | ||
72 | } | ||
73 | } | ||
74 | return true; | ||
75 | } | ||
76 | |||
77 | protected boolean shouldExportSimpleName(EObject eObject) { | ||
78 | if (eObject instanceof Node) { | ||
79 | return !ProblemUtil.isNewNode((Node) eObject); | ||
80 | } | ||
81 | return true; | ||
82 | } | ||
83 | |||
84 | private void acceptEObjectDescription(EObject eObject, QualifiedName prefix, QualifiedName qualifiedName, | ||
85 | IAcceptor<IEObjectDescription> acceptor) { | ||
86 | QualifiedName qualifiedNameWithPrefix = prefix == null ? qualifiedName : prefix.append(qualifiedName); | ||
87 | acceptor.accept(EObjectDescription.create(qualifiedNameWithPrefix, eObject)); | ||
88 | } | ||
89 | } | ||