1
2
3
4
5
6
7
8
9
10 package de.uni_leipzig.wifa.iwi.mr3.dao.neo4j.impl;
11
12 import java.util.Map;
13
14 import org.apache.log4j.Logger;
15 import org.eclipse.emf.common.util.TreeIterator;
16 import org.eclipse.emf.ecore.EAnnotation;
17 import org.eclipse.emf.ecore.EAttribute;
18 import org.eclipse.emf.ecore.EClass;
19 import org.eclipse.emf.ecore.EDataType;
20 import org.eclipse.emf.ecore.EEnum;
21 import org.eclipse.emf.ecore.EEnumLiteral;
22 import org.eclipse.emf.ecore.EGenericType;
23 import org.eclipse.emf.ecore.EObject;
24 import org.eclipse.emf.ecore.EOperation;
25 import org.eclipse.emf.ecore.EPackage;
26 import org.eclipse.emf.ecore.EParameter;
27 import org.eclipse.emf.ecore.EReference;
28 import org.eclipse.emf.ecore.ETypeParameter;
29 import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;
30 import org.eclipse.emf.ecore.resource.Resource;
31 import org.neo4j.api.core.NeoService;
32 import org.neo4j.api.core.Node;
33
34 import de.uni_leipzig.wifa.iwi.mr3.dao.SaveProcessor;
35 import de.uni_leipzig.wifa.iwi.mr3.dao.neo4j.EcoreRelationshipType;
36
37
38
39
40
41
42 public abstract class AbstractNeoSaveProcessor implements SaveProcessor
43 {
44
45 private static final Logger LOG = Logger.getLogger(AbstractNeoSaveProcessor.class);
46
47
48 private NeoHelper helper;
49
50
51 private NeoService neo;
52
53
54
55
56
57
58
59 public void setHelper(final NeoHelper neoHelper)
60 {
61 helper = neoHelper;
62 neo = neoHelper.getNeo();
63 }
64
65
66
67
68
69
70 public NeoHelper getHelper()
71 {
72 return helper;
73 }
74
75
76
77
78
79
80
81
82
83
84
85 @Override
86 public void process(final Resource resource, final Map<EObject, Object> registry)
87 {
88
89
90 for (final TreeIterator<EObject> iter = resource.getAllContents(); iter.hasNext();)
91 {
92 dispatch(iter.next(), registry);
93 }
94 }
95
96
97
98
99
100
101
102
103
104
105
106
107
108 @Override
109 public void dispatch(final EObject element, final Map<EObject, Object> registry)
110 {
111 LOG.debug(element);
112
113 if (element instanceof EPackage)
114 {
115 process((EPackage) element, registry);
116 }
117 else if (element instanceof EEnum)
118 {
119 process((EEnum) element, registry);
120 }
121 else if (element instanceof EEnumLiteral)
122 {
123 process((EEnumLiteral) element, registry);
124 }
125 else if (element instanceof EDataType)
126 {
127 process((EDataType) element, registry);
128 }
129 else if (element instanceof EClass)
130 {
131 process((EClass) element, registry);
132 }
133 else if (element instanceof EAnnotation)
134 {
135 process((EAnnotation) element, registry);
136 }
137 else if (element instanceof EOperation)
138 {
139 process((EOperation) element, registry);
140 }
141 else if (element instanceof EAttribute)
142 {
143 process((EAttribute) element, registry);
144 }
145 else if (element instanceof EReference)
146 {
147 process((EReference) element, registry);
148 }
149 else if (element instanceof EGenericType)
150 {
151 process((EGenericType) element, registry);
152 }
153 else if (element instanceof EParameter)
154 {
155 process((EParameter) element, registry);
156 }
157 else if (element instanceof ETypeParameter)
158 {
159 process((ETypeParameter) element, registry);
160 }
161 else if (element instanceof EStringToStringMapEntryImpl)
162 {
163 process((EStringToStringMapEntryImpl) element, registry);
164 }
165 else
166 {
167 process(element, registry);
168 }
169 }
170
171
172
173
174
175
176
177
178
179
180 protected Node getNodeFromRegistry(final EObject element, final Map<EObject, Object> registry)
181 {
182 return (Node) registry.get(element);
183 }
184
185
186
187
188
189
190
191
192
193
194
195
196
197 protected Node createNodeWithRelationship(final Node node, final EcoreRelationshipType relType, final boolean ordered)
198 {
199 final Node anotherNode = createNode();
200 node.createRelationshipTo(anotherNode, relType);
201 return anotherNode;
202 }
203
204
205
206
207
208
209 protected Node createNode()
210 {
211 return neo.createNode();
212 }
213 }