/**\r
* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
* http://www.e-taxonomy.eu\r
-* \r
+*\r
* The contents of this file are subject to the Mozilla Public License Version 1.1\r
* See LICENSE.TXT at the top of this package for the full license terms.\r
*/\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
import eu.etaxonomy.cdm.model.occurrence.Collection;\r
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;\r
-import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;\r
import eu.etaxonomy.cdm.model.reference.Reference;\r
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;\r
+import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;\r
\r
\r
/**\r
* @author a.mueller\r
* @created 20.02.2010\r
- * @version 1.0\r
*/\r
@Component\r
public class CentralAfricaFernsTaxonImport extends CentralAfricaFernsImportBase<TaxonBase> implements IMappingImport<TaxonBase, CentralAfricaFernsImportState>{\r
private static final Logger logger = Logger.getLogger(CentralAfricaFernsTaxonImport.class);\r
- \r
+\r
public static final UUID TNS_EXT_UUID = UUID.fromString("41cb0450-ac84-4d73-905e-9c7773c23b05");\r
- \r
- \r
- private DbImportMapping mapping;\r
- \r
+\r
+\r
+ private DbImportMapping<?,?> mapping;\r
+\r
//second path is not used anymore, there is now an ErmsTaxonRelationImport class instead\r
- private boolean isSecondPath = false;\r
- \r
+// private boolean isSecondPath = false;\r
+\r
private static final String pluralString = "taxa";\r
private static final String dbTableName = "[African pteridophytes]";\r
- private static final Class cdmTargetClass = TaxonBase.class;\r
+ private static final Class<?> cdmTargetClass = TaxonBase.class;\r
\r
public CentralAfricaFernsTaxonImport(){\r
super(pluralString, dbTableName, cdmTargetClass);\r
}\r
- \r
- \r
\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.io.eflora.centralAfrica.ferns.CentralAfricaFernsImportBase#getIdQuery()\r
- */\r
+\r
@Override\r
- protected String getIdQuery() {\r
+ protected String getIdQuery() {\r
String strQuery = " SELECT [Taxon number] FROM " + dbTableName ;\r
return strQuery;\r
}\r
\r
-\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.io.eflora.centralAfrica.ferns.CentralAfricaFernsImportBase#getMapping()\r
- */\r
- protected DbImportMapping getMapping() {\r
+ @Override\r
+ protected DbImportMapping<?,?> getMapping() {\r
if (mapping == null){\r
mapping = new DbImportMapping();\r
- \r
+\r
mapping.addMapper(DbImportObjectCreationMapper.NewInstance(this, "Taxon number", TAXON_NAMESPACE)); //id + tu_status\r
\r
mapping.addMapper(DbImportMethodMapper.NewInstance(this, "mapTypes", ResultSet.class, CentralAfricaFernsImportState.class));\r
\r
mapping.addMapper(DbImportMethodMapper.NewInstance(this, "mapReferences", ResultSet.class, CentralAfricaFernsImportState.class));\r
mapping.addMapper(DbImportMethodMapper.NewInstance(this, "mapNomRemarks", ResultSet.class, CentralAfricaFernsImportState.class));\r
- \r
+\r
mapping.addMapper(DbImportExtensionMapper.NewInstance("Illustrations - non-original", CentralAfricaFernsTransformer.uuidIllustrationsNonOriginal, "Illustrations - non-original", "Illustrations - non-original", null));\r
\r
// mapping.addMapper(DbImportTextDataCreationMapper.NewInstance("Illustrations - non-original", objectToCreateNamespace, dbTaxonFkAttribute, this.TAXON_NAMESPACE, "Illustrations - non-original", Language.ENGLISH(), Feature, null);\r
\r
mapping.addMapper(DbNotYetImplementedMapper.NewInstance("Basionym of", "Needs better understanding"));\r
mapping.addMapper(DbNotYetImplementedMapper.NewInstance("Synonym of", "Needs better understanding. Strange values like "));\r
- \r
- \r
+\r
+\r
mapping.addMapper(DbNotYetImplementedMapper.NewInstance("Chromosome number" , "Wrong data. Seems to be 'reference full'"));\r
- \r
+\r
mapping.addMapper(DbNotYetImplementedMapper.NewInstance("Book Publisher & Place" , "How to access the reference via String mapper?"));\r
- \r
+\r
mapping.addMapper(DbNotYetImplementedMapper.NewInstance("Reprint no" , "What's this?"));\r
mapping.addMapper(DbNotYetImplementedMapper.NewInstance("Date verified" , "Needed?"));\r
- \r
- \r
-// \r
+\r
+\r
+//\r
// UUID credibilityUuid = ErmsTransformer.uuidCredibility;\r
// mapping.addMapper(DbImportExtensionMapper.NewInstance("tu_credibility", credibilityUuid, "credibility", "credibility", "credibility")); //Werte: null, unknown, marked for deletion\r
-// \r
+//\r
//ignore\r
// mapping.addMapper(DbIgnoreMapper.NewInstance("cache_citation", "citation cache not needed in PESI"));\r
- \r
+\r
//not yet implemented or ignore\r
// mapping.addMapper(DbNotYetImplementedMapper.NewInstance("tu_hidden", "Needs DbImportMarkerMapper implemented"));\r
- \r
+\r
}\r
return mapping;\r
}\r
}\r
\r
\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)\r
- */\r
- public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {\r
- String nameSpace;\r
- Class cdmClass;\r
- Set<String> idSet;\r
+ @Override\r
+ public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs, CentralAfricaFernsImportState state) {\r
+// String nameSpace;\r
+// Class<?> cdmClass;\r
+// Set<String> idSet;\r
Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();\r
- \r
+\r
try{\r
Set<String> nameIdSet = new HashSet<String>();\r
Set<String> referenceIdSet = new HashSet<String>();\r
}\r
return result;\r
}\r
- \r
+\r
private TaxonBase mapTypes(ResultSet rs, CentralAfricaFernsImportState state) throws SQLException{\r
TaxonBase<?> taxonBase = state.getRelatedObject(state.CURRENT_OBJECT_NAMESPACE, state.CURRENT_OBJECT_ID, TaxonBase.class);\r
TaxonNameBase name = taxonBase.getName();\r
}\r
return taxonBase;\r
}\r
- \r
- \r
+\r
+\r
private String[] getTypeInfo(ResultSet rs, int i) throws SQLException {\r
String[] typeInfo = new String[3];\r
String number;\r
typeInfo[0] = rs.getString("Type" + number);\r
typeInfo[1] = rs.getString("Type collector and number" + number);\r
typeInfo[2] = rs.getString("Type location" + number);\r
- \r
+\r
return typeInfo;\r
}\r
\r
List<SpecimenTypeDesignation> designations = new ArrayList<SpecimenTypeDesignation>();\r
typeLocationString = CdmUtils.Nz(typeLocationString);\r
if (typeLocationString.equalsIgnoreCase("not located")){\r
- \r
+\r
}else{\r
String[] splits = typeLocationString.split(";");\r
for (String split : splits){\r
designation.setNotDesignated(true);\r
}\r
\r
- DerivedUnitBase specimen = designation.getTypeSpecimen();\r
+ DerivedUnit specimen = designation.getTypeSpecimen();\r
\r
if (lastFacade != null){\r
lastFacade.addDuplicate(specimen);\r
} catch (DerivedUnitFacadeNotSupportedException e) {\r
throw new RuntimeException(e);\r
}\r
- \r
+\r
//TODO not so nice\r
lastFacade.setLocality(typeString);\r
makeTypeCollectorInfo(lastFacade, typeCollectorString);\r
- \r
+\r
}\r
}\r
- \r
+\r
}\r
\r
\r
\r
- private List<SpecimenTypeDesignation> handleTypeLocationPart(CentralAfricaFernsImportState state, \r
+ private List<SpecimenTypeDesignation> handleTypeLocationPart(CentralAfricaFernsImportState state,\r
String typeString, String typeCollectorString, String typeLocationPart) {\r
List<SpecimenTypeDesignation> result = new ArrayList<SpecimenTypeDesignation>();\r
- String[] splits = typeLocationPart.split(","); \r
+ String[] splits = typeLocationPart.split(",");\r
//see also SpecimenTypeParser\r
String typeTypePattern = "(holo.|lecto.|iso.|isolecto.|syn.|isosyn.|neo.|isoneo.)";\r
String collectionPattern = "^[A-Z]+(\\-[A-Z]+)?";\r
String addInfoPattern = "[!\\+\\?]?";\r
String typeCollectionPattern = collectionPattern + "\\s?" + numberPattern + addInfoPattern;\r
SpecimenTypeDesignation lastDesignation = null;\r
- \r
+\r
for (String split: splits){\r
split = split.trim();\r
if (StringUtils.isBlank(split)){\r
}else if (split.trim().matches(typeTypePattern)){\r
makeSpecimentTypeStatus(lastDesignation, split);\r
}else if(split.matches(typeCollectionPattern)){\r
- \r
+\r
lastDesignation = makeSpecimenTypeCollection(lastDesignation, split, collectionPattern, numberPattern, addInfoPattern);\r
}else if(split.equalsIgnoreCase("not located")){\r
lastDesignation = makeCachedSpecimenDesignation(split);\r
logger.warn("Last Designation is null");\r
}\r
}\r
- \r
+\r
return result;\r
}\r
\r
private SpecimenTypeDesignation makeCachedSpecimenDesignation(String split) {\r
SpecimenTypeDesignation lastDesignation;\r
lastDesignation = SpecimenTypeDesignation.NewInstance();\r
- Specimen specimen = Specimen.NewInstance();\r
+ DerivedUnit specimen = DerivedUnit.NewPreservedSpecimenInstance();\r
specimen.setTitleCache(split, true);\r
lastDesignation.setTypeSpecimen(specimen);\r
return lastDesignation;\r
\r
private SpecimenTypeDesignation makeSpecimenTypeCollection(SpecimenTypeDesignation designation, String collectionString, String strCollectionPattern, String strNumberPattern, String strAddInfoPattern) {\r
SpecimenTypeDesignation result = SpecimenTypeDesignation.NewInstance();\r
- Specimen specimen = Specimen.NewInstance();\r
+ DerivedUnit specimen = DerivedUnit.NewPreservedSpecimenInstance();\r
result.setTypeSpecimen(specimen);\r
- \r
+\r
//collection\r
Pattern collectionPattern = Pattern.compile(strCollectionPattern);\r
Matcher matcher = collectionPattern.matcher(collectionString);\r
Collection collection = getCollection(strCollection);\r
specimen.setCollection(collection);\r
collectionString = collectionString.substring(strCollection.length()).trim();\r
- \r
- \r
+\r
+\r
//collection number\r
Pattern numberPattern = Pattern.compile(strNumberPattern);\r
matcher = numberPattern.matcher(collectionString);\r
}else{\r
//throw new RuntimeException("numberString doesn't match: " + collectionString);\r
}\r
- \r
+\r
//additional info\r
Pattern addInfoPattern = Pattern.compile(strAddInfoPattern);\r
matcher = addInfoPattern.matcher(collectionString);\r
\r
\r
private void makeSpecimentTypeStatus(SpecimenTypeDesignation designation, String type) {\r
- SpecimenTypeDesignationStatus status; \r
+ SpecimenTypeDesignationStatus status;\r
if (type.equalsIgnoreCase("iso.")){\r
status = SpecimenTypeDesignationStatus.ISOTYPE();\r
}else if (type.equalsIgnoreCase("isolecto.")){\r
}else{\r
typeString = handleDesignatedBy(nameTypeDesignation, typeString);\r
}\r
- \r
+\r
// String strSecondNamePattern = "([^\\(]*|\\(.*\\))+;.+"; //never ending story\r
String strSecondNamePattern = ".+;.+";\r
String firstName;\r
}\r
nameTypeDesignation.setTypeStatus(status);\r
name.addTypeDesignation(nameTypeDesignation, false);\r
- \r
+\r
}\r
\r
\r
if (strName.endsWith(",")){\r
strName = strName.substring(0, strName.length() -1);\r
}\r
- BotanicalName result = (BotanicalName)NonViralNameParserImpl.NewInstance().parseFullName(strName, NomenclaturalCode.ICBN, Rank.SPECIES());\r
+ BotanicalName result = (BotanicalName)NonViralNameParserImpl.NewInstance().parseFullName(strName, NomenclaturalCode.ICNAFP, Rank.SPECIES());\r
return result;\r
}\r
\r
\r
\r
private BotanicalName[] getNameTypeName(String strName) {\r
- //TODO implement get existing names \r
+ //TODO implement get existing names\r
logger.info("Not yet fully implemented");\r
- \r
+\r
BotanicalName[] result = new BotanicalName[2];\r
if (strName.endsWith(",")){\r
strName = strName.substring(0, strName.length() -1);\r
acceptedName = acceptedName.substring(0, acceptedName.length()-1);\r
}\r
acceptedName = acceptedName.replaceFirst("=", "").trim();\r
- result[1] = (BotanicalName)NonViralNameParserImpl.NewInstance().parseFullName(acceptedName, NomenclaturalCode.ICBN, null);\r
+ result[1] = (BotanicalName)NonViralNameParserImpl.NewInstance().parseFullName(acceptedName, NomenclaturalCode.ICNAFP, null);\r
strName = notAcceptedName;\r
}\r
- \r
- result[0] = (BotanicalName)NonViralNameParserImpl.NewInstance().parseFullName(strName, NomenclaturalCode.ICBN, Rank.SPECIES());\r
+\r
+ result[0] = (BotanicalName)NonViralNameParserImpl.NewInstance().parseFullName(strName, NomenclaturalCode.ICNAFP, Rank.SPECIES());\r
return result;\r
}\r
\r
\r
\r
- private String handleDesignatedBy(TypeDesignationBase typeDesignation, String typeString) {\r
+ private String handleDesignatedBy(TypeDesignationBase<?> typeDesignation, String typeString) {\r
String[] splitDesignated = typeString.split(", designated by ");\r
if (splitDesignated.length > 1){\r
Reference designationCitation = getDesignationCitation(typeDesignation, splitDesignated[1]);\r
\r
\r
\r
- private Reference getDesignationCitation(TypeDesignationBase typeDesignation, String citationString) {\r
+ private Reference getDesignationCitation(TypeDesignationBase<?> typeDesignation, String citationString) {\r
// TODO try to find an existing Reference\r
Reference result = ReferenceFactory.newGeneric();\r
String strBracketPattern = "\\((10 Oct. )?\\d{4}:\\s?(\\d{1,3}(--\\d{1,3})?|[XLVI]{1,7}|\\.{1,8})\\)\\.?";\r
bracket = bracket.substring(0, bracket.length()-1);\r
}\r
Team team = Team.NewTitledInstance(authorPart, authorPart);\r
- result.setAuthorTeam(team);\r
+ result.setAuthorship(team);\r
String[] bracketSplit = bracket.split(":");\r
- TimePeriod datePublished = TimePeriod.parseString(bracketSplit[0].trim());\r
+ TimePeriod datePublished = TimePeriodParser.parseString(bracketSplit[0].trim());\r
result.setDatePublished(datePublished);\r
String citationMicroReference = bracketSplit[1].trim();\r
citationMicroReference = citationMicroReference.replace("--", "-");\r
String reNumber = "(s\\.n\\.|\\d.*)";\r
Pattern reNumberPattern = Pattern.compile(reNumber);\r
Matcher matcher = reNumberPattern.matcher(collectorAndNumberString);\r
- \r
+\r
if ( matcher.find()){\r
int numberStart = matcher.start();\r
String number = collectorAndNumberString.substring(numberStart).trim();\r
specimen.setFieldNumber(number);\r
TeamOrPersonBase team = getTeam(collectorString);\r
specimen.setCollector(team);\r
- \r
+\r
}else{\r
logger.warn("collector string did not match number pattern: " + collectorAndNumberString);\r
- \r
+\r
}\r
}\r
\r
String volume = rs.getString("Book / Journal volume");\r
String pages = rs.getString("Book / Journal pages");\r
String illustrations = rs.getString("Illustration/s");\r
- \r
+\r
String fascicle = rs.getString("Book / Journal fascicle");\r
String part = rs.getString("Book / Journal part");\r
String paperTitle = rs.getString("Book / Paper title");\r
- \r
+\r
String datePublishedString = rs.getString("Date published");\r
String referenceString = referenceFullString;\r
if (StringUtils.isBlank(referenceString)){\r
referenceString = referenceAbbreviatedString;\r
}\r
- \r
+\r
TaxonBase<?> taxonBase = state.getRelatedObject(state.CURRENT_OBJECT_NAMESPACE, state.CURRENT_OBJECT_ID, TaxonBase.class);\r
- if (StringUtils.isNotBlank(referenceString) || StringUtils.isNotBlank(volume) || \r
- StringUtils.isNotBlank(pages) || StringUtils.isNotBlank(illustrations) || \r
+ if (StringUtils.isNotBlank(referenceString) || StringUtils.isNotBlank(volume) ||\r
+ StringUtils.isNotBlank(pages) || StringUtils.isNotBlank(illustrations) ||\r
StringUtils.isNotBlank(datePublishedString) || StringUtils.isNotBlank(paperTitle)){\r
- NonViralName name = CdmBase.deproxy(taxonBase.getName(), NonViralName.class);\r
+ NonViralName<?> name = CdmBase.deproxy(taxonBase.getName(), NonViralName.class);\r
Reference reference = ReferenceFactory.newGeneric();\r
- reference.setAuthorTeam((TeamOrPersonBase)name.getCombinationAuthorTeam());\r
+ reference.setAuthorship(name.getCombinationAuthorship());\r
reference.setTitle(referenceString);\r
reference.setVolume(volume);\r
reference.setEdition(part);\r
Reference inrefernce = null;\r
//TODO parser\r
- TimePeriod datePublished = TimePeriod.parseString(datePublishedString);\r
+ TimePeriod datePublished = TimePeriodParser.parseString(datePublishedString);\r
reference.setDatePublished(datePublished);\r
if (StringUtils.isNotBlank(paperTitle)){\r
Reference innerReference = ReferenceFactory.newGeneric();\r
}else{\r
name.setNomenclaturalReference(reference);\r
}\r
- \r
+\r
//details\r
String details = CdmUtils.concat(", ", pages, illustrations);\r
details = StringUtils.isBlank(details) ? null : details.trim();\r
} catch (UndefinedTransformerMethodException e) {\r
e.printStackTrace();\r
}\r
- \r
+\r
}else{\r
logger.warn(taxonNumber + " - Taxon has no reference");\r
}\r
\r
/**\r
* for internal use only, used by MethodMapper\r
- * @throws Exception \r
+ * @throws Exception\r
*/\r
private TaxonBase mapNomRemarks(ResultSet rs, CentralAfricaFernsImportState state) throws Exception{\r
try {\r
String taxonNumber = state.getTaxonNumber();\r
String nomRemarksString = rs.getString("Nom remarks");\r
String taxonStatus = rs.getString("Current/Synonym");\r
- \r
+\r
TaxonBase<?> taxonBase = state.getRelatedObject(state.CURRENT_OBJECT_NAMESPACE, state.CURRENT_OBJECT_ID, TaxonBase.class);\r
if (StringUtils.isNotBlank(nomRemarksString)){\r
NonViralName name = CdmBase.deproxy(taxonBase.getName(), NonViralName.class);\r
}\r
}\r
\r
- \r
+\r
private void parseNomRemark(CentralAfricaFernsImportState state, NonViralName name, String nomRemarksString, String taxonStatus, String taxonNumber) {\r
- \r
+\r
if (nomRemarksString.equalsIgnoreCase("comb. illeg.")){\r
name.addStatus(NomenclaturalStatus.NewInstance(NomenclaturalStatusType.COMBINATION_ILLEGITIMATE()));\r
return;\r
return;\r
}\r
\r
- \r
+\r
if (StringUtils.isNotBlank(nomRemarksString)){\r
ExtensionType extensionType = getExtensionType(state, CentralAfricaFernsTransformer.uuidNomenclaturalRemarks, "Nomenclatural remarks", "Nomenclatural remarks", null);\r
name.addExtension(nomRemarksString, extensionType);\r
}\r
- \r
- \r
- \r
- \r
+\r
+\r
+\r
+\r
}\r
\r
\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.cdm.io.common.mapping.IMappingImport#createObject(java.sql.ResultSet)\r
*/\r
- public TaxonBase createObject(ResultSet rs, CentralAfricaFernsImportState state) throws SQLException {\r
+ @Override\r
+ public TaxonBase createObject(ResultSet rs, CentralAfricaFernsImportState state) throws SQLException {\r
BotanicalName taxonName = BotanicalName.NewInstance(null);\r
Reference sec = state.getConfig().getSourceReference();\r
- \r
+\r
String taxonNumber = rs.getString("Taxon number");\r
state.setTaxonNumber(taxonNumber);\r
- \r
+\r
String orderName = rs.getString("Order name");\r
String subOrderName = rs.getString("Suborder name");\r
String familyName = rs.getString("Family name");\r
String subVariety = rs.getString("Subvariery");\r
String formaName = rs.getString("Forma name");\r
String subsectionName = rs.getString("Subsection name");\r
- \r
+\r
String status = rs.getString("Current/Synonym");\r
- \r
+\r
TaxonBase taxon = makeTaxon(taxonName, sec, taxonNumber, status);\r
- \r
+\r
// Integer parent3Rank = rs.getInt("parent3rank");\r
- \r
+\r
//rank and epithets\r
Rank lowestRank = setLowestUninomial(taxonName, orderName, subOrderName, familyName, subFamilyName, tribusName, subTribusName,genusName);\r
lowestRank = setLowestInfraGeneric(taxonName, lowestRank, subGenusName, sectionName, subsectionName, seriesName);\r
lowestRank = Rank.SPECIES();\r
}\r
lowestRank = setLowestInfraSpecific(taxonName, lowestRank, subspeciesName, varietyName, subVariety, formaName,subFormaName);\r
- \r
+\r
taxonName.setRank(lowestRank);\r
state.setCurrentRank(taxonName.getRank());\r
setAuthor(taxonName, rs, taxonNumber, false);\r
- \r
+\r
//add original source for taxon name (taxon original source is added in mapper\r
// Reference citation = state.getConfig().getSourceReference();\r
// addOriginalSource(taxonName, taxonNumber, TAXON_NAMESPACE, citation);\r
return taxon;\r
- \r
+\r
}\r
\r
\r
\r
private Rank setLowestUninomial(BotanicalName taxonName, String orderName, String subOrderName, String familyName, String subFamilyName,\r
String tribusName, String subTribusName, String genusName) {\r
- \r
+\r
if (StringUtils.isNotBlank(genusName)){\r
taxonName.setGenusOrUninomial(genusName);\r
return Rank.GENUS();\r
return null;\r
}\r
}\r
- \r
+\r
\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IoStateBase)\r
IOValidator<CentralAfricaFernsImportState> validator = new CentralAfricaFernsTaxonImportValidator();\r
return validator.validate(state);\r
}\r
- \r
- \r
+\r
+\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IoStateBase)\r
*/\r