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);
+ }
+
+}