Skip to content

Commit 09f52c3

Browse files
committed
Set parent namespaces to all namespaces
1 parent b810718 commit 09f52c3

2 files changed

Lines changed: 47 additions & 15 deletions

File tree

generator/org.svis.generator/src/org/svis/generator/famix/Famix2Famix.xtend

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ import org.neo4j.graphdb.GraphDatabaseService
4444
import org.svis.lib.database.Database
4545
import org.svis.lib.database.DBConnector
4646
import org.neo4j.graphdb.Node
47+
import org.neo4j.graphdb.Label
48+
import org.neo4j.graphdb.Transaction
49+
import org.neo4j.graphdb.traversal.Evaluators
50+
import org.neo4j.graphdb.Direction
4751

4852
class Famix2Famix extends WorkflowComponentWithConfig {
4953
var GraphDatabaseService graph
@@ -64,35 +68,56 @@ class Famix2Famix extends WorkflowComponentWithConfig {
6468
log.info("Famix2Famix has started.")
6569

6670
if (fromDB) {
71+
6772
val famixRoot = famixFactory.createRoot
6873
val famixDocument = famixFactory.createDocument
6974
famixRoot.document = famixDocument
7075
graph = Database::getInstance("../databases/graph.db")
7176
dbConnector = new DBConnector(graph)
72-
var result = graph.execute('''
73-
MATCH (s:Package)
74-
RETURN s
75-
''')
76-
result.forEach [ row |
77-
println(row)
78-
val tx = graph.beginTx
79-
val node = row.get("s") as Node
80-
try {
77+
78+
val ts = graph.beginTx
79+
try {
80+
val nodes = graph.findNodes(Label.label("Package"))
81+
val namespaces = newHashMap
82+
val namespaceNodes = newArrayList
83+
while (nodes.hasNext) {
84+
val node = nodes.next
8185
val name = node.getProperty("name") as String
8286
val fqn = node.getProperty("fqn") as String
8387
val id = node.getId.toString
8488
val namespace = famixFactory.createFAMIXNamespace
8589
namespace.value = name
8690
namespace.fqn = fqn
8791
namespace.name = id
92+
namespace.id = id
93+
namespaces.put(node.id, namespace)
94+
namespaceNodes.add(node)
8895
famixDocument.elements += namespace
89-
tx.success
90-
} catch (Exception e) {
91-
print(e)
92-
} finally {
93-
tx.close
9496
}
95-
]
97+
for (node : namespaceNodes) {
98+
println(node.getProperty("name"))
99+
val td = graph.traversalDescription.breadthFirst.relationships(Rels.CONTAINS, Direction.INCOMING).
100+
evaluator(Evaluators.toDepth(1))
101+
var parentNodes = td.traverse(node).nodes
102+
val parentNamespaces = newArrayList
103+
for (pNode : parentNodes) {
104+
val id = pNode.id
105+
if (namespaces.containsKey(id) && id != node.id)
106+
parentNamespaces.add(pNode)
107+
}
108+
val ns = namespaces.get(node.id)
109+
for(pNode : parentNamespaces) {
110+
var ref = famixFactory.createIntegerReference
111+
ref.ref = namespaces.get(pNode.id)
112+
ns.parentScope = ref
113+
}
114+
}
115+
ts.success
116+
} catch (Exception e) {
117+
print(e)
118+
} finally {
119+
ts.close
120+
}
96121
ctx.set("famix", famixRoot)
97122
val resource = new ResourceImpl()
98123
resource.contents += famixRoot
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package org.svis.generator.famix;
2+
3+
import org.neo4j.graphdb.RelationshipType;
4+
5+
public enum Rels implements RelationshipType {
6+
CONTAINS
7+
}

0 commit comments

Comments
 (0)