/**********************************************************************
*
* Copyright (c) by Olaf Willuhn
* 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.DBSupportPostgreSQLImpl;
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;
/**
* Verlaengert die Spalte "content" in der Tabelle "property" von 10000 auf 20000 Zeichen.
* BUGZILLA 1322
*/
public class update0040 implements Update
{
private Map statements = new HashMap();
/**
* ct
*/
public update0040()
{
// Update fuer H2
statements.put(DBSupportH2Impl.class.getName(),"ALTER TABLE property ALTER COLUMN content varchar(20000) NULL;\n");
// Update fuer PostGreSQL
statements.put(DBSupportPostgreSQLImpl.class.getName(),"ALTER TABLE property ALTER COLUMN content TYPE varchar(20000);\n");
// Update fuer MySQL nicht noetig
}
/**
* @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();
String driver = HBCIDBService.SETTINGS.getString("database.driver",DBSupportH2Impl.class.getName());
String sql = (String) statements.get(driver);
if (sql == null)
{
myProvider.getProgressMonitor().log(i18n.tr("Update uebersprungen, nicht notwendig"));
return;
}
try
{
ScriptExecutor.execute(new StringReader(sql),myProvider.getConnection(),myProvider.getProgressMonitor());
myProvider.getProgressMonitor().log(i18n.tr("Tabelle 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 2 f�r Tabelle \"property\"";
}
}