@@ -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