import eu.etaxonomy.cdm.model.reference.Reference;\r
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
-\r
+import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;\r
\r
/**\r
* @author a.mueller\r
AUTHOR,\r
NAME,\r
PUBLICATION,\r
+ ID\r
}\r
\r
public enum IpniRank{\r
result = buildAuthorList(content, services, config);\r
}else if (serviceType.equals(ServiceType.NAME)){\r
result = buildNameList(content, services, config);\r
- }else{\r
+ }else {\r
result = buildPublicationList(content, services, config);\r
}\r
if(responseCode == HttpURLConnection.HTTP_OK){\r
// error\r
return null;\r
}\r
+ \r
+ public InputStream queryServiceForID (String request, URL serviceUrl){\r
+ \r
+ try {\r
+ \r
+ // create the request url\r
+ URL newUrl = new URL(serviceUrl.getProtocol(),\r
+ serviceUrl.getHost(),\r
+ serviceUrl.getPort(),\r
+ serviceUrl.getPath() \r
+ + "?" + request);\r
+ \r
+ \r
+ URI newUri = newUrl.toURI();\r
+ \r
+ logger.info("Firing request for URI: " + newUri);\r
+ \r
+ HttpResponse response = UriUtils.getResponse(newUri, null);\r
+ \r
+ int responseCode = response.getStatusLine().getStatusCode();\r
+ \r
+ // get the content at the resource\r
+ InputStream content = response.getEntity().getContent();\r
+ return content;\r
+ \r
+ } catch (IOException e) {\r
+ logger.error("No content for request: " + request);\r
+ } catch (URISyntaxException e) {\r
+ logger.error("Given URL could not be transformed into URI", e);\r
+ }\r
+ \r
+ return null;\r
+ \r
+ }\r
+\r
+ \r
+\r
\r
private List<Reference> buildPublicationList( InputStream content, ICdmApplicationConfiguration services, IIpniServiceConfigurator iConfig) throws IOException {\r
IpniServicePublicationConfigurator config = (IpniServicePublicationConfigurator)iConfig;\r
String author = valueMap.get(PUBLICATION_AUTHOR_TEAM);\r
if (StringUtils.isNotBlank(author)){\r
Team team = Team.NewTitledInstance(author, author);\r
- ref.setAuthorTeam(team);\r
+ ref.setAuthorship(team);\r
}\r
\r
//remarks\r
\r
\r
String tl2AuthorString = valueMap.get(TL2_AUTHOR);\r
- if (ref.getAuthorTeam() == null){\r
+ if (ref.getAuthorship() == null){\r
Team tl2Author = Team.NewTitledInstance(tl2AuthorString, null);\r
- ref.setAuthorTeam(tl2Author);\r
+ ref.setAuthorship(tl2Author);\r
}else{\r
//TODO parse name, \r
- ref.getAuthorTeam().setTitleCache(tl2AuthorString, true);\r
+ ref.getAuthorship().setTitleCache(tl2AuthorString, true);\r
ref.addAnnotation(Annotation.NewInstance(tl2AuthorString, AnnotationType.EDITORIAL(), Language.ENGLISH()));\r
}\r
\r
\r
//dates\r
- TimePeriod date = TimePeriod.parseString(valueMap.get(DATE));\r
+ TimePeriod date = TimePeriodParser.parseString(valueMap.get(DATE));\r
ref.setDatePublished(date);\r
\r
\r
\r
String line = reader.readLine();\r
while (StringUtils.isNotBlank(line)){\r
+ \r
BotanicalName name = getNameFromLine(line,parameterMap, appConfig);\r
result.add(name);\r
line = reader.readLine();\r
+ \r
}\r
\r
\r
//rank\r
try {\r
String rankStr = nomalizeRank(valueMap.get(RANK));\r
- name.setRank(Rank.getRankByNameOrAbbreviation(rankStr, NomenclaturalCode.ICNAFP, true));\r
+ name.setRank(Rank.getRankByNameOrIdInVoc(rankStr, NomenclaturalCode.ICNAFP, true));\r
} catch (UnknownCdmTypeException e) {\r
logger.warn("Rank was unknown");\r
}\r
name.setCombinationAuthorTeam(Team.NewTitledInstance(valueMap.get(PUBLISHING_AUTHOR), valueMap.get(PUBLISHING_AUTHOR)));\r
\r
//publication\r
- Reference ref = ReferenceFactory.newGeneric();\r
- ref.setTitleCache(valueMap.get(PUBLICATION));\r
- TimePeriod datePublished = TimePeriod.parseString(valueMap.get(PUBLICATION_YEAR_FULL));\r
+ Reference<?> ref = ReferenceFactory.newGeneric();\r
+ ref.setTitleCache(valueMap.get(PUBLICATION), true);\r
+ TimePeriod datePublished = TimePeriodParser.parseString(valueMap.get(PUBLICATION_YEAR_FULL));\r
name.setNomenclaturalReference(ref);\r
\r
//name status\r
String statusString = valueMap.get(NAME_STATUS);\r
if (StringUtils.isNotBlank(statusString)){\r
try {\r
- statusType = NomenclaturalStatusType.getNomenclaturalStatusTypeByAbbreviation(statusString);\r
+ statusType = NomenclaturalStatusType.getNomenclaturalStatusTypeByAbbreviation(statusString, name);\r
NomenclaturalStatus nomStatus = NomenclaturalStatus.NewInstance(statusType);\r
name.addStatus(nomStatus);\r
} catch (UnknownCdmTypeException e) {\r
\r
//gathering period\r
String collectionDateAsText = valueMap.get(COLLECTION_DATE_AS_TEXT);\r
- TimePeriod gatheringPeriod = TimePeriod.parseString(collectionDateAsText);\r
+ TimePeriod gatheringPeriod = TimePeriodParser.parseString(collectionDateAsText);\r
\r
try {\r
gatheringPeriod.setStartDay(getIntegerDateValueOrNull(valueMap, COLLECTION_DAY1));\r
person.addSource(OriginalSourceType.Lineage, valueMap.get(ID), "Author", citation, valueMap.get(VERSION));\r
\r
//dates\r
- TimePeriod lifespan = TimePeriod.parseString(valueMap.get(DATES));\r
+ TimePeriod lifespan = TimePeriodParser.parseString(valueMap.get(DATES));\r
person.setLifespan(lifespan);\r
\r
//alternative_names\r
return serviceUrl;\r
}\r
\r
+\r
+ @Override\r
+ public InputStream getNamesById(String id) {\r
+ \r
+ \r
+ String request = "id="+id + "&output_format=lsid-metadata";\r
+ return queryServiceForID(request, getServiceUrl(IIpniService.ID_NAMESEARCH_SERVICE_URL));\r
+ \r
+ }\r
+ \r
+ @Override\r
+ public InputStream getPublicationsById(String id) {\r
+ \r
+ \r
+ String request = "id="+id ;\r
+ return queryServiceForID(request, getServiceUrl(IIpniService.ID_PUBLICATION_SERVICE_URL));\r
+ \r
+ }\r
+\r
\r
\r
}\r