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   package eu.etaxonomy.cdm.io.erms.validation;
10  
11  import java.sql.ResultSet;
12  import java.sql.SQLException;
13  import java.util.Map;
14  
15  import org.apache.log4j.Logger;
16  import org.springframework.stereotype.Component;
17  
18  import eu.etaxonomy.cdm.io.common.IOValidator;
19  import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
20  import eu.etaxonomy.cdm.io.common.Source;
21  import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping;
22  import eu.etaxonomy.cdm.io.erms.ErmsImportBase;
23  import eu.etaxonomy.cdm.io.erms.ErmsImportConfigurator;
24  import eu.etaxonomy.cdm.io.erms.ErmsImportState;
25  import eu.etaxonomy.cdm.model.common.CdmBase;
26  
27  
28  /**
29   * For validating general consistencies like existence of tables, etc.
30   * @author a.mueller
31   * @created 10.06.2009
32   * @version 1.0
33   */
34  @Component
35  public class ErmsGeneralImportValidator extends ErmsImportBase<CdmBase> implements IOValidator<ErmsImportState> {
36  	private static final Logger logger = Logger.getLogger(ErmsGeneralImportValidator.class);
37  
38  	public ErmsGeneralImportValidator(){
39  		super(null, null, null);
40  	}
41  	
42  	/* (non-Javadoc)
43  	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IoStateBase)
44  	 */
45  	@Override
46  	protected boolean doCheck(ErmsImportState state){
47  		return validate(state);
48  	}
49  	
50  
51  	/* (non-Javadoc)
52  	 * @see eu.etaxonomy.cdm.io.common.IOValidator#validate(eu.etaxonomy.cdm.io.common.IoStateBase)
53  	 */
54  	public boolean validate(ErmsImportState state) {
55  		boolean result = true;
56  		ErmsImportConfigurator config = state.getConfig();
57  //		result &= checkRelAuthorsExist(config);
58  //		result &= checkRelReferenceExist(config);
59  		
60  		return result;
61  	}
62  	
63  	protected boolean doInvoke(ErmsImportState state){
64  		boolean success = true;
65  		//do nothing
66  		return success;
67  		
68  	}
69  	
70  	private boolean checkRelAuthorsExist(ErmsImportConfigurator config){
71  		
72  		try {
73  			boolean result = true;
74  			Source source = config.getSource();
75  			String strQuery = "SELECT Count(*) as n " +
76  					" FROM RelAuthor "
77  					;
78  			ResultSet rs = source.getResultSet(strQuery);
79  			rs.next();
80  			int count = rs.getInt("n");
81  			if (count > 0){
82  				System.out.println("========================================================");
83  				logger.warn("There are "+count+" RelAuthors, but RelAuthors are not implemented for CDM yet.");
84  				System.out.println("========================================================");
85  			}
86  			return result;
87  		} catch (SQLException e) {
88  			e.printStackTrace();
89  			return false;
90  		}
91  
92  	}
93  	
94  	private boolean checkRelReferenceExist(ErmsImportConfigurator config){
95  		
96  		try {
97  			boolean result = true;
98  			Source source = config.getSource();
99  			String strQuery = "SELECT Count(*) as n " +
100 					" FROM RelReference "
101 					;
102 			ResultSet rs = source.getResultSet(strQuery);
103 			rs.next();
104 			int count = rs.getInt("n");
105 			if (count > 0){
106 				System.out.println("========================================================");
107 				logger.warn("There are "+count+" RelReferences, but RelReferences are not implemented for CDM yet.");
108 				System.out.println("========================================================");
109 			}
110 			return result;
111 		} catch (SQLException e) {
112 			e.printStackTrace();
113 			return false;
114 		}
115 
116 	}
117 	
118 	
119 	/* (non-Javadoc)
120 	 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getTableName()
121 	 */
122 	@Override
123 	protected String getTableName() {
124 		return null;  //not needed
125 	}
126 	
127 	/* (non-Javadoc)
128 	 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getPluralString()
129 	 */
130 	@Override
131 	public String getPluralString() {
132 		return null; //not needed
133 	}
134 	
135 	
136 	/* (non-Javadoc)
137 	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
138 	 */
139 	protected boolean isIgnore(ErmsImportState state){
140 		return false;
141 	}
142 
143 	/* (non-Javadoc)
144 	 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)
145 	 */
146 	@Override
147 	protected String getRecordQuery(ErmsImportConfigurator config) {
148 		return null;  // not needed
149 	}
150 
151 	/* (non-Javadoc)
152 	 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#doPartition(eu.etaxonomy.cdm.io.berlinModel.in.ResultSetPartitioner, eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState)
153 	 */
154 	public boolean doPartition(ResultSetPartitioner partitioner, ErmsImportState state) {
155 		return true;  // not needed
156 	}
157 
158 	/* (non-Javadoc)
159 	 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
160 	 */
161 	public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {
162 		return null;  // not needed
163 	}
164 
165 
166 	/* (non-Javadoc)
167 	 * @see eu.etaxonomy.cdm.io.common.mapping.IMappingImport#createObject(java.sql.ResultSet)
168 	 */
169 	public CdmBase createObject(ResultSet rs, ErmsImportState state) throws SQLException {
170 		return null;  //not needed
171 	}
172 
173 	/* (non-Javadoc)
174 	 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getMapping()
175 	 */
176 	@Override
177 	protected DbImportMapping<?, ?> getMapping() {
178 		// TODO Auto-generated method stub
179 		return null;
180 	}
181 
182 
183 
184 }