diff --git a/.classpath b/.classpath index e1d24bc..7c5aba3 100644 --- a/.classpath +++ b/.classpath @@ -28,7 +28,8 @@ - + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 6e80039..69c31cd 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,8 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml index f4bf050..5c9bd75 100644 --- a/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -1,5 +1,5 @@ - + diff --git a/pom.xml b/pom.xml index 73eba42..4bed5f2 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ Database createion and definition framework - 1.8 + 1.6 diff --git a/src/main/java/de/kreth/dbmanager/DbManager.java b/src/main/java/de/kreth/dbmanager/DbManager.java index 4bfd40d..7a5ce92 100644 --- a/src/main/java/de/kreth/dbmanager/DbManager.java +++ b/src/main/java/de/kreth/dbmanager/DbManager.java @@ -103,6 +103,7 @@ public class DbManager { } public static String createSqlStatement(TableDefinition def) { + StringBuilder sql = new StringBuilder(); sql.append("CREATE TABLE ").append(def.getTableName()).append(" (\n"); @@ -115,38 +116,70 @@ public class DbManager { first = false; sql.append("\t").append(col.getColumnName()).append(" "); - 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; - } + + appendType(sql, col); + if (col.getColumnParameters() != null && !col.getColumnParameters().isEmpty()) { sql.append(" ").append(col.getColumnParameters()); } - sql.append("\n"); } + + sql.append("\n"); sql.append(")"); 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 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(); + } } diff --git a/src/test/java/de/kreth/dbmanager/DbManagerAddColumnTest.java b/src/test/java/de/kreth/dbmanager/DbManagerAddColumnTest.java new file mode 100644 index 0000000..b9bf914 --- /dev/null +++ b/src/test/java/de/kreth/dbmanager/DbManagerAddColumnTest.java @@ -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()); + + List columns = new ArrayList(); + 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()); + + List columns = new ArrayList(); + 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); + } + +} diff --git a/src/test/java/de/kreth/dbmanager/DbManagerCreateTablesTest.java b/src/test/java/de/kreth/dbmanager/DbManagerCreateTablesTest.java new file mode 100644 index 0000000..aa2c083 --- /dev/null +++ b/src/test/java/de/kreth/dbmanager/DbManagerCreateTablesTest.java @@ -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 columns = new ArrayList(); + 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); + } + +}