Skip to content

Commit e386026

Browse files
committed
Get classes from db and add to famix
Container reference is just the package, which contains the class
1 parent 46aa7a1 commit e386026

1 file changed

Lines changed: 61 additions & 6 deletions

File tree

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

Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,11 @@ class Famix2Famix extends WorkflowComponentWithConfig {
7474
dbConnector = new DBConnector(graph)
7575

7676
// Create Namespaces
77-
val ts = graph.beginTx
77+
val packageLabel = Label.label("Package")
78+
val namespaces = newHashMap
79+
val parentNamespaces = newHashMap
80+
var tx = graph.beginTx
7881
try {
79-
val namespaces = newHashMap
80-
val parentNamespaces = newHashMap
81-
val packageLabel = Label.label("Package")
8282
val nodes = graph.findNodes(packageLabel)
8383
while (nodes.hasNext) {
8484
val node = nodes.next
@@ -98,11 +98,46 @@ class Famix2Famix extends WorkflowComponentWithConfig {
9898
ref.ref = namespaces.get(parentId)
9999
namespaces.get(childId).parentScope = ref
100100
]
101-
ts.success
101+
tx.success
102102
} catch (Exception e) {
103103
print(e)
104104
} finally {
105-
ts.close
105+
tx.close
106+
}
107+
108+
//Create Classes
109+
tx = graph.beginTx
110+
try {
111+
val classLabel = Label.label("Class")
112+
val containerLabel = Label.label("Container")
113+
val nodes = graph.findNodes(classLabel)
114+
val classes = newHashMap
115+
val containers = newHashMap
116+
while (nodes.hasNext) {
117+
val node = nodes.next
118+
val class = createClass(node)
119+
120+
classes.put(node.id,class)
121+
famixDocument.elements += class
122+
val td = graph.traversalDescription.breadthFirst.relationships(Rels.CONTAINS, Direction.INCOMING).
123+
evaluator(Evaluators.toDepth(1))
124+
for(parentNode : td.traverse(node).nodes) {
125+
if (parentNode.hasLabel(packageLabel)) {
126+
containers.put(node.id,parentNode.id)
127+
}
128+
}
129+
}
130+
println(containers.size + " : " + classes.size)
131+
containers.forEach[classId, containerId |
132+
var ref = famixFactory.createIntegerReference
133+
ref.ref = namespaces.get(containerId)
134+
classes.get(classId).container = ref
135+
]
136+
tx.success
137+
} catch (Exception e) {
138+
print(e)
139+
} finally {
140+
tx.close
106141
}
107142
ctx.set("famix", famixRoot)
108143
val resource = new ResourceImpl()
@@ -610,4 +645,24 @@ class Famix2Famix extends WorkflowComponentWithConfig {
610645
namespace.id = id
611646
return namespace
612647
}
648+
649+
def createClass(Node node) {
650+
val class = famixFactory.createFAMIXClass
651+
if(node.hasProperty("name")) {
652+
val value = node.getProperty("name") as String
653+
class.value = value
654+
}
655+
if(node.hasProperty("fqn")) {
656+
val fqn = node.getProperty("fqn") as String
657+
class.fqn = fqn
658+
}
659+
660+
if(node.hasProperty("md5")) {
661+
val id = node.getProperty("md5") as String
662+
class.id = id
663+
}
664+
val name = node.getId.toString
665+
class.name = name
666+
return class
667+
}
613668
}

0 commit comments

Comments
 (0)