/**********************************************************************
* $Source: /cvsroot/hibiscus/hibiscus/updates/update0010.java,v $
* $Revision: 1.6 $
* $Date: 2011/10/24 14:24:22 $
* $Author: willuhn $
* $Locker: $
* $State: Exp $
*
* Copyright (c) by willuhn software & services
* All rights reserved
*
**********************************************************************/
import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;
import de.willuhn.jameica.hbci.rmi.HBCIDBService;
import de.willuhn.jameica.hbci.server.DBSupportH2Impl;
import de.willuhn.jameica.hbci.server.DBSupportMySqlImpl;
import de.willuhn.jameica.hbci.server.HBCIUpdateProvider;
import de.willuhn.logging.Logger;
import de.willuhn.sql.ScriptExecutor;
import de.willuhn.sql.version.Update;
import de.willuhn.sql.version.UpdateProvider;
import de.willuhn.util.ApplicationException;
import de.willuhn.util.I18N;
/**
* Korrigiertes Datenbank-Update fuer neue Tabelle "property".
* Die Spalte "name" war u.U. zu kurz.
*/
public class update0010 implements Update
{
private Map statements = new HashMap();
/**
* ct
*/
public update0010()
{
// Update fuer H2
statements.put(DBSupportH2Impl.class.getName(),
"ALTER TABLE property ALTER COLUMN name VARCHAR(1000) NOT NULL;\n");
// Update fuer MySQL
statements.put(DBSupportMySqlImpl.class.getName(),
"ALTER TABLE property DROP KEY name;\n" +
"ALTER TABLE property CHANGE name name TEXT NOT NULL;\n" +
"ALTER TABLE property ADD UNIQUE KEY (name(255));\n");
}
/**
* @see de.willuhn.sql.version.Update#execute(de.willuhn.sql.version.UpdateProvider)
*/
public void execute(UpdateProvider provider) throws ApplicationException
{
HBCIUpdateProvider myProvider = (HBCIUpdateProvider) provider;
I18N i18n = myProvider.getResources().getI18N();
// Wenn wir eine Tabelle erstellen wollen, muessen wir wissen, welche
// SQL-Dialekt wir sprechen
String driver = HBCIDBService.SETTINGS.getString("database.driver",DBSupportH2Impl.class.getName());
String sql = (String) statements.get(driver);
if (sql == null)
throw new ApplicationException(i18n.tr("Datenbank {0} nicht wird unterst�tzt",driver));
try
{
Logger.info("create sql table for update0010");
ScriptExecutor.execute(new StringReader(sql),myProvider.getConnection(),myProvider.getProgressMonitor());
myProvider.getProgressMonitor().log(i18n.tr("Tabelle 'property' aktualisiert"));
}
catch (ApplicationException ae)
{
throw ae;
}
catch (Exception e)
{
Logger.error("unable to execute update",e);
throw new ApplicationException(i18n.tr("Fehler beim Ausf�hren des Updates"),e);
}
}
/**
* @see de.willuhn.sql.version.Update#getName()
*/
public String getName()
{
return "Datenbank-Update f�r Tabelle \"property\"";
}
}
/*********************************************************************
* $Log: update0010.java,v $
* Revision 1.6 2011/10/24 14:24:22 willuhn
* @B Parameter "database.driver" darf inzwischen NULL sein - in dem Fall H2 als Default verwenden
*
* Revision 1.5 2010-11-02 12:02:20 willuhn
* @R Support fuer McKoi entfernt. User, die noch dieses alte DB-Format nutzen, sollen erst auf Jameica 1.6/Hibiscus 1.8 (oder maximal Jameica 1.9/Hibiscus 1.11) wechseln, dort die Migration auf H2 durchfuehren und dann erst auf Hibiscus 1.12 updaten
*
* Revision 1.4 2009/01/07 22:56:43 willuhn
* @B BUGZILLA 688
*
* Revision 1.3 2008/10/12 22:10:20 willuhn
* @B Typo in den Updates
* @B Spalten-Sortierung und -breite fuer in den Positionen von Sammelauftraegen nicht gespeichert
*
* Revision 1.2 2008/10/01 11:06:08 willuhn
* @B DB-Update 10: Unique-Key korrigiert (bei Spalten vom Typ "TEXT" muss die Laenge des Index mit angegeben werden. Siehe http://www.mydigitallife.info/2007/07/09/mysql-error-1170-42000-blobtext-column-used-in-key-specification-without-a-key-length/
*
* Revision 1.1 2008/10/01 10:42:51 willuhn
* @N Spalte "name" in Tabelle "property" vergroessert - es gibt Parameter, die laenger als 255 Zeichen sind. DB-Update 10
*
**********************************************************************/