+ /**\r
+ * \r
+ */\r
+ private void loadTaxa() {\r
+ List<String> propertyPaths = new ArrayList();\r
+ propertyPaths.add("*.name");\r
+ List<Taxon> taxonList = (List)getTaxonService().list(Taxon.class, null, null, null, propertyPaths);\r
+ for (Taxon taxon: taxonList){\r
+ if (taxon.getTaxonNodes().size() == 0){\r
+ continue;\r
+ }\r
+ String nameTitle = taxon.getName().getTitleCache();\r
+ String nameCache = CdmBase.deproxy(taxon.getName(), BotanicalName.class).getNameCache();\r
+ Taxon returnValue = taxonWithAuthorStore.put(nameTitle, taxon);\r
+ if (returnValue != null){\r
+ logger.warn("Duplicate titleCache entry for taxon: " + nameTitle);\r
+ }\r
+ returnValue = taxonNameOnlyStore.put(nameCache, taxon);\r
+ if (returnValue != null){\r
+ logger.warn("Duplicate nameCache entry for taxon: " + nameCache);\r
+ }\r
+ }\r
+ }\r
+\r
+ /**\r
+ * @param meikle1977List\r
+ */\r
+ private void loadReferences() {\r
+ Pager<Reference> meikle1977List = getReferenceService().findByTitle(Reference.class, "R. D. Meikle, Flora of Cyprus 1. 1977", null, null, null, null, null, null);\r
+ \r
+ if (meikle1977List.getCount() != 1){\r
+ logger.error("There is not exactly 1 Meikle 1977 reference");\r
+ }else{\r
+ refMeikle1977 = meikle1977List.getRecords().iterator().next();\r
+ }\r
+ \r
+ Pager<Reference> meikle1985List = getReferenceService().findByTitle(Reference.class, "R. D. Meikle, Flora of Cyprus 2. 1985", null, null, null, null, null, null);\r
+ if (meikle1985List.getCount() != 1){\r
+ logger.error("There is not exactly 1 Meikle 1985 reference");\r
+ }else{\r
+ refMeikle1985 = meikle1977List.getRecords().iterator().next();\r
+ }\r
+ }\r
+\r
+ /**\r
+ * \r
+ */\r
+ private void loadStatus() {\r
+ indigenousStatus = (PresenceTerm)getTermService().find(CyprusTransformer.indigenousUuid);\r
+ casualStatus = (PresenceTerm)getTermService().find(CyprusTransformer.casualUuid);\r
+ nonInvasiveStatus = (PresenceTerm)getTermService().find(CyprusTransformer.nonInvasiveUuid);\r
+ invasiveStatus = (PresenceTerm)getTermService().find(CyprusTransformer.invasiveUuid);\r
+ questionableStatus = (PresenceTerm)getTermService().find(CyprusTransformer.questionableUuid);\r
+ }\r
+\r
+ /**\r
+ * @param state\r
+ * @param transformer\r
+ * @throws UndefinedTransformerMethodException\r
+ */\r
+ private void makeNewDivisions(CyprusImportState state,\r
+ IInputTransformer transformer)\r
+ throws UndefinedTransformerMethodException {\r
+ NamedAreaType areaType = NamedAreaType.NATURAL_AREA();\r
+ NamedAreaLevel areaLevel = (NamedAreaLevel)getTermService().find(CyprusTransformer.uuidCyprusDivisionsAreaLevel);\r
+ if (areaLevel == null){\r
+ areaLevel = NamedAreaLevel.NewInstance("Cyprus Division", "Cyprus Division", null);\r
+ getTermService().save(areaLevel);\r
+ }\r
+ \r
+ TermVocabulary areaVocabulary = getVocabulary(CyprusTransformer.uuidCyprusDivisionsVocabulary, "Cyprus devisions", "Cyprus divisions", null, null, true);\r
+ TdwgArea tdwg4Cyprus = (TdwgArea)getTermService().find(UUID.fromString("9d447b51-e363-4dde-ae40-84c55679983c"));\r
+ WaterbodyOrCountry isoCountryCyprus = (WaterbodyOrCountry)getTermService().find(UUID.fromString("4b13d6b8-7eca-4d42-8172-f2018051ca19"));\r
+ \r
+ for(int i = 1; i <= 8; i++){\r
+ UUID divisionUuid = transformer.getNamedAreaUuid(String.valueOf(i));\r
+ NamedArea division = this.getNamedArea(state, divisionUuid, "Division " + i, "Cyprus: Division " + i, String.valueOf(i), areaType, areaLevel, areaVocabulary);\r
+ divisions.put(String.valueOf(i), division);\r
+ tdwg4Cyprus.addIncludes(division);\r
+ isoCountryCyprus.addIncludes(division);\r
+ getTermService().save(division);\r
+ }\r
+ }\r
+\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.excel.common.ExcelImporterBase#analyzeRecord(java.util.HashMap, eu.etaxonomy.cdm.io.excel.common.ExcelImportState)\r
+ */\r
+ @Override\r
+ protected boolean analyzeRecord(HashMap<String, String> record, CyprusImportState state) {\r
+ \r
+ boolean success = true;\r
+ Set<String> keys = record.keySet();\r
+ \r
+ CyprusDistributionRow cyprusDistributionRow = new CyprusDistributionRow();\r
+ state.setCyprusDistributionRow(cyprusDistributionRow);\r
+ \r
+ for (String originalKey: keys) {\r
+ String indexedKey = CdmUtils.removeDuplicateWhitespace(originalKey.trim()).toString();\r
+ String[] split = indexedKey.split("_");\r
+ String key = split[0];\r
+ if (split.length > 1){\r
+ String indexString = split[1];\r
+ try {\r
+ Integer.valueOf(indexString);\r
+ } catch (NumberFormatException e) {\r
+ String message = "Index must be integer";\r
+ logger.error(message);\r
+ continue;\r
+ }\r
+ }\r
+ \r
+ String value = (String) record.get(indexedKey);\r
+ if (! StringUtils.isBlank(value)) {\r
+ if (logger.isDebugEnabled()) { logger.debug(key + ": " + value); }\r
+ value = CdmUtils.removeDuplicateWhitespace(value.trim()).toString();\r
+ }else{\r
+ continue;\r
+ }\r
+ \r
+ \r
+ if (key.equalsIgnoreCase(SPECIES_COLUMN)) {\r
+ cyprusDistributionRow.setSpecies(value);\r
+ \r
+ } else if(key.equalsIgnoreCase(DISTRIBUTION_COLUMN)) {\r
+ cyprusDistributionRow.setDistribution(value);\r
+ \r
+ } else if(key.equalsIgnoreCase(REFERENCE_COLUMN)) {\r
+ cyprusDistributionRow.setReference(value);\r
+ \r
+ } else {\r
+ success = false;\r
+ logger.error("Unexpected column header " + key);\r
+ }\r
+ }\r
+ return success;\r
+ }\r
+ \r
+ \r