Revision e133b83b
Added by Andreas Müller over 15 years ago
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelReferenceImport.java | ||
---|---|---|
25 | 25 |
import static eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES.NOMENCLATURAL; |
26 | 26 |
import static eu.etaxonomy.cdm.io.common.ImportHelper.OBLIGATORY; |
27 | 27 |
import static eu.etaxonomy.cdm.io.common.ImportHelper.OVERWRITE; |
28 |
import static eu.etaxonomy.cdm.io.common.ImportHelper.NO_OVERWRITE; |
|
28 | 29 |
|
30 |
import java.lang.reflect.Constructor; |
|
31 |
import java.lang.reflect.InvocationTargetException; |
|
29 | 32 |
import java.sql.ResultSet; |
30 | 33 |
import java.sql.SQLException; |
31 | 34 |
import java.util.ArrayList; |
... | ... | |
42 | 45 |
import org.springframework.stereotype.Component; |
43 | 46 |
|
44 | 47 |
import eu.etaxonomy.cdm.common.CdmUtils; |
45 |
import eu.etaxonomy.cdm.io.common.CdmIoMapperBase; |
|
48 |
import eu.etaxonomy.cdm.io.common.CdmAttributeMapperBase; |
|
49 |
import eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase; |
|
46 | 50 |
import eu.etaxonomy.cdm.io.common.CdmIoMapping; |
47 | 51 |
import eu.etaxonomy.cdm.io.common.ICdmIO; |
48 | 52 |
import eu.etaxonomy.cdm.io.common.IImportConfigurator; |
... | ... | |
63 | 67 |
import eu.etaxonomy.cdm.model.reference.Journal; |
64 | 68 |
import eu.etaxonomy.cdm.model.reference.PrintSeries; |
65 | 69 |
import eu.etaxonomy.cdm.model.reference.Proceedings; |
70 |
import eu.etaxonomy.cdm.model.reference.PublicationBase; |
|
71 |
import eu.etaxonomy.cdm.model.reference.Publisher; |
|
66 | 72 |
import eu.etaxonomy.cdm.model.reference.ReferenceBase; |
67 | 73 |
import eu.etaxonomy.cdm.model.reference.StrictReferenceBase; |
68 | 74 |
import eu.etaxonomy.cdm.model.reference.WebPage; |
... | ... | |
83 | 89 |
} |
84 | 90 |
|
85 | 91 |
|
86 |
protected static CdmIoMapperBase[] classMappers = new CdmIoMapperBase[]{
|
|
92 |
protected static CdmAttributeMapperBase[] classMappers = new CdmAttributeMapperBase[]{
|
|
87 | 93 |
new CdmStringMapper("edition", "edition"), |
88 | 94 |
new CdmStringMapper("volume", "volume"), |
89 |
new CdmStringMapper("publicationTown", "placePublished"), |
|
90 |
new CdmStringMapper("publisher", "publisher"), |
|
95 |
new CdmOneToManyMapper<PublicationBase, Publisher>( |
|
96 |
PublicationBase.class, |
|
97 |
Publisher.class, |
|
98 |
"publisher", |
|
99 |
new CdmSingleAttributeMapperBase[]{ |
|
100 |
new CdmStringMapper("publisher", "publisher"), |
|
101 |
new CdmStringMapper("publicationTown", "placePublished") |
|
102 |
}), |
|
91 | 103 |
new CdmStringMapper("isbn", "isbn"), |
92 | 104 |
new CdmStringMapper("pageString", "pages"), |
93 | 105 |
new CdmStringMapper("series", "series"), |
... | ... | |
157 | 169 |
result.addAll(Arrays.asList(createdAndNotesAttributes)); |
158 | 170 |
result.addAll(Arrays.asList(operationalAttributes)); |
159 | 171 |
CdmIoMapping mapping = new CdmIoMapping(); |
160 |
for (CdmIoMapperBase mapper : classMappers){
|
|
172 |
for (CdmAttributeMapperBase mapper : classMappers){
|
|
161 | 173 |
mapping.addMapper(mapper); |
162 | 174 |
} |
163 | 175 |
result.addAll(mapping.getSourceAttributes()); |
... | ... | |
749 | 761 |
} |
750 | 762 |
|
751 | 763 |
|
752 |
private boolean makeStandardMapper(Map<String, Object> valueMap, StrictReferenceBase ref, Set<String> omitAttributes){ |
|
764 |
private boolean makeStandardMapper(Map<String, Object> valueMap, CdmBase cdmBase, Set<String> omitAttributes){ |
|
765 |
boolean result = true; |
|
766 |
for (CdmAttributeMapperBase mapper : classMappers){ |
|
767 |
if (mapper instanceof CdmSingleAttributeMapperBase){ |
|
768 |
result &= makeStandardSingleMapper(valueMap, cdmBase, (CdmSingleAttributeMapperBase)mapper, omitAttributes); |
|
769 |
}else if (mapper instanceof CdmOneToManyMapper){ |
|
770 |
result &= makeMultipleValueAddMapper(valueMap, cdmBase, (CdmOneToManyMapper)mapper, omitAttributes); |
|
771 |
}else{ |
|
772 |
logger.error("Unknown mapper type"); |
|
773 |
result = false; |
|
774 |
} |
|
775 |
} |
|
776 |
return result; |
|
777 |
} |
|
778 |
|
|
779 |
private boolean makeStandardSingleMapper(Map<String, Object> valueMap, CdmBase cdmBase, CdmSingleAttributeMapperBase mapper, Set<String> omitAttributes){ |
|
753 | 780 |
if (omitAttributes == null){ |
754 | 781 |
omitAttributes = new HashSet<String>(); |
755 | 782 |
} |
756 |
boolean result = true; |
|
757 |
for (CdmIoMapperBase mapper : classMappers){ |
|
758 |
String sourceAttribute = mapper.getSourceAttribute().toLowerCase(); |
|
759 |
Object value = valueMap.get(sourceAttribute); |
|
760 |
if (value != null){ |
|
761 |
String destinationAttribute = mapper.getDestinationAttribute(); |
|
762 |
if (! omitAttributes.contains(destinationAttribute)){ |
|
763 |
result &= ImportHelper.addValue(value, ref, destinationAttribute, mapper.getTypeClass(), OVERWRITE, OBLIGATORY); |
|
764 |
} |
|
783 |
boolean result = true; |
|
784 |
String sourceAttribute = mapper.getSourceAttribute().toLowerCase(); |
|
785 |
Object value = valueMap.get(sourceAttribute); |
|
786 |
if (value != null){ |
|
787 |
String destinationAttribute = mapper.getDestinationAttribute(); |
|
788 |
if (! omitAttributes.contains(destinationAttribute)){ |
|
789 |
result &= ImportHelper.addValue(value, cdmBase, destinationAttribute, mapper.getTypeClass(), OVERWRITE, OBLIGATORY); |
|
765 | 790 |
} |
766 | 791 |
} |
767 |
return true;
|
|
792 |
return result;
|
|
768 | 793 |
} |
794 |
|
|
795 |
|
|
796 |
private boolean makeMultipleValueAddMapper(Map<String, Object> valueMap, CdmBase cdmBase, CdmOneToManyMapper<CdmBase, CdmBase> mapper, Set<String> omitAttributes){ |
|
797 |
if (omitAttributes == null){ |
|
798 |
omitAttributes = new HashSet<String>(); |
|
799 |
} |
|
800 |
boolean result = true; |
|
801 |
String destinationAttribute = mapper.getSingleAttributeName(); |
|
802 |
List<Object> sourceValues = new ArrayList<Object>(); |
|
803 |
List<Class> classes = new ArrayList<Class>(); |
|
804 |
for (CdmSingleAttributeMapperBase singleMapper : mapper.getSingleMappers()){ |
|
805 |
String sourceAttribute = singleMapper.getSourceAttribute(); |
|
806 |
Object value = valueMap.get(sourceAttribute); |
|
807 |
sourceValues.add(value); |
|
808 |
Class clazz = singleMapper.getTypeClass(); |
|
809 |
classes.add(clazz); |
|
810 |
} |
|
811 |
|
|
812 |
result &= ImportHelper.addMultipleValues(sourceValues, cdmBase, destinationAttribute, classes, NO_OVERWRITE, OBLIGATORY); |
|
813 |
if (cdmBase instanceof PublicationBase){ |
|
814 |
PublicationBase pub = ((PublicationBase)cdmBase); |
|
815 |
pub.addPublisher("A new publisher for " + pub.getTitleCache(), "A nice place"); |
|
816 |
} |
|
817 |
return result; |
|
818 |
} |
|
819 |
|
|
769 | 820 |
|
770 | 821 |
private static TeamOrPersonBase getAuthorTeam(String authorString, TeamOrPersonBase nomAuthor, boolean preferNomeclaturalAuthor){ |
771 | 822 |
TeamOrPersonBase result; |
Also available in: Unified diff
model change for references (publishers) and taxon status