Remove "Close Connection" and changed "Connect" to "Create Data Model"
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / datasource / handler / DataSourceMenuPropertyTester.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.view.datasource.handler;
12
13 import org.eclipse.core.expressions.PropertyTester;
14 import org.eclipse.jface.viewers.IStructuredSelection;
15
16 import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;
17 import eu.etaxonomy.taxeditor.view.datasource.CdmMetaDataAwareDataSourceContainer;
18
19 /**
20 * @author n.hoffmann
21 * @created Sep 23, 2010
22 * @version 1.0
23 */
24 public class DataSourceMenuPropertyTester extends PropertyTester {
25
26 private static final String COMPATIBLE = "isCompatible";
27 private static final String TEST = "test";
28 private static final String HAS_DATA_MODEL = "hasDataModel";
29
30 /** {@inheritDoc} */
31 @Override
32 public boolean test(Object receiver, String property, Object[] args,
33 Object expectedValue) {
34
35 Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
36 if (selectedElements.length == 0 && property.equals(TEST)) {
37 // nothing selected so all tests should fail
38 return true;
39 }
40 if (selectedElements.length == 0 && COMPATIBLE.equals(property)) {
41 // nothing selected so all tests should fail
42 return true;
43 }
44
45 if (COMPATIBLE.equals(property)) {
46 return isCompatible(selectedElements);
47 }
48 if (HAS_DATA_MODEL.equals(property)) {
49 return hasDataModel(selectedElements);
50 }
51 return false;
52 }
53
54 private boolean hasDataModel(Object[] selectedElements) {
55
56 if (selectedElements.length == 0 ) {
57 // nothing selected so all tests should fail
58 return false;
59 }
60 for (Object object : selectedElements) {
61
62 if (object instanceof CdmMetaDataAwareDataSourceContainer) {
63 CdmMetaDataAwareDataSourceContainer container = (CdmMetaDataAwareDataSourceContainer) object;
64 String schemaVersion = container.getMetaData(MetaDataPropertyName.DB_SCHEMA_VERSION);
65 return !schemaVersion.equals(CdmMetaDataAwareDataSourceContainer.DEFAULT_ENTRY);
66 }
67 }
68 return false;
69
70 }
71
72
73 private boolean isCompatible(Object[] selectedElements) {
74
75 if (selectedElements.length == 0 ) {
76 // nothing selected so all tests should fail
77 return false;
78 }
79 for (Object object : selectedElements) {
80
81 if (object instanceof CdmMetaDataAwareDataSourceContainer) {
82 CdmMetaDataAwareDataSourceContainer container = (CdmMetaDataAwareDataSourceContainer) object;
83 return container.isDataSourceCompatible();
84 }
85 }
86 return false;
87
88 }
89 }