downgrade to java 6 again, support for adding columns to tables (alter

table)
master
Markus Kreth 9 years ago
parent 0b30e89005
commit 4333e585b3
  1. 3
      .classpath
  2. 6
      .settings/org.eclipse.jdt.core.prefs
  3. 2
      .settings/org.eclipse.wst.common.project.facet.core.xml
  4. 2
      pom.xml
  5. 87
      src/main/java/de/kreth/dbmanager/DbManager.java
  6. 42
      src/test/java/de/kreth/dbmanager/DbManagerAddColumnTest.java
  7. 28
      src/test/java/de/kreth/dbmanager/DbManagerCreateTablesTest.java

@ -28,7 +28,8 @@
<attribute name="org.eclipse.jst.component.nondependency" value=""/> <attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
<attributes> <attributes>
<attribute name="owner.project.facets" value="java"/> <attribute name="owner.project.facets" value="java"/>
</attributes> </attributes>

@ -1,8 +1,8 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.compiler.source=1.6

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<faceted-project> <faceted-project>
<installed facet="jst.utility" version="1.0"/> <installed facet="jst.utility" version="1.0"/>
<installed facet="java" version="1.8"/> <installed facet="java" version="1.6"/>
</faceted-project> </faceted-project>

@ -9,7 +9,7 @@
<description>Database createion and definition framework</description> <description>Database createion and definition framework</description>
<properties> <properties>
<java-version>1.8</java-version> <java-version>1.6</java-version>
</properties> </properties>
<build> <build>

@ -103,6 +103,7 @@ public class DbManager {
} }
public static String createSqlStatement(TableDefinition def) { public static String createSqlStatement(TableDefinition def) {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("CREATE TABLE ").append(def.getTableName()).append(" (\n"); sql.append("CREATE TABLE ").append(def.getTableName()).append(" (\n");
@ -115,38 +116,70 @@ public class DbManager {
first = false; first = false;
sql.append("\t").append(col.getColumnName()).append(" "); sql.append("\t").append(col.getColumnName()).append(" ");
switch (col.getType()) {
case BLOB: appendType(sql, col);
throw new IllegalArgumentException("Column Type " + col.getType() + " not supported");
case BOOLEAN:
sql.append(col.getType().name());
break;
case DATETIME:
sql.append("DATETIME");
break;
case INTEGER:
sql.append(col.getType().name());
break;
case REAL:
sql.append("DOUBLE");
break;
case VARCHAR100:
sql.append("VARCHAR(100)");
break;
case VARCHAR25:
sql.append("VARCHAR(25)");
break;
case TEXT:
case VARCHAR255:
sql.append("VARCHAR(255)");
break;
}
if (col.getColumnParameters() != null && !col.getColumnParameters().isEmpty()) { if (col.getColumnParameters() != null && !col.getColumnParameters().isEmpty()) {
sql.append(" ").append(col.getColumnParameters()); sql.append(" ").append(col.getColumnParameters());
} }
sql.append("\n");
} }
sql.append("\n");
sql.append(")"); sql.append(")");
return sql.toString(); return sql.toString();
} }
private static void appendType(StringBuilder sql, ColumnDefinition col) {
switch (col.getType()) {
case BLOB:
throw new IllegalArgumentException("Column Type " + col.getType() + " not supported");
case BOOLEAN:
sql.append(col.getType().name());
break;
case DATETIME:
sql.append("DATETIME");
break;
case INTEGER:
sql.append(col.getType().name());
break;
case REAL:
sql.append("DOUBLE");
break;
case VARCHAR100:
sql.append("VARCHAR(100)");
break;
case VARCHAR25:
sql.append("VARCHAR(25)");
break;
case TEXT:
case VARCHAR255:
sql.append("VARCHAR(255)");
break;
}
}
public static String createSqlAddColumns(TableDefinition current, Collection<ColumnDefinition> columnsToAdd) {
StringBuilder sql = new StringBuilder();
sql.append("ALTER TABLE ").append(current.getTableName());
boolean first = true;
for (ColumnDefinition col : columnsToAdd) {
if (!first) {
sql.append(",");
}
first = false;
sql.append("\n\tADD COLUMN ").append(col.getColumnName()).append(" ");
appendType(sql, col);
if (col.getColumnParameters() != null && !col.getColumnParameters().isEmpty()) {
sql.append(" ").append(col.getColumnParameters());
}
}
sql.append(";");
return sql.toString();
}
} }

@ -0,0 +1,42 @@
package de.kreth.dbmanager;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
public class DbManagerAddColumnTest {
@Before
public void setUp() throws Exception {
}
@Test
public void testAddOneColumn() {
TableDefinition def = new TableDefinition("testtable", new ArrayList<ColumnDefinition>());
List<ColumnDefinition> columns = new ArrayList<ColumnDefinition>();
columns.add(new ColumnDefinition(DataType.DATETIME, "deleted", " DEFAULT null"));
String sql = DbManager.createSqlAddColumns(def, columns);
assertEquals("ALTER TABLE testtable\n\tADD COLUMN deleted DATETIME DEFAULT null;", sql);
}
@Test
public void testAddTwoColumns() {
TableDefinition def = new TableDefinition("testtable", new ArrayList<ColumnDefinition>());
List<ColumnDefinition> columns = new ArrayList<ColumnDefinition>();
columns.add(new ColumnDefinition(DataType.DATETIME, "deleted", " DEFAULT null"));
columns.add(new ColumnDefinition(DataType.VARCHAR25, "theType"));
String sql = DbManager.createSqlAddColumns(def, columns);
assertEquals(
"ALTER TABLE testtable\n\tADD COLUMN deleted DATETIME DEFAULT null,\n\tADD COLUMN theType VARCHAR(25);",
sql);
}
}

@ -0,0 +1,28 @@
package de.kreth.dbmanager;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
public class DbManagerCreateTablesTest {
@Before
public void setUp() throws Exception {
}
@Test
public void testCreateSqlStatement() {
List<ColumnDefinition> columns = new ArrayList<ColumnDefinition>();
TableDefinition def = new TableDefinition("testtable", columns);
String sql = DbManager.createSqlStatement(def);
assertNotNull(sql);
System.out.println(sql);
assertEquals("CREATE TABLE testtable (\n" + " _id INTEGER primary key AUTO_INCREMENT\n" + ")", sql);
}
}
Loading…
Cancel
Save