commit 495cebda4423d09e7796f2331e1213474ad57f61
Author: Andreas Müller <a.mueller@bgbm.org>
Date:   Tue Apr 23 16:17:15 2013 +0000

    updates to globis import

diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisCommonNameImport.java b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisCommonNameImport.java
index ec01dab2..3d578bd5 100644
--- a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisCommonNameImport.java
+++ b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisCommonNameImport.java
@@ -16,27 +16,24 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
-import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.io.common.IOValidator;
 import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
-import eu.etaxonomy.cdm.io.globis.validation.GlobisCurrentSpeciesImportValidator;
+import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.description.Distribution;
-import eu.etaxonomy.cdm.model.description.PresenceTerm;
+import eu.etaxonomy.cdm.model.common.TimePeriod;
+import eu.etaxonomy.cdm.model.description.CommonTaxonName;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
-import eu.etaxonomy.cdm.model.name.Rank;
-import eu.etaxonomy.cdm.model.name.ZoologicalName;
 import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 
 
 /**
@@ -57,7 +54,8 @@ public class GlobisCommonNameImport  extends GlobisImportBase<Taxon> {
 		super(pluralString, dbTableName, cdmTargetClass);
 	}
 
-
+	//dirty but acceptable for globis environment
+	private Map<Integer,Reference> refMap = new HashMap<Integer,Reference>();
 	
 	
 	/* (non-Javadoc)
@@ -111,28 +109,53 @@ public class GlobisCommonNameImport  extends GlobisImportBase<Taxon> {
                 
         		if ((i++ % modCount) == 0 && i!= 1 ){ logger.info(pluralString + " handled: " + (i-1));}
 				
-        		Integer taxonId = rs.getInt("IdCrrentSpec");
-        		
-        		
-				try {
+        		Integer idTaxon = nullSafeInt(rs,"IDCurrentSpec");
+				
+        		try {
 					
 					//source ref
 					Reference<?> sourceRef = state.getTransactionalSourceReference();
 			
-					//species
-					Taxon species = createObject(rs, state);
-					
+					//common names
+					Integer id = nullSafeInt(rs,"ID");
+					String isoLang = rs.getString("ISO");
+					String strCommonName = rs.getString("commonname");
+					Integer refID = nullSafeInt(rs,"ReferenceID");
+					String strCountryCode = rs.getString("Code2");
 					
-					handleCountries(state, rs, species);
-					
-					this.doIdCreatedUpdatedNotes(state, species, rs, taxonId, TAXON_NAMESPACE);
-					
-					objectsToSave.add(species); 
 					
+					Taxon taxon = taxonMap.get(String.valueOf(idTaxon));
+					if (taxon == null){
+						logger.warn("No taxon found for taxonId " + idTaxon);
+					}else if (isBlank(strCommonName)){
+						logger.warn("No common name string defined for common name ID: " + id);
+					}else{
+						Language language = getLanguage(isoLang);
+						if (language == null){
+							logger.warn("No language found for common name ID: " + id);
+						}
+						NamedArea area = WaterbodyOrCountry.getWaterbodyOrCountryByIso3166A2(strCountryCode);
+						if (area == null){
+							logger.warn("No country found for common name ID: " + id);
+						}
+
+						TaxonDescription taxonDescription = getTaxonDescription(taxon, sourceRef, ! IMAGE_GALLERY,  CREATE);
+						CommonTaxonName commonName = CommonTaxonName.NewInstance(strCommonName, language, area);
+						taxonDescription.addElement(commonName);
+						
+						Reference<?> ref = handleReference(state, refID);
+						if (ref == null && refID != null){
+							logger.warn("No reference found for common name ID: " + id);
+						}else{
+							commonName.addSource(String.valueOf(refID), "reference", sourceRef, null);
+						}
+						
+						objectsToSave.add(taxon); 
+					}
 
 				} catch (Exception e) {
-					logger.warn("Exception in current_species: IDcurrentspec " + taxonId + ". " + e.getMessage());
-//					e.printStackTrace();
+					logger.warn("Exception in current_species: IDcurrentspec " + idTaxon + ". " + e.getMessage());
+					e.printStackTrace();
 				} 
                 
             }
@@ -149,97 +172,76 @@ public class GlobisCommonNameImport  extends GlobisImportBase<Taxon> {
 		}
 	}
 
-	private void handleCountries(GlobisImportState state, ResultSet rs, Taxon species) throws SQLException {
-		String countriesStr = rs.getString("dtSpcCountries");
-		if (isBlank(countriesStr)){
-			return;
-		}
-		String[] countriesSplit = countriesStr.split(";");
-		for (String countryStr : countriesSplit){
-			if (isBlank(countryStr)){
-				continue;
-			}
-			countryStr = countryStr.trim();
-			
-			//TODO use isComplete
-			boolean isComplete = countryStr.endsWith(".");
-			if (isComplete){
-				countryStr = countryStr.substring(0,countryStr.length() - 1).trim();
-			}
-			boolean isDoubtful = countryStr.endsWith("[?]");
-			if (isDoubtful){
-				countryStr = countryStr.substring(0,countryStr.length() - 3).trim();
-			}
-			if (countryStr.startsWith("?")){
-				isDoubtful = true;
-				countryStr = countryStr.substring(1).trim();
-			}
-			
-			
-			
-			countryStr = normalizeCountry(countryStr);
-			
-			WaterbodyOrCountry country = getCountry(state, countryStr);
-			
-			PresenceTerm status;
-			if (isDoubtful){
-				status = PresenceTerm.PRESENT_DOUBTFULLY();
-			}else{
-				status = PresenceTerm.PRESENT();
-			}
-			
-			if (country != null){
-				TaxonDescription desc = getTaxonDescription(species, state.getTransactionalSourceReference(), false, true);
-				Distribution distribution = Distribution.NewInstance(country, status);
-				desc.addElement(distribution);
-			}else{
-				logger.warn("Country string not recognized: " + countryStr);
+	
+
+	private Map<String,Language> languageMap = new HashMap<String,Language>();
+	private Language getLanguage(String isoLang) {
+		Language result = languageMap.get(isoLang);
+		if (result == null){
+		
+			result = getTermService().getLanguageByIso(isoLang);
+			if (result == null){
+				logger.warn("No language found for iso code: " + isoLang);
 			}
 		}
-	}
-
-
+		return result;
 
-	/**
-	 * @param countryStr
-	 * @return
-	 */
-	private String normalizeCountry(String countryStr) {
-		String result = countryStr.trim();
-		if (result.endsWith(".")){
-			result = result.substring(0,result.length() - 1);
-		}
-		return result; 
 	}
 	
-
-	/* (non-Javadoc)
-	 * @see eu.etaxonomy.cdm.io.common.mapping.IMappingImport#createObject(java.sql.ResultSet, eu.etaxonomy.cdm.io.common.ImportStateBase)
-	 */
-	public Taxon createObject(ResultSet rs, GlobisImportState state)
-			throws SQLException {
-		String speciesEpi = rs.getString("dtSpcSpcakt");
-		String subGenusEpi = rs.getString("dtSpcSubgenakt");
-		String genusEpi = rs.getString("dtSpcGenusakt");
-		String author = rs.getString("dtSpcAutor");
-		
+	private Reference<?> handleReference(GlobisImportState state, Integer refId){
+		Reference<?> result = refMap.get(refId);
 		
-		ZoologicalName zooName = ZoologicalName.NewInstance(Rank.SPECIES());
-		zooName.setSpecificEpithet(speciesEpi);
-		if (StringUtils.isNotBlank(subGenusEpi)){
-			zooName.setInfraGenericEpithet(subGenusEpi);
+		if (result == null){
+			try {
+				String sql = "SELECT * FROM references WHERE ReferenceID = " + refId;
+				ResultSet rs = state.getConfig().getSource().getResultSet(sql);
+				rs.next();
+				
+				String authors = rs.getString("Author(s)");
+				String title = rs.getString("Title");
+				String details = rs.getString("Details");
+				Integer year = nullSafeInt(rs, "year");
+				result = ReferenceFactory.newGeneric();
+				result.setTitleCache(details);
+				result.setTitle(title);
+				result.setDatePublished(TimePeriod.NewInstance(year));
+
+				TeamOrPersonBase<?> author;
+				String[] authorSplit = authors.split("&");
+				if (authorSplit.length > 1){
+					Team team = Team.NewInstance();
+					author = team;
+					for (String singleAuthor : authorSplit){
+						Person person = makeSingleAuthor(singleAuthor);
+						team.addTeamMember(person);
+					}
+				}else{
+					author = makeSingleAuthor(authors);
+				}
+				
+				result.setAuthorTeam(author);
+				refMap.put(refId,result);
+				rs.close();
+			} catch (SQLException e) {
+				e.printStackTrace();
+			}
+
+			
 		}
-		zooName.setGenusOrUninomial(genusEpi);
-		handleAuthorAndYear(author, zooName);
 		
-		Taxon taxon = Taxon.NewInstance(zooName, state.getTransactionalSourceReference());
-		
-		return taxon;
+		return result;
 	}
 
 
 
 
+	private Person makeSingleAuthor(String authors) {
+		Person result = Person.NewTitledInstance(authors);
+		return result;
+	}
+
+
+
 
 	/* (non-Javadoc)
 	 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
@@ -253,7 +255,7 @@ public class GlobisCommonNameImport  extends GlobisImportBase<Taxon> {
 			Set<String> taxonIdSet = new HashSet<String>();
 			
 			while (rs.next()){
-//				handleForeignKey(rs, taxonIdSet, "taxonId");
+				handleForeignKey(rs, taxonIdSet, "IDCurrentSpec");
 			}
 			
 			//taxon map
@@ -275,8 +277,8 @@ public class GlobisCommonNameImport  extends GlobisImportBase<Taxon> {
 	 */
 	@Override
 	protected boolean doCheck(GlobisImportState state){
-		IOValidator<GlobisImportState> validator = new GlobisCurrentSpeciesImportValidator();
-		return validator.validate(state);
+//		IOValidator<GlobisImportState> validator = new GlobisCurrentSpeciesImportValidator();
+		return true;
 	}
 	
 	
@@ -284,7 +286,7 @@ public class GlobisCommonNameImport  extends GlobisImportBase<Taxon> {
 	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
 	 */
 	protected boolean isIgnore(GlobisImportState state){
-		return ! state.getConfig().isDoCurrentTaxa();
+		return ! state.getConfig().isDoCommonNames();
 	}
 
 
diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisCurrentSpeciesImport.java b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisCurrentSpeciesImport.java
index 651ac704..7f5a9103 100644
--- a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisCurrentSpeciesImport.java
+++ b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisCurrentSpeciesImport.java
@@ -29,7 +29,7 @@ import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceTerm;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
-import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
+import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.ZoologicalName;
 import eu.etaxonomy.cdm.model.reference.Reference;
@@ -116,7 +116,6 @@ public class GlobisCurrentSpeciesImport  extends GlobisImportBase<Taxon> {
 				
         		Integer taxonId = rs.getInt("IDcurrentspec");
         		
-        		
         		//String dtSpcJahr -> ignore !
         		//empty: fiSpcLiteratur
         		
@@ -134,7 +133,7 @@ public class GlobisCurrentSpeciesImport  extends GlobisImportBase<Taxon> {
 					boolean hasNewParent = false; //true if any parent is new
 					
 					//species
-					Taxon species = createObject(rs, state);
+					Taxon species = createObject(rs, state, taxonId);
 					
 					
 					String familyStr = rs.getString("dtSpcFamakt");
@@ -142,10 +141,10 @@ public class GlobisCurrentSpeciesImport  extends GlobisImportBase<Taxon> {
 					String tribeStr = rs.getString("dtSpcTribakt");
 					
 					//family
-					Taxon family = getTaxon(state, rs, familyStr, null, Rank.FAMILY(), null, taxonMap);
+					Taxon family = getTaxon(state, rs, familyStr, null, Rank.FAMILY(), null, taxonMap, taxonId);
 					
 					//subfamily
-					Taxon subFamily = getTaxon(state, rs, subFamilyStr, null, Rank.SUBFAMILY(), null, taxonMap);
+					Taxon subFamily = getTaxon(state, rs, subFamilyStr, null, Rank.SUBFAMILY(), null, taxonMap, taxonId);
 					Taxon subFamilyParent = getParent(subFamily, classification);
 					if (subFamilyParent != null){
 						if (! compareTaxa(family, subFamilyParent)){
@@ -157,7 +156,7 @@ public class GlobisCurrentSpeciesImport  extends GlobisImportBase<Taxon> {
 					nextHigherTaxon = subFamily;
 					
 					//tribe
-					Taxon tribe = getTaxon(state, rs, tribeStr, null, Rank.TRIBE(), null, taxonMap);
+					Taxon tribe = getTaxon(state, rs, tribeStr, null, Rank.TRIBE(), null, taxonMap, taxonId);
 					if (tribe != null){
 						Taxon tribeParent = getParent(tribe, classification);
 						if (tribeParent != null){
@@ -174,7 +173,7 @@ public class GlobisCurrentSpeciesImport  extends GlobisImportBase<Taxon> {
 					//genus
 					String genusStr = rs.getString("dtSpcGenusakt");
 					String genusAuthorStr = rs.getString("dtSpcGenusaktauthor");
-					Taxon genus = getTaxon(state, rs, genusStr, null, Rank.GENUS(), genusAuthorStr, taxonMap);
+					Taxon genus = getTaxon(state, rs, genusStr, null, Rank.GENUS(), genusAuthorStr, taxonMap, taxonId);
 					Taxon genusParent = getParent(genus, classification);
 					
 					if (genusParent != null){
@@ -191,7 +190,7 @@ public class GlobisCurrentSpeciesImport  extends GlobisImportBase<Taxon> {
 					String subGenusAuthorStr = rs.getString("dtSpcSubgenaktauthor");
 					boolean hasSubgenus = StringUtils.isNotBlank(subGenusStr) || StringUtils.isNotBlank(subGenusAuthorStr);
 					if (hasSubgenus){
-						Taxon subGenus = getTaxon(state, rs, genusStr, subGenusStr, Rank.SUBGENUS(), subGenusAuthorStr, taxonMap);
+						Taxon subGenus = getTaxon(state, rs, genusStr, subGenusStr, Rank.SUBGENUS(), subGenusAuthorStr, taxonMap, taxonId);
 						classification.addParentChild(nextHigherTaxon, subGenus, sourceRef, null);
 						nextHigherTaxon = subGenus;
 					}
@@ -256,7 +255,7 @@ public class GlobisCurrentSpeciesImport  extends GlobisImportBase<Taxon> {
 			
 			countryStr = normalizeCountry(countryStr);
 			
-			WaterbodyOrCountry country = getCountry(state, countryStr);
+			NamedArea country = getCountry(state, countryStr);
 			
 			PresenceTerm status;
 			if (isDoubtful){
@@ -348,7 +347,7 @@ public class GlobisCurrentSpeciesImport  extends GlobisImportBase<Taxon> {
 
 
 
-	private Taxon getTaxon(GlobisImportState state, ResultSet rs, String uninomial, String infraGenericEpi, Rank rank, String author, Map<String, Taxon> taxonMap) {
+	private Taxon getTaxon(GlobisImportState state, ResultSet rs, String uninomial, String infraGenericEpi, Rank rank, String author, Map<String, Taxon> taxonMap, Integer taxonId) {
 		if (isBlank(uninomial)){
 			return null;
 		}
@@ -366,7 +365,7 @@ public class GlobisCurrentSpeciesImport  extends GlobisImportBase<Taxon> {
 			taxon = Taxon.NewInstance(name, state.getTransactionalSourceReference());
 			
 			taxonMap.put(key, taxon);
-			handleAuthorAndYear(author, name);
+			handleAuthorAndYear(author, name, taxonId);
 			getTaxonService().save(taxon);
 		}
 		
@@ -392,7 +391,7 @@ public class GlobisCurrentSpeciesImport  extends GlobisImportBase<Taxon> {
 	/* (non-Javadoc)
 	 * @see eu.etaxonomy.cdm.io.common.mapping.IMappingImport#createObject(java.sql.ResultSet, eu.etaxonomy.cdm.io.common.ImportStateBase)
 	 */
-	public Taxon createObject(ResultSet rs, GlobisImportState state)
+	public Taxon createObject(ResultSet rs, GlobisImportState state, Integer taxonId)
 			throws SQLException {
 		String speciesEpi = rs.getString("dtSpcSpcakt");
 		String subGenusEpi = rs.getString("dtSpcSubgenakt");
@@ -406,7 +405,7 @@ public class GlobisCurrentSpeciesImport  extends GlobisImportBase<Taxon> {
 			zooName.setInfraGenericEpithet(subGenusEpi);
 		}
 		zooName.setGenusOrUninomial(genusEpi);
-		handleAuthorAndYear(author, zooName);
+		handleAuthorAndYear(author, zooName, taxonId);
 		
 		Taxon taxon = Taxon.NewInstance(zooName, state.getTransactionalSourceReference());
 		
diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImageImport.java b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImageImport.java
index 8d9210eb..28f61cba 100644
--- a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImageImport.java
+++ b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImageImport.java
@@ -36,10 +36,6 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.TaxonDescription;
-import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.name.ZoologicalName;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
@@ -48,7 +44,6 @@ import eu.etaxonomy.cdm.model.occurrence.Specimen;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 
 
 /**
@@ -60,14 +55,13 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 public class GlobisImageImport  extends GlobisImportBase<Taxon> {
 	private static final Logger logger = Logger.getLogger(GlobisImageImport.class);
 	
-	private int modCount = 10000;
+	private int modCount = 1000;
 
 	private UUID uuidArtNonSpecTaxMarkerType = UUID.fromString("be362085-0f5b-4314-96d1-78b9b129ef6d") ;
 	private static final String pluralString = "images";
 	private static final String dbTableName = "Einzelbilder";
 	private static final Class cdmTargetClass = Media.class;  //not needed
 	
-	private static final String IMAGE_NAMESPACE = "Einzelbilder";
 	private static UUID uuidGartRef = UUID.fromString("af85470f-6e54-4304-9d29-fd117cd56161"); 
 	
 	public GlobisImageImport(){
@@ -116,10 +110,10 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
 		
 		Set<Media> objectsToSave = new HashSet<Media>();
 		
-		Map<String, Specimen> typeMap = (Map<String, Specimen>) partitioner.getObjectMap(GlobisSpecTaxImport.TYPE_NAMESPACE);
+		Map<String, Specimen> typeMap = (Map<String, Specimen>) partitioner.getObjectMap(TYPE_NAMESPACE);
 		
 		Map<String, Taxon> taxonMap = (Map<String, Taxon>) partitioner.getObjectMap(TAXON_NAMESPACE);
-		Map<String, ZoologicalName> specTaxNameMap = (Map<String, ZoologicalName>) partitioner.getObjectMap(GlobisSpecTaxImport.SPEC_TAX_NAMESPACE);
+		Map<String, ZoologicalName> specTaxNameMap = (Map<String, ZoologicalName>) partitioner.getObjectMap(SPEC_TAX_NAMESPACE);
 		
 		ResultSet rs = partitioner.getResultSet();
 		
@@ -192,7 +186,7 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
 					
 					//GART id (specimenID)
 					if (isNotBlank(specimenId)){
-						specimen.addSource(specimenId, "", refGart, null);
+						specimen.addSource(specimenId, "specimenId", refGart, null);
 					}
 					//bemerkungen
 					if (isNotBlank(bemerkungen)){
@@ -294,7 +288,7 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
 
 	private String getNameFromFileOs(ResultSet rs) throws SQLException {
 		String fileOS = rs.getString("file OS");
-		Pattern pattern = Pattern.compile("(.+)(_...._..\\.jpg)");
+		Pattern pattern = Pattern.compile("(.+)(_.{4}(-.{1,3})?(_Nr\\d{3,4})?_.{2,3}\\.jpg)");
 		Matcher matcher = pattern.matcher(fileOS);
 		if (matcher.matches()){
 			String match = matcher.group(1);
@@ -433,22 +427,23 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
 			
 			while (rs.next()){
 				handleForeignKey(rs, currSpecIdSet, "SpecCurrspecID");
+				handleForeignKey(rs, specTaxIdSet, "spectaxID");
 				handleTypeKey(rs, typeIdSet, "spectaxID", "copyright");
 			}
 			
 			//specTax map
-			nameSpace = GlobisSpecTaxImport.SPEC_TAX_NAMESPACE;
-			cdmClass = TaxonBase.class;
+			nameSpace = SPEC_TAX_NAMESPACE;
+			cdmClass = ZoologicalName.class;
 			idSet = specTaxIdSet;
-			Map<String, TaxonBase> specTaxMap = (Map<String, TaxonBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
-			result.put(nameSpace, specTaxMap);
+			Map<String, ZoologicalName> specTaxNameMap = (Map<String, ZoologicalName>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
+			result.put(nameSpace, specTaxNameMap);
 
-			//taxon map
-			nameSpace = TAXON_NAMESPACE;
-			cdmClass = Taxon.class;
-			idSet = currSpecIdSet;
-			Map<String, Taxon> taxonMap = (Map<String, Taxon>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
-			result.put(nameSpace, taxonMap);
+//			//taxon map
+//			nameSpace = TAXON_NAMESPACE;
+//			cdmClass = Taxon.class;
+//			idSet = currSpecIdSet;
+//			Map<String, Taxon> taxonMap = (Map<String, Taxon>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
+//			result.put(nameSpace, taxonMap);
 
 			
 			//type map
@@ -465,8 +460,7 @@ public class GlobisImageImport  extends GlobisImportBase<Taxon> {
 		return result;
 	}
 	
-	private void handleTypeKey(ResultSet rs, Set<String> idSet, String specTaxIdAttr, String copyrightAttr)
-			throws SQLException {
+	private void handleTypeKey(ResultSet rs, Set<String> idSet, String specTaxIdAttr, String copyrightAttr) throws SQLException {
 		Integer specTaxId = nullSafeInt(rs, specTaxIdAttr);
 		if (specTaxId != null){
 			String copyright = rs.getString(copyrightAttr);
diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImportBase.java b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImportBase.java
index 98627a03..317bc381 100644
--- a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImportBase.java
+++ b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImportBase.java
@@ -37,6 +37,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
 import eu.etaxonomy.cdm.model.name.ZoologicalName;
 import eu.etaxonomy.cdm.strategy.exceptions.StringNotParsableException;
@@ -58,6 +59,9 @@ public abstract class GlobisImportBase<CDM_BASE extends CdmBase> extends CdmImpo
 	protected static final String REFERENCE_NAMESPACE = "Literatur";
 	protected static final String TAXON_NAMESPACE = "current_species";
 	protected static final String COLLECTION_NAMESPACE = "Collection";
+	protected static final String IMAGE_NAMESPACE = "Einzelbilder";
+	protected static final String SPEC_TAX_NAMESPACE = "specTax";
+	protected static final String TYPE_NAMESPACE = "specTax.SpecTypeDepository";
 	
 	private String pluralString;
 	private String dbTableName;
@@ -87,7 +91,7 @@ public abstract class GlobisImportBase<CDM_BASE extends CdmBase> extends CdmImpo
 
 		int recordsPerTransaction = config.getRecordsPerTransaction();
 		try{
-			ResultSetPartitioner partitioner = ResultSetPartitioner.NewInstance(source, strIdQuery, strRecordQuery, recordsPerTransaction);
+			ResultSetPartitioner<GlobisImportState> partitioner = ResultSetPartitioner.NewInstance(source, strIdQuery, strRecordQuery, recordsPerTransaction);
 			while (partitioner.nextPartition()){
 				partitioner.doPartition(this, state);
 			}
@@ -104,7 +108,7 @@ public abstract class GlobisImportBase<CDM_BASE extends CdmBase> extends CdmImpo
 	 * @param authorAndYear
 	 * @param zooName
 	 */
-	protected void handleAuthorAndYear(String authorAndYear, ZoologicalName zooName) {
+	protected void handleAuthorAndYear(String authorAndYear, ZoologicalName zooName, Integer id) {
 		if (isBlank(authorAndYear)){
 			return;
 		}
@@ -117,6 +121,9 @@ public abstract class GlobisImportBase<CDM_BASE extends CdmBase> extends CdmImpo
 			if (authorAndYear.contains("?")){
 				authorAndYear = authorAndYear.replace("H?bner", "H\u00fcbner");
 				authorAndYear = authorAndYear.replace("Oberth?r", "Oberth\u00fcr");
+				authorAndYear = authorAndYear.replace("M?n?tri?s","M\u00E9n\u00E9tri\u00E9s");
+				authorAndYear = authorAndYear.replace("Schifferm?ller","Schifferm\u00fcller");
+				
 				//TODO remove
 				authorAndYear = authorAndYear.replace("?", "");
 				
@@ -128,7 +135,7 @@ public abstract class GlobisImportBase<CDM_BASE extends CdmBase> extends CdmImpo
 			}
 			
 		} catch (StringNotParsableException e) {
-			logger.warn("Author could not be parsed: " + authorAndYear);
+			logger.warn("Author could not be parsed: " + authorAndYear + " for id "  +id);
 			zooName.setAuthorshipCache(authorAndYear, true);
 		}
 	}
@@ -139,11 +146,11 @@ public abstract class GlobisImportBase<CDM_BASE extends CdmBase> extends CdmImpo
 	 * @param countryStr
 	 * @return
 	 */
-	protected WaterbodyOrCountry getCountry(GlobisImportState state, String countryStr) {
-		WaterbodyOrCountry country = WaterbodyOrCountry.getWaterbodyOrCountryByLabel(countryStr);
+	protected NamedArea getCountry(GlobisImportState state, String countryStr) {
+		NamedArea country = WaterbodyOrCountry.getWaterbodyOrCountryByLabel(countryStr);
 		if (country == null){
 			try {
-				country = (WaterbodyOrCountry)state.getTransformer().getNamedAreaByKey(countryStr);
+				country = (NamedArea)state.getTransformer().getNamedAreaByKey(countryStr);
 			} catch (UndefinedTransformerMethodException e) {
 				e.printStackTrace();
 			}
diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImportConfigurator.java b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImportConfigurator.java
index d7997b8f..5a59fce4 100644
--- a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImportConfigurator.java
+++ b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisImportConfigurator.java
@@ -60,6 +60,7 @@ public class GlobisImportConfigurator extends DbImportConfiguratorBase<GlobisImp
 	//			, ErmsReferenceImport.class
 				, GlobisCurrentSpeciesImport.class
 				, GlobisSpecTaxImport.class
+				, GlobisCommonNameImport.class
 				, GlobisImageImport.class
 		};	
 	}
@@ -162,7 +163,4 @@ public class GlobisImportConfigurator extends DbImportConfiguratorBase<GlobisImp
 		return doReadMediaData;
 	}
 
-
-	
-
 }
diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisSpecTaxImport.java b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisSpecTaxImport.java
index fe9da982..ea04e1fc 100644
--- a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisSpecTaxImport.java
+++ b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisSpecTaxImport.java
@@ -29,13 +29,15 @@ import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.io.common.IOValidator;
 import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
 import eu.etaxonomy.cdm.io.common.mapping.IMappingImport;
+import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;
 import eu.etaxonomy.cdm.io.globis.validation.GlobisSpecTaxaImportValidator;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.ExtensionType;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
@@ -67,8 +69,6 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
 	private static final String pluralString = "taxa";
 	private static final String dbTableName = "specTax";
 	private static final Class cdmTargetClass = Reference.class;
-	public static final String SPEC_TAX_NAMESPACE = dbTableName;
-	public static final String TYPE_NAMESPACE = dbTableName + ".SpecTypeDepository";
 	
 	private static UUID uuidCitedTypeLocality = UUID.fromString("ca431e0a-84ec-4828-935f-df4c8f5cf880");
 	private static UUID uuidCitedTypeMaterial = UUID.fromString("8395021a-e596-4a55-9794-8c03aaad9e16");
@@ -137,6 +137,8 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
         		Integer acceptedTaxonId = nullSafeInt(rs, "SpecCurrspecID");
         		String specSystaxRank = rs.getString("SpecSystaxRank");
         		
+        		//ignore: CountryDummy, currentSpecies, DepositoryDisplay, DepositoryDummy, ReferenceDisplay, SpecDescriptionImageFile, all *Valid*
+        		
 				try {
 					
 					//source ref
@@ -189,20 +191,26 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
 						objectsToSave.add(acceptedTaxon); 
 					}
 					
+					//makeMarker1(state, rs, name);   //ignore!
+					
+					makeNotAvailable(state, rs, name);
+					
 					//SpecCitedTypeLocality
 					String citedTypeLocality = rs.getString("SpecCitedTypeLocality");
 					if (isNotBlank(citedTypeLocality)){
-						ExtensionType exTypeCitedTypeLoc = getExtensionType(state, uuidCitedTypeLocality, "Type locality as cited in original description", "Type locality as cited in original description", null, ExtensionType.DOI().getVocabulary());
-						name.addExtension(citedTypeLocality, exTypeCitedTypeLoc);
+//						ExtensionType exTypeCitedTypeLoc = getExtensionType(state, uuidCitedTypeLocality, "Type locality as cited in original description", "Type locality as cited in original description", null, ExtensionType.DOI().getVocabulary());
+//						name.addExtension(citedTypeLocality, exTypeCitedTypeLoc);
+						addNameDescription(state, name, uuidCitedTypeLocality, citedTypeLocality, "Type locality as cited in original description");
 					}
 
 					//SpecCitedTypeMaterial
 					String citedTypeMaterial = rs.getString("SpecCitedTypeMaterial");
 					if (isNotBlank(citedTypeMaterial)){
-						ExtensionType exTypeCitedTypeLoc = getExtensionType(state, uuidCitedTypeMaterial, "Type material as cited in original description", "Type locality as cited in original description", null, ExtensionType.DOI().getVocabulary());
+						ExtensionType exTypeCitedTypeLoc = getExtensionType(state, uuidCitedTypeMaterial, "Type material as cited in original description", "Type material as cited in original description", null, ExtensionType.DOI().getVocabulary());
 						name.addExtension(citedTypeLocality, exTypeCitedTypeLoc);
 					}
 
+					name.addSource(String.valueOf(specTaxId), SPEC_TAX_NAMESPACE, state.getTransactionalSourceReference(), null);
 					
 					namesToSave.add(name);
 					
@@ -226,6 +234,80 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
 	}
 
 
+	private void makeNotAvailable(GlobisImportState state, ResultSet rs, ZoologicalName name) throws SQLException {
+		String notAvailableStr = rs.getString("SpecNotAvailable");
+		try {
+			if (isNotBlank(notAvailableStr)){
+				if (notAvailableStr.contains("not available") ){ 
+					UUID uuidNotAvailableMarkerType = state.getTransformer().getMarkerTypeUuid("not available");
+					
+					MarkerType markerType = getMarkerType(state, uuidNotAvailableMarkerType, "not available", "not available", null);
+					name.addMarker(Marker.NewInstance(markerType, true));
+				}
+			}
+		} catch (UndefinedTransformerMethodException e) {
+			e.printStackTrace();
+		}
+		//Not available reason
+		//TODO make it a vocabulary
+		String notAvailableReason = rs.getString("SpecNotAvailableReason");
+		if (isNotBlank(notAvailableReason)){
+			UUID uuidNotAvailableReason;
+			try {
+				uuidNotAvailableReason = state.getTransformer().getExtensionTypeUuid("not available reason");
+				ExtensionType notAvailableReasonExtType = getExtensionType(state, uuidNotAvailableReason, "Not available reason", "Not available reason", null, null);
+				name.addExtension(notAvailableReason, notAvailableReasonExtType);
+			} catch (UndefinedTransformerMethodException e) {
+				e.printStackTrace();
+			} 
+		}
+		
+	}
+
+
+
+
+	
+	/**
+	 * This method is not used anymore as according to Alexander Marker1 should be ignored.
+	 * @param state
+	 * @param rs
+	 * @param name
+	 * @throws SQLException
+	 */
+	private void makeMarker1(GlobisImportState state, ResultSet rs, ZoologicalName name) throws SQLException {
+		String marker1Str = rs.getString("Marker1");
+		try {
+			if (isNotBlank(marker1Str)){
+				marker1Str = marker1Str.trim();
+				if (marker1Str.contains("checked") || marker1Str.contains("berpr") ){ //überprüft
+					UUID uuidCheckedMarkerType;
+						uuidCheckedMarkerType = state.getTransformer().getMarkerTypeUuid("checked");
+					
+					MarkerType markerType = getMarkerType(state, uuidCheckedMarkerType, "checked", "checked", null);
+					name.addMarker(Marker.NewInstance(markerType, true));
+				}
+				if (marker1Str.contains("old record") || marker1Str.contains("alte Angabe") ){
+					UUID uuidOldRecordMarkerType = state.getTransformer().getMarkerTypeUuid("old record");
+					MarkerType markerType = getMarkerType(state, uuidOldRecordMarkerType, "checked", "checked", null);
+					name.addMarker(Marker.NewInstance(markerType, true));
+				}
+			}
+		} catch (UndefinedTransformerMethodException e) {
+			e.printStackTrace();
+		}
+		
+	}
+
+
+	private void addNameDescription(GlobisImportState state, ZoologicalName name, UUID featureUuid,
+			String citedTypeLocality, String featureLabel) {
+		Feature feature = getFeature(state, featureUuid,featureLabel,featureLabel, null, null);
+		getTaxonNameDescription(name, false, true);
+		
+	}
+
+
 	private Pattern patternAll = Pattern.compile("(.+,\\s.+)(\\(.+\\))");
 	
 
@@ -248,7 +330,7 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
 		//TODO several issues
 		if (specTypeDepositories.length == 0){
 			Specimen specimen = makeSingleTypeSpecimen(fieldObservation);
-			makeTypeDesignation(name, rs, specimen);
+			makeTypeDesignation(name, rs, specimen, specTaxId);
 			makeTypeIdInSource(state, specimen, "null", specTaxId);
 		}
 		for (String specTypeDepositoryStr : specTypeDepositories){
@@ -278,7 +360,7 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
 			}
 			
 			//type Designation
-			makeTypeDesignation(name, rs, specimen);
+			makeTypeDesignation(name, rs, specimen, specTaxId);
 		}
 
 		
@@ -470,7 +552,7 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
 		DerivedUnitType unitType = DerivedUnitType.Specimen;
 		DerivedUnitFacade facade = DerivedUnitFacade.NewInstance(unitType);
 		
-		WaterbodyOrCountry typeCountry = getCountry(state, countryString);
+		NamedArea typeCountry = getCountry(state, countryString);
 		facade.setCountry(typeCountry);
 		FieldObservation fieldObservation = facade.innerFieldObservation();
 		return fieldObservation;
@@ -484,12 +566,13 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
 	 * @param rs 
 	 * @param status
 	 * @param specimen
+	 * @param specTaxId 
 	 * @throws SQLException 
 	 */
-	protected void makeTypeDesignation(ZoologicalName name, ResultSet rs, Specimen specimen) throws SQLException {
+	protected void makeTypeDesignation(ZoologicalName name, ResultSet rs, Specimen specimen, Integer specTaxId) throws SQLException {
 		//type
 		String specType = rs.getString("SpecType");
-		SpecimenTypeDesignationStatus status = getTypeDesigType(specType);
+		SpecimenTypeDesignationStatus status = getTypeDesigType(specType, specTaxId);
 
 		SpecimenTypeDesignation typeDesignation = SpecimenTypeDesignation.NewInstance();
 		typeDesignation.setTypeStatus(status);
@@ -501,10 +584,10 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
 
 
 
-	private SpecimenTypeDesignationStatus getTypeDesigType(String specType) {
+	private SpecimenTypeDesignationStatus getTypeDesigType(String specType, Integer specTaxId) {
 		if (isBlank(specType) ){
 			return null;
-		}else if (specType.matches("Holotype(Holotypus)?")){
+		}else if (specType.matches("Holotype(.*Holotypus)?")){
 			return SpecimenTypeDesignationStatus.HOLOTYPE();
 		}else if (specType.matches("Neotype")){
 			return SpecimenTypeDesignationStatus.NEOTYPE();
@@ -513,7 +596,7 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
 		}else if (specType.matches("Lectotype")){
 			return SpecimenTypeDesignationStatus.LECTOTYPE();
 		}else{
-			logger.warn("SpecimenTypeDesignationStatus does not match: " + specType);
+			logger.warn("SpecimenTypeDesignationStatus does not match: " + specType + " in specTaxId "  + specTaxId);
 			return null;
 		}
 	}
@@ -613,9 +696,8 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
 		String authorStr = rs.getString("SpecAuthor");
 		String yearStr = rs.getString("SpecYear");
 		String authorAndYearStr = CdmUtils.concat(", ", authorStr, yearStr);
-		handleAuthorAndYear(authorAndYearStr, name);
+		handleAuthorAndYear(authorAndYearStr, name, specTaxId);
 		
-		name.addSource(String.valueOf(specTaxId), SPEC_TAX_NAMESPACE, state.getTransactionalSourceReference(), null);
 		return name;
 	}
 
@@ -717,14 +799,10 @@ public class GlobisSpecTaxImport  extends GlobisImportBase<Reference> implements
 
 
 	@Override
-	public Reference createObject(ResultSet rs, GlobisImportState state)
+	public Reference<?> createObject(ResultSet rs, GlobisImportState state)
 			throws SQLException {
 		// not needed
 		return null;
 	}
 
-
-
-
-
 }
diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisTransformer.java b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisTransformer.java
index 6dff39cd..729f23c3 100644
--- a/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisTransformer.java
+++ b/app-import/src/main/java/eu/etaxonomy/cdm/io/globis/GlobisTransformer.java
@@ -22,8 +22,8 @@ import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;
 import eu.etaxonomy.cdm.model.common.ExtensionType;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.cdm.model.location.TdwgArea;
 import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
-import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
 
 /**
  * @author a.mueller
@@ -34,49 +34,14 @@ public final class GlobisTransformer extends InputTransformerBase {
 	private static final Logger logger = Logger.getLogger(GlobisTransformer.class);
 	
 
-	//extension types
-//	public static final UUID uuidEditor = UUID.fromString("07752659-3018-4880-bf26-41bb396fbf37");
-	
-	
-	//language uuids
-	
-	
-	
+	//marker types
+	public static final UUID uuidCheckedMarkerType = UUID.fromString("f2a7926f-def1-49a6-b642-9b81e6b1e35c");
+	public static final UUID uuidOldRecordMarkerType = UUID.fromString("8616edc5-00d4-40ca-aca4-d48ec32231e9");
+	public static final UUID uuidNotAvailableMarkerType = UUID.fromString("6931e584-6fc2-44ab-9084-e6452f8cd5d1");
 	
+	//extension types
+	public static final UUID uuidExtTypeNotAvailableReason = UUID.fromString("d7dd5632-8c65-4058-b804-d1291560ac4c");
 	
-	/* (non-Javadoc)
-	 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getNameTypeDesignationStatusByKey(java.lang.String)
-	 */
-	@Override
-	public NameTypeDesignationStatus getNameTypeDesignationStatusByKey(String key) throws UndefinedTransformerMethodException {
-		if (key == null){
-			return null;
-		}
-		Integer intDesignationId = Integer.valueOf(key);
-		switch (intDesignationId){
-			case 1: return NameTypeDesignationStatus.ORIGINAL_DESIGNATION();
-			case 2: return NameTypeDesignationStatus.SUBSEQUENT_DESIGNATION();
-			case 3: return NameTypeDesignationStatus.MONOTYPY();
-			default: 
-				String warning = "Unknown name type designation status id " + key;
-				logger.warn(warning);
-				return null;
-		}
-	}
-
-
-
-
-	/* (non-Javadoc)
-	 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getNameTypeDesignationStatusUuid(java.lang.String)
-	 */
-	@Override
-	public UUID getNameTypeDesignationStatusUuid(String key) throws UndefinedTransformerMethodException {
-		//nott needed
-		return super.getNameTypeDesignationStatusUuid(key);
-	}
-
-
 	public NamedArea getNamedAreaByKey(String area)  {
 		Set<String> unhandledCountries = new HashSet<String>();
 		
@@ -222,24 +187,17 @@ public final class GlobisTransformer extends InputTransformerBase {
 		}else if (area.equals("Dominica")){return WaterbodyOrCountry.DOMINICACOMMONWEALTHOF();
 		}else if (area.equals("Liechtenstein")){return WaterbodyOrCountry.LIECHTENSTEINPRINCIPALITYOF();
 		}else if (area.matches("B(y)?elarus")){return WaterbodyOrCountry.BELARUS();
-		
-		
-		
-		
+		}else if (area.matches("United States: Alaska")){ return TdwgArea.getAreaByTdwgAbbreviation("ASK");
 		
 		}else{	
 			if (unhandledCountries.contains(area)){
-//				logger.warn("Unhandled country '" + area + "' replaced by null" );
+				logger.warn("Unhandled country '" + area + "' replaced by null" );
 				return null;
 			}
-//			String warning = "New language abbreviation " + area;
-//			logger.warn(warning);
 			return null;
-//			throw new IllegalArgumentException(warning);
+
 		}
-		
-		
-		
+
 	}
 	
 	/* (non-Javadoc)
@@ -273,12 +231,27 @@ public final class GlobisTransformer extends InputTransformerBase {
 	public UUID getExtensionTypeUuid(String key)
 			throws UndefinedTransformerMethodException {
 		if (key == null){return null;
-//		}else if (key.equalsIgnoreCase("recent only")){return uuidRecentOnly;
+		}else if (key.equalsIgnoreCase("not available reason")){return uuidExtTypeNotAvailableReason;
 //		}else if (key.equalsIgnoreCase("recent + fossil")){return uuidRecentAndFossil;
 //		}else if (key.equalsIgnoreCase("fossil only")){return uuidFossilOnly;
 		}
 		return null;
 	}
+	
+	/* (non-Javadoc)
+	 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getExtensionTypeUuid(java.lang.String)
+	 */
+	@Override
+	public UUID getMarkerTypeUuid(String key)
+			throws UndefinedTransformerMethodException {
+		if (key == null){return null;
+		}else if (key.equalsIgnoreCase("old record")){return uuidOldRecordMarkerType;
+		}else if (key.equalsIgnoreCase("checked")){return uuidCheckedMarkerType;
+		}else if (key.equalsIgnoreCase("not available")){return uuidNotAvailableMarkerType;
+		
+		}
+		return null;
+	}
 
 	
 
