package external;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Arrays;
import org.molgenis.fieldtypes.MrefField;
import org.molgenis.fieldtypes.XrefField;
import org.molgenis.framework.db.DatabaseException;
import org.molgenis.model.MolgenisModelException;
import org.molgenis.model.elements.Entity;
import org.molgenis.model.elements.Field;
import org.molgenis.model.elements.Model;
import org.molgenis.util.CsvStringWriter;
import org.molgenis.util.CsvWriter;
import org.molgenis.util.SimpleTuple;
import org.molgenis.util.Tuple;
import app.JDBCMetaDatabase;
public class ModelToExcel
{
public static void main(String[] args) throws DatabaseException, IOException, MolgenisModelException
{
Model m = new JDBCMetaDatabase();
System.out.println(write(m));
}
public static String write(Model m)
{
StringWriter sw = new StringWriter();
CsvStringWriter w;
try
{
w = new CsvStringWriter(sw);
write(m, w);
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return sw.toString();
}
public static void write(Model m, CsvWriter w) throws MolgenisModelException, IOException
{
w.setHeaders(Arrays.asList("module", "entity", "field", "type", "nillable", "xref", "description"));
w.writeHeader();
for (Entity e : m.getEntities())
if (!e.isAbstract())
{
Tuple t = new SimpleTuple();
if (e.getModule() != null) t.set("module", e.getModule().getName());
t.set("entity", e.getName());
t.set("field", "====");
t.set("type", e.getAncestor() != null ? e.getAncestor().getName() : "");
t.set("nillable", "====");
t.set("xref", "====");
t.set("description", e.getDescription());
w.writeRow(t);
for (Field f : e.getAllFields())
{
t.set("field", f.getName());
t.set("type", f.getType());
t.set("nillable", f.isNillable());
t.set("description", f.getDescription());
t.set("xref", null);
if (f.getType() instanceof XrefField || f.getType() instanceof MrefField)
{
t.set("xref", f.getXrefEntityName());
}
w.writeRow(t);
}
}
}
}