|
|
|
@ -20,7 +20,7 @@ public class DbManager { |
|
|
|
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); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -30,18 +30,19 @@ public class DbManager { |
|
|
|
|
|
|
|
|
|
|
|
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,8 +52,9 @@ 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(); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -62,8 +64,8 @@ public class DbManager { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
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); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -73,11 +75,13 @@ public class DbManager { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
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 { |
|
|
|
@ -87,25 +91,24 @@ public class DbManager { |
|
|
|
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"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -138,7 +141,7 @@ public class DbManager { |
|
|
|
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"); |
|
|
|
|