Skip to content

Commit c70f5eb

Browse files
committed
Fix json/yaml to xml conversion
1 parent 91d71d1 commit c70f5eb

File tree

5 files changed

+207
-23
lines changed

5 files changed

+207
-23
lines changed

fj-doc-base-json/src/main/java/org/fugerit/java/doc/json/parse/DocJsonToXml.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ private Element create( Document doc, Element parent, JsonNode current ) throws
5454
throw new ConfigException( "Property must be an array : "+elementsNode );
5555
}
5656
}
57+
Iterator<String> itNames = current.fieldNames();
58+
while ( itNames.hasNext() ) {
59+
String currentName = itNames.next();
60+
if ( !DocObjectMapperHelper.isSpecialProperty( currentName ) ) {
61+
tag.setAttribute( currentName , current.get( currentName ).asText() );
62+
}
63+
}
5764
}
5865
return tag;
5966
}

fj-doc-base-json/src/main/java/org/fugerit/java/doc/json/parse/DocObjectMapperHelper.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.fugerit.java.doc.json.parse;
22

33
import java.io.Reader;
4+
import java.util.HashSet;
45
import java.util.Iterator;
56
import java.util.Properties;
7+
import java.util.Set;
68

79
import org.fugerit.java.core.lang.helpers.StringUtils;
810
import org.fugerit.java.doc.base.facade.DocFacade;
@@ -33,6 +35,17 @@ public DocObjectMapperHelper(ObjectMapper mapper) {
3335

3436
private final static Logger logger = LoggerFactory.getLogger( DocObjectMapperHelper.class );
3537

38+
private final static Set<String> SPECIAL_PROPERTY_NAMES = new HashSet<>();
39+
static {
40+
SPECIAL_PROPERTY_NAMES.add( PROPERTY_TAG );
41+
SPECIAL_PROPERTY_NAMES.add( PROPERTY_TEXT );
42+
SPECIAL_PROPERTY_NAMES.add( PROPERTY_ELEMENTS );
43+
}
44+
45+
public static boolean isSpecialProperty( String propertyName ) {
46+
return SPECIAL_PROPERTY_NAMES.contains(propertyName);
47+
}
48+
3649
public static String findVersion( JsonNode root, String def ) {
3750
String res = def;
3851
JsonNode xsdVersion = root.get( PROPERTY_XSD_VERSION );
Lines changed: 98 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,110 @@
11
{
22
"xsd-version":"1-10",
33
"_t":"doc",
4-
"_e": [
4+
"_e":[
5+
56
{
6-
"_t": "body",
7+
"_t": "metadata",
78
"_e": [
9+
{ "_t":"info", "name": "margins", "_v": "10;10;10;30" },
10+
{ "_t":"info", "name": "excel-table-id", "_v": "excel-table=print" },
11+
{ "_t":"info", "name": "excel-width-multiplier", "_v": "450" },
812
{
9-
"_t": "para",
10-
"style": "bold",
11-
"_v": "First json text"
12-
},
13-
{
14-
"_t": "para",
15-
"_v": "Second json text"
16-
},
13+
"_t": "footer-ext",
14+
"_e": [
15+
{
16+
"_t": "para",
17+
"align": "center",
18+
"_v": "Page ${currentPage}"
19+
}
20+
]
21+
}
22+
]
23+
}
24+
25+
,
26+
27+
{
28+
"_t": "body",
29+
"_e": [
30+
{ "_t": "phrase", "_v": "Test phrase 01" },
31+
{ "_t": "phrase", "_v": "Test phrase 02" },
32+
{ "_t": "phrase", "_v": "Test phrase 03" },
33+
{ "_t": "phrase", "_v": "Test phrase 04" },
34+
{ "_t": "image", "url": "cl://test/img_test_red.png", "scaling": "100" },
35+
{ "_t": "image", "url": "cl://test/img_test_green.png", "scaling": "50" },
36+
{ "_t": "image", "url": "cl://test/img_test_blue.png", "scaling": "25" },
1737
{
18-
"_t": "para",
19-
"_v": "Third json text"
38+
"_t":"table",
39+
"columns":"3",
40+
"colwidths":"30;30;40",
41+
"width":"100",
42+
"id":"excel-table",
43+
"padding":"2",
44+
"_e": [
45+
{
46+
"_t":"row",
47+
"_e": [
48+
{
49+
"_t":"cell",
50+
"align":"center",
51+
"border-color":"#000000",
52+
"border-width":"1",
53+
"_e": [ { "_t":"para", "_v":"Name" } ]
54+
},
55+
{
56+
"_t":"cell",
57+
"align":"center",
58+
"_e": [ { "_t":"para", "_v":"Surname" } ]
59+
},
60+
{
61+
"_t":"cell",
62+
"align":"center",
63+
"_e": [ { "_t":"para", "_v":"Title" } ]
64+
}
65+
]
66+
},
67+
{
68+
"_t":"row",
69+
"_e": [
70+
{
71+
"_t":"cell",
72+
"_e": [ { "_t":"para", "_v":"Luthien" } ]
73+
},
74+
{
75+
"_t":"cell",
76+
"_e": [ { "_t":"para", "_v":"Tinuviel" } ]
77+
},
78+
{
79+
"_t":"cell",
80+
"_e": [ { "_t":"para", "_v":"Queen" } ]
81+
}
82+
]
83+
},
84+
{
85+
"_t":"row",
86+
"_e": [
87+
{
88+
"_t":"cell",
89+
"_e": [ { "_t":"para", "_v":"Thorin" } ]
90+
},
91+
{
92+
"_t":"cell",
93+
"_e": [ { "_t":"para", "_v":"Oakshield" } ]
94+
},
95+
{
96+
"_t":"cell",
97+
"_e": [ { "_t":"para", "_v":"King" } ]
98+
}
99+
]
100+
}
101+
]
20102
}
103+
104+
21105
]
22106
}
107+
23108
]
109+
24110
}
Lines changed: 88 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,92 @@
1+
xsd-version: 1-10
12
_t: doc
23
_e:
4+
- _t: metadata
5+
_e:
6+
- _t: info
7+
name: margins
8+
_v: 10;10;10;30
9+
- _t: info
10+
name: excel-table-id
11+
_v: excel-table=print
12+
- _t: info
13+
name: excel-width-multiplier
14+
_v: '450'
15+
- _t: footer-ext
16+
_e:
17+
- _t: para
18+
align: center
19+
_v: Page ${currentPage}
320
- _t: body
421
_e:
5-
- _t: para
6-
style: bold
7-
_v: First json text
8-
- _t: para
9-
_v: Second json text
10-
- _t: para
11-
_v: Third json text
22+
- _t: phrase
23+
_v: Test phrase 01
24+
- _t: phrase
25+
_v: Test phrase 02
26+
- _t: phrase
27+
_v: Test phrase 03
28+
- _t: phrase
29+
_v: Test phrase 04
30+
- _t: image
31+
url: cl://test/img_test_red.png
32+
scaling: '100'
33+
- _t: image
34+
url: cl://test/img_test_green.png
35+
scaling: '50'
36+
- _t: image
37+
url: cl://test/img_test_blue.png
38+
scaling: '25'
39+
- _t: table
40+
columns: '3'
41+
colwidths: 30;30;40
42+
width: '100'
43+
id: excel-table
44+
padding: '2'
45+
_e:
46+
- _t: row
47+
_e:
48+
- _t: cell
49+
align: center
50+
border-color: "#000000"
51+
border-width: '1'
52+
_e:
53+
- _t: para
54+
_v: Name
55+
- _t: cell
56+
align: center
57+
_e:
58+
- _t: para
59+
_v: Surname
60+
- _t: cell
61+
align: center
62+
_e:
63+
- _t: para
64+
_v: Title
65+
- _t: row
66+
_e:
67+
- _t: cell
68+
_e:
69+
- _t: para
70+
_v: Luthien
71+
- _t: cell
72+
_e:
73+
- _t: para
74+
_v: Tinuviel
75+
- _t: cell
76+
_e:
77+
- _t: para
78+
_v: Queen
79+
- _t: row
80+
_e:
81+
- _t: cell
82+
_e:
83+
- _t: para
84+
_v: Thorin
85+
- _t: cell
86+
_e:
87+
- _t: para
88+
_v: Oakshield
89+
- _t: cell
90+
_e:
91+
- _t: para
92+
_v: King

fj-doc-sample/src/test/resources/sample_docs/intro_01.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
xsd-version: 1-10
12
_t: doc
23
_e:
34
- _t: metadata
@@ -19,16 +20,12 @@ _e:
1920
- _t: body
2021
_e:
2122
- _t: phrase
22-
align: center
2323
_v: Test phrase 01
2424
- _t: phrase
25-
align: center
2625
_v: Test phrase 02
2726
- _t: phrase
28-
align: center
2927
_v: Test phrase 03
3028
- _t: phrase
31-
align: center
3229
_v: Test phrase 04
3330
- _t: image
3431
url: cl://test/img_test_red.png

0 commit comments

Comments
 (0)