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.berlinModel.in.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.berlinModel.in.BerlinModelImportBase;
19  import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator;
20  import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState;
21  import eu.etaxonomy.cdm.io.common.IOValidator;
22  import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
23  import eu.etaxonomy.cdm.io.common.Source;
24  import eu.etaxonomy.cdm.model.common.CdmBase;
25  
26  
27  /**
28   * For validating general consistencies like existence of tables, etc.
29   * @author a.mueller
30   * @created 10.06.2009
31   * @version 1.0
32   */
33  @Component
34  public class BerlinModelGeneralImportValidator extends BerlinModelImportBase implements IOValidator<BerlinModelImportState> {
35  	private static final Logger logger = Logger.getLogger(BerlinModelGeneralImportValidator.class);
36  
37  	public BerlinModelGeneralImportValidator(){
38  		super();
39  	}
40  	
41  	/* (non-Javadoc)
42  	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IoStateBase)
43  	 */
44  	@Override
45  	protected boolean doCheck(BerlinModelImportState state){
46  		return validate(state);
47  	}
48  	
49  
50  	/* (non-Javadoc)
51  	 * @see eu.etaxonomy.cdm.io.common.IOValidator#validate(eu.etaxonomy.cdm.io.common.IoStateBase)
52  	 */
53  	public boolean validate(BerlinModelImportState state) {
54  		boolean result = true;
55  		BerlinModelImportConfigurator bmiConfig = state.getConfig();
56  		result &= checkRelAuthorsExist(bmiConfig);
57  		result &= checkRelReferenceExist(bmiConfig);
58  		
59  		return result;
60  	}
61  	
62  	protected boolean doInvoke(BerlinModelImportState state){
63  		boolean success = true;
64  		//do nothing
65  		return success;
66  		
67  	}
68  	
69  	private boolean checkRelAuthorsExist(BerlinModelImportConfigurator config){
70  		
71  		try {
72  			boolean result = true;
73  			Source source = config.getSource();
74  			String strQuery = "SELECT Count(*) as n " +
75  					" FROM RelAuthor "
76  					;
77  			ResultSet rs = source.getResultSet(strQuery);
78  			rs.next();
79  			int count = rs.getInt("n");
80  			if (count > 0){
81  				System.out.println("========================================================");
82  				logger.warn("There are "+count+" RelAuthors, but RelAuthors are not implemented for CDM yet.");
83  				System.out.println("========================================================");
84  			}
85  			return result;
86  		} catch (SQLException e) {
87  			e.printStackTrace();
88  			return false;
89  		}
90  
91  	}
92  	
93  	private boolean checkRelReferenceExist(BerlinModelImportConfigurator config){
94  		
95  		try {
96  			boolean result = true;
97  			Source source = config.getSource();
98  			String strQuery = "SELECT Count(*) as n " +
99  					" FROM RelReference "
100 					;
101 			ResultSet rs = source.getResultSet(strQuery);
102 			rs.next();
103 			int count = rs.getInt("n");
104 			if (count > 0){
105 				System.out.println("========================================================");
106 				logger.warn("There are "+count+" RelReferences, but RelReferences are not implemented for CDM yet.");
107 				System.out.println("========================================================");
108 			}
109 			return result;
110 		} catch (SQLException e) {
111 			e.printStackTrace();
112 			return false;
113 		}
114 
115 	}
116 	
117 	
118 	/* (non-Javadoc)
119 	 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getTableName()
120 	 */
121 	@Override
122 	protected String getTableName() {
123 		return null;  //not needed
124 	}
125 	
126 	/* (non-Javadoc)
127 	 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getPluralString()
128 	 */
129 	@Override
130 	public String getPluralString() {
131 		return null; //not needed
132 	}
133 	
134 	
135 	/* (non-Javadoc)
136 	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
137 	 */
138 	protected boolean isIgnore(BerlinModelImportState state){
139 		return false;
140 	}
141 
142 	/* (non-Javadoc)
143 	 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)
144 	 */
145 	@Override
146 	protected String getRecordQuery(BerlinModelImportConfigurator config) {
147 		// TODO Auto-generated method stub
148 		return null;
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, BerlinModelImportState 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 }