import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.description.PresenceTerm;\r
+import eu.etaxonomy.cdm.model.description.State;\r
import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
import eu.etaxonomy.cdm.model.description.TextData;\r
import eu.etaxonomy.cdm.model.location.NamedArea;\r
public static final UUID uuidUserDefinedExtensionTypeVocabulary = UUID.fromString("e28c1394-1be8-4847-8b81-ab44eb6d5bc8");\r
public static final UUID uuidUserDefinedReferenceSystemVocabulary = UUID.fromString("467591a3-10b4-4bf1-9239-f06ece33e90a");\r
public static final UUID uuidUserDefinedFeatureVocabulary = UUID.fromString("fe5fccb3-a2f2-4b97-b199-6e2743cf1627");\r
+ public static final UUID uuidUserDefinedStateVocabulary = UUID.fromString("f7cddb49-8392-4db1-8640-65b48a0e6d13");\r
public static final UUID uuidUserDefinedTaxonRelationshipTypeVocabulary = UUID.fromString("31a324dc-408d-4877-891f-098db21744c6");\r
public static final UUID uuidUserDefinedAnnotationTypeVocabulary = UUID.fromString("cd9ecdd2-9cae-4890-9032-ad83293ae883");\r
public static final UUID uuidUserDefinedMarkerTypeVocabulary = UUID.fromString("5f02a261-fd7d-4fce-bbe4-21472de8cd51");\r
return namedAreaLevel;\r
}\r
\r
+ /**\r
+ * Returns a {@link State} if it exists. <code>null</code> otherwise.\r
+ * @param state\r
+ * @param uuid\r
+ * @return {@link State}\r
+ */\r
+ protected State getStateTerm(STATE state, UUID uuid){\r
+ return getStateTerm(state, uuid, null, null, null, null);\r
+ }\r
+\r
+ \r
+ /**\r
+ * Returns a {@link State} for a given uuid by first checking if the uuid has already been used in this import, if not\r
+ * checking if the state exists in the database, if not creating it anew (with vocabulary etc.).\r
+ * If label, text and labelAbbrev are all <code>null</code> no state is created.\r
+ * @param importState\r
+ * @param uuid\r
+ * @param label\r
+ * @param text\r
+ * @param labelAbbrev\r
+ * @param voc\r
+ * @return\r
+ */\r
+ protected State getStateTerm(STATE importState, UUID uuid, String label, String text, String labelAbbrev, OrderedTermVocabulary<State> voc) {\r
+ if (uuid == null){\r
+ return null;\r
+ }\r
+ State stateTerm = importState.getStateTerm(uuid);\r
+ if (stateTerm == null){\r
+ stateTerm = CdmBase.deproxy(getTermService().find(uuid), State.class);\r
+ if (stateTerm == null && ! hasNoLabel(label, text, labelAbbrev)){\r
+ stateTerm = State.NewInstance(text, label, labelAbbrev);\r
+ stateTerm.setUuid(uuid);\r
+ if (voc == null){\r
+ boolean isOrdered = true;\r
+ TermVocabulary<State> orderedVoc = getVocabulary(uuidUserDefinedFeatureVocabulary, "User defined vocabulary for states used by Categorical Data", "User Defined States", null, null, isOrdered, stateTerm);\r
+ voc = CdmBase.deproxy(orderedVoc, OrderedTermVocabulary.class);\r
+ }\r
+ voc.addTerm(stateTerm);\r
+ getTermService().save(stateTerm);\r
+ }else{\r
+ logger.warn("No label provided for new state with uuid " + uuid);\r
+ }\r
+ importState.putStateTerm(stateTerm);\r
+ }\r
+ return stateTerm;\r
+ }\r
\r
/**\r
* Returns a feature if it exists, null otherwise.\r
* @param labelAbbrev\r
* @return\r
*/\r
- protected Feature getFeature(STATE state, UUID uuid, String label, String text, String labelAbbrev, TermVocabulary<Feature> voc){\r
+ protected Feature getFeature(STATE state, UUID uuid, String label, String description, String labelAbbrev, TermVocabulary<Feature> voc){\r
if (uuid == null){\r
return null;\r
}\r
Feature feature = state.getFeature(uuid);\r
if (feature == null){\r
feature = (Feature)getTermService().find(uuid);\r
- if (feature == null && ! hasNoLabel(label, text, labelAbbrev)){\r
- feature = Feature.NewInstance(text, label, labelAbbrev);\r
+ if (feature == null && ! hasNoLabel(label, description, labelAbbrev)){\r
+ feature = Feature.NewInstance(description, label, labelAbbrev);\r
feature.setUuid(uuid);\r
feature.setSupportsTextData(true);\r
// UUID uuidFeatureVoc = UUID.fromString("b187d555-f06f-4d65-9e53-da7c93f8eaa8"); \r
import eu.etaxonomy.cdm.model.common.User;\r
import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.description.PresenceTerm;\r
+import eu.etaxonomy.cdm.model.description.State;\r
import eu.etaxonomy.cdm.model.location.NamedArea;\r
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
import eu.etaxonomy.cdm.model.location.ReferenceSystem;\r
private Map<UUID, NamedArea> namedAreaMap = new HashMap<UUID, NamedArea>();\r
private Map<UUID, NamedAreaLevel> namedAreaLevelMap = new HashMap<UUID, NamedAreaLevel>();\r
private Map<UUID, Feature> featureMap = new HashMap<UUID, Feature>();\r
+ private Map<UUID, State> stateTermMap = new HashMap<UUID, State>();\r
+ \r
private Map<UUID, PresenceTerm> presenceTermMap = new HashMap<UUID, PresenceTerm>();;\r
private Map<UUID, Language> languageMap = new HashMap<UUID, Language>();\r
private Map<UUID, TaxonRelationshipType> taxonRelationshipTypeMap = new HashMap<UUID, TaxonRelationshipType>();\r
rankMap.put(rank.getUuid(), rank);\r
}\r
\r
-\r
+ public State getStateTerm(UUID uuid){\r
+ return stateTermMap.get(uuid);\r
+ }\r
+ \r
+ public void putStateTerm(State stateTerm){\r
+ stateTermMap.put(stateTerm.getUuid(), stateTerm);\r
+ }\r
\r
public Feature getFeature(UUID uuid){\r
return featureMap.get(uuid);\r