-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCalculate_and_set_Abstractness_for_Java.cypher
More file actions
28 lines (27 loc) · 1.33 KB
/
Calculate_and_set_Abstractness_for_Java.cypher
File metadata and controls
28 lines (27 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//Calculate and set Abstractness for Java Packages including Counts. Requires "Add_file_name and_extension.cypher".
MATCH (package:Java:Package)
MATCH (artifact:Artifact)-[:CONTAINS]->(package)
WITH artifact.name AS artifactName
,package
,count{(package)-[:CONTAINS]->(:Type)} AS numberTypes
,count{(package)-[:CONTAINS]->(:Class{abstract:true})} AS numberAbstractClasses
,count{(package)-[:CONTAINS]->(:Annotation)} AS numberAnnotations
,count{(package)-[:CONTAINS]->(:Interface)} AS numberInterfaces
WITH *
,numberInterfaces + numberAnnotations + numberAbstractClasses AS numberAbstractTypes
,numberInterfaces + numberAnnotations + (numberAbstractClasses * 0.7) AS weightedAbstractTypes
WITH *
,toFloat(weightedAbstractTypes) / (numberTypes + 1E-38) AS abstractness
SET package.abstractness = abstractness
,package.numberOfAbstractTypes = numberAbstractTypes
,package.numberOfAbstractClasses = numberAbstractClasses
,package.numberOfTypes = numberTypes
RETURN artifactName
,package.fqn AS fullQualifiedPackageName
,package.name AS packageName
,abstractness
,numberAbstractTypes
,numberTypes
,numberAbstractClasses
,weightedAbstractTypes
ORDER BY abstractness ASC, numberTypes DESC