TXT TRANSFORMATION
Description
txtt is text transformer task that allow to:
-
read datas from text file(s)
-
process each line using freemarker templates
Txtt task parameters
|Attribute | Description | Value | Required | |-----------|-----------------------|-------------------------------|-----------| |file | input file | <filename>.txt | yes | |tofile | output file | <filename>.<mime> | yes | |template | freemarker template | <filename>.ftl | yes | |overwrite | overwrite output file | true by default | no |
Examples
result.txt
-
input file (result of command: time my.bin )
Command being timed: "./my.bin" User time (seconds): 0.00 System time (seconds): 0.00 Percent of CPU this job got: 0% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 1124 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 339 Voluntary context switches: 1 Involuntary context switches: 1 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0
build.xml
-
ant file:
<project name="bidji-txtt" xmlns:bj="antlib:org.bidji.taskdefs"> <target name="txt2java" description=" transform txt to java"> <bj:txtt file="result.txt" tofile="parser.java" template="txt2java.ftl" overwrite="true"/> </target> </project>
txt2java.ftl
-
freemarker file
// copy this function to your java code public void parseLines(List<String> lines) { for (String line : lines) { switch (line.substring(0,line.indexOf(":")-1)) { <#foreach line in lines> case "${line?substring(0,line?index_of(':'))?replace('(','\\\\(')}": // TODO break; </#foreach> default: throw new Exception("Fail to parse line " + line); } } }
parser.java
-
output file
// copy this function to your java code public void parseLines(List<String> lines) { for (String line : lines) { switch (line.substring(0,line.indexOf(":")-1)) { case "Command being timed": // TODO break; case "User time \\(seconds)": // TODO break; case "System time \\(seconds)": // TODO break; case "Percent of CPU this job got": // TODO break; case "Elapsed \\(wall clock) time \\(h": // TODO break; case "Average shared text size \\(kbytes)": // TODO break; case "Average unshared data size \\(kbytes)": // TODO break; case "Average stack size \\(kbytes)": // TODO break; case "Average total size \\(kbytes)": // TODO break; case "Maximum resident set size \\(kbytes)": // TODO break; case "Average resident set size \\(kbytes)": // TODO break; case "Major \\(requiring I/O) page faults": // TODO break; case "Minor \\(reclaiming a frame) page faults": // TODO break; case "Voluntary context switches": // TODO break; case "Involuntary context switches": // TODO break; case "Swaps": // TODO break; case "File system inputs": // TODO break; case "File system outputs": // TODO break; case "Socket messages sent": // TODO break; case "Socket messages received": // TODO break; case "Signals delivered": // TODO break; case "Page size \\(bytes)": // TODO break; case "Exit status": // TODO break; default: throw new Exception("Fail to parse line " + line); } } }