Skip to content

Commit 46aa7a1

Browse files
committed
Refactor loading namespaces
1 parent 09f52c3 commit 46aa7a1

1 file changed

Lines changed: 28 additions & 30 deletions

File tree

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

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ import org.svis.lib.database.Database
4545
import org.svis.lib.database.DBConnector
4646
import org.neo4j.graphdb.Node
4747
import org.neo4j.graphdb.Label
48-
import org.neo4j.graphdb.Transaction
4948
import org.neo4j.graphdb.traversal.Evaluators
5049
import org.neo4j.graphdb.Direction
5150

@@ -68,50 +67,37 @@ class Famix2Famix extends WorkflowComponentWithConfig {
6867
log.info("Famix2Famix has started.")
6968

7069
if (fromDB) {
71-
7270
val famixRoot = famixFactory.createRoot
7371
val famixDocument = famixFactory.createDocument
7472
famixRoot.document = famixDocument
7573
graph = Database::getInstance("../databases/graph.db")
7674
dbConnector = new DBConnector(graph)
77-
75+
76+
// Create Namespaces
7877
val ts = graph.beginTx
7978
try {
80-
val nodes = graph.findNodes(Label.label("Package"))
8179
val namespaces = newHashMap
82-
val namespaceNodes = newArrayList
80+
val parentNamespaces = newHashMap
81+
val packageLabel = Label.label("Package")
82+
val nodes = graph.findNodes(packageLabel)
8383
while (nodes.hasNext) {
8484
val node = nodes.next
85-
val name = node.getProperty("name") as String
86-
val fqn = node.getProperty("fqn") as String
87-
val id = node.getId.toString
88-
val namespace = famixFactory.createFAMIXNamespace
89-
namespace.value = name
90-
namespace.fqn = fqn
91-
namespace.name = id
92-
namespace.id = id
93-
namespaces.put(node.id, namespace)
94-
namespaceNodes.add(node)
85+
var namespace = createNamespace(node)
9586
famixDocument.elements += namespace
96-
}
97-
for (node : namespaceNodes) {
98-
println(node.getProperty("name"))
87+
namespaces.put(node.id, namespace)
9988
val td = graph.traversalDescription.breadthFirst.relationships(Rels.CONTAINS, Direction.INCOMING).
10089
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
90+
for (parentNode : td.traverse(node).nodes) {
91+
if (parentNode.id != node.id && parentNode.hasLabel(packageLabel)) {
92+
parentNamespaces.put(node.id,parentNode.id)
93+
}
11394
}
11495
}
96+
parentNamespaces.forEach[childId , parentId |
97+
var ref = famixFactory.createIntegerReference
98+
ref.ref = namespaces.get(parentId)
99+
namespaces.get(childId).parentScope = ref
100+
]
115101
ts.success
116102
} catch (Exception e) {
117103
print(e)
@@ -612,4 +598,16 @@ class Famix2Famix extends WorkflowComponentWithConfig {
612598
enumValues.removeAll(duplicateEnumValues)
613599
structures.removeAll(duplicateAnnotationTypes)
614600
}
601+
602+
def createNamespace(Node node) {
603+
val namespace = famixFactory.createFAMIXNamespace
604+
val name = node.getProperty("name") as String
605+
val fqn = node.getProperty("fqn") as String
606+
val id = node.getId.toString
607+
namespace.value = name
608+
namespace.fqn = fqn
609+
namespace.name = id
610+
namespace.id = id
611+
return namespace
612+
}
615613
}

0 commit comments

Comments
 (0)