[#1674] Export data types with Result.formatXML() and
Result.formatJSON() exports
This commit is contained in:
parent
79f36b69df
commit
9242a5c510
@ -65,6 +65,10 @@ import org.jooq.test.jOOQAbstractTest;
|
||||
import org.junit.Test;
|
||||
import org.w3c.dom.Document;
|
||||
|
||||
/**
|
||||
* @author Lukas Eder
|
||||
* @author Ivan Dugic
|
||||
*/
|
||||
public class FormatTests<
|
||||
A extends UpdatableRecord<A>,
|
||||
AP,
|
||||
@ -312,7 +316,8 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, I, IPK, T658,
|
||||
String token2 = "";
|
||||
String separator = "";
|
||||
for (Field<?> field : fields) {
|
||||
token2 += separator + "\"" + field.getName() + "\"";
|
||||
token2 += separator + "{\"name\":\"" + field.getName() + "\"" + ",\"type\":\""
|
||||
+ field.getDataType().getTypeName().toUpperCase() + "\"}";
|
||||
separator = ",";
|
||||
}
|
||||
assertTrue(json.startsWith(token2));
|
||||
@ -389,6 +394,8 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, I, IPK, T658,
|
||||
for (int i = 0; i < fields.size(); i++) {
|
||||
assertEquals(fields.get(i).getName(),
|
||||
xp.evaluate("/result/fields/field[" + (i + 1) + "]/@name", doc));
|
||||
assertEquals(fields.get(i).getDataType().getTypeName().toUpperCase(),
|
||||
xp.evaluate("/result/fields/field[" + (i + 1) + "]/@type", doc));
|
||||
}
|
||||
|
||||
assertEquals("1", xp.evaluate("count(/result/records)", doc));
|
||||
|
||||
@ -1225,11 +1225,16 @@ class ResultImpl<R extends Record> implements Result<R>, AttachableInternal {
|
||||
|
||||
@Override
|
||||
public final String formatJSON() {
|
||||
List<String> f = new ArrayList<String>();
|
||||
List<Map<String, String>> f = new ArrayList<Map<String, String>>();
|
||||
List<List<Object>> r = new ArrayList<List<Object>>();
|
||||
|
||||
Map<String, String> fieldMap;
|
||||
for (Field<?> field : getFields()) {
|
||||
f.add(field.getName());
|
||||
fieldMap = new LinkedHashMap<String, String>();
|
||||
fieldMap.put("name", field.getName());
|
||||
fieldMap.put("type", field.getDataType().getTypeName().toUpperCase());
|
||||
|
||||
f.add(fieldMap);
|
||||
}
|
||||
|
||||
for (Record record : this) {
|
||||
@ -1260,6 +1265,9 @@ class ResultImpl<R extends Record> implements Result<R>, AttachableInternal {
|
||||
for (Field<?> field : getFields()) {
|
||||
sb.append("<field name=\"");
|
||||
sb.append(escapeXML(field.getName()));
|
||||
sb.append("\" ");
|
||||
sb.append("type=\"");
|
||||
sb.append(field.getDataType().getTypeName().toUpperCase());
|
||||
sb.append("\"/>");
|
||||
}
|
||||
|
||||
@ -1308,7 +1316,7 @@ class ResultImpl<R extends Record> implements Result<R>, AttachableInternal {
|
||||
Document document = builder.newDocument();
|
||||
|
||||
Element eResult = document.createElement("result");
|
||||
eResult.setAttribute("xmlns", "http://www.jooq.org/xsd/jooq-export-1.6.2.xsd");
|
||||
eResult.setAttribute("xmlns", "http://www.jooq.org/xsd/jooq-export-2.6.0.xsd");
|
||||
document.appendChild(eResult);
|
||||
|
||||
Element eFields = document.createElement("fields");
|
||||
@ -1317,6 +1325,7 @@ class ResultImpl<R extends Record> implements Result<R>, AttachableInternal {
|
||||
for (Field<?> field : getFields()) {
|
||||
Element eField = document.createElement("field");
|
||||
eField.setAttribute("name", field.getName());
|
||||
eField.setAttribute("type", field.getDataType().getTypeName().toUpperCase());
|
||||
eFields.appendChild(eField);
|
||||
}
|
||||
|
||||
|
||||
46
jOOQ/src/main/resources/xsd/jooq-export-2.6.0.xsd
Normal file
46
jOOQ/src/main/resources/xsd/jooq-export-2.6.0.xsd
Normal file
@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:jooq-export="http://www.jooq.org/xsd/jooq-export-1.6.2.xsd"
|
||||
targetNamespace="http://www.jooq.org/xsd/jooq-export-1.6.2.xsd">
|
||||
|
||||
<element name="result" type="jooq-export:Result"/>
|
||||
|
||||
<complexType name="Result">
|
||||
<sequence>
|
||||
<element name="fields" type="jooq-export:Fields" maxOccurs="1" minOccurs="1"/>
|
||||
<element name="records" type="jooq-export:Records" maxOccurs="1" minOccurs="1"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Fields">
|
||||
<sequence>
|
||||
<element name="field" type="jooq-export:Field" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Field">
|
||||
<attribute name="name" type="string"/>
|
||||
<attribute name="type" type="string"/>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Records">
|
||||
<sequence>
|
||||
<element name="record" type="jooq-export:Record" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Record">
|
||||
<sequence>
|
||||
<element name="value" type="jooq-export:Value" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Value">
|
||||
<simpleContent>
|
||||
<extension base="string">
|
||||
<attribute name="field" type="string"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
</schema>
|
||||
Loading…
Reference in New Issue
Block a user