master
Markus Kreth 9 years ago
parent 8565c8928d
commit 0b30e89005
  1. 2
      .classpath
  2. 6
      .settings/org.eclipse.jdt.core.prefs
  3. 2
      .settings/org.eclipse.wst.common.project.facet.core.xml
  4. 4
      pom.xml
  5. 71
      src/main/java/de/kreth/dbmanager/DbManager.java

@ -28,7 +28,7 @@
<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.6"> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<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.6 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.6 org.eclipse.jdt.core.compiler.compliance=1.8
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.6 org.eclipse.jdt.core.compiler.source=1.8

@ -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.6"/> <installed facet="java" version="1.8"/>
</faceted-project> </faceted-project>

@ -4,12 +4,12 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>de.kreth</groupId> <groupId>de.kreth</groupId>
<artifactId>databasedefinition</artifactId> <artifactId>databasedefinition</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.2-SNAPSHOT</version>
<name>DatabaseDefinition</name> <name>DatabaseDefinition</name>
<description>Database createion and definition framework</description> <description>Database createion and definition framework</description>
<properties> <properties>
<java-version>1.6</java-version> <java-version>1.8</java-version>
</properties> </properties>
<build> <build>

@ -13,35 +13,36 @@ public class DbManager {
private Database db; private Database db;
private int newVersion; private int newVersion;
private List<Version> versions; private List<Version> versions;
public DbManager(Collection<TableDefinition> tables, List<Version> versions, Database db, int newVersion) { public DbManager(Collection<TableDefinition> tables, List<Version> versions, Database db, int newVersion) {
tableDefinitions = new HashMap<String, TableDefinition>(); tableDefinitions = new HashMap<String, TableDefinition>();
this.db = db; this.db = db;
this.newVersion = newVersion; this.newVersion = newVersion;
this.versions = versions; this.versions = versions;
for(TableDefinition def: tables){ for (TableDefinition def : tables) {
tableDefinitions.put(def.getTableName(), def); tableDefinitions.put(def.getTableName(), def);
} }
checkParamters(); checkParamters();
sortVersionsAndMakeUnmodifiable(); sortVersionsAndMakeUnmodifiable();
} }
private void checkParamters() { private void checkParamters() {
StringBuilder errorMsg = new StringBuilder(); StringBuilder errorMsg = new StringBuilder();
if(tableDefinitions.isEmpty()) if (tableDefinitions.isEmpty())
append(errorMsg, "Parameter tables darf nicht leer sein!"); append(errorMsg, "Parameter tables darf nicht leer sein!");
if(db == null) if (db == null)
append(errorMsg, "Parameter db darf nicht null sein!"); append(errorMsg, "Parameter db darf nicht null sein!");
if(newVersion<1) if (newVersion < 1)
append(errorMsg, "Parameter newVersion muss >= 1 sein!"); append(errorMsg, "Parameter newVersion muss >= 1 sein!");
if(versions == null) if (versions == null)
append(errorMsg, "Liste mit Versionen darf nicht null sein"); append(errorMsg, "Liste mit Versionen darf nicht null sein");
if(versions != null && versions.get(0).getVersionNr() != 1) if (versions != null && versions.get(0).getVersionNr() != 1)
append(errorMsg, "Der erste Eintrag muss die Versionsnummer 1 haben! Die Create Table anweisungen für erste Version müssen enthalten sein."); append(errorMsg,
"Der erste Eintrag muss die Versionsnummer 1 haben! Die Create Table anweisungen für erste Version müssen enthalten sein.");
if(errorMsg.length()>0)
if (errorMsg.length() > 0)
throw new IllegalArgumentException(errorMsg.toString()); throw new IllegalArgumentException(errorMsg.toString());
} }
@ -51,66 +52,68 @@ public class DbManager {
@Override @Override
public int compare(Version o1, Version o2) { public int compare(Version o1, Version o2) {
if(o1.getVersionNr() == o2.getVersionNr()) if (o1.getVersionNr() == o2.getVersionNr())
throw new IllegalStateException("Es gibt zwei Einträge mit der selben Version! Es muss eine eindeutige Reihenfolge gegeben sein!"); throw new IllegalStateException(
"Es gibt zwei Einträge mit der selben Version! Es muss eine eindeutige Reihenfolge gegeben sein!");
return o1.getVersionNr() - o2.getVersionNr(); return o1.getVersionNr() - o2.getVersionNr();
} }
}); });
versions = Collections.unmodifiableList(versions); versions = Collections.unmodifiableList(versions);
} }
private void append(StringBuilder bld, String msg){ private void append(StringBuilder bld, String msg) {
if(bld.length()>0) if (bld.length() > 0)
bld.append("\n"); bld.append("\n");
bld.append(msg); bld.append(msg);
} }
public Map<String, TableDefinition> getTableDefinitions() { public Map<String, TableDefinition> getTableDefinitions() {
return Collections.unmodifiableMap(tableDefinitions); return Collections.unmodifiableMap(tableDefinitions);
} }
public boolean needUpdate() { public boolean needUpdate() {
return db.getVersion()<newVersion; return db.getVersion() < newVersion;
} }
/** /**
* Führt die nötigen Befehle aus um die aktuelle Version zu erreichen. <br /> * Führt die nötigen Befehle aus um die aktuelle Version zu erreichen.
* <br />
*
* @throws SQLException * @throws SQLException
*/ */
public void execute() throws SQLException { public void execute() throws SQLException {
int currentVersion = db.getVersion(); int currentVersion = db.getVersion();
int from = 0; int from = 0;
for (int i = from; i < versions.size(); i++) { for (int i = from; i < versions.size(); i++) {
Version v = versions.get(i); Version v = versions.get(i);
if(v.getVersionNr()>currentVersion) if (v.getVersionNr() > currentVersion)
executeStatements(v.getSqlStms()); executeStatements(v.getSqlStms());
} }
} }
private void executeStatements(List<String> sqlStms) throws SQLException { private void executeStatements(List<String> sqlStms) throws SQLException {
for(String sql : sqlStms){ for (String sql : sqlStms) {
db.execSQL(sql); db.execSQL(sql);
} }
} }
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");
boolean first = true; boolean first = true;
for(ColumnDefinition col : def.getColumns()) { for (ColumnDefinition col : def.getColumns()) {
if(!first) { if (!first) {
sql.append(",\n"); sql.append(",\n");
} }
first = false; first = false;
sql.append("\t").append(col.getColumnName()).append(" "); sql.append("\t").append(col.getColumnName()).append(" ");
switch (col.getType()) { switch (col.getType()) {
case BLOB: case BLOB:
@ -136,9 +139,9 @@ public class DbManager {
case TEXT: case TEXT:
case VARCHAR255: case VARCHAR255:
sql.append("VARCHAR(255)"); sql.append("VARCHAR(255)");
break; 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");

Loading…
Cancel
Save