import org.springframework.transaction.TransactionStatus;\r
\r
import eu.etaxonomy.cdm.api.service.IAgentService;\r
+import eu.etaxonomy.cdm.api.service.IVersionableService;//rajout\r
import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
import eu.etaxonomy.cdm.api.service.IReferenceService;\r
import eu.etaxonomy.cdm.api.service.ITermService;\r
import eu.etaxonomy.cdm.io.common.ICdmImport;\r
import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
import eu.etaxonomy.cdm.io.common.ImportHelper;\r
+import eu.etaxonomy.cdm.model.agent.Contact;\r
+import eu.etaxonomy.cdm.model.agent.Institution;\r
import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.cdm.model.agent.Address;//rajout\r
import eu.etaxonomy.cdm.model.agent.Team;\r
import eu.etaxonomy.cdm.model.common.Annotation;\r
import eu.etaxonomy.cdm.model.common.AnnotationType;\r
import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
import eu.etaxonomy.cdm.model.common.Language;\r
import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.common.Marker;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
import eu.etaxonomy.cdm.model.common.Representation;\r
import eu.etaxonomy.cdm.model.common.TermBase;\r
import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.User;\r
import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
import eu.etaxonomy.cdm.model.description.CategoricalData;\r
import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;\r
import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.cdm.model.description.Modifier;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
import eu.etaxonomy.cdm.model.media.ImageFile;\r
import eu.etaxonomy.cdm.model.media.Media;\r
import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
+import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;\r
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;\r
import eu.etaxonomy.cdm.model.media.Rights;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
import eu.etaxonomy.cdm.model.reference.IArticle;\r
import eu.etaxonomy.cdm.model.reference.IDatabase;\r
import eu.etaxonomy.cdm.model.reference.IGeneric;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
\r
/**\r
* @author h.fradin\r
private Map<String,TaxonDescription> taxonDescriptions = new HashMap<String,TaxonDescription>();\r
private Map<String,NonViralName> taxonNameBases = new HashMap<String,NonViralName>();\r
private Map<String,MeasurementUnit> units = new HashMap<String,MeasurementUnit>();\r
+ private Map<String,TaxonNode> taxonNodes = new HashMap<String,TaxonNode>();\r
+ private Map<String,NamedArea> namedAreas = new HashMap<String,NamedArea>();\r
+ private Map<String,Specimen> specimens = new HashMap<String,Specimen>();\r
\r
private Set<AnnotationType> annotationTypes = new HashSet<AnnotationType>();\r
private Set<Feature> featureSet = new HashSet<Feature>();\r
private Set<StatisticalMeasure> statisticalMeasures = new HashSet<StatisticalMeasure>();\r
private Set<VersionableEntity> featureData = new HashSet<VersionableEntity>();\r
private Set<FeatureTree> featureTrees = new HashSet<FeatureTree>();\r
+ private Set<TaxonomicTree> taxonomicTrees = new HashSet<TaxonomicTree>();\r
\r
private Rights copyright = null;\r
\r
+ private int taxonNamesCount = 0; //XIM ajout\r
+ \r
+ \r
public SDDDescriptionIO(){\r
super();\r
}\r
\r
if (detail != null) {\r
Annotation annotation = Annotation.NewInstance(detail, datasetLanguage);\r
+ annotation.setAnnotationType(AnnotationType.EDITORIAL());\r
sec.addAnnotation(annotation);\r
}\r
\r
ve = m;\r
}\r
\r
- } else if (ve instanceof IdentifiableEntity) {\r
+ } \r
+ //XIM else if\r
+ if (ve instanceof IdentifiableEntity) {\r
IdentifiableEntity ie = (IdentifiableEntity) ve;\r
List<String> labDet = null;\r
\r
ve = ie;\r
\r
}\r
+ \r
+ if (ve instanceof IdentifiableMediaEntity){\r
+ IdentifiableMediaEntity ime = (IdentifiableMediaEntity) ve;\r
+ Element elLinks = parent.getChild("Links",sddNamespace);\r
\r
- List <Element> listMediaObjects = elRepresentation.getChildren("MediaObject",sddNamespace);\r
+ if (elLinks != null) {\r
+\r
+ // <Link rel="Alternate" href="http://www.diversitycampus.net/people/hagedorn"/>\r
+ List<Element> listLinks = elLinks.getChildren("Link", sddNamespace);\r
+ Media link = Media.NewInstance();\r
+ MediaRepresentation mr = MediaRepresentation.NewInstance();\r
+ int k = 0;\r
+ //for each Link\r
+ for (Element elLink : listLinks){\r
+\r
+ try {\r
+\r
+ String rel = elLink.getAttributeValue("rel");\r
+ String href = elLink.getAttributeValue("href");\r
+\r
+ mr.addRepresentationPart(MediaRepresentationPart.NewInstance(href, null));\r
+ link.addRepresentation(mr);\r
+ ime.addMedia(link);\r
+\r
+ } catch (Exception e) {\r
+ //FIXME\r
+ logger.warn("Import of Link " + k + " failed.");\r
+ }\r
+\r
+ if ((++k % modCount) == 0){ logger.info("Links handled: " + k);}\r
+\r
+ }\r
+ }\r
+ }\r
\r
+ List <Element> listMediaObjects = elRepresentation.getChildren("MediaObject",sddNamespace);\r
for (Element elMediaObject : listMediaObjects) {\r
String ref = null;\r
String role = null;\r
this.associateImageWithCdmBase(ref,descriptionSource);\r
}\r
} else {\r
+ //System.out.println(parent.getName());\r
this.associateImageWithCdmBase(ref,ve);\r
}\r
}\r
}\r
\r
}\r
+ \r
+ protected void importGeographicAreas(Element elDataset, Namespace sddNamespace, SDDImportConfigurator sddConfig) {\r
+ Element elGeographicAreas = elDataset.getChild("GeographicAreas",sddNamespace);\r
+ if (elGeographicAreas != null) {\r
+ List<Element> listGeographicAreas = elGeographicAreas.getChildren("GeographicArea", sddNamespace);\r
+ int j = 0;\r
+ \r
+ for (Element elGeographicArea : listGeographicAreas){\r
+\r
+ String id = elGeographicArea.getAttributeValue("id");\r
+ NamedArea na = new NamedArea();\r
+ importRepresentation(elGeographicArea, sddNamespace, na, id, sddConfig);\r
+ namedAreas.put(id,na);\r
+ }\r
+ if ((++j % modCount) == 0){ logger.info("TaxonNames handled: " + j);}\r
+ }\r
+ }\r
+ \r
\r
// imports the representation (label, detail, lang) of a particular SDD element\r
protected void importTechnicalMetadata(Element root, Namespace sddNamespace, SDDImportConfigurator sddConfig){\r
importAgents(elDataset, sddNamespace, sddConfig, success);\r
importPublications(elDataset, sddNamespace, sddConfig, success);\r
importMediaObjects(elDataset, sddNamespace, sddConfig, success);\r
-\r
+ importTaxonHierarchies(elDataset, sddNamespace, sddConfig, success);\r
+ importGeographicAreas(elDataset, sddNamespace, sddConfig);\r
+ importSpecimens(elDataset,sddNamespace, sddConfig);\r
+ \r
+ MarkerType editou = MarkerType.NewInstance("Editor", "editor", "edt") ;\r
if (authors != null) {\r
Team team = Team.NewInstance();\r
for (Iterator<Person> author = authors.values().iterator() ; author.hasNext() ;){\r
team.addTeamMember(author.next());\r
}\r
+ if (editors != null) {\r
+ Marker marker = Marker.NewInstance();\r
+ marker.setMarkerType(editou);\r
+ for (Iterator<Person> editor = editors.values().iterator() ; editor.hasNext() ;){\r
+ Person edit = editor.next();\r
+ edit.addMarker(marker);\r
+ team.addTeamMember(edit);\r
+ }\r
+ }\r
sec.setAuthorTeam(team);\r
sourceReference.setAuthorTeam(team);\r
}\r
-\r
+ \r
if (editors != null) {\r
Person ed = Person.NewInstance();\r
for (Iterator<Person> editor = editors.values().iterator() ; editor.hasNext() ;){\r
sourceReference.addRights(copyright);\r
sec.addRights(copyright);\r
}\r
+ \r
+ // Returns a CdmApplicationController created by the values of this configuration.\r
+ IDescriptionService descriptionService = getDescriptionService();\r
\r
+ for (Iterator<TaxonDescription> k = taxonDescriptions.values().iterator() ; k.hasNext() ;){\r
+ TaxonDescription taxonDescription = k.next();\r
+ // Persists a Description\r
+ descriptionService.save(taxonDescription);\r
+ }\r
+\r
+ //descriptionService.saveFeatureNodeAll(featureNodes.values());\r
+ \r
for (Iterator<String> refCD = taxonDescriptions.keySet().iterator() ; refCD.hasNext() ;){\r
String ref = refCD.next();\r
TaxonDescription td = taxonDescriptions.get(ref);\r
- td.addDescriptionSource(sec);\r
+ //XIM BUG ONAFILE td.addDescriptionSource(sec);\r
if (citations.containsKey(ref)) {\r
IArticle publication = (IArticle) publications.get(citations.get(ref));\r
if (locations.containsKey(ref)) {\r
}\r
logger.info("end makeTaxonDescriptions ...");\r
\r
- sddConfig.setSourceReference(sourceReference);\r
+ //sddConfig.setSourceReference(sourceReference);\r
\r
//saving of all imported data into the CDM db\r
ITermService termService = getTermService();\r
Feature feature = k.next();\r
termService.save(feature); \r
}\r
+ \r
+ \r
+ termService.save(editou);\r
+ \r
+ MarkerType sddGeographicArea = MarkerType.NewInstance("", "SDDGeographicArea", "");\r
+ termService.save(sddGeographicArea);\r
+ for (Iterator<NamedArea> k = namedAreas.values().iterator() ; k.hasNext() ;) {\r
+ Marker areamarker = Marker.NewInstance();\r
+ areamarker.setMarkerType(sddGeographicArea);\r
+ NamedArea area = k.next();\r
+ area.addMarker(areamarker);\r
+ getTermService().save(area);\r
+ } \r
+ \r
if (units != null) {\r
for (Iterator<MeasurementUnit> k = units.values().iterator() ; k.hasNext() ;){\r
MeasurementUnit unit = k.next();\r
referenceService.save(publication); \r
}\r
\r
- IAgentService agentService = getAgentService();\r
- for (Iterator<Person> p = authors.values().iterator() ; p.hasNext() ;) {\r
- Person person = p.next();\r
- agentService.save(person);\r
- }\r
-\r
- for (Iterator<Person> p = editors.values().iterator() ; p.hasNext() ;) {\r
- Person person = p.next();\r
- agentService.save(person);\r
- }\r
-\r
- // Returns a CdmApplicationController created by the values of this configuration.\r
- IDescriptionService descriptionService = getDescriptionService();\r
-\r
- for (Iterator<TaxonDescription> k = taxonDescriptions.values().iterator() ; k.hasNext() ;){\r
- TaxonDescription taxonDescription = k.next();\r
- // Persists a Description\r
- descriptionService.save(taxonDescription); \r
- }\r
-\r
- // descriptionService.saveFeatureNodeAll(featureNodes.values());\r
-\r
for (Iterator<FeatureTree> k = featureTrees.iterator() ; k.hasNext() ;) {\r
FeatureTree tree = k.next();\r
getFeatureTreeService().save(tree);\r
}\r
+ \r
+ for (Iterator<TaxonomicTree> k = taxonomicTrees.iterator() ; k.hasNext() ;) {\r
+ TaxonomicTree tree = k.next();\r
+ getTaxonTreeService().save(tree);\r
+ }\r
+ \r
+ for (Iterator<Specimen> k = specimens.values().iterator() ; k.hasNext() ;) {\r
+ Specimen specimen = k.next();\r
+ getOccurrenceService().save(specimen);\r
+ }\r
\r
}\r
\r
datasetLanguage = Language.ENGLISH();\r
}\r
}\r
+ \r
+ protected void importSpecimens(Element elDataset, Namespace sddNamespace, SDDImportConfigurator sddConfig) {\r
+ logger.info("start Specimens ...");\r
+ Element elSpecimens = elDataset.getChild("Specimens",sddNamespace);\r
+ if (elSpecimens != null){\r
+ List<Element> listSpecimens = elSpecimens.getChildren("Specimen", sddNamespace);\r
+ int j = 0;\r
+ for (Element elSpecimen : listSpecimens) {\r
+ String id = elSpecimen.getAttributeValue("id");\r
+ Specimen speci = null;\r
+ if (!id.equals("")) {\r
+ speci = Specimen.NewInstance();\r
+ specimens.put(id,speci);\r
+ importRepresentation(elSpecimen, sddNamespace, speci, id, sddConfig);\r
+ }\r
+ }\r
+ \r
+ }\r
+ }\r
\r
+ \r
+\r
+ \r
+ \r
+ \r
// imports the revision data associated with the Dataset (authors, modifications)\r
protected void importRevisionData(Element elDataset, Namespace sddNamespace){\r
// <RevisionData>\r
logger.info("start RevisionData ...");\r
Element elRevisionData = elDataset.getChild("RevisionData",sddNamespace);\r
-\r
- // <Creators>\r
- Element elCreators = elRevisionData.getChild("Creators",sddNamespace);\r
-\r
- // <Agent role="aut" ref="a1"/>\r
- List<Element> listAgents = elCreators.getChildren("Agent", sddNamespace);\r
-\r
- int j = 0;\r
- //for each Agent\r
- for (Element elAgent : listAgents){\r
-\r
- String role = elAgent.getAttributeValue("role");\r
- String ref = elAgent.getAttributeValue("ref");\r
- if (role.equals("aut")) {\r
- if(!ref.equals("")) {\r
- authors.put(ref, null);\r
+ if (elRevisionData != null){\r
+ // <Creators>\r
+ Element elCreators = elRevisionData.getChild("Creators",sddNamespace);\r
+ \r
+ // <Agent role="aut" ref="a1"/>\r
+ List<Element> listAgents = elCreators.getChildren("Agent", sddNamespace);\r
+ \r
+ int j = 0;\r
+ //for each Agent\r
+ for (Element elAgent : listAgents){\r
+ \r
+ String role = elAgent.getAttributeValue("role");\r
+ String ref = elAgent.getAttributeValue("ref");\r
+ if (role.equals("aut")) {\r
+ if(!ref.equals("")) {\r
+ authors.put(ref, null);\r
+ }\r
}\r
- }\r
- if (role.equals("edt")) {\r
- if(!ref.equals("")) {\r
- editors.put(ref, null);\r
+ if (role.equals("edt")) {\r
+ if(!ref.equals("")) {\r
+ editors.put(ref, null);\r
+ }\r
}\r
+ if ((++j % modCount) == 0){ logger.info("Agents handled: " + j);}\r
+ \r
}\r
-\r
- if ((++j % modCount) == 0){ logger.info("Agents handled: " + j);}\r
-\r
- }\r
-\r
- // <DateModified>2006-04-08T00:00:00</DateModified>\r
- String stringDateModified = (String)ImportHelper.getXmlInputValue(elRevisionData, "DateModified",sddNamespace);\r
-\r
- if (stringDateModified != null) {\r
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");\r
- Date d = null;\r
- try {\r
- d = sdf.parse(stringDateModified);\r
- } catch(Exception e) {\r
- System.err.println("Exception :");\r
- e.printStackTrace();\r
- }\r
-\r
- DateTime updated = null;\r
- if (d != null) {\r
- updated = new DateTime(d);\r
- sourceReference.setUpdated(updated);\r
- sec.setUpdated(updated);\r
+ \r
+ // <DateModified>2006-04-08T00:00:00</DateModified>\r
+ String stringDateModified = (String)ImportHelper.getXmlInputValue(elRevisionData, "DateModified",sddNamespace);\r
+ \r
+ if (stringDateModified != null) {\r
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");\r
+ Date d = null;\r
+ try {\r
+ d = sdf.parse(stringDateModified);\r
+ } catch(Exception e) {\r
+ System.err.println("Exception :");\r
+ e.printStackTrace();\r
+ }\r
+ \r
+ DateTime updated = null;\r
+ if (d != null) {\r
+ updated = new DateTime(d);\r
+ sourceReference.setUpdated(updated);\r
+ sec.setUpdated(updated);\r
+ }\r
}\r
}\r
}\r
int j = 0;\r
//for each CategoricalCharacter\r
for (Element elCategoricalCharacter : elCategoricalCharacters){\r
-\r
try {\r
\r
String idCC = elCategoricalCharacter.getAttributeValue("id");\r
// <StateDefinition id="s1">\r
List<Element> elStateDefinitions = elStates.getChildren("StateDefinition",sddNamespace);\r
TermVocabulary<State> termVocabularyState = new TermVocabulary<State>();\r
-\r
int k = 0;\r
//for each StateDefinition\r
for (Element elStateDefinition : elStateDefinitions){\r
termVocabularyState.addTerm(state);\r
stateDatas.put(idSD,stateData);\r
}\r
-\r
categoricalCharacter.addSupportedCategoricalEnumeration(termVocabularyState);\r
features.put(idCC, categoricalCharacter);\r
\r
NonViralName taxonNameBase = taxonNameBases.get(ref);\r
taxon = Taxon.NewInstance(taxonNameBase, sec);\r
}\r
+ else {\r
+ NonViralName tnb = NonViralName.NewInstance(null);\r
+ String id = new String(""+taxonNamesCount);\r
+ IdentifiableSource source = IdentifiableSource.NewInstance(id, "TaxonName");\r
+ importRepresentation(elCodedDescription, sddNamespace, tnb, id, sddConfig);\r
+ tnb.addSource(source);\r
+ taxonNameBases.put(id ,tnb);\r
+ taxonNamesCount++;\r
+ taxon = Taxon.NewInstance(tnb, sec);\r
+ }\r
\r
String refCitation = "";\r
String location = "";\r
int k = 0;\r
//for each Categorical\r
for (Element elCategorical : elCategoricals){\r
- if ((++k % modCount) == 0){ logger.info("Categorical handled: " + (k-1));}\r
+ if ((++k % modCount) == 0){ logger.warn("Categorical handled: " + (k-1));}\r
ref = elCategorical.getAttributeValue("ref");\r
Feature feature = features.get(ref);\r
CategoricalData categoricalData = CategoricalData.NewInstance();\r
k = 0;\r
//for each Quantitative\r
for (Element elQuantitative : elQuantitatives){\r
- if ((++k % modCount) == 0){ logger.info("Quantitative handled: " + (k-1));}\r
+ if ((++k % modCount) == 0){ logger.warn("Quantitative handled: " + (k-1));}\r
ref = elQuantitative.getAttributeValue("ref");\r
Feature feature = features.get(ref);\r
QuantitativeData quantitativeData = QuantitativeData.NewInstance();\r
// <Measure type="Min" value="2.3"/>\r
List<Element> elMeasures = elQuantitative.getChildren("Measure", sddNamespace);\r
int l = 0;\r
+ \r
//for each State\r
for (Element elMeasure : elMeasures){\r
if ((++l % modCount) == 0){ logger.info("States handled: " + (l-1));}\r
String type = elMeasure.getAttributeValue("type");\r
String value = elMeasure.getAttributeValue("value");\r
- float v = Float.parseFloat(value);\r
+ if (value.contains(",")) {\r
+ value = value.replace(',', '.');\r
+ }\r
+ Float v = Float.parseFloat(value);\r
+ //Float v = new Float(0);\r
StatisticalMeasure t = null;\r
if (type.equals("Min")) {\r
t = StatisticalMeasure.MIN();\r
} else if (type.equals("Max")) {\r
t = StatisticalMeasure.MAX();\r
} else if (type.equals("SD")) {\r
- // Create a new StatisticalMeasure for standard deviation\r
t = StatisticalMeasure.STANDARD_DEVIATION();\r
} else if (type.equals("N")) {\r
t = StatisticalMeasure.SAMPLE_SIZE();\r
+ } else if (type.equals("UMethLower")) {\r
+ t = StatisticalMeasure.TYPICAL_LOWER_BOUNDARY();\r
+ } else if (type.equals("UMethUpper")) {\r
+ t = StatisticalMeasure.TYPICAL_UPPER_BOUNDARY();\r
+ } else if (type.equals("Var")) {\r
+ t = StatisticalMeasure.VARIANCE();\r
} else {\r
t = StatisticalMeasure.NewInstance(type,type,type);\r
statisticalMeasures.add(t);\r
if (!location.equals("")){\r
locations.put(idCD, location);\r
}\r
-\r
+ \r
taxonDescription.setDescriptiveSystem(featureSet);\r
\r
- taxonDescriptions.put(idCD, taxonDescription);\r
+ taxonDescriptions.put(idCD, taxonDescription);//XIM PB ici\r
\r
} catch (Exception e) {\r
//FIXME\r
// <Agents>\r
logger.info("start Agents ...");\r
Element elAgents = elDataset.getChild("Agents",sddNamespace);\r
+ if (elAgents != null) {\r
+ // <Agent id="a1">\r
+ List <Element> listAgents = elAgents.getChildren("Agent", sddNamespace);\r
+ int j = 0;\r
+ //for each Agent\r
+ for (Element elAgent : listAgents){\r
+\r
+ try {\r
\r
- // <Agent id="a1">\r
- List <Element> listAgents = elAgents.getChildren("Agent", sddNamespace);\r
- int j = 0;\r
- //for each Agent\r
- for (Element elAgent : listAgents){\r
+ String idA = elAgent.getAttributeValue("id");\r
\r
- try {\r
+ // <Representation>\r
+ // <Label>Kevin Thiele</Label>\r
+ // <Detail role="Description">Ali Baba is also known as r.a.m.</Detail>\r
+ // </Representation>\r
+ Person person = Person.NewInstance();\r
+ importRepresentation(elAgent, sddNamespace, person, idA, sddConfig);\r
+ person.addSource(IdentifiableSource.NewInstance(idA, "Agent"));\r
\r
- String idA = elAgent.getAttributeValue("id");\r
+ /*XIM <Links>\r
+ Element elLinks = elAgent.getChild("Links",sddNamespace);\r
\r
- // <Representation>\r
- // <Label>Kevin Thiele</Label>\r
- // <Detail role="Description">Ali Baba is also known as r.a.m.</Detail>\r
- // </Representation>\r
- Person person = Person.NewInstance();\r
- importRepresentation(elAgent, sddNamespace, person, idA, sddConfig);\r
- person.addSource(IdentifiableSource.NewInstance(idA, "Agent"));\r
+ if (elLinks != null) {\r
\r
- // <Links>\r
- Element elLinks = elAgent.getChild("Links",sddNamespace);\r
+ // <Link rel="Alternate" href="http://www.diversitycampus.net/people/hagedorn"/>\r
+ List<Element> listLinks = elLinks.getChildren("Link", sddNamespace);\r
+ int k = 0;\r
+ //for each Link\r
+ for (Element elLink : listLinks){\r
\r
- if (elLinks != null) {\r
+ try {\r
\r
- // <Link rel="Alternate" href="http://www.diversitycampus.net/people/hagedorn"/>\r
- List<Element> listLinks = elLinks.getChildren("Link", sddNamespace);\r
- int k = 0;\r
- //for each Link\r
- for (Element elLink : listLinks){\r
+ String rel = elLink.getAttributeValue("rel");\r
+ String href = elLink.getAttributeValue("href");\r
\r
- try {\r
+ Media link = Media.NewInstance();\r
+ MediaRepresentation mr = MediaRepresentation.NewInstance();\r
+ mr.addRepresentationPart(MediaRepresentationPart.NewInstance(href, null));\r
+ link.addRepresentation(mr);\r
+ person.addMedia(link);\r
\r
- String rel = elLink.getAttributeValue("rel");\r
- String href = elLink.getAttributeValue("href");\r
+ } catch (Exception e) {\r
+ //FIXME\r
+ logger.warn("Import of Link " + k + " failed.");\r
+ success = false; \r
+ }\r
\r
- Media link = Media.NewInstance();\r
- MediaRepresentation mr = MediaRepresentation.NewInstance();\r
- mr.addRepresentationPart(MediaRepresentationPart.NewInstance(href, null));\r
- link.addRepresentation(mr);\r
- person.addMedia(link);\r
+ if ((++k % modCount) == 0){ logger.info("Links handled: " + k);}\r
\r
- } catch (Exception e) {\r
- //FIXME\r
- logger.warn("Import of Link " + k + " failed.");\r
- success = false; \r
}\r
+ }\r
+ */\r
+ if (authors.containsKey(idA)) {\r
+ authors.put(idA,person);\r
+ }\r
\r
- if ((++k % modCount) == 0){ logger.info("Links handled: " + k);}\r
-\r
+ if (editors.containsKey(idA)) {\r
+ editors.put(idA, person);\r
}\r
- }\r
- if (authors.containsKey(idA)) {\r
- authors.put(idA,person);\r
- }\r
\r
- if (editors.containsKey(idA)) {\r
- editors.put(idA, person);\r
+ } catch (Exception e) {\r
+ //FIXME\r
+ logger.warn("Import of Agent " + j + " failed.");\r
+ success = false; \r
}\r
\r
- } catch (Exception e) {\r
- //FIXME\r
- logger.warn("Import of Agent " + j + " failed.");\r
- success = false; \r
- }\r
-\r
- if ((++j % modCount) == 0){ logger.info("Agents handled: " + j);}\r
+ if ((++j % modCount) == 0){ logger.info("Agents handled: " + j);}\r
\r
+ }\r
}\r
}\r
\r
String id = "";\r
\r
try {\r
-\r
String idMO = elMO.getAttributeValue("id");\r
id = idMO;\r
\r
\r
ImageMetaData imageMetaData = ImageMetaData.newInstance();\r
ImageFile image = null;\r
-\r
if (href.substring(0,7).equals("http://")) {\r
try{\r
URL url = new URL(href);\r
\r
- imageMetaData.readMetaData(url.toURI());\r
+ imageMetaData.readMetaData(url.toURI(), 0);\r
image = ImageFile.NewInstance(url.toString(), null, imageMetaData);\r
} catch (MalformedURLException e) {\r
logger.error("Malformed URL", e);\r
String sns = sddConfig.getSourceNameString();\r
File f = new File(sns);\r
File parent = f.getParentFile();\r
- String fi = parent.toString() + File.separator + href;\r
+ String fi = href;\r
+ //XIMString fi = parent.toString() + File.separator + href; enlever le file:/ ou truc du genre\r
File file = new File(fi);\r
- imageMetaData.readMetaData(file.toURI());\r
+ imageMetaData.readMetaData(file.toURI(), 0);\r
image = ImageFile.NewInstance(file.toString(), null, imageMetaData);\r
}\r
-\r
MediaRepresentation representation = MediaRepresentation.NewInstance(imageMetaData.getMimeType(), null);\r
representation.addRepresentationPart(image);\r
\r
// if (dtb!=null) {\r
// if (k == 0) {\r
dtb.addMedia(media);\r
+ //System.out.println(dtb.getLabel());\r
// } else {\r
// Media me = (Media) media.clone();\r
// dtb.addMedia(me);\r
// if (rb!=null) {\r
// if (k == 0) {\r
rb.addMedia(media);\r
+ //System.out.println(rb.getTitle());\r
// } else {\r
// Media me = (Media) media.clone();\r
// rb.addMedia(me);\r
// }\r
// }\r
- }\r
+ }/* else if (lcb.get(k) instanceof TaxonNameBase){\r
+ TaxonNameBase tb = (TaxonNameBase) lcb.get(k);\r
+ tb.addMedia(media);\r
+ }*/\r
}\r
}\r
}\r
\r
} catch (Exception e) {\r
//FIXME\r
- logger.warn("Could not attached MediaObject " + j + "(SDD: " + id + ") to several objects.");\r
+ logger.warn("Could not attach MediaObject " + j + "(SDD: " + id + ") to several objects.");\r
success = false; \r
}\r
\r
int j = 0;\r
//for each DescriptiveConcept\r
int g = 1;\r
+\r
for (Element elDescriptiveConcept : listDescriptiveConcepts){\r
\r
String id = elDescriptiveConcept.getAttributeValue("id");\r
// <Representation>\r
// <Label>Body</Label>\r
importRepresentation(elDescriptiveConcept, sddNamespace, feature, id, sddConfig);\r
+ //System.out.println(feature.getLabel()+id);\r
features.put("g" + g, feature);\r
g++;\r
+ /*Element elModifiers = elDescriptiveConcept.getChild("Modifiers", sddNamespace);\r
+ if (elModifiers !=null){\r
+ List<Element> listModifiers = elModifiers.getChildren("Modifier", sddNamespace);\r
+ for (Element elModifier : listModifiers) {\r
+ TermVocabulary<Modifier> termVocabularyState = new TermVocabulary<Modifier>("test","test","test","test");\r
+ Modifier modif = Modifier.NewInstance();\r
+ String idmod = elModifier.getAttributeValue("id");\r
+ importRepresentation(elModifier, sddNamespace, modif, idmod, sddConfig);\r
+ termVocabularyState.addTerm(modif);\r
+ //XIMfeature.addRecommendedModifierEnumeration(termVocabularyState);\r
+ }\r
+ }*/\r
+ \r
fn.setFeature(feature);\r
\r
// TODO if an OriginalSource can be attached to a FeatureNode or a Feature \r
// } else {\r
// source = OriginalSource.NewInstance(id, "DescriptiveConcept");\r
// }\r
- // fn.addSource(source);\r
+ // f.addSource(source);\r
\r
featureNodes.put(id,fn);\r
}\r
}\r
}\r
}\r
-\r
- // imports the descriptions of taxa (specimens TODO)\r
+ \r
protected void importCharacterTrees(Element elDataset, Namespace sddNamespace, SDDImportConfigurator sddConfig, boolean success){\r
// <CharacterTrees>\r
logger.info("start CharacterTrees ...");\r
List<Element> listCharacterTrees = elCharacterTrees.getChildren("CharacterTree", sddNamespace);\r
int j = 0;\r
//for each CharacterTree\r
+ for (Element elCharacterTree : listCharacterTrees){\r
+ try {\r
+ Element elRepresentation = elCharacterTree.getChild("Representation",sddNamespace);\r
+ String label = (String)ImportHelper.getXmlInputValue(elRepresentation,"Label",sddNamespace);\r
+ Element elDesignedFor = elCharacterTree.getChild("DesignedFor",sddNamespace);\r
+ /*XIMList<Element> listRoles = elDesignedFor.getChildren("Role",sddNamespace);\r
+ boolean isgroups = false;\r
+\r
+ for (Element elRole : listRoles){\r
+ if (elRole.getText().equals("Filtering")) {\r
+ isgroups = true;\r
+ }\r
+ }*/\r
+\r
+ // only treats the case of flat groups containing characters\r
+ // should also be added: dependencies between characters, \r
+ //XIM\r
+\r
+ FeatureTree feattree = FeatureTree.NewInstance();\r
+ importRepresentation(elCharacterTree, sddNamespace, feattree, "", sddConfig);\r
+ FeatureNode root = feattree.getRoot();\r
+ //XIM several <Nodes> found in some files, is it correct ?\r
+ List<Element> listelNodes = elCharacterTree.getChildren("Nodes", sddNamespace);\r
+ for (Element elNodes : listelNodes) {\r
+ List<Element> listNodes = elNodes.getChildren("Node", sddNamespace);\r
+ if (listNodes != null) {\r
+ for (Element elNode : listNodes){\r
+ String idN = elNode.getAttributeValue("id");\r
+ FeatureNode fn = null;\r
+ if (!idN.equals("")) {\r
+ Element elDescriptiveConcept = elNode.getChild("DescriptiveConcept", sddNamespace);\r
+ if (elDescriptiveConcept != null){\r
+ String refDC = elDescriptiveConcept.getAttributeValue("ref");\r
+ //System.out.println(refDC);\r
+ fn = featureNodes.get(refDC);\r
+ }\r
+ else {\r
+ fn = FeatureNode.NewInstance();\r
+ featureNodes.put(idN,fn);\r
+ }\r
+ Element elParent = elNode.getChild("Parent", sddNamespace);\r
+ if (elParent!=null){\r
+ String refP = elParent.getAttributeValue("ref");\r
+ if (!refP.equals("")) {\r
+ FeatureNode parent = nodes.get(refP);\r
+ parent.addChild(fn);\r
+ }\r
+ }\r
+ else {\r
+ fn = FeatureNode.NewInstance();\r
+ root.addChild(fn);\r
+ }\r
+ }\r
+ nodes.put(idN, fn);\r
+ }\r
+ //System.out.println("zic");\r
+ List<Element> listCharNodes = elNodes.getChildren("CharNode", sddNamespace);\r
+ for (Element elCharNode : listCharNodes){\r
+ Element elParent = elCharNode.getChild("Parent", sddNamespace);\r
+ Element elCharacter = elCharNode.getChild("Character", sddNamespace); \r
+ FeatureNode fn = FeatureNode.NewInstance();\r
+ if (elParent!=null){\r
+ String refP = elParent.getAttributeValue("ref");\r
+ if ((refP!=null)&&(!refP.equals(""))) {\r
+ FeatureNode parent = nodes.get(refP);\r
+ if (parent==null){\r
+ parent = root; // because of Delta example\r
+ }\r
+ parent.addChild(fn);\r
+ }\r
+ }\r
+ String refC = elCharacter.getAttributeValue("ref");\r
+ if ((refC!=null)&&(!refC.equals(""))){\r
+ Feature character = features.get(refC);\r
+ fn.setFeature(character);\r
+ // if method setParent() in FeatureNode becomes visible\r
+ // fn.setParent(parent);\r
+ }\r
+ else {\r
+ refC = String.valueOf(taxonNamesCount);\r
+ taxonNamesCount++;\r
+ }\r
+ nodes.put(refC, fn);\r
+ }\r
+ }\r
+ }\r
+ featureTrees.add(feattree);\r
+ }\r
+\r
+ catch (Exception e) {\r
+ //FIXME\r
+ logger.warn("Import of Character tree " + j + " failed.");\r
+ success = false; \r
+ }\r
+\r
+ if ((++j % modCount) == 0){ logger.info("CharacterTrees handled: " + j);}\r
+\r
+ }\r
+\r
+ }\r
+ }\r
\r
+ \r
+ \r
+ \r
+ \r
+ protected void importTaxonHierarchies(Element elDataset, Namespace sddNamespace, SDDImportConfigurator sddConfig, boolean success){\r
+\r
+ logger.info("start TaxonHierarchies ...");\r
+ Element elTaxonHierarchies = elDataset.getChild("TaxonHierarchies",sddNamespace);\r
+\r
+ if (elTaxonHierarchies != null) {\r
+ List<Element> listTaxonHierarchies = elTaxonHierarchies.getChildren("TaxonHierarchy", sddNamespace);\r
+ int j = 0;\r
+ for (Element elTaxonHierarchy : listTaxonHierarchies){\r
+ try {\r
+ Element elRepresentation = elTaxonHierarchy.getChild("Representation",sddNamespace);\r
+ String label = (String)ImportHelper.getXmlInputValue(elRepresentation,"Label",sddNamespace);\r
+\r
+ TaxonomicTree taxonomicTree = TaxonomicTree.NewInstance(label);\r
+ importRepresentation(elTaxonHierarchy, sddNamespace, taxonomicTree, "", sddConfig);\r
+ Set<TaxonNode> root = taxonomicTree.getRootNodes();\r
+ Element elNodes = elTaxonHierarchy.getChild("Nodes", sddNamespace);\r
+ List<Element> listNodes = elNodes.getChildren("Node", sddNamespace);\r
+ for (Element elNode : listNodes){\r
+ String idN = elNode.getAttributeValue("id");\r
+ TaxonNameBase tnb = null;\r
+ if (!idN.equals("")) {\r
+ Element elTaxonName = elNode.getChild("TaxonName", sddNamespace);\r
+ String refTN = elTaxonName.getAttributeValue("ref");\r
+ tnb = taxonNameBases.get(refTN);\r
+ Taxon taxonou = (Taxon) tnb.getTaxa().iterator().next() ;\r
+ Element elParent = elNode.getChild("Parent", sddNamespace);\r
+ if (elParent!=null){\r
+ String refP = elParent.getAttributeValue("ref");\r
+ if (!refP.equals("")) {\r
+ TaxonNode parent = taxonNodes.get(refP);\r
+ //TaxonNode child = parent.addChildTaxon(Taxon.NewInstance(tnb, sec), sec, "", Synonym.NewInstance(tnb, sec));\r
+ TaxonNode child = parent.addChildTaxon(taxonou, sec, "", Synonym.NewInstance(tnb, sec));\r
+ taxonNodes.put(idN,child);\r
+ }\r
+ }\r
+ else {\r
+ //XIM addChildtaxon (taxon, referencebase ???\r
+ //TaxonNode tn = taxonomicTree.addChildTaxon(Taxon.NewInstance(tnb, sec), sec, "", Synonym.NewInstance(tnb, sec));\r
+ TaxonNode tn = taxonomicTree.addChildTaxon(taxonou, sec, "", Synonym.NewInstance(tnb, sec));\r
+ taxonNodes.put(idN,tn);\r
+ }\r
+ }\r
+ }\r
+\r
+ taxonomicTrees.add(taxonomicTree);\r
+ }\r
+\r
+ catch (Exception e) {\r
+ //FIXME\r
+ logger.warn("Import of Taxon Hierarchy " + j + " failed.");\r
+ success = false; \r
+ }\r
+\r
+ if ((++j % modCount) == 0){ logger.info("TaxonHierarchies handled: " + j);}\r
+\r
+ }\r
+\r
+ }\r
+ }\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ \r
+ // imports the descriptions of taxa (specimens TODO)\r
+ protected void importCharacterTrees2(Element elDataset, Namespace sddNamespace, SDDImportConfigurator sddConfig, boolean success){\r
+ // <CharacterTrees>\r
+ logger.info("start CharacterTrees ...");\r
+ Element elCharacterTrees = elDataset.getChild("CharacterTrees",sddNamespace);\r
+\r
+ // <CharacterTree>\r
+\r
+ if (elCharacterTrees != null) {\r
+ List<Element> listCharacterTrees = elCharacterTrees.getChildren("CharacterTree", sddNamespace);\r
+ int j = 0;\r
+ //for each CharacterTree\r
for (Element elCharacterTree : listCharacterTrees){\r
\r
try {\r
\r
// only treats the case of flat groups containing characters\r
// should also be added: dependencies between characters, \r
-\r
- if ((label.contains("group")) || (isgroups)) {\r
+ //XIM\r
+ if ((label.contains("group")) || (isgroups) || (1==1)) {\r
\r
FeatureTree groups = FeatureTree.NewInstance();\r
importRepresentation(elCharacterTree, sddNamespace, groups, "", sddConfig);\r
FeatureNode root = groups.getRoot();\r
-\r
+ \r
Element elNodes = elCharacterTree.getChild("Nodes", sddNamespace);\r
List<Element> listNodes = elNodes.getChildren("Node", sddNamespace);\r
for (Element elNode : listNodes){\r
List<Element> listCharNodes = elNodes.getChildren("CharNode", sddNamespace);\r
for (Element elCharNode : listCharNodes){\r
Element elParent = elCharNode.getChild("Parent", sddNamespace);\r
- String refP = elParent.getAttributeValue("ref");\r
- Element elCharacter = elCharNode.getChild("Character", sddNamespace);\r
- String refC = elCharacter.getAttributeValue("ref");\r
+ Element elCharacter = elCharNode.getChild("Character", sddNamespace); \r
FeatureNode fn = FeatureNode.NewInstance();\r
- if (!refP.equals("")) {\r
- FeatureNode parent = nodes.get(refP);\r
- parent.addChild(fn);\r
+ if (elParent!=null){\r
+ String refP = elParent.getAttributeValue("ref");\r
+ if (!refP.equals("")) {\r
+ FeatureNode parent = nodes.get(refP);\r
+ parent.addChild(fn);\r
+ }\r
+ }\r
+ String refC = elCharacter.getAttributeValue("ref");\r
+ if (!refC.equals("")){\r
Feature character = features.get(refC);\r
fn.setFeature(character);\r
// if method setParent() in FeatureNode becomes visible\r