} else if (src instanceof MongoDBDataSource) {
name = "data-source";
MongoDBDataSource mongodb = (MongoDBDataSource) src;
String klass = mongodb.getClass().getName();
AttributeListImpl attribs = new AttributeListImpl();
attribs.addAttribute("class", "CDATA", klass);
pp.startElement(name, attribs);
writeParam(pp, "server-address", mongodb.getServerAddress());
writeParam(pp, "port-number", mongodb.getPortNumber());
writeParam(pp, "user-name", mongodb.getUserName());
writeParam(pp, "password", mongodb.getPassword());
writeParam(pp, "db-auth", mongodb.getDbAuth());
writeParam(pp, "database", mongodb.getDatabase());
writeParam(pp, "cursor-notimeout", mongodb.getCursorNotimeout());
writeParam(pp, "collection", mongodb.getCollection());
writeParam(pp, "query", mongodb.getQuery());
writeParam(pp, "projection", mongodb.getProjection());
} else if (src instanceof CSVDataSource) {
name = "csv";
CSVDataSource csv = (CSVDataSource) src;
pp.startElement(name, null);
writeParam(pp, "input-file", csv.getInputFile());
writeParam(pp, "encoding", csv.getEncoding());
writeParam(pp, "skip-lines", csv.getSkipLines());
writeParam(pp, "header-line", csv.getHeaderLine());
if (csv.getSeparator() != 0)
writeParam(pp, "separator", csv.getSeparator());
} else if (src instanceof SparqlDataSource) {
name = "sparql";
SparqlDataSource sparql = (SparqlDataSource) src;
pp.startElement(name, null);
writeParam(pp, "endpoint", sparql.getEndpoint());
writeParam(pp, "query", sparql.getQuery());
writeParam(pp, "page-size", sparql.getPageSize());
writeParam(pp, "triple-mode", sparql.getTripleMode());
}
if (src instanceof ColumnarDataSource) {
// FIXME: this breaks the order...
for (Column col : ((ColumnarDataSource) src).getColumns()) {
AttributeListImpl atts = new AttributeListImpl();
atts.addAttribute("name", "CDATA", col.getName());
atts.addAttribute("property", "CDATA", col.getProperty());
if (col.getPrefix() != null)
atts.addAttribute("prefix", "CDATA", col.getPrefix());
// FIXME: cleaner really requires object support ... :-(
if (col.getCleaner() != null)
atts.addAttribute("cleaner", "CDATA", col.getCleaner().getClass().getName());
if (col.isSplit())
atts.addAttribute("split-on", "CDATA", col.getSplitOn());
pp.startElement("column", atts);
pp.endElement("column");
}
}