diff options
author | OszkarSemerath <oszkar.semerath@gmail.com> | 2018-02-15 23:03:20 +0100 |
---|---|---|
committer | OszkarSemerath <oszkar.semerath@gmail.com> | 2018-02-15 23:03:20 +0100 |
commit | 92f94b063ec9a65d04178788f3858c750fbf16e7 (patch) | |
tree | 5e1d9d7b64075931a8200080f5b2736685d14c71 /Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptConsole.xtend | |
parent | First complete scope grammar (diff) | |
download | VIATRA-Generator-92f94b063ec9a65d04178788f3858c750fbf16e7.tar.gz VIATRA-Generator-92f94b063ec9a65d04178788f3858c750fbf16e7.tar.zst VIATRA-Generator-92f94b063ec9a65d04178788f3858c750fbf16e7.zip |
Generation specification -> execution
Diffstat (limited to 'Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptConsole.xtend')
-rw-r--r-- | Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptConsole.xtend | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptConsole.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptConsole.xtend new file mode 100644 index 00000000..77c5252a --- /dev/null +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptConsole.xtend | |||
@@ -0,0 +1,104 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.application.execution | ||
2 | |||
3 | import java.io.File | ||
4 | import java.io.PrintWriter | ||
5 | import java.util.LinkedHashSet | ||
6 | import java.util.LinkedList | ||
7 | import java.util.Map | ||
8 | import org.eclipse.emf.common.util.URI | ||
9 | import java.io.Closeable | ||
10 | import java.io.IOException | ||
11 | import java.util.LinkedHashMap | ||
12 | import java.util.HashMap | ||
13 | |||
14 | class ScriptConsole implements Closeable { | ||
15 | val boolean printToConsole | ||
16 | val boolean cleanFiles | ||
17 | |||
18 | val File messageConsoleFile | ||
19 | val File errorConsoleFile | ||
20 | val File statisticsConsoleFile | ||
21 | val Map<File,PrintWriter> file2Writer = new HashMap | ||
22 | |||
23 | val statisticsHeaderBuffer = new LinkedHashSet<String> | ||
24 | val statisticsDataBuffer = new LinkedList<Map<String,? extends Object>> | ||
25 | |||
26 | static val delimier = ';' | ||
27 | static val empty = "" | ||
28 | |||
29 | public new( | ||
30 | boolean printToConsole, | ||
31 | boolean cleanFiles, | ||
32 | URI messageConsoleURI, | ||
33 | URI errorConsoleURI, | ||
34 | URI statisticsConsoleURI) | ||
35 | { | ||
36 | this.printToConsole = printToConsole | ||
37 | this.cleanFiles = cleanFiles | ||
38 | this.messageConsoleFile = messageConsoleURI.prepareFile | ||
39 | this.errorConsoleFile = errorConsoleURI.prepareFile | ||
40 | this.statisticsConsoleFile = statisticsConsoleURI.prepareFile | ||
41 | } | ||
42 | |||
43 | public def writeMessage(String message) { | ||
44 | messageConsoleFile.writeToFile(message) | ||
45 | } | ||
46 | public def writeError(String message) { | ||
47 | errorConsoleFile.writeToFile(message) | ||
48 | } | ||
49 | public def writeStatistics(LinkedHashMap<String,? extends Object> statistics) { | ||
50 | val message = ''' | ||
51 | «FOR key : statistics.keySet SEPARATOR delimier»«key»«ENDFOR» | ||
52 | «FOR value : statistics.values SEPARATOR delimier»«value»«ENDFOR»''' | ||
53 | statisticsConsoleFile.writeToFile(message) | ||
54 | } | ||
55 | public def addStatistics(LinkedHashMap<String,? extends Object> statistics) { | ||
56 | for(key : statistics.keySet) { | ||
57 | this.statisticsHeaderBuffer.add(key); | ||
58 | } | ||
59 | this.statisticsDataBuffer.add(statistics) | ||
60 | } | ||
61 | public def flushStatistics() { | ||
62 | val message = ''' | ||
63 | «FOR key : statisticsHeaderBuffer SEPARATOR delimier»«key»«ENDFOR» | ||
64 | «FOR line : statisticsDataBuffer » | ||
65 | «FOR key : statisticsHeaderBuffer»«IF line.containsKey(key)»«empty»«ELSE»«line.get(key)»«ENDIF»«ENDFOR» | ||
66 | «ENDFOR» | ||
67 | ''' | ||
68 | statisticsConsoleFile.writeToFile(message) | ||
69 | } | ||
70 | /** | ||
71 | * Writes a line of text to a file and the console. Initializes a writer to the file for at the first message. | ||
72 | */ | ||
73 | private def writeToFile(File file, String text) { | ||
74 | if(file != null) { | ||
75 | val writer = if(this.file2Writer.containsKey(file)) { | ||
76 | this.file2Writer.get(file) | ||
77 | } else { | ||
78 | if(!file.exists) { | ||
79 | file.createNewFile | ||
80 | } | ||
81 | val writer = new PrintWriter(file, "UTF-8"); | ||
82 | this.file2Writer.put(file,writer) | ||
83 | writer | ||
84 | } | ||
85 | writer.println(text) | ||
86 | } | ||
87 | if(printToConsole) { | ||
88 | println(text) | ||
89 | } | ||
90 | } | ||
91 | |||
92 | private def prepareFile(URI uri) { | ||
93 | val fileString = uri.toFileString | ||
94 | val file = new File(fileString) | ||
95 | if(this.cleanFiles && file.exists) { | ||
96 | file.delete | ||
97 | } | ||
98 | return file | ||
99 | } | ||
100 | |||
101 | override close() throws IOException { | ||
102 | this.file2Writer.values.forEach[close] | ||
103 | } | ||
104 | } \ No newline at end of file | ||