Skip to content

Commit 9a6aa77

Browse files
committed
request #67 from hostpoint-ag/improved-startup-resource-usage
- Fixes for Windows
1 parent c6ce70f commit 9a6aa77

1 file changed

Lines changed: 49 additions & 47 deletions

File tree

data-preprocessor.groovy

Lines changed: 49 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -49,59 +49,61 @@ if(resources.isDirectory()) {
4949
* @throws RuntimeException If an {@link IOException} occurs while processing the ZIP or CSV files.
5050
*/
5151
def sortRules(File rulesZip) {
52-
def settings = new CsvParserSettings()
53-
def zip = new ZipFile(rulesZip)
54-
def entries = zip.entries()
55-
def entryMap = new HashMap<String, List<Row>>()
56-
def entryHashMap = new HashMap<String, byte[]>()
57-
while (entries.hasMoreElements()) {
58-
ZipEntry entry = entries.nextElement()
59-
if(entry.getName().endsWith(".csv") && !entry.isDirectory()) {
60-
log.info "\tSorting " + entry.getName()
61-
def rows = new ArrayList<Row>()
62-
MessageDigest md = MessageDigest.getInstance("MD5")
63-
try (DigestInputStream dis = new DigestInputStream(zip.getInputStream(entry), md)
64-
def reader = new InputStreamReader(dis, UTF_8)
65-
def br = new BufferedReader(reader)) {
52+
def settings = new CsvParserSettings(lineSeparatorDetectionEnabled: true)
53+
boolean hasChanges = false
54+
def sortedZip = File.createTempFile("browscap-", ".zip")
55+
try(def zip = new ZipFile(rulesZip)) {
56+
def entries = zip.entries()
57+
def entryMap = new HashMap<String, List<Row>>()
58+
def entryHashMap = new HashMap<String, byte[]>()
59+
while (entries.hasMoreElements()) {
60+
ZipEntry entry = entries.nextElement()
61+
if (entry.getName().endsWith(".csv") && !entry.isDirectory()) {
62+
log.info "\tSorting " + entry.getName()
63+
def rows = new ArrayList<Row>()
64+
MessageDigest md = MessageDigest.getInstance("MD5")
65+
try (DigestInputStream dis = new DigestInputStream(zip.getInputStream(entry), md)
66+
def reader = new InputStreamReader(dis, UTF_8)
67+
def br = new BufferedReader(reader)) {
6668

67-
def csvParser = new CsvParser(settings)
68-
csvParser.beginParsing(br)
69-
Record record
70-
while ((record = csvParser.parseNextRecord()) != null) {
71-
rows.add(new Row(record.getString(0), record))
69+
def csvParser = new CsvParser(settings)
70+
csvParser.beginParsing(br)
71+
Record record
72+
while ((record = csvParser.parseNextRecord()) != null) {
73+
rows.add(new Row(record.getString(0), record))
74+
}
75+
} catch (IOException e) {
76+
throw new RuntimeException(e)
7277
}
73-
} catch (IOException e) {
74-
throw new RuntimeException(e)
75-
}
7678

77-
// Sorting rows by pattern length in descending order, then by the pattern value
78-
rows.sort { r1, r2 ->
79-
r2.pattern.length() <=> r1.pattern.length() ?: r1.pattern <=> r2.pattern
80-
}
79+
// Sorting rows by pattern length in descending order, then by the pattern value
80+
rows.sort { r1, r2 ->
81+
r2.pattern.length() <=> r1.pattern.length() ?: r1.pattern <=> r2.pattern
82+
}
8183

82-
entryMap.put(entry.getName(), rows)
83-
entryHashMap.put(entry.getName(), md.digest())
84+
entryMap.put(entry.getName(), rows)
85+
entryHashMap.put(entry.getName(), md.digest())
86+
}
8487
}
85-
}
86-
def sortedZip = File.createTempFile("browscap-", ".zip")
87-
def writerSettings = new CsvWriterSettings()
88-
MessageDigest md = MessageDigest.getInstance("MD5")
89-
boolean hasChanges = false
90-
try(def fos = new FileOutputStream(sortedZip)
91-
def zipOut = new ZipOutputStream(fos)
92-
def dig = new DigestOutputStream(zipOut, md)
93-
def writer = new OutputStreamWriter(dig, UTF_8)) {
94-
for(def csvEntry : entryMap.entrySet()) {
95-
def outCsv = new ZipEntry(csvEntry.getKey())
96-
zipOut.putNextEntry(outCsv)
88+
def writerSettings = new CsvWriterSettings()
89+
MessageDigest md = MessageDigest.getInstance("MD5")
9790

98-
def csvWriter = new CsvWriter(writer, writerSettings)
99-
csvEntry.getValue().each { row ->
100-
csvWriter.writeRow(row.record.values)
101-
}
102-
csvWriter.flush()
103-
if(!Arrays.equals(entryHashMap.get(csvEntry.getKey()), md.digest())) {
104-
hasChanges = true
91+
try (def fos = new FileOutputStream(sortedZip)
92+
def zipOut = new ZipOutputStream(fos)
93+
def dig = new DigestOutputStream(zipOut, md)
94+
def writer = new OutputStreamWriter(dig, UTF_8)) {
95+
for (def csvEntry : entryMap.entrySet()) {
96+
def outCsv = new ZipEntry(csvEntry.getKey())
97+
zipOut.putNextEntry(outCsv)
98+
99+
def csvWriter = new CsvWriter(writer, writerSettings)
100+
csvEntry.getValue().each { row ->
101+
csvWriter.writeRow(row.record.values)
102+
}
103+
csvWriter.flush()
104+
if (!Arrays.equals(entryHashMap.get(csvEntry.getKey()), md.digest())) {
105+
hasChanges = true
106+
}
105107
}
106108
}
107109
}

0 commit comments

Comments
 (0)