Skip to content

Commit 4a49210

Browse files
author
Sarmokadam
committed
changes for sibling node usecase
1 parent d4ea98b commit 4a49210

File tree

3 files changed

+96
-41
lines changed

3 files changed

+96
-41
lines changed

devon-locale/src/main/java/com/devonfw/devonlocale/translator/ExtJsTargetAdapter.java

+46-16
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.io.FileWriter;
66
import java.io.IOException;
77
import java.io.OutputStream;
8+
import java.util.HashMap;
89
import java.util.Map;
910
import java.util.Set;
1011

@@ -28,6 +29,8 @@ public class ExtJsTargetAdapter implements TranslationTarget {
2829

2930
private StringBuilder completeJsString = new StringBuilder();
3031

32+
private boolean sibling = false;
33+
3134
/**
3235
* {@inheritDoc}
3336
*/
@@ -66,26 +69,44 @@ public void generateFile(Map<String, Node> root, File out) {
6669
*/
6770
public StringBuilder createJsString(Map<String, Node> root) {
6871

69-
Node node;
70-
71-
Map<String, Node> childMap;
72+
Map<String, String> siblingStringMap = new HashMap<>();
73+
Node node, siblingNode;
74+
Map<String, Node> childMap, newChildMap;
7275
Set<String> keySet = root.keySet();
7376
for (String key : keySet) {
7477
node = root.get(key);
7578
if (node.getText() == null && node.getChildren().size() > 1) {
79+
7680
childMap = node.getChildren();
7781
Set<String> siblingNodeSet = childMap.keySet();
7882
this.startJsStringBuilder.append(key + ": {").append(Constant.NEW_LINE_CHAR);
7983
this.endJsStringBuilder.append("}");
8084
int i = 0;
85+
int j = 0;
8186
for (String siblingName : siblingNodeSet) {
82-
83-
if (i != 0) {
84-
this.startJsStringBuilder.append(",");
87+
siblingNode = childMap.get(siblingName);
88+
if (siblingNode.getText() == null && siblingNode.getChildren().size() == 1) {
89+
newChildMap = siblingNode.getChildren();
90+
this.startJsStringBuilder.append(siblingName + ": {").append(Constant.NEW_LINE_CHAR);
91+
// this.endJsStringBuilder.append("}");
92+
this.sibling = true;
93+
StringBuilder tempBuilder = createJsString(newChildMap);
94+
System.out.println("tempBuilder " + tempBuilder.toString());
95+
this.sibling = false;
96+
// this.startJsStringBuilder.append(tempBuilder.toString());
97+
if (j < siblingNodeSet.size() - 1) {
98+
this.startJsStringBuilder.append(",");
99+
}
100+
j++;
101+
} else {
102+
if (i != 0) {
103+
this.startJsStringBuilder.append(",");
104+
}
105+
this.startJsStringBuilder.append(siblingName + " : " + "\'" + childMap.get(siblingName).getText() + "\'");
106+
i++;
85107
}
86-
this.startJsStringBuilder.append(siblingName + ":\'" + childMap.get(siblingName).getText() + "\'");
87-
i++;
88-
}
108+
109+
} // for close
89110

90111
if (this.completeJsString.toString().isEmpty()) {
91112
this.completeJsString.append("{").append(this.startJsStringBuilder).append(this.endJsStringBuilder);
@@ -95,21 +116,30 @@ public StringBuilder createJsString(Map<String, Node> root) {
95116
}
96117
this.startJsStringBuilder = new StringBuilder();
97118
this.endJsStringBuilder = new StringBuilder();
119+
98120
} else if (node.getText() == null && node.getChildren().size() == 1) {
99121
childMap = node.getChildren();
100122
this.startJsStringBuilder.append(key + ": {").append(Constant.NEW_LINE_CHAR);
101123
this.endJsStringBuilder.append("}");
102124
createJsString(childMap);
103125
} else if (node.getText() != null) {
104-
this.startJsStringBuilder.append(key + " : " + "\'" + node.getText() + "\'");
105-
if (this.completeJsString.toString().isEmpty()) {
106-
this.completeJsString.append(this.startJsStringBuilder).append(this.endJsStringBuilder);
126+
127+
if (this.sibling) {
128+
this.startJsStringBuilder.append(key + " : " + "\'" + node.getText() + "\'");
107129
} else {
108-
this.completeJsString.append(",").append(Constant.NEW_LINE_CHAR).append(this.startJsStringBuilder)
109-
.append(this.endJsStringBuilder);
130+
this.startJsStringBuilder.append(key + " : " + "\'" + node.getText() + "\'");
131+
if (this.completeJsString.toString().isEmpty()) {
132+
this.completeJsString.append("{").append(this.startJsStringBuilder).append(this.endJsStringBuilder);
133+
} else {
134+
this.completeJsString.append(",").append(Constant.NEW_LINE_CHAR).append(this.startJsStringBuilder)
135+
.append(this.endJsStringBuilder);
136+
}
137+
138+
this.startJsStringBuilder = new StringBuilder();
139+
this.endJsStringBuilder = new StringBuilder();
140+
110141
}
111-
this.startJsStringBuilder = new StringBuilder();
112-
this.endJsStringBuilder = new StringBuilder();
142+
113143
}
114144

115145
}

devon-locale/src/main/java/com/devonfw/devonlocale/translator/JsonTargetAdapter.java

+46-24
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.io.FileWriter;
66
import java.io.IOException;
77
import java.io.OutputStream;
8+
import java.util.HashMap;
89
import java.util.Map;
910
import java.util.Set;
1011

@@ -24,6 +25,8 @@ public class JsonTargetAdapter implements TranslationTarget {
2425

2526
private StringBuilder completeJsonString = new StringBuilder();
2627

28+
private boolean sibling = false;
29+
2730
/**
2831
* {@inheritDoc}
2932
*/
@@ -44,13 +47,6 @@ public void generateFile(Map<String, Node> root, File out) {
4447
}
4548
FileWriter fw = new FileWriter(out.getAbsoluteFile());
4649
BufferedWriter bw = new BufferedWriter(fw);
47-
// StringBuilder finalJsonString = createJsonString(root).append("}");
48-
// String[] formatOutput = finalJsonString.toString().split(",");
49-
// for (String outputString : formatOutput) {
50-
// bw.write(outputString);
51-
// bw.write(",");
52-
// bw.newLine();
53-
// }
5450
bw.write(createJsonString(root).append("}").toString());
5551
bw.close();
5652
} catch (IOException e) {
@@ -68,26 +64,46 @@ public void generateFile(Map<String, Node> root, File out) {
6864
*/
6965
public StringBuilder createJsonString(Map<String, Node> root) {
7066

71-
Node node;
72-
73-
Map<String, Node> childMap;
67+
Map<String, String> siblingStringMap = new HashMap<>();
68+
Node node, siblingNode;
69+
Map<String, Node> childMap, newChildMap;
7470
Set<String> keySet = root.keySet();
71+
System.out.println(keySet);
7572
for (String key : keySet) {
7673
node = root.get(key);
74+
7775
if (node.getText() == null && node.getChildren().size() > 1) {
7876
childMap = node.getChildren();
7977
Set<String> siblingNodeSet = childMap.keySet();
8078
this.startJsonStringBuilder.append("\"" + key + "\": {").append(Constant.NEW_LINE_CHAR);
8179
this.endJsonStringBuilder.append("}");
8280
int i = 0;
81+
int j = 0;
8382
for (String siblingName : siblingNodeSet) {
84-
if (i != 0) {
85-
this.startJsonStringBuilder.append(",");
83+
siblingNode = childMap.get(siblingName);
84+
if (siblingNode.getText() == null && siblingNode.getChildren().size() == 1) {
85+
newChildMap = siblingNode.getChildren();
86+
this.startJsonStringBuilder.append("\"" + siblingName + "\": {").append(Constant.NEW_LINE_CHAR);
87+
// this.endJsonStringBuilder.append("}");
88+
this.sibling = true;
89+
StringBuilder tempBuilder = createJsonString(newChildMap);
90+
System.out.println("tempBuilder " + tempBuilder.toString());
91+
this.sibling = false;
92+
// this.startJsonStringBuilder.append(tempBuilder.toString());
93+
if (j < siblingNodeSet.size() - 1) {
94+
this.startJsonStringBuilder.append(",");
95+
}
96+
j++;
97+
} else {
98+
if (i != 0) {
99+
this.startJsonStringBuilder.append(",");
100+
}
101+
this.startJsonStringBuilder
102+
.append("\"" + siblingName + "\" : " + "\"" + childMap.get(siblingName).getText() + "\"");
103+
i++;
86104
}
87-
this.startJsonStringBuilder
88-
.append("\"" + siblingName + "\" : " + "\"" + childMap.get(siblingName).getText() + "\"");
89-
i++;
90-
}
105+
106+
} // for close
91107

92108
if (this.completeJsonString.toString().isEmpty()) {
93109
this.completeJsonString.append("{").append(this.startJsonStringBuilder).append(this.endJsonStringBuilder);
@@ -103,16 +119,22 @@ public StringBuilder createJsonString(Map<String, Node> root) {
103119
this.endJsonStringBuilder.append("}");
104120
createJsonString(childMap);
105121
} else if (node.getText() != null) {
106-
this.startJsonStringBuilder.append("\"" + key + "\" : " + "\"" + node.getText() + "\"");
107-
if (this.completeJsonString.toString().isEmpty()) {
108-
this.completeJsonString.append("{").append(this.startJsonStringBuilder).append(this.endJsonStringBuilder);
122+
123+
if (this.sibling) {
124+
this.startJsonStringBuilder.append("\"" + key + "\" : " + "\"" + node.getText() + "\"" + "}");
109125
} else {
110-
this.completeJsonString.append(",").append(Constant.NEW_LINE_CHAR).append(this.startJsonStringBuilder)
111-
.append(this.endJsonStringBuilder);
112-
}
126+
this.startJsonStringBuilder.append("\"" + key + "\" : " + "\"" + node.getText() + "\"");
127+
if (this.completeJsonString.toString().isEmpty()) {
128+
this.completeJsonString.append("{").append(this.startJsonStringBuilder).append(this.endJsonStringBuilder);
129+
} else {
130+
this.completeJsonString.append(",").append(Constant.NEW_LINE_CHAR).append(this.startJsonStringBuilder)
131+
.append(this.endJsonStringBuilder);
132+
}
113133

114-
this.startJsonStringBuilder = new StringBuilder();
115-
this.endJsonStringBuilder = new StringBuilder();
134+
this.startJsonStringBuilder = new StringBuilder();
135+
this.endJsonStringBuilder = new StringBuilder();
136+
137+
}
116138

117139
}
118140

devon-locale/src/main/resources/sample.properties

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
object.man.name=John
2+
object.address.city=Thane
23
a.b.c.d.e=f
34
a.b.c.d.k=z
45
zz=bb
@@ -14,4 +15,6 @@ sampleDate=12-10-2017
1415
sampleMultiline= hi \
1516
I am \
1617
Sneha
17-
nextline=new
18+
nextline=new
19+
m.n.p.q=r
20+
m.n.l=o

0 commit comments

Comments
 (0)