package de.open4me.depot.abruf.impl; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.List; import de.open4me.depot.DepotViewerPlugin; import de.open4me.depot.abruf.utils.PropHelper; import de.open4me.depot.abruf.utils.Utils; import de.willuhn.jameica.hbci.rmi.Konto; import de.willuhn.logging.Logger; import de.willuhn.util.ApplicationException; public abstract class BasisDepotAbruf { public abstract String getName(); public void run(Konto konto) throws ApplicationException { handlePropertiesChanges(konto); } public boolean isSupported(Konto konto) throws ApplicationException, RemoteException { return Utils.hasRightKontoType(konto); } public List<String> getPROP(Konto konto) { handlePropertiesChanges(konto); List<String> result = new ArrayList<String>(); result.addAll(PropHelper.getPROP()); return result; } /** * Korrigiert die im Laufe der Zeit umbenannten bzw. gelöschten Properties-Einträge * @param konto */ protected void handlePropertiesChanges(Konto konto) { try { // Änderungsliste anfordern int version = Integer.parseInt(konto.getMeta("depotviewerversion", "0")); List<String[]> changes = getPropertiesChanges(version); // Änderungen durchführen if (changes != null && changes.size() > 0) { Logger.warn("Passe Properties an"); for (String[] change : changes) { // Wenn der Eintrag nicht nur gelöscht werden soll, Wert in die neue Properties kopieren if (!change[1].isEmpty()) { String wert = konto.getMeta(change[0], null); konto.setMeta(change[1], wert); } // Alten Wert löschen konto.setMeta(change[0], null); // Version korrigieren konto.setMeta("depotviewerversion", change[2]); } } } catch (RemoteException e) { Logger.error("Fehler beim Aktualisieren der Properties.", e); e.printStackTrace(); } } public void debug(List<String> seiten, Konto konto) throws RemoteException { Utils.debug(Utils.getWorkingDir(DepotViewerPlugin.class), getName(), konto.getMeta(PropHelper.PROP_OPTIONS, ""), seiten); } public List<String[]> getPropertiesChanges(int version) { return null; } }