aboutsummaryrefslogtreecommitdiffstats
path: root/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptConsole.xtend
diff options
context:
space:
mode:
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.xtend104
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 @@
1package hu.bme.mit.inf.dslreasoner.application.execution
2
3import java.io.File
4import java.io.PrintWriter
5import java.util.LinkedHashSet
6import java.util.LinkedList
7import java.util.Map
8import org.eclipse.emf.common.util.URI
9import java.io.Closeable
10import java.io.IOException
11import java.util.LinkedHashMap
12import java.util.HashMap
13
14class 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