ch.elexis.preferences.PreferenceInitializer.java Source code

Java tutorial

Introduction

Here is the source code for ch.elexis.preferences.PreferenceInitializer.java

Source

/*******************************************************************************
 * Copyright (c) 2006-2009, G. Weirich and Elexis
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    G. Weirich - initial implementation
 *    
 *******************************************************************************/
package ch.elexis.preferences;

import java.io.File;

import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;

import ch.elexis.Desk;
import ch.elexis.Hub;
import ch.elexis.StringConstants;
import ch.elexis.admin.AccessControlDefaults;
import ch.elexis.data.Brief;
import ch.elexis.data.PersistentObject;
import ch.elexis.util.Log;
import ch.rgw.tools.StringTool;

/**
 * Vorgabewerte setzen, wo ntig. Bitte in den drei Funktionen dieser Klasse alle notwendigen
 * Voreinstellungen eintragen.
 */
public class PreferenceInitializer extends AbstractPreferenceInitializer {

    /**
     * Diese Funktion wird automatisch beim Programmstart aufgerufen, und setzt alle hier
     * definierten Einstellungswerte auf Voreinstellungen, sofern noch keine vom Anwender erstellten
     * Werte vorhanden sind. Hier alle Benutzerspezifischen Voreinstellungen eintragen
     */
    public void initializeDefaultPreferences() {
        IPreferenceStore localstore = new SettingsPreferenceStore(Hub.localCfg);

        // Datenbank
        /*
         * localstore.setDefault(PreferenceConstants.DB_NAME,"hsql"); //$NON-NLS-1$
         * localstore.setDefault(PreferenceConstants.DB_CLASS,"org.hsqldb.jdbcDriver");
         * //$NON-NLS-1$ String base=getDefaultDBPath();
         * 
         * localstore.setDefault(PreferenceConstants.DB_CONNECT,"jdbc:hsqldb:"+base+"/db");
         * //$NON-NLS-1$ //$NON-NLS-2$ localstore.setDefault(PreferenceConstants.DB_USERNAME,"sa");
         * //$NON-NLS-1$ localstore.setDefault(PreferenceConstants.DB_PWD,""); //$NON-NLS-1$
         * localstore.setDefault(PreferenceConstants.DB_TYP,"hsqldb"); //$NON-NLS-1$
         */
        localstore.setDefault(PreferenceConstants.DB_NAME, "h2"); //$NON-NLS-1$
        //localstore.setDefault(PreferenceConstants.DB_CLASS,"org.h2.Driver"); //$NON-NLS-1$
        String base = getDefaultDBPath();

        localstore.setDefault(PreferenceConstants.DB_CONNECT, "jdbc:h2:" + base + "/db;MODE=MySQL"); //$NON-NLS-1$ //$NON-NLS-2$
        localstore.setDefault(PreferenceConstants.DB_USERNAME, "sa"); //$NON-NLS-1$
        localstore.setDefault(PreferenceConstants.DB_PWD, ""); //$NON-NLS-1$
        localstore.setDefault(PreferenceConstants.DB_TYP, "mysql"); //$NON-NLS-1$
        // Ablauf
        File userhome = new File(System.getProperty("user.home") + File.separator + "elexis"); //$NON-NLS-1$ //$NON-NLS-2$
        if (!userhome.exists()) {
            userhome.mkdirs();
        }
        localstore.setDefault(PreferenceConstants.ABL_LOGALERT, 1);
        localstore.setDefault(PreferenceConstants.ABL_LOGLEVEL, 2);
        localstore.setDefault(PreferenceConstants.ABL_TRACE, "none"); //$NON-NLS-1$
        localstore.setDefault(PreferenceConstants.ABL_BASEPATH, userhome.getAbsolutePath());
        localstore.setDefault(PreferenceConstants.ABL_CACHELIFETIME, PersistentObject.CACHE_DEFAULT_LIFETIME);
        localstore.setDefault(PreferenceConstants.ABL_HEARTRATE, 30);
        Hub.localCfg.set(PreferenceConstants.ABL_BASEPATH, userhome.getAbsolutePath());

        // Texterstellung
        if (System.getProperty("os.name").toLowerCase().startsWith("win")) { //$NON-NLS-1$ //$NON-NLS-2$
            localstore.setDefault(PreferenceConstants.P_TEXTMODUL, "NOA-Text"); //$NON-NLS-1$
            if (localstore.getString(PreferenceConstants.P_TEXTMODUL).equals(StringTool.leer)) {
                localstore.setValue(PreferenceConstants.P_TEXTMODUL, "NOA-Text"); //$NON-NLS-1$
            }
        } else {
            localstore.setDefault(PreferenceConstants.P_TEXTMODUL, "OpenOffice Wrapper"); //$NON-NLS-1$
            if (localstore.getString(PreferenceConstants.P_TEXTMODUL).equals("")) { //$NON-NLS-1$
                localstore.setValue(PreferenceConstants.P_TEXTMODUL, "OpenOffice Wrapper"); //$NON-NLS-1$
            }
        }
        File elexisbase = new File(Hub.getBasePath());
        File fDef = new File(elexisbase.getParentFile().getParent() + "/ooo"); //$NON-NLS-1$
        String defaultbase;
        if (fDef.exists()) {
            defaultbase = fDef.getAbsolutePath();
        } else {
            defaultbase = Hub.localCfg.get(PreferenceConstants.P_OOBASEDIR, "."); //$NON-NLS-1$
        }
        System.setProperty("openoffice.path.name", defaultbase); //$NON-NLS-1$
        localstore.setDefault(PreferenceConstants.P_OOBASEDIR, defaultbase);
        localstore.setValue(PreferenceConstants.P_OOBASEDIR, defaultbase);

        // Dokument
        StringBuilder sb = new StringBuilder();
        sb.append("Alle,").append(Brief.UNKNOWN).append(",").append(Brief.AUZ).append(",") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                .append(Brief.RP).append(",").append(Brief.LABOR); //$NON-NLS-1$

        localstore.setDefault(PreferenceConstants.DOC_CATEGORY, sb.toString());
        Hub.localCfg.flush();
    }

    public static String getDefaultDBPath() {
        String base;
        File f = new File(Hub.getBasePath() + "/rsc/demodata"); //$NON-NLS-1$
        if (f.exists() && f.canWrite()) {
            base = f.getAbsolutePath();
        } else {
            base = System.getenv("TEMP"); //$NON-NLS-1$
            if (base == null) {
                base = System.getenv("TMP"); //$NON-NLS-1$
                if (base == null) {
                    base = System.getProperty("user.home"); //$NON-NLS-1$
                }
            }
            base += "/elexisdata"; //$NON-NLS-1$
            f = new File(base);
            if (!f.exists()) {
                f.mkdirs();
            }
        }
        return base;
    }

    /**
     * Diese Funktion wird nach dem Erstellen des Display aufgerufen und dient zum Initialiseren
     * frh bentigter Einstellungen, die bereits ein Display bentigen
     * 
     */
    public void initializeDisplayPreferences(Display display) {
        Desk.getColorRegistry().put(Desk.COL_RED, new RGB(255, 0, 0));
        Desk.getColorRegistry().put(Desk.COL_GREEN, new RGB(0, 255, 0));
        Desk.getColorRegistry().put(Desk.COL_BLUE, new RGB(0, 0, 255));
        Desk.getColorRegistry().put(Desk.COL_SKYBLUE, new RGB(135, 206, 250));
        Desk.getColorRegistry().put(Desk.COL_LIGHTBLUE, new RGB(0, 191, 255));
        Desk.getColorRegistry().put(Desk.COL_BLACK, new RGB(0, 0, 0));
        Desk.getColorRegistry().put(Desk.COL_GREY, new RGB(0x60, 0x60, 0x60));
        Desk.getColorRegistry().put(Desk.COL_WHITE, new RGB(255, 255, 255));
        Desk.getColorRegistry().put(Desk.COL_DARKGREY, new RGB(50, 50, 50));
        Desk.getColorRegistry().put(Desk.COL_LIGHTGREY, new RGB(180, 180, 180));
        Desk.getColorRegistry().put(Desk.COL_GREY60, new RGB(153, 153, 153));
        Desk.getColorRegistry().put(Desk.COL_GREY20, new RGB(51, 51, 51));

        FontData[] small = new FontData[] { new FontData("Helvetica", 7, SWT.NORMAL) }; //$NON-NLS-1$
        Hub.userCfg.set(PreferenceConstants.USR_SMALLFONT + "_default", //$NON-NLS-1$
                PreferenceConverter.getStoredRepresentation(small));
    }

    /**
     * Diese Funktion wird nach erstem Erstellen der Datenbank (d.h. nur ein einziges Mal)
     * aufgerufen und belegt globale Voreinstellungen. Hier alle im ganzen Netzwerk und fr alle
     * Benutzer gltigen Voreinstellungen eintragen
     * 
     */
    public void initializeGlobalPreferences() {
        IPreferenceStore global = new SettingsPreferenceStore(Hub.globalCfg);
        global.setDefault(PreferenceConstants.ABL_TRACE, "none"); //$NON-NLS-1$
        Hub.globalCfg.flush();
    }

    /**
     * Diese Funktion wird ebenfalls nur beim ersten Mal nach dem Erstellen der Datenbank aufgerufen
     * und erledigt die Vorkonfiguration der Zugriffsrechte Hier alle Zugriffsrechte voreinstellen
     */
    public void initializeGrants() {
        Hub.globalCfg.set("groups", StringConstants.ROLES_DEFAULT); //$NON-NLS-1$
        Hub.acl.grant(StringConstants.ROLE_ALL, AccessControlDefaults.getAlle());
        Hub.acl.grant(StringConstants.ROLE_USERS, AccessControlDefaults.getAnwender());
        Hub.acl.flush();
    }
}