aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java
diff options
context:
space:
mode:
Diffstat (limited to 'Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java')
-rw-r--r--Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java128
1 files changed, 128 insertions, 0 deletions
diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java
new file mode 100644
index 00000000..72ea45d1
--- /dev/null
+++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/runner/Main.java
@@ -0,0 +1,128 @@
1package ca.mcgill.ecse.socialnetwork.runner;
2
3import java.io.File;
4import java.io.FileNotFoundException;
5import java.io.PrintStream;
6import java.util.ArrayList;
7
8import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain;
9import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistance;
10import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph;
11import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.CsvFileWriter;
12import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.GraphReader;
13import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup;
14import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor;
15import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.validation.ViolationCheck;
16import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage;
17import socialnetwork.Person;
18
19public class Main {
20
21 private static String runWithPath(String path) {
22 String message = StandaloneScriptExecutor.executeScript(path);
23 return message;
24 }
25
26 public static void main(String args[]) {
27// try {
28
29 ArrayList<ArrayList<String>> output = new ArrayList<ArrayList<String>>();
30 output.add(prepareInfo());
31 CsvFileWriter.write(output, "yakinduum/info.csv");
32 //YakinduumModel.init();
33 generateModel(1);
34// }catch(Exception e) {
35// e.printStackTrace();
36// }finally {
37// outDegreeStatistic();
38// }
39// outDegreeStatistic();
40
41 }
42
43 public static void generateModel(int run) {
44 //prepare initial info
45 long begin = System.currentTimeMillis();
46 String message = runWithPath("yakinduGeneration.vsconfig");
47
48
49
50 if(message == null) {
51 ArrayList<ArrayList<String>> output = new ArrayList<ArrayList<String>>();
52 long elapsed = System.currentTimeMillis() - begin;
53 String time = formatTime(elapsed);
54
55 ArrayList<String> infoOutput = new ArrayList<String>();
56 infoOutput.add(run+ "");
57 infoOutput.add(time);
58 infoOutput.addAll(calculateMetric());
59
60 YakinduumModel model = new YakinduumModel("output/Viatra_100/1.xmi");
61 int violationCount = ViolationCheck.calculateViolationCounts(model.yakinduum);
62 infoOutput.add(violationCount + "");
63
64 //save model to another directory
65 model.save("yakinduum/" + run + ".xmi");
66
67 output.add(infoOutput);
68 CsvFileWriter.append(output, "yakinduum/info.csv");
69 System.out.println("Finished");
70 }
71
72 }
73
74 public static ArrayList<String> calculateMetric() {
75 //read model and metric
76 ArrayList<String> output = new ArrayList<String>();
77 GraphReader reader = new GraphReader(YakindummPackage.eINSTANCE);
78 EMFGraph graph = reader.readModels("output/Viatra_100/").get(0);
79
80 //KS distance
81 KSDistance ks = new KSDistance(Domain.Yakinduum);
82
83 //calculate and put metric data to output array
84 MetricSampleGroup samples = graph.evaluateAllMetricsToSamples();
85 output.add(graph.getStatistic().getAllNodes().size() + "");
86 output.add(ks.outDegreeDistance(samples.outDegreeSamples) + "");
87 output.add(ks.naDistance(samples.naSamples)+ "");
88 output.add(ks.mpcDistance(samples.mpcSamples) + "");
89 return output;
90 }
91
92 public static ArrayList<String> prepareInfo() {
93 ArrayList<String> info = new ArrayList<String>();
94 info.add("ID");
95 info.add("Time");
96 info.add("# of Nodes");
97 info.add("Out Degree");
98 info.add("Node Activity");
99 info.add("MPC");
100 info.add("Violations");
101 return info;
102 }
103
104 public static String formatTime(long time) {
105 long mili = time % 1000;
106 long second = (time / 1000) % 60;
107 long minute = (time / (1000 * 60));
108 return String.format("%d : %d.%d", minute, second, mili);
109 }
110
111 public static void statistics() {
112 String uri = "output/1.xmi";
113 SocialNetworkModel socialNetwork = new SocialNetworkModel(uri);
114 System.out.println(socialNetwork.getPersons().size());
115
116 File file = new File("model/statistics/output.txt");
117 try {
118 @SuppressWarnings("resource")
119 PrintStream out = new PrintStream(file);
120 for(Person p : socialNetwork.getPersons()) {
121 out.println(p.getFriends().size());
122 }
123 } catch (FileNotFoundException e) {
124 e.printStackTrace();
125 }
126 System.out.println("Output Finished");
127 }
128}