+ /**\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