net.bioclipse.cdk.smartsmatching.prefs.SmartsMatchingPrefsHelper.java Source code

Java tutorial

Introduction

Here is the source code for net.bioclipse.cdk.smartsmatching.prefs.SmartsMatchingPrefsHelper.java

Source

/*******************************************************************************
 * Copyright (c) 2009 Ola Spjuth.
 * 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:
 *     Ola Spjuth - initial API and implementation
 ******************************************************************************/
package net.bioclipse.cdk.smartsmatching.prefs;

import java.util.ArrayList;
import java.util.List;

import net.bioclipse.cdk.smartsmatching.Activator;
import net.bioclipse.cdk.smartsmatching.model.SmartsWrapper;

import org.apache.log4j.Logger;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceStore;

public class SmartsMatchingPrefsHelper {

    private static final Logger logger = Logger.getLogger(SmartsMatchingPrefsHelper.class);

    public static final String SMARTSMATCHING_PREFS_SMARTS = "SmartsMatchingSmarts";
    public static final String PREFS_DELIMITER = "-SP-";
    public static final String PREFS_PART_DELIMITER = "-SPSP-";

    public static List<SmartsWrapper> getPreferences() {

        IPreferenceStore store = Activator.getDefault().getPreferenceStore();

        String entireString = store.getString(SMARTSMATCHING_PREFS_SMARTS);

        logger.debug("Read Smarts prefs string: " + entireString);

        List<SmartsWrapper> retlist = splitPrefsString(entireString);

        //If no hits, initialize default ones.
        if (retlist.size() <= 0) {
            logger.debug("No SMARTS could be read, initializing default prefs.");
            entireString = store.getDefaultString(SMARTSMATCHING_PREFS_SMARTS);
            logger.debug("Read default Smarts prefs string: " + entireString);

            //Store def val
            store.setValue(SMARTSMATCHING_PREFS_SMARTS, entireString);

            //Try again
            retlist = splitPrefsString(entireString);

        }

        return retlist;

    }

    private static List<SmartsWrapper> splitPrefsString(String entireString) {

        List<SmartsWrapper> rtlst = new ArrayList<SmartsWrapper>();

        //Split in parts
        String[] ret = entireString.split(PREFS_DELIMITER);
        for (int i = 0; i < ret.length; i++) {
            logger.debug("Part " + i + " extracted: " + ret[i]);

            String[] subparts = ret[i].split(PREFS_PART_DELIMITER);

            if (subparts.length == 2) {
                SmartsWrapper sw = new SmartsWrapper(subparts[0], subparts[1]);
                rtlst.add(sw);
            } else {
                logger.error("SmartsMatchingPrefs part: " + ret[i] + "could not "
                        + "be parsed into name and smartsstring. Skipped.");
            }
        }

        return rtlst;
    }

    public static void setPreferences(List<SmartsWrapper> smartsList) {

        IPreferenceStore store = Activator.getDefault().getPreferenceStore();

        String prefsToSave = "";
        for (SmartsWrapper sw : smartsList) {
            if (sw != null) {
                if (sw.getName() == null || "".equals(sw.getName())) {
                    logger.error("SmartsWrapper has no name: " + sw.getName());
                } else {
                    if (sw.getSmartsString() == null || "".equals(sw.getSmartsString())) {
                        logger.error("SmartsWrapper has no SMARST: " + sw.getSmartsString());
                    } else {
                        String substr = sw.getName() + PREFS_PART_DELIMITER + sw.getSmartsString();
                        prefsToSave = prefsToSave + substr + PREFS_DELIMITER;
                    }
                }
            }
        }

        //Remove trailing delimiter
        if (prefsToSave.length() > 4)
            prefsToSave = prefsToSave.substring(0, prefsToSave.length() - (PREFS_DELIMITER.length()));

        logger.debug("Saving smartsmatching prefs: " + prefsToSave);

        store.setValue(SMARTSMATCHING_PREFS_SMARTS, prefsToSave);

        Activator.getDefault().savePluginPreferences();

    }
}