Skip to content

Commit 4dc4411

Browse files
committed
Preliminary API work for support of notes
1 parent b4e5acf commit 4dc4411

23 files changed

Lines changed: 302 additions & 285 deletions

gp-cli/src/main/java/com/ibm/g11n/pipeline/tools/cli/ExportCmd.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright IBM Corp. 2015
2+
* Copyright IBM Corp. 2015, 2016
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -19,18 +19,16 @@
1919
import java.io.FileInputStream;
2020
import java.io.FileOutputStream;
2121
import java.io.IOException;
22-
import java.util.Collection;
23-
import java.util.LinkedList;
2422
import java.util.Map;
2523
import java.util.Map.Entry;
2624

2725
import com.beust.jcommander.Parameter;
2826
import com.beust.jcommander.Parameters;
2927
import com.ibm.g11n.pipeline.client.ResourceEntryData;
3028
import com.ibm.g11n.pipeline.client.ServiceException;
29+
import com.ibm.g11n.pipeline.resfilter.Bundle;
3130
import com.ibm.g11n.pipeline.resfilter.ResourceFilter;
3231
import com.ibm.g11n.pipeline.resfilter.ResourceFilterFactory;
33-
import com.ibm.g11n.pipeline.resfilter.ResourceString;
3432
import com.ibm.g11n.pipeline.resfilter.ResourceType;
3533

3634
/**
@@ -74,7 +72,7 @@ final class ExportCmd extends BundleCmd {
7472
@Override
7573
protected void _execute() {
7674
Map<String, ResourceEntryData> resEntries = null;
77-
Collection<ResourceString> resStrings = new LinkedList<>();
75+
Bundle bundle = new Bundle();
7876
try {
7977
resEntries =
8078
getClient().getResourceEntries(bundleId, languageId);
@@ -87,11 +85,11 @@ protected void _execute() {
8785
resVal = data.getSourceValue();
8886
}
8987
if (resVal != null) {
90-
ResourceString resString = new ResourceString(key, resVal);
88+
int sequenceNumber = -1;
9189
if (seqNum != null) {
92-
resString.setSequenceNumber(seqNum.intValue());
90+
sequenceNumber = seqNum.intValue();
9391
}
94-
resStrings.add(resString);
92+
bundle.addResourceString(key, resVal, sequenceNumber);
9593
}
9694
}
9795
} catch (ServiceException e) {
@@ -103,9 +101,9 @@ protected void _execute() {
103101
try (FileOutputStream fos = new FileOutputStream(f)) {
104102
if (sourceFileName != null && !sourceFileName.isEmpty()) {
105103
FileInputStream fis = new FileInputStream(sourceFileName);
106-
filter.merge(fis, fos, languageId, resStrings);
104+
filter.merge(fis, fos, languageId, bundle);
107105
} else {
108-
filter.write(fos, languageId, resStrings);
106+
filter.write(fos, languageId, bundle);
109107
}
110108
} catch (IOException e) {
111109
throw new RuntimeException("Failed to write the resoruce data to " + fileName + ": " + e.getMessage(), e);

gp-cli/src/main/java/com/ibm/g11n/pipeline/tools/cli/ImportCmd.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
import java.io.File;
1919
import java.io.FileInputStream;
2020
import java.io.IOException;
21-
import java.util.Collection;
2221
import java.util.HashMap;
2322
import java.util.Map;
2423

2524
import com.beust.jcommander.Parameter;
2625
import com.beust.jcommander.Parameters;
2726
import com.ibm.g11n.pipeline.client.NewResourceEntryData;
2827
import com.ibm.g11n.pipeline.client.ServiceException;
28+
import com.ibm.g11n.pipeline.resfilter.Bundle;
2929
import com.ibm.g11n.pipeline.resfilter.ResourceFilter;
3030
import com.ibm.g11n.pipeline.resfilter.ResourceFilterFactory;
3131
import com.ibm.g11n.pipeline.resfilter.ResourceString;
@@ -63,9 +63,9 @@ protected void _execute() {
6363
ResourceFilter filter = ResourceFilterFactory.get(type);
6464
File f = new File(fileName);
6565
try (FileInputStream fis = new FileInputStream(f)) {
66-
Collection<ResourceString> resStrings = filter.parse(fis);
67-
resEntries = new HashMap<>(resStrings.size());
68-
for (ResourceString resString : resStrings) {
66+
Bundle bundle = filter.parse(fis);
67+
resEntries = new HashMap<>(bundle.getResourceStrings().size());
68+
for (ResourceString resString : bundle.getResourceStrings()) {
6969
NewResourceEntryData resEntryData = new NewResourceEntryData(resString.getValue());
7070
int seqNum = resString.getSequenceNumber();
7171
if (seqNum >= 0) {

gp-res-filter/src/main/java/com/ibm/g11n/pipeline/resfilter/AmdJsResource.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,8 @@
2424
import java.io.PrintWriter;
2525
import java.nio.charset.StandardCharsets;
2626
import java.text.BreakIterator;
27-
import java.util.Collection;
2827
import java.util.HashMap;
2928
import java.util.LinkedHashMap;
30-
import java.util.LinkedList;
3129
import java.util.List;
3230
import java.util.Locale;
3331
import java.util.Map;
@@ -188,29 +186,29 @@ private String concatStringNodes(Node node) {
188186
}
189187

190188
@Override
191-
public Collection<ResourceString> parse(InputStream inStream) throws IOException {
189+
public Bundle parse(InputStream inStream) throws IOException {
192190
LinkedHashMap<String, String> resultMap = null;
193-
Collection<ResourceString> resultCol = new LinkedList<ResourceString>();
191+
Bundle result = new Bundle();
194192
try (InputStreamReader reader = new InputStreamReader(new BomInputStream(inStream), "UTF-8")) {
195193
AstRoot root = new Parser().parse(reader, null, 1);
196194
KeyValueVisitor visitor = new KeyValueVisitor();
197195
root.visitAll(visitor);
198196
resultMap = visitor.elements;
199197
int sequenceNum = 1;
200198
for (Entry<String, String> entry : resultMap.entrySet()) {
201-
resultCol.add(new ResourceString(entry.getKey(), entry.getValue(), sequenceNum++));
199+
result.addResourceString(entry.getKey(), entry.getValue(), sequenceNum++);
202200
}
203201
} catch (Exception e) {
204202
throw new IllegalResourceFormatException(e);
205203
}
206-
return resultCol;
204+
return result;
207205
}
208206

209207
@Override
210-
public void write(OutputStream outStream, String language, Collection<ResourceString> resStrings)
208+
public void write(OutputStream outStream, String language, Bundle resource)
211209
throws IOException {
212210
TreeSet<ResourceString> sortedResources = new TreeSet<>(new ResourceStringComparator());
213-
sortedResources.addAll(resStrings);
211+
sortedResources.addAll(resource.getResourceStrings());
214212

215213
try (OutputStreamWriter writer = new OutputStreamWriter(new BufferedOutputStream(outStream), "UTF-8")) {
216214
writer.write("define({\n");
@@ -229,10 +227,10 @@ public void write(OutputStream outStream, String language, Collection<ResourceSt
229227
}
230228

231229
@Override
232-
public void merge(InputStream base, OutputStream outStream, String language, Collection<ResourceString> data)
230+
public void merge(InputStream base, OutputStream outStream, String language, Bundle resource)
233231
throws IOException {
234-
Map<String, String> resMap = new HashMap<String, String>(data.size() * 4 / 3 + 1);
235-
for (ResourceString res : data) {
232+
Map<String, String> resMap = new HashMap<String, String>(resource.getResourceStrings().size() * 4 / 3 + 1);
233+
for (ResourceString res : resource.getResourceStrings()) {
236234
resMap.put(res.getKey(), res.getValue());
237235
}
238236

gp-res-filter/src/main/java/com/ibm/g11n/pipeline/resfilter/AndroidStringsResource.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.text.BreakIterator;
2626
import java.util.Collection;
2727
import java.util.HashMap;
28-
import java.util.LinkedList;
2928
import java.util.Locale;
3029
import java.util.Map;
3130
import java.util.TreeSet;
@@ -71,7 +70,7 @@ public class AndroidStringsResource implements ResourceFilter {
7170
private static final String STR_CLOSE_TAG_PTRN = ".*(\\s*</string\\s*>)$";
7271

7372
@Override
74-
public Collection<ResourceString> parse(InputStream in) throws IOException {
73+
public Bundle parse(InputStream in) throws IOException {
7574

7675
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
7776
DocumentBuilder builder = null;
@@ -91,10 +90,10 @@ public Collection<ResourceString> parse(InputStream in) throws IOException {
9190

9291
Element elem = document.getDocumentElement();
9392
NodeList nodeList = elem.getChildNodes();
94-
Collection<ResourceString> resultCol = new LinkedList<ResourceString>();
95-
collectResourceStrings(nodeList, 1 /* the first sequence number */, resultCol);
93+
Bundle result = new Bundle();
94+
collectResourceStrings(nodeList, 1 /* the first sequence number */, result.getResourceStrings());
9695

97-
return resultCol;
96+
return result;
9897
}
9998

10099
/**
@@ -132,10 +131,10 @@ private int collectResourceStrings(NodeList nodeList, int startSeqNum, Collectio
132131
}
133132

134133
@Override
135-
public void write(OutputStream os, String language, Collection<ResourceString> map) {
134+
public void write(OutputStream os, String language, Bundle resource) {
136135

137136
TreeSet<ResourceString> sortedResources = new TreeSet<>(new ResourceStringComparator());
138-
sortedResources.addAll(map);
137+
sortedResources.addAll(resource.getResourceStrings());
139138

140139
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
141140
DocumentBuilder docBuilder = null;
@@ -222,11 +221,11 @@ public void write(OutputStream os, String language, Collection<ResourceString> m
222221
}
223222

224223
@Override
225-
public void merge(InputStream base, OutputStream outStream, String language, Collection<ResourceString> data)
224+
public void merge(InputStream base, OutputStream outStream, String language, Bundle resource)
226225
throws IOException {
227226
// put res data into a map for easier searching
228-
Map<String, String> resMap = new HashMap<String, String>(data.size() * 4 / 3 + 1);
229-
for (ResourceString res : data) {
227+
Map<String, String> resMap = new HashMap<String, String>(resource.getResourceStrings().size() * 4 / 3 + 1);
228+
for (ResourceString res : resource.getResourceStrings()) {
230229
resMap.put(res.getKey(), res.getValue());
231230
}
232231

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.ibm.g11n.pipeline.resfilter;
2+
3+
import java.util.ArrayList;
4+
import java.util.LinkedList;
5+
import java.util.List;
6+
7+
public class Bundle {
8+
private ArrayList<String> notes;
9+
private LinkedList<ResourceString> resStrings;
10+
11+
public Bundle () {
12+
notes = new ArrayList<String>();
13+
resStrings = new LinkedList<ResourceString>();
14+
}
15+
16+
public void addResourceString(String key, String value, int sequenceNumber) {
17+
ResourceString newString = new ResourceString(key, value, sequenceNumber);
18+
resStrings.add(newString);
19+
}
20+
21+
public void addNote(String note) {
22+
notes.add(note);
23+
}
24+
25+
public List<ResourceString> getResourceStrings() {
26+
return resStrings;
27+
}
28+
29+
public List<String> getNotes() {
30+
return notes;
31+
}
32+
}

gp-res-filter/src/main/java/com/ibm/g11n/pipeline/resfilter/IOSStringsResource.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright IBM Corp. 2015
2+
* Copyright IBM Corp. 2015, 2016
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -23,7 +23,6 @@
2323
import java.io.OutputStream;
2424
import java.io.OutputStreamWriter;
2525
import java.text.BreakIterator;
26-
import java.util.Collection;
2726
import java.util.HashMap;
2827
import java.util.LinkedList;
2928
import java.util.List;
@@ -43,9 +42,8 @@ public class IOSStringsResource implements ResourceFilter {
4342
private static final String CHAR_SET = "UTF-8";
4443

4544
@Override
46-
public Collection<ResourceString> parse(InputStream in) throws IOException {
47-
Collection<ResourceString> res = new LinkedList<ResourceString>();
48-
45+
public Bundle parse(InputStream in) throws IOException {
46+
Bundle bundle = new Bundle();
4947
BufferedReader reader = new BufferedReader(new InputStreamReader(in, CHAR_SET));
5048

5149
int sqNum = 0;
@@ -71,17 +69,17 @@ public Collection<ResourceString> parse(InputStream in) throws IOException {
7169
String key = parts[0].substring(parts[0].indexOf('"') + 1).trim();
7270
String value = parts[1].substring(0, parts[1].lastIndexOf('"')).trim();
7371

74-
res.add(new ResourceString(key, value, ++sqNum));
72+
bundle.addResourceString(key, value, ++sqNum);
7573
}
7674
}
7775

78-
return res;
76+
return bundle;
7977
}
8078

8179
@Override
82-
public void write(OutputStream os, String language, Collection<ResourceString> resStrings) throws IOException {
80+
public void write(OutputStream os, String language, Bundle bundle) throws IOException {
8381
TreeSet<ResourceString> sortedResources = new TreeSet<>(new ResourceStringComparator());
84-
sortedResources.addAll(resStrings);
82+
sortedResources.addAll(bundle.getResourceStrings());
8583

8684
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, CHAR_SET));
8785

@@ -94,11 +92,11 @@ public void write(OutputStream os, String language, Collection<ResourceString> r
9492
}
9593

9694
@Override
97-
public void merge(InputStream base, OutputStream os, String language, Collection<ResourceString> data)
95+
public void merge(InputStream base, OutputStream os, String language, Bundle bundle)
9896
throws IOException {
9997
// put res data into a map for easier searching
100-
Map<String, String> resMap = new HashMap<String, String>(data.size() * 4 / 3 + 1);
101-
for (ResourceString res : data) {
98+
Map<String, String> resMap = new HashMap<String, String>(bundle.getResourceStrings().size() * 4 / 3 + 1);
99+
for (ResourceString res : bundle.getResourceStrings()) {
102100
resMap.put(res.getKey(), res.getValue());
103101
}
104102

gp-res-filter/src/main/java/com/ibm/g11n/pipeline/resfilter/JavaPropertiesResource.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import java.text.CharacterIterator;
2727
import java.text.StringCharacterIterator;
2828
import java.util.ArrayList;
29-
import java.util.Collection;
3029
import java.util.Collections;
3130
import java.util.Enumeration;
3231
import java.util.HashMap;
@@ -77,23 +76,23 @@ public Object put(Object key, Object value) {
7776
}
7877

7978
@Override
80-
public Collection<ResourceString> parse(InputStream inStream) throws IOException {
79+
public Bundle parse(InputStream inStream) throws IOException {
8180
LinkedProperties props = new LinkedProperties();
8281
props.load(inStream);
8382
Iterator<Object> i = props.orderedKeys().iterator();
84-
Collection<ResourceString> resultCol = new ArrayList<ResourceString>(props.size());
83+
Bundle result = new Bundle();
8584
int sequenceNum = 0;
8685
while (i.hasNext()) {
8786
String key = (String) i.next();
88-
resultCol.add(new ResourceString(key, props.getProperty(key), ++sequenceNum));
87+
result.addResourceString(key, props.getProperty(key), ++sequenceNum);
8988
}
90-
return resultCol;
89+
return result;
9190
}
9291

9392
@Override
94-
public void write(OutputStream outStream, String language, Collection<ResourceString> data) throws IOException {
93+
public void write(OutputStream outStream, String language, Bundle resource) throws IOException {
9594
TreeSet<ResourceString> sortedResources = new TreeSet<>(new ResourceStringComparator());
96-
sortedResources.addAll(data);
95+
sortedResources.addAll(resource.getResourceStrings());
9796

9897
LinkedProperties props = new LinkedProperties();
9998
for (ResourceString res : sortedResources) {
@@ -309,9 +308,9 @@ private static String escapePropKey(String s) {
309308
}
310309

311310
@Override
312-
public void merge(InputStream base, OutputStream outStream, String language, Collection<ResourceString> data) throws IOException {
313-
Map<String, String> resMap = new HashMap<String, String>(data.size() * 4/3 + 1);
314-
for (ResourceString res : data) {
311+
public void merge(InputStream base, OutputStream outStream, String language, Bundle resource) throws IOException {
312+
Map<String, String> resMap = new HashMap<String, String>(resource.getResourceStrings().size() * 4/3 + 1);
313+
for (ResourceString res : resource.getResourceStrings()) {
315314
resMap.put(escapePropKey(res.getKey()), res.getValue());
316315
}
317316

0 commit comments

Comments
 (0)