View Javadoc

1   /**
2   * Copyright (C) 2007 EDIT
3   * European Distributed Institute of Taxonomy 
4   * http://www.e-taxonomy.eu
5   * 
6   * The contents of this file are subject to the Mozilla Public License Version 1.1
7   * See LICENSE.TXT at the top of this package for the full license terms.
8   */
9   
10  package eu.etaxonomy.cdm.io.erms;
11  
12  import java.sql.ResultSet;
13  import java.sql.SQLException;
14  import java.util.HashMap;
15  import java.util.Map;
16  
17  import org.apache.log4j.Logger;
18  import org.springframework.stereotype.Component;
19  
20  import eu.etaxonomy.cdm.io.common.IImportConfigurator;
21  import eu.etaxonomy.cdm.io.common.IOValidator;
22  import eu.etaxonomy.cdm.io.common.mapping.DbImportAnnotationMapper;
23  import eu.etaxonomy.cdm.io.common.mapping.DbImportExtensionMapper;
24  import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping;
25  import eu.etaxonomy.cdm.io.common.mapping.DbImportObjectCreationMapper;
26  import eu.etaxonomy.cdm.io.common.mapping.DbImportStringMapper;
27  import eu.etaxonomy.cdm.io.common.mapping.DbImportTruncatedStringMapper;
28  import eu.etaxonomy.cdm.io.common.mapping.DbNotYetImplementedMapper;
29  import eu.etaxonomy.cdm.io.common.mapping.IMappingImport;
30  import eu.etaxonomy.cdm.io.erms.validation.ErmsReferenceImportValidator;
31  import eu.etaxonomy.cdm.model.common.AnnotationType;
32  import eu.etaxonomy.cdm.model.common.CdmBase;
33  import eu.etaxonomy.cdm.model.common.ExtensionType;
34  import eu.etaxonomy.cdm.model.common.Language;
35  import eu.etaxonomy.cdm.model.reference.ReferenceBase;
36  import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
37  
38  
39  /**
40   * @author a.mueller
41   * @created 20.02.2010
42   * @version 1.0
43   */
44  @Component
45  public class ErmsReferenceImport  extends ErmsImportBase<ReferenceBase> implements IMappingImport<ReferenceBase, ErmsImportState>{
46  	private static final Logger logger = Logger.getLogger(ErmsReferenceImport.class);
47  	
48  	private DbImportMapping mapping;
49  	
50  	
51  	private int modCount = 10000;
52  	private static final String pluralString = "sources";
53  	private static final String dbTableName = "sources";
54  	private static final Class cdmTargetClass = ReferenceBase.class;
55  
56  	public ErmsReferenceImport(){
57  		super(pluralString, dbTableName, cdmTargetClass);
58  	}
59  
60  
61  	/* (non-Javadoc)
62  	 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)
63  	 */
64  	@Override
65  	protected String getRecordQuery(ErmsImportConfigurator config) {
66  		String strRecordQuery = 
67  			" SELECT * " + 
68  			" FROM sources " +
69  			" WHERE ( sources.id IN (" + ID_LIST_TOKEN + ") )";
70  		return strRecordQuery;
71  	}
72  
73  	/* (non-Javadoc)
74  	 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getMapping()
75  	 */
76  	protected DbImportMapping getMapping() {
77  		if (mapping == null){
78  			mapping = new DbImportMapping();
79  			
80  			mapping.addMapper(DbImportObjectCreationMapper.NewInstance(this, "id", REFERENCE_NAMESPACE)); //id
81  			mapping.addMapper(DbImportExtensionMapper.NewInstance("imis_id", ErmsTransformer.IMIS_UUID, "imis", "imis", "imis"));
82  			
83  			mapping.addMapper(DbImportTruncatedStringMapper.NewInstance("source_name", "titleCache", "title"));
84  			mapping.addMapper(DbImportStringMapper.NewInstance("source_abstract", "referenceAbstract"));
85  			mapping.addMapper(DbImportAnnotationMapper.NewInstance("source_note", AnnotationType.EDITORIAL(), Language.DEFAULT()));
86  			
87  			//or as Extension?
88  			mapping.addMapper(DbImportExtensionMapper.NewInstance("source_link", ExtensionType.URL()));
89  			
90  			//not yet implemented
91  			mapping.addMapper(DbNotYetImplementedMapper.NewInstance("source_type"));
92  			mapping.addMapper(DbNotYetImplementedMapper.NewInstance("source_orig_fn"));
93  
94  		}
95  		return mapping;
96  	}
97  	
98  	/* (non-Javadoc)
99  	 * @see eu.etaxonomy.cdm.io.common.mapping.IMappingImport#createObject(java.sql.ResultSet, eu.etaxonomy.cdm.io.common.ImportStateBase)
100 	 */
101 	public ReferenceBase createObject(ResultSet rs, ErmsImportState state)
102 			throws SQLException {
103 		int id = rs.getInt("id");
104 		ReferenceBase ref = ReferenceFactory.newGeneric();
105 		return ref;
106 	}
107 
108 	/* (non-Javadoc)
109 	 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
110 	 */
111 	public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {
112 		Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
113 		return result;  //not needed
114 	}
115 	
116 	/* (non-Javadoc)
117 	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
118 	 */
119 	@Override
120 	protected boolean doCheck(ErmsImportState state){
121 		IOValidator<ErmsImportState> validator = new ErmsReferenceImportValidator();
122 		return validator.validate(state);
123 	}
124 	
125 	
126 	/* (non-Javadoc)
127 	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
128 	 */
129 	protected boolean isIgnore(ErmsImportState state){
130 		//TODO
131 		return state.getConfig().getDoReferences() != IImportConfigurator.DO_REFERENCES.ALL;
132 	}
133 
134 
135 
136 
137 
138 }