package org.insightech.er.editor.model.dbexport.testdata.impl;
import java.util.Map;
import org.insightech.er.editor.model.ERDiagram;
import org.insightech.er.editor.model.diagram_contents.element.node.table.ERTable;
import org.insightech.er.editor.model.diagram_contents.element.node.table.column.NormalColumn;
import org.insightech.er.editor.model.testdata.RepeatTestData;
import org.insightech.er.editor.model.testdata.RepeatTestDataDef;
import org.insightech.er.editor.persistent.impl.PersistentXmlImpl;
import org.insightech.er.util.Format;
public class DBUnitFlatXmlTestDataCreator extends AbstractTextTestDataCreator {
private String encoding;
public DBUnitFlatXmlTestDataCreator(String encoding) {
this.encoding = encoding;
}
@Override
protected void writeDirectTestData(ERTable table,
Map<NormalColumn, String> data, String database) {
StringBuilder sb = new StringBuilder();
sb.append("\t<");
sb.append(table.getNameWithSchema(database));
for (NormalColumn column : table.getExpandedColumns()) {
String value = Format.null2blank(data.get(column));
if (value != null && !"null".equals(value.toLowerCase())) {
sb.append(" ");
sb.append(column.getPhysicalName());
sb.append("=\"");
sb.append(PersistentXmlImpl.escape(value));
sb.append("\"");
}
}
sb.append("/>\r\n");
out.print(sb.toString());
}
@Override
protected void writeRepeatTestData(ERTable table,
RepeatTestData repeatTestData, String database) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < repeatTestData.getTestDataNum(); i++) {
sb.append("\t<");
sb.append(table.getNameWithSchema(database));
for (NormalColumn column : table.getExpandedColumns()) {
RepeatTestDataDef repeatTestDataDef = repeatTestData
.getDataDef(column);
String value = this.getMergedRepeatTestDataValue(i,
repeatTestDataDef, column);
if (value != null && !"null".equals(value.toLowerCase())) {
sb.append(" ");
sb.append(column.getPhysicalName());
sb.append("=\"");
sb.append(PersistentXmlImpl.escape(value));
sb.append("\"");
}
}
sb.append("/>\r\n");
}
out.print(sb.toString());
}
@Override
protected String getHeader() {
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"");
sb.append(this.encoding);
sb.append("\" ?>\r\n<dataset>\r\n");
return sb.toString();
}
@Override
protected String getFooter() {
return "</dataset>";
}
@Override
protected void writeTableHeader(ERDiagram diagram, ERTable table) {
}
@Override
protected void writeTableFooter(ERTable table) {
}
@Override
protected String getFileExtention() {
return ".xml";
}
}