package org.nextprot.api.etl.app;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import org.nextprot.commons.statements.StatementField;
import org.nextprot.commons.statements.constants.StatementTableNames;
public class GenerateNXFlatStatementDDLApp {
public static String generateDDL() {
StringBuffer sb = new StringBuffer();
sb.append(generateOneTable(StatementTableNames.ENTRY_TABLE));
sb.append(generateOneTable(StatementTableNames.RAW_TABLE));
return sb.toString();
}
private static String generateOneTable(String tableName) {
StringBuffer sb = new StringBuffer();
sb.append("DROP TABLE IF EXISTS nxflat." + tableName + ";\n");
sb.append("CREATE TABLE nxflat." + tableName + " (\n");
for (int i = 0; i < StatementField.values().length; i++) {
sb.append("\t" + StatementField.values()[i].name() + " VARCHAR(4000)");
if (i + 1 < StatementField.values().length) {
sb.append(",");
}
sb.append("\n");
}
sb.append(");\n");
sb.append("CREATE INDEX " + tableName.substring(0, 10) + "_ENTRY_AC_IDX ON nxflat." + tableName + " ( " + StatementField.ENTRY_ACCESSION.name() + " );\n");
sb.append("CREATE INDEX " + tableName.substring(0, 10) + "_ANNOT_ID_IDX ON nxflat." + tableName + " ( " + StatementField.ANNOTATION_ID.name() + " );\n");
sb.append("\n\n");
return sb.toString();
}
public static void main(String[] args) throws Exception {
String ddl = generateDDL();
File file = new File("../commons/src/main/resources/nxflat-statements-schema.ddl");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(ddl);
bw.close();
System.out.println("nxflat ddl written to " + file.getAbsolutePath());
}
}