package de.deutscherv.diva.gui.viewer; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.eclipse.ui.preferences.ScopedPreferenceStore; import org.osgi.framework.BundleContext; import de.deutscherv.diva.common.dao.IZugriffProfil; import de.deutscherv.diva.common.exception.TechnicalException; import de.deutscherv.diva.common.logging.Logger; import de.deutscherv.diva.gui.commons.Labels; import de.deutscherv.diva.gui.commons.core.AbstractActivator; import de.deutscherv.diva.gui.model.exceptions.ValueNotFoundException; import de.deutscherv.diva.gui.model.services.ServiceFactory; /** * The activator class controls the plug-in life cycle.
* Das Verzeichnis für die temporären Datein wird sofern vorhanden * beim Erzeugen und Beenden des Plugins komplett gelöscht. */ public class Activator extends AbstractActivator { // The plug-in ID private static final String PLUGIN_ID = "de.deutscherv.diva.gui.viewer"; // Logger private final Logger _logger = Logger.getLogger(Activator.class); // Hier kommen die Temporaer runtergeladenen Dateien rein private final String _tmpPath = System.getProperty("java.io.tmpdir") + "/" + Labels.logpath + "/"; // The shared instance private static Activator _plugin; // Dies ist der Viewer der shared instance private FileViewer _viewer = null; private FileViewer _printviewer = null; private FileViewer _secondViewer; /** Returns the shared instance. * @return the shared instance */ public static Activator getDefault() { return _plugin; } /** Holt das Verzeichnis für die temporären Datein. * * @return path */ public String getTempPath() { return _tmpPath; } /** Holt den angelegten Dateibetrachter. * * @return viewer */ public FileViewer getViewer() { if (_viewer == null) { try { // // Verzeichnis für Viewer Logs anlegen! // createLogPath(); // // // Die Logdateien heissen nacher err.txt und out.txt // String lLogfilePath = getLogFilePath(); // _logger.debug("Logpfad des eReview: " + lLogfilePath); // // // Hier liegen die EReview.ini und die Lizenzdatei lic.dat // String lInifilePath = new File(getURL().getPath()).getAbsolutePath(); // _logger.debug("eReview.ini und lic.dat Pfad: " + lInifilePath); // // String lProfilePath = getProfilePath(); // // Hier steht die Benutzerkonfiguation drin. // _logger.debug("Profilepath des eReview: " + lProfilePath); // _viewer = new FileViewer(lLogfilePath, lInifilePath, lProfilePath, true); _viewer = new FileViewer(true); } catch (Exception e) { throw new TechnicalException(e); } } return _viewer; } /** Holt den angelegten Dateibetrachter. * * @return viewer */ public FileViewer getSecondViewer() { if (_secondViewer == null) { try { // // Verzeichnis für Viewer Logs anlegen! // createLogPath(); // // // Die Logdateien heissen nacher err.txt und out.txt // String lLogfilePath = getLogFilePath(); // _logger.debug("Logpfad des eReview: " + lLogfilePath); // // // Hier liegen die EReview.ini und die Lizenzdatei lic.dat // String lInifilePath = new File(getURL().getPath()).getAbsolutePath(); // _logger.debug("eReview.ini und lic.dat Pfad: " + lInifilePath); // // String lProfilePath = getProfilePath(); // // Hier steht die Benutzerkonfiguation drin. // _logger.debug("Profilepath des eReview: " + lProfilePath); // _secondViewer = new FileViewer(lLogfilePath, lInifilePath, lProfilePath, false); _secondViewer = new FileViewer(false); } catch (Exception e) { throw new TechnicalException(e); } } return _secondViewer; } /** Holt den angelegten Dateibetrachter. * * @return viewer */ public FileViewer getPrintViewer() { if (_printviewer == null) { try { // // Verzeichnis für Viewer Logs anlegen! // createLogPath(); // // // Die Logdateien heissen nacher err.txt und out.txt // String lLogfilePath = getLogFilePath(); // _logger.debug("Logpfad des eReview: " + lLogfilePath); // // // Hier liegen die EReview.ini und die Lizenzdatei lic.dat // String lInifilePath = new File(getURL().getPath()).getAbsolutePath(); // _logger.debug("eReview.ini und lic.dat Pfad: " + lInifilePath); // // String lProfilePath = getProfilePath(); // // Hier steht die Benutzerkonfiguation drin. // _logger.debug("Profilepath des eReview: " + lProfilePath); // _printviewer = new FileViewer(lLogfilePath, lInifilePath, lProfilePath, false); _printviewer = new FileViewer(false); } catch (Exception e) { throw new TechnicalException(e); } } return _printviewer; } /** * Erzeugt das Verzeichnis für die Viewerlog (log.log). * */ private void createLogPath() { String lPfad = (System.getProperty("user.home")) + "\\Anwendungsdaten\\" + Labels.logpath + "\\viewer\\"; File lFile = new File(lPfad); lFile.mkdirs(); } /** * Gibt den LogFilePath für die err.txt und out.txt zurück. * * @return {@link String} */ private String getLogFilePath() { // eReviewLogPath aus der diva.properties auslesen String lPath = "$env.appdata$\\" + Labels.logpath + "\\viewer\\"; boolean lError = false; try { lPath = ConfigManager.getInstance().getString("eReviewLogPath", false); } catch (ValueNotFoundException e) { _logger .warn("Beim Auslesen des eReviewLogPath in der diva.properties ist ein Fehler aufgetreten. Es wird der Standardpfad \"" + lPath + "\" benutzt."); } // Alle Positionen der Umgebungsvariablen in $ auslesen List lStarts = new ArrayList(); List lEnds = new ArrayList(); int lPosition = -1; do { if (lPath.contains("$")) { lStarts.add(lPath.indexOf("$", lPosition + 1)); lPosition = lPath.indexOf("$", lPosition + 1); lEnds.add(lPath.indexOf("$", lPosition + 1)); lPosition = lPath.indexOf("$", lPosition + 1); } } while (lPath.indexOf("$", lPosition + 1) != -1 && lPosition != -1); // Alle Umgebungsvariablen in eine Liste schreiben List lUmgebungsVariablen = new ArrayList(); for (int i = 0; i < lStarts.size(); i++) { if (lStarts.get(i) != -1 && lEnds.get(i) != -1) { lUmgebungsVariablen.add(lPath.substring(lStarts.get(i) + 1, lEnds.get(i))); } else { lPath = "$env.appdata$\\" + Labels.logpath + "\\viewer\\"; lError = true; } } // Im Pfad die Umgebungsvariablen ersetzen if (!lError) { for (int i = 0; i < lUmgebungsVariablen.size(); i++) { lPath = lPath.replace("$" + lUmgebungsVariablen.get(i) + "$", System.getProperty(lUmgebungsVariablen.get(i))); } } else { _logger.warn("Beim Auswerten des eReviewLogPath in der diva.properties ist ein Fehler aufgetreten. Es wird der Standardpfad \"" + lPath + "\" benutzt."); } return lPath; } /** * Gibt den Pfad des Viewerprofils zurück. * * @return {@link String} */ private String getProfilePath() { String lProfilePath = null; try { IZugriffProfil lZp = ServiceFactory.getZugriffProfil(); if (ViewerProfilZugriff.hatZugriffAufViewerProfil(1, lZp)) { // dann Dateiname Nr 1 lProfilePath = new File(getURL().getPath() + File.separator + "markup_ereview1.xml").getAbsolutePath(); } else if (ViewerProfilZugriff.hatZugriffAufViewerProfil(2, lZp)) { // dann Dateiname Nr 2 lProfilePath = new File(getURL().getPath() + File.separator + "markup_ereview2.xml").getAbsolutePath(); } else if (ViewerProfilZugriff.hatZugriffAufViewerProfil(3, lZp)) { // dann Dateiname Nr 3 lProfilePath = new File(getURL().getPath() + File.separator + "markup_ereview3.xml").getAbsolutePath(); } else if (ViewerProfilZugriff.hatZugriffAufViewerProfil(4, lZp)) { // dann Dateiname Nr 4 lProfilePath = new File(getURL().getPath() + File.separator + "markup_ereview4.xml").getAbsolutePath(); } else { // verwende Default-Profil lProfilePath = new File(getURL().getPath() + File.separator + "markup_ereview.xml").getAbsolutePath(); } } catch (Exception e) { throw new TechnicalException(e); } return lProfilePath; } /** * * @see de.deutscherv.diva.gui.commons.core.AbstractActivator#getId() * * @return id */ @Override public String getId() { return PLUGIN_ID; } /** * * @see de.deutscherv.diva.gui.commons.core.AbstractActivator#doStart(org.osgi.framework.BundleContext) * * @param pContext {@link BundleContext} * * @throws Exception im Fehlerfall */ @Override protected void doStart(BundleContext pContext) throws Exception { _plugin = this; } /** * * @see de.deutscherv.diva.gui.commons.core.AbstractActivator#doStop(org.osgi.framework.BundleContext) * * @param pContext {@link BundleContext} * * @throws Exception im Fehlerfall */ @Override protected void doStop(BundleContext pContext) throws Exception { boolean lNeedsSaving = getPreferenceStore().needsSaving(); if (lNeedsSaving) { if (getPreferenceStore() instanceof ScopedPreferenceStore) { ScopedPreferenceStore lPreferences = (ScopedPreferenceStore) getPreferenceStore(); try { lPreferences.save(); } catch (IOException e) { _logger.warn("Viewer-Einstellungen konnten nicht gespeichert werden."); } } } if (_viewer != null) { if (_viewer.isVisible()) { _viewer.setVisible(false); } _viewer.dispose(); _viewer = null; // delete(_tmpPath); } _plugin = null; } /** * {@inheritDoc} */ @Override public void doWorkbenchAdvisorPreStartup() { super.doWorkbenchAdvisorPreStartup(); } }