+++ /dev/null
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy
- * http://www.e-taxonomy.eu
- *
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-
-package eu.etaxonomy.taxeditor.local.view.datasource.handler;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.jface.viewers.IStructuredSelection;
-
-import eu.etaxonomy.cdm.model.metadata.CdmMetaDataPropertyName;
-import eu.etaxonomy.taxeditor.local.view.datasource.CdmMetaDataAwareDataSourceContainer;
-
-/**
- * @author n.hoffmann
- * @created Sep 23, 2010
- * @version 1.0
- */
-public class DataSourceMenuPropertyTester extends PropertyTester {
-
- private static final String COMPATIBLE = "isCompatible";
- private static final String TEST = "test";
- private static final String HAS_DATA_MODEL = "hasDataModel";
-
- /** {@inheritDoc} */
- @Override
- public boolean test(Object receiver, String property, Object[] args,
- Object expectedValue) {
-
- Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
- if (selectedElements.length == 0 && property.equals(TEST)) {
- // nothing selected so all tests should fail
- return true;
- }
- if (selectedElements.length == 0 && COMPATIBLE.equals(property)) {
- // nothing selected so all tests should fail
- return true;
- }
-
- if (COMPATIBLE.equals(property)) {
- return isCompatible(selectedElements);
- }
- if (HAS_DATA_MODEL.equals(property)) {
- return hasDataModel(selectedElements);
- }
- return false;
- }
-
- private boolean hasDataModel(Object[] selectedElements) {
-
- if (selectedElements.length == 0 ) {
- // nothing selected so all tests should fail
- return false;
- }
- for (Object object : selectedElements) {
-
- if (object instanceof CdmMetaDataAwareDataSourceContainer) {
- CdmMetaDataAwareDataSourceContainer container = (CdmMetaDataAwareDataSourceContainer) object;
- String schemaVersion = container.getMetaData(CdmMetaDataPropertyName.DB_SCHEMA_VERSION);
- return !schemaVersion.equals(CdmMetaDataAwareDataSourceContainer.DEFAULT_ENTRY);
- }
- }
- return false;
-
- }
-
-
- private boolean isCompatible(Object[] selectedElements) {
-
- if (selectedElements.length == 0 ) {
- // nothing selected so all tests should fail
- return false;
- }
- for (Object object : selectedElements) {
-
- if (object instanceof CdmMetaDataAwareDataSourceContainer) {
- CdmMetaDataAwareDataSourceContainer container = (CdmMetaDataAwareDataSourceContainer) object;
- return container.isDataSourceCompatible();
- }
- }
- return false;
-
- }
-}