1
2
3
4
5
6
7 package org.asyrinx.joey.gen.core.impl;
8
9 import java.io.BufferedReader;
10 import java.io.File;
11 import java.io.FileInputStream;
12 import java.io.IOException;
13 import java.io.InputStreamReader;
14 import java.util.ArrayList;
15 import java.util.Iterator;
16 import java.util.List;
17
18 import org.asyrinx.joey.gen.core.BizLogicDistiller;
19
20 /***
21 * @author takeshi
22 */
23 public class BizLogicDistillerByLine implements BizLogicDistiller {
24
25 /***
26 *
27 */
28 public BizLogicDistillerByLine(String bizLogicMarkerBegin, String bizLogicMarkerEnd) {
29 super();
30 this.bizLogicMarkerBegin = bizLogicMarkerBegin;
31 this.bizLogicMarkerEnd = bizLogicMarkerEnd;
32 }
33
34 private final String bizLogicMarkerBegin;
35
36 private final String bizLogicMarkerEnd;
37
38 public String getBizLogicMarkerBegin() {
39 return bizLogicMarkerBegin;
40 }
41
42 public String getBizLogicMarkerEnd() {
43 return bizLogicMarkerEnd;
44 }
45
46 public String distill(File source) throws IOException {
47 final FileInputStream fis = new FileInputStream(source);
48 final BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
49 final List bufferes = new ArrayList();
50
51 StringBuffer buffer = distillPart(reader);
52 while (buffer != null) {
53 bufferes.add(buffer);
54 buffer = distillPart(reader);
55 }
56 return concatBuffers(bufferes);
57 }
58
59 private String concatBuffers(List buffers) {
60 final StringBuffer result = new StringBuffer();
61 for (Iterator i = buffers.iterator(); i.hasNext();) {
62 final StringBuffer buffer = (StringBuffer) i.next();
63 result.append(buffer).append("\n");
64 }
65 return result.toString();
66 }
67
68 /***
69 * @param reader
70 * @return
71 * @throws IOException
72 */
73 private StringBuffer distillPart(BufferedReader reader) throws IOException {
74 if (!skipTo(reader, getBizLogicMarkerBegin()))
75 return null;
76 final StringBuffer buffer = new StringBuffer();
77 if (!appendTo(reader, buffer, getBizLogicMarkerEnd()))
78 return null;
79 else
80 return buffer;
81 }
82
83 /***
84 * @param reader
85 * @param match
86 * @throws IOException
87 */
88 private boolean skipTo(BufferedReader reader, String match) throws IOException {
89 String line = reader.readLine();
90 while (line != null) {
91 if (line.trim().equals(match))
92 return true;
93 line = reader.readLine();
94 }
95 return false;
96 }
97
98 /***
99 * @param reader
100 * @param dest
101 * @param match
102 * @throws IOException
103 */
104 private boolean appendTo(BufferedReader reader, StringBuffer dest, String match) throws IOException {
105 String line = reader.readLine();
106 while (line != null) {
107 if (line.trim().equals(match))
108 return true;
109 dest.append(line).append("\n");
110 line = reader.readLine();
111 }
112 return false;
113 }
114
115 }