net.sf.webcat.eclipse.cxxtest.internal.options.ConfigurationPropertyTester.java Source code

Java tutorial

Introduction

Here is the source code for net.sf.webcat.eclipse.cxxtest.internal.options.ConfigurationPropertyTester.java

Source

/*==========================================================================*\
 |  $Id: ConfigurationPropertyTester.java,v 1.1 2009/09/13 12:59:29 aallowat Exp $
 |*-------------------------------------------------------------------------*|
 |  Copyright (C) 2006-2009 Virginia Tech 
 |
 |   This file is part of Web-CAT Eclipse Plugins.
 |
 |   Web-CAT is free software; you can redistribute it and/or modify
 |   it under the terms of the GNU General Public License as published by
 |   the Free Software Foundation; either version 2 of the License, or
 |   (at your option) any later version.
 |
 |   Web-CAT is distributed in the hope that it will be useful,
 |   but WITHOUT ANY WARRANTY; without even the implied warranty of
 |   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 |   GNU General Public License for more details.
 |
 |   You should have received a copy of the GNU General Public License
 |   along with Web-CAT; if not, see <http://www.gnu.org/licenses/>.
\*==========================================================================*/

package net.sf.webcat.eclipse.cxxtest.internal.options;

import net.sf.webcat.eclipse.cxxtest.CxxTestPlugin;
import net.sf.webcat.eclipse.cxxtest.options.IExtraOptionsEnablement;

import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.core.expressions.PropertyTester;
import org.eclipse.jface.preference.IPreferenceStore;

/**
 * 
 * @author  Tony Allevato (Virginia Tech Computer Science)
 * @author  latest changes by: $Author: aallowat $
 * @version $Revision: 1.1 $ $Date: 2009/09/13 12:59:29 $
 */
public class ConfigurationPropertyTester extends PropertyTester {
    public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
        IConfiguration configuration = (IConfiguration) receiver;

        if (PROP_CONFIGURATION_NAME.equals(property)) {
            return configuration.getName().equals(expectedValue);
        } else if (PROP_PREFERENCE.equals(property)) {
            IPreferenceStore store = CxxTestPlugin.getDefault().getPreferenceStore();
            String key = CxxTestPlugin.PLUGIN_ID + ".preferences." + args[0]; //$NON-NLS-1$
            String type = (String) args[1];
            Object value = null;

            if ("boolean".equals(type)) //$NON-NLS-1$
            {
                value = store.getBoolean(key);
            } else if ("int".equals(type)) //$NON-NLS-1$
            {
                value = store.getInt(key);
            } else if ("long".equals(type)) //$NON-NLS-1$
            {
                value = store.getLong(key);
            } else if ("string".equals(type)) //$NON-NLS-1$
            {
                value = store.getString(type);
            } else if ("float".equals(type)) //$NON-NLS-1$
            {
                value = store.getFloat(type);
            } else if ("double".equals(type)) //$NON-NLS-1$
            {
                value = store.getDouble(type);
            }

            return expectedValue.equals(value);
        } else if (PROP_EVALUATE_PREDICATE.equals(property)) {
            String typename = (String) args[0];

            try {
                @SuppressWarnings("unchecked")
                Class<? extends IExtraOptionsEnablement> klass = (Class<? extends IExtraOptionsEnablement>) Class
                        .forName(typename);

                IExtraOptionsEnablement predicate = klass.newInstance();
                boolean value = predicate.shouldProcessOptions(configuration.getOwner().getProject(),
                        configuration);

                return expectedValue.equals(value);
            } catch (Exception e) {
                e.printStackTrace();
            }

            return false;
        } else {
            assert false;
            return false;
        }
    }

    private static final String PROP_CONFIGURATION_NAME = "configurationName"; //$NON-NLS-1$
    private static final String PROP_PREFERENCE = "preference"; //$NON-NLS-1$
    private static final String PROP_EVALUATE_PREDICATE = "evaluatePredicate"; //$NON-NLS-1$
}