-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSimpleParser.java
More file actions
92 lines (85 loc) · 2.29 KB
/
SimpleParser.java
File metadata and controls
92 lines (85 loc) · 2.29 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import java.io.*;
import java.util.*;
import java.math.*;
import java.text.*;
public class SimpleParser
{
public static void main(String... args)
{
if(args.length != 1) return;
String fileName = args[0];
List<String> lines = new ArrayList<String>();
BufferedWriter bufferedWriter = null;
BufferedReader bufferedReader = null;
try
{
File file = new File(fileName);
FileReader fileReader = new FileReader(file);
bufferedReader = new BufferedReader(fileReader);
bufferedWriter = new BufferedWriter(new FileWriter(new File("output.txt")));
String line;
while((line = bufferedReader.readLine()) != null)
{
if(line.startsWith("04"))
{
// get the values, calculate and replace everything
// and write everything out
String[] splitted = line.split("\\+");
lines.add(0,lines.remove(0).replaceFirst("0000000000000",splitted[6]));
BigDecimal gross = new BigDecimal(splitted[6]);
gross = gross.divide(new BigDecimal(100),2,RoundingMode.HALF_UP);
BigDecimal tax = new BigDecimal(splitted[6]);
tax = tax.multiply(new BigDecimal(19));
tax = tax.divide(new BigDecimal(10000),2,RoundingMode.HALF_UP);
gross = gross.add(tax);
splitted[6] = "0000000000000";
splitted[7] = splitted[7].replace("0000000000000",String.format("%1$013d",new Integer(tax.toString().replace(".",""))));
splitted[2] = String.format("%1$013d",new Integer(gross.toString().replace(".","")));;
StringBuffer builder = new StringBuffer();
for(int i = 0; i < 7; i++)
{
builder.append(splitted[i]);
builder.append("+");
}
builder = builder.append(splitted[7]);
for(String str : lines)
{
bufferedWriter.write(str);
bufferedWriter.newLine();
}
bufferedWriter.write(builder.toString());
bufferedWriter.newLine();
lines.clear();
bufferedWriter.flush();
continue;
}
lines.add(line);
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
finally
{
try
{
if(bufferedWriter != null)
{
bufferedWriter.flush();
bufferedWriter.close();
}
if(bufferedReader != null)
{
bufferedReader.close();
}
}
catch(Exception e)
{
// ...
}
}
}
}