\r
\r
protected static final String CDM_UUID_COLUMN = "(?i)(CdmUuid)";\r
-\r
+ protected static final String IGNORE_COLUMN = "(?i)(Ignore|Not)";\r
+ \r
\r
protected static final String RANK_COLUMN = "(?i)(Rank)";\r
protected static final String FULL_NAME_COLUMN = "(?i)(FullName)";\r
+ protected static final String TAXON_UUID_COLUMN = "(?i)(taxonUuid)";\r
protected static final String FAMILY_COLUMN = "(?i)(Family)";\r
protected static final String GENUS_COLUMN = "(?i)(Genus)";\r
protected static final String SPECIFIC_EPITHET_COLUMN = "(?i)(SpecificEpi(thet)?)";\r
protected static final String INFRASPECIFIC_EPITHET_COLUMN = "(?i)(InfraSpecificEpi(thet)?)";\r
+ \r
+ protected static final String LANGUAGE = "(?i)(Language)";\r
\r
@Override\r
- protected boolean analyzeRecord(HashMap<String, String> record, STATE state) {\r
- boolean success = true;\r
- Set<String> keys = record.keySet();\r
+ protected void analyzeRecord(HashMap<String, String> record, STATE state) {\r
+ Set<String> keys = record.keySet();\r
\r
ROW row = createDataHolderRow();\r
state.setCurrentRow(row);\r
continue;\r
}\r
if (isBaseColumn(keyValue)){\r
- success &= handleBaseColumn(keyValue, row);\r
+ handleBaseColumn(keyValue, row);\r
}else{\r
- success &= analyzeSingleValue(keyValue, state);\r
+ analyzeSingleValue(keyValue, state);\r
}\r
}\r
- return success;\r
+ return;\r
}\r
\r
protected abstract ROW createDataHolderRow();\r
* @param state \r
* @return\r
*/\r
- protected abstract boolean analyzeSingleValue(KeyValue keyValue, STATE state);\r
+ protected abstract void analyzeSingleValue(KeyValue keyValue, STATE state);\r
\r
/**\r
* DataHolder class for all key and value information for a cell.\r
Author("RefAuthor"),\r
Title("RefTitle"),\r
Year("RefYear"),\r
+ RefExtension("RefExt(ension)?"),\r
Language("Lang") //strictly not a reference, so some refactoring/renaming is needed\r
;\r
\r
keyValue.index = 0;\r
}\r
//source\r
- if (split.length > current){\r
+ if (split.length > current && ! isIgnore(keyValue.key)){\r
//refType\r
if (isRefType(split[current])){\r
String refTypeStr = split[current++];\r
}\r
\r
}\r
- if (split.length > current){\r
+ if (split.length > current && ! isIgnore(keyValue.key)){\r
String message = "Key has unexpected part at position %d of key. %s (and following parts) can not be handled";\r
message = String.format(message, current, split[current]);\r
fireWarningEvent(message, state, 10);\r
}\r
\r
\r
+ private boolean isIgnore(String key) {\r
+ return key.matches(IGNORE_COLUMN);\r
+ }\r
+\r
private boolean isRefType(String string) {\r
return SourceType.isKeyName(string);\r
}\r
String key = keyValue.key;\r
if (key.matches(CDM_UUID_COLUMN)){\r
return true;\r
+ } else if(isIgnore(keyValue.key)) {\r
+ logger.debug("Ignored column" + keyValue.originalKey);\r
+ return true;\r
}\r
return false;\r
}\r
protected boolean analyzeFeatures(STATE state, KeyValue keyValue) {\r
String key = keyValue.key;\r
Pager<DefinedTermBase> features = getTermService().findByTitle(Feature.class, key, null, null, null, null, null, null);\r
+ \r
if (features.getCount() > 1){\r
String message = "More than one feature found matching key " + key;\r
fireWarningEvent(message, state, 4);\r