2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.cdm
.io
.berlinModel
.in
.validation
;
11 import java
.sql
.ResultSet
;
12 import java
.sql
.SQLException
;
13 import java
.util
.HashSet
;
16 import org
.apache
.commons
.lang
.StringUtils
;
17 import org
.apache
.logging
.log4j
.LogManager
;
18 import org
.apache
.logging
.log4j
.Logger
;
20 import eu
.etaxonomy
.cdm
.io
.berlinModel
.in
.BerlinModelImportConfigurator
;
21 import eu
.etaxonomy
.cdm
.io
.berlinModel
.in
.BerlinModelImportState
;
22 import eu
.etaxonomy
.cdm
.io
.berlinModel
.in
.BerlinModelReferenceImport
;
23 import eu
.etaxonomy
.cdm
.io
.common
.IOValidator
;
24 import eu
.etaxonomy
.cdm
.io
.common
.Source
;
30 public class BerlinModelReferenceImportValidator
implements IOValidator
<BerlinModelImportState
> {
32 private static final Logger logger
= LogManager
.getLogger();
34 public boolean validate(BerlinModelImportState state
, BerlinModelReferenceImport refImport
){
35 boolean result
= true;
36 BerlinModelImportConfigurator config
= state
.getConfig();
37 result
&= checkArticlesWithoutJournal(config
);
38 result
&= checkPartOfJournal(config
);
39 result
&= checkPartOfUnresolved(config
);
40 result
&= checkPartOfPartOf(config
);
41 result
&= checkPartOfArticle(config
);
42 result
&= checkJournalsWithSeries(config
);
43 result
&= checkObligatoryAttributes(config
, refImport
);
44 result
&= checkPartOfWithVolume(config
);
45 result
&= checkArticleWithEdition(config
);
47 if (result
== false ){System
.out
.println("========================================================");}
52 //******************************** CHECK *************************************************
54 private static boolean checkArticlesWithoutJournal(BerlinModelImportConfigurator config
){
56 boolean result
= true;
57 Source source
= config
.getSource();
58 String strQuery
= "SELECT Reference.RefId, InRef.RefId AS InRefID, Reference.RefCategoryFk, InRef.RefCategoryFk AS InRefCatFk, Reference.RefCache, Reference.NomRefCache, Reference.Title, RefCategory.RefCategoryAbbrev, InRefCategory.RefCategoryAbbrev AS InRefCat, InRef.Title AS InRefTitle " +
59 " FROM Reference INNER JOIN Reference AS InRef ON Reference.InRefFk = InRef.RefId INNER JOIN RefCategory ON Reference.RefCategoryFk = RefCategory.RefCategoryId INNER JOIN RefCategory AS InRefCategory ON InRef.RefCategoryFk = InRefCategory.RefCategoryId " +
60 " WHERE (Reference.RefCategoryFk = 1) AND (InRef.RefCategoryFk <> 9) ";
61 if (StringUtils
.isNotBlank(config
.getReferenceIdTable())){
62 strQuery
+= String
.format(" AND (reference.refId IN " +
63 " (SELECT refId FROM %s ))" , config
.getReferenceIdTable()) ;
66 ResultSet rs
= source
.getResultSet(strQuery
);
67 boolean firstRow
= true;
70 System
.out
.println("========================================================");
71 System
.out
.println("There are Articles with wrong inRef type!");
72 System
.out
.println("========================================================");
74 int refId
= rs
.getInt("RefId");
75 //int categoryFk = resulSetarticlesWithoutJournal.getInt("RefCategoryFk");
76 String cat
= rs
.getString("RefCategoryAbbrev");
77 int inRefFk
= rs
.getInt("InRefId");
78 //int inRefCategoryFk = resulSetarticlesWithoutJournal.getInt("InRefCatFk");
79 String inRefCat
= rs
.getString("InRefCat");
80 String refCache
= rs
.getString("RefCache");
81 String nomRefCache
= rs
.getString("nomRefCache");
82 String title
= rs
.getString("title");
83 String inRefTitle
= rs
.getString("InRefTitle");
85 System
.out
.println("RefID:" + refId
+ "\n cat: " + cat
+
86 "\n refCache: " + refCache
+ "\n nomRefCache: " + nomRefCache
+ "\n title: " + title
+
87 "\n inRefFk: " + inRefFk
+ "\n inRefCategory: " + inRefCat
+
88 "\n inRefTitle: " + inRefTitle
);
89 result
= firstRow
= false;
93 } catch (SQLException e
) {
99 private static boolean checkPartOfJournal(BerlinModelImportConfigurator config
){
101 boolean result
= true;
102 Source source
= config
.getSource();
103 String strQuery
= "SELECT Reference.RefId, InRef.RefId AS InRefID, Reference.RefCategoryFk, InRef.RefCategoryFk AS InRefCatFk, Reference.RefCache, Reference.NomRefCache, Reference.Title, RefCategory.RefCategoryAbbrev, InRefCategory.RefCategoryAbbrev AS InRefCat, InRef.Title AS InRefTitle " +
104 " FROM Reference INNER JOIN Reference AS InRef ON Reference.InRefFk = InRef.RefId INNER JOIN RefCategory ON Reference.RefCategoryFk = RefCategory.RefCategoryId INNER JOIN RefCategory AS InRefCategory ON InRef.RefCategoryFk = InRefCategory.RefCategoryId " +
105 " WHERE (Reference.RefCategoryFk = 2) AND (InRef.RefCategoryFk = 9) ";
107 if (StringUtils
.isNotBlank(config
.getReferenceIdTable())){
108 strQuery
+= String
.format(" AND (reference.refId IN " +
109 " (SELECT refId FROM %s ))" , config
.getReferenceIdTable()) ;
112 ResultSet rs
= source
.getResultSet(strQuery
);
113 boolean firstRow
= true;
116 System
.out
.println("========================================================");
117 System
.out
.println("There are part-of-references that have a Journal as in-reference!");
118 System
.out
.println("========================================================");
120 int refId
= rs
.getInt("RefId");
121 //int categoryFk = rs.getInt("RefCategoryFk");
122 String cat
= rs
.getString("RefCategoryAbbrev");
123 int inRefFk
= rs
.getInt("InRefId");
124 //int inRefCategoryFk = rs.getInt("InRefCatFk");
125 String inRefCat
= rs
.getString("InRefCat");
126 String refCache
= rs
.getString("RefCache");
127 String nomRefCache
= rs
.getString("nomRefCache");
128 String title
= rs
.getString("title");
129 String inRefTitle
= rs
.getString("InRefTitle");
131 System
.out
.println("RefID:" + refId
+ "\n cat: " + cat
+
132 "\n refCache: " + refCache
+ "\n nomRefCache: " + nomRefCache
+ "\n title: " + title
+
133 "\n inRefFk: " + inRefFk
+ "\n inRefCategory: " + inRefCat
+
134 "\n inRefTitle: " + inRefTitle
);
135 result
= firstRow
= false;
139 } catch (SQLException e
) {
145 private static boolean checkPartOfUnresolved(BerlinModelImportConfigurator config
){
147 boolean result
= true;
148 Source source
= config
.getSource();
149 String strQuery
= "SELECT Reference.RefId, InRef.RefId AS InRefID, Reference.RefCategoryFk, InRef.RefCategoryFk AS InRefCatFk, Reference.RefCache, Reference.NomRefCache, Reference.Title, RefCategory.RefCategoryAbbrev, InRefCategory.RefCategoryAbbrev AS InRefCat, InRef.Title AS InRefTitle " +
150 " FROM Reference INNER JOIN Reference AS InRef ON Reference.InRefFk = InRef.RefId INNER JOIN RefCategory ON Reference.RefCategoryFk = RefCategory.RefCategoryId INNER JOIN RefCategory AS InRefCategory ON InRef.RefCategoryFk = InRefCategory.RefCategoryId " +
151 " WHERE (Reference.RefCategoryFk = 2) AND (InRef.RefCategoryFk = 10) ";
153 if (StringUtils
.isNotBlank(config
.getReferenceIdTable())){
154 strQuery
+= String
.format(" AND (reference.refId IN " +
155 " (SELECT refId FROM %s ))" , config
.getReferenceIdTable()) ;
158 ResultSet rs
= source
.getResultSet(strQuery
);
159 boolean firstRow
= true;
162 System
.out
.println("========================================================");
163 System
.out
.println("There are part-of-references that have an 'unresolved' in-reference!");
164 System
.out
.println("========================================================");
166 int refId
= rs
.getInt("RefId");
167 //int categoryFk = rs.getInt("RefCategoryFk");
168 String cat
= rs
.getString("RefCategoryAbbrev");
169 int inRefFk
= rs
.getInt("InRefId");
170 //int inRefCategoryFk = rs.getInt("InRefCatFk");
171 String inRefCat
= rs
.getString("InRefCat");
172 String refCache
= rs
.getString("RefCache");
173 String nomRefCache
= rs
.getString("nomRefCache");
174 String title
= rs
.getString("title");
175 String inRefTitle
= rs
.getString("InRefTitle");
177 System
.out
.println("RefID:" + refId
+ "\n cat: " + cat
+
178 "\n refCache: " + refCache
+ "\n nomRefCache: " + nomRefCache
+ "\n title: " + title
+
179 "\n inRefFk: " + inRefFk
+ "\n inRefCategory: " + inRefCat
+
180 "\n inRefTitle: " + inRefTitle
);
181 result
= firstRow
= false;
183 if (result
== false){
184 System
.out
.println("\nChoose a specific type from the following reference types: \n" +
185 " 1) Article \n 2) Book \n 3) BookSection \n 4) CdDvd \n 5) ConferenceProceeding \n 6) Database\n" +
186 " 7) Generic \n 7) InProceedings \n 8) Journal \n 9) Map \n 10) Patent \n 11) PersonalCommunication\n" +
187 " 12) PrintSeries \n 13) Proceedings \n 14) Report \n 15) Thesis \n 16) WebPage");
190 } catch (SQLException e
) {
196 private static boolean checkPartOfPartOf(BerlinModelImportConfigurator config
){
198 boolean result
= true;
199 Source source
= config
.getSource();
200 String strQuery
= "SELECT Reference.RefId, InRef.RefId AS InRefID, Reference.RefCategoryFk, InRef.RefCategoryFk AS InRefCatFk, Reference.RefCache, Reference.NomRefCache, Reference.Title, RefCategory.RefCategoryAbbrev, InRefCategory.RefCategoryAbbrev AS InRefCat, InRef.Title AS InRefTitle, InRef.InRefFk as InInRefId, InInRef.Title as inInRefTitle, InInRef.RefCategoryFk as inInRefCategory " +
202 " INNER JOIN Reference AS InRef ON Reference.InRefFk = InRef.RefId " +
203 " INNER JOIN RefCategory ON Reference.RefCategoryFk = RefCategory.RefCategoryId " +
204 " INNER JOIN RefCategory AS InRefCategory ON InRef.RefCategoryFk = InRefCategory.RefCategoryId " +
205 " INNER JOIN Reference AS InInRef ON InRef.InRefFk = InInRef.RefId " +
206 " WHERE (Reference.RefCategoryFk = 2) AND (InRef.RefCategoryFk = 2) ";
208 if (StringUtils
.isNotBlank(config
.getReferenceIdTable())){
209 strQuery
+= String
.format(" AND (reference.refId IN " +
210 " (SELECT refId FROM %s ))" , config
.getReferenceIdTable()) ;
213 ResultSet rs
= source
.getResultSet(strQuery
);
214 boolean firstRow
= true;
217 System
.out
.println("========================================================");
218 System
.out
.println("There are part-of-references that are part of an other 'part-of' reference!\n" +
219 " This is invalid or ambigous. Please try to determine the reference types more detailed ");
220 System
.out
.println("========================================================");
222 int refId
= rs
.getInt("RefId");
223 //int categoryFk = rs.getInt("RefCategoryFk");
224 String cat
= rs
.getString("RefCategoryAbbrev");
225 int inRefFk
= rs
.getInt("InRefId");
226 //int inRefCategoryFk = rs.getInt("InRefCatFk");
227 String inRefCat
= rs
.getString("InRefCat");
228 String refCache
= rs
.getString("RefCache");
229 String nomRefCache
= rs
.getString("nomRefCache");
230 String title
= rs
.getString("title");
231 String inRefTitle
= rs
.getString("InRefTitle");
232 int inInRefId
= rs
.getInt("InInRefId");
233 String inInRefTitle
= rs
.getString("inInRefTitle");
234 int inInRefCategory
= rs
.getInt("inInRefCategory");
236 System
.out
.println("RefID:" + refId
+ "\n cat: " + cat
+
237 "\n refCache: " + refCache
+ "\n nomRefCache: " + nomRefCache
+ "\n title: " + title
+
238 "\n inRefFk: " + inRefFk
+ "\n inRefCategory: " + inRefCat
+
239 "\n inRefTitle: " + inRefTitle
+ "\n inInRefId: " + inInRefId
+ "\n inInRefTitle: " + inInRefTitle
+
240 "\n inInRefCategory: " + inInRefCategory
);
241 result
= firstRow
= false;
243 if (result
== false){
244 System
.out
.println("\nChoose a specific type from the following reference types: \n" +
245 " 1) BookSection - Book - PrintSeries \n" +
246 " 2) InProceedings - pProceedings - PrintSeries");
249 } catch (SQLException e
) {
256 private static boolean checkPartOfArticle(BerlinModelImportConfigurator config
){
258 boolean result
= true;
259 Source source
= config
.getSource();
260 String strQuery
= "SELECT r.RefId, InRef.RefId AS InRefID, r.RefCategoryFk, InRef.RefCategoryFk AS InRefCatFk, r.RefCache, r.NomRefCache, r.Title, r.NomTitleAbbrev as nomTitleAbbrev, RefCategory.RefCategoryAbbrev, InRefCategory.RefCategoryAbbrev AS InRefCat, InRef.Title AS InRefTitle, InRef.nomTitleAbbrev AS inRefnomTitleAbbrev, InRef.refCache AS inRefCache, InRef.nomRefCache AS inRefnomRefCache, " +
261 " InInRefCategory.RefCategoryAbbrev AS InInRefCat, InInRef.refCache AS inInRefCache, InInRef.nomRefCache AS inInRefNomRefCache " +
262 " FROM Reference r " +
263 " INNER JOIN Reference AS InRef ON r.InRefFk = InRef.RefId " +
264 " INNER JOIN Reference AS InInRef ON InRef.InRefFk = InInRef.RefId " +
265 " INNER JOIN RefCategory ON r.RefCategoryFk = RefCategory.RefCategoryId " +
266 " INNER JOIN RefCategory AS InRefCategory ON InRef.RefCategoryFk = InRefCategory.RefCategoryId " +
267 " INNER JOIN RefCategory AS InInRefCategory ON InInRef.RefCategoryFk = InInRefCategory.RefCategoryId " +
268 " WHERE (r.RefCategoryFk = 2) AND (InRef.RefCategoryFk = 1) ";
270 if (StringUtils
.isNotBlank(config
.getReferenceIdTable())){
271 strQuery
+= String
.format(" AND (r.refId IN " +
272 " (SELECT refId FROM %s ))" , config
.getReferenceIdTable()) ;
274 if (config
.isEuroMed()){
275 strQuery
+= " AND r.RefId NOT IN (6187, 10269, 26613) ";
278 ResultSet rs
= source
.getResultSet(strQuery
);
279 boolean firstRow
= true;
282 System
.out
.println("========================================================");
283 System
.out
.println("There are part-of-references that have an article as in-reference! " +
284 " This is not necessarily wrong if the article is part of journal.");
285 System
.out
.println("========================================================");
287 int refId
= rs
.getInt("RefId");
288 //int categoryFk = rs.getInt("RefCategoryFk");
289 String cat
= rs
.getString("RefCategoryAbbrev");
290 int inRefFk
= rs
.getInt("InRefId");
291 //int inRefCategoryFk = rs.getInt("InRefCatFk");
292 String inRefCat
= rs
.getString("InRefCat");
293 String refCache
= rs
.getString("RefCache");
294 String nomRefCache
= rs
.getString("nomRefCache");
295 String title
= rs
.getString("title");
296 String nomTitleAbbrev
= rs
.getString("nomTitleAbbrev");
297 String inRefTitle
= rs
.getString("InRefTitle");
298 String inRefnomTitleAbbrev
= rs
.getString("inRefnomTitleAbbrev");
299 String inRefnomRefCache
= rs
.getString("inRefnomRefCache");
300 String inRefCache
= rs
.getString("inRefCache");
301 String inInRefCat
= rs
.getString("inInRefCat");
302 String inInRefCache
= rs
.getString("inInRefCache");
303 String inInRefNomRefCache
= rs
.getString("inInRefNomRefCache");
306 System
.out
.println("RefID:" + refId
+ "\n cat: " + cat
+
307 "\n refCache: " + refCache
+ "\n nomRefCache: " + nomRefCache
+ "\n title: " + title
+ "\n titleAbbrev: " + nomTitleAbbrev
+
308 "\n inRefFk: " + inRefFk
+ "\n inRefCategory: " + inRefCat
+
309 "\n inRefTitle: " + inRefTitle
+ "\n inRefTitleAbbrev: " + inRefnomTitleAbbrev
+
310 "\n inRefnomRefCache: " + inRefnomRefCache
+ "\n inRefCache: " + inRefCache
+
311 "\n inInRefCat: " + inInRefCat
+ "\n inInRefCache: " + inInRefCache
+
312 "\n inInRefNomRefCache: " + inInRefNomRefCache
315 result
= firstRow
= false;
319 } catch (SQLException e
) {
325 private static boolean checkJournalsWithSeries(BerlinModelImportConfigurator config
){
327 boolean result
= true;
328 Source source
= config
.getSource();
329 String strQuery
= "SELECT Reference.RefId, Reference.RefCategoryFk, Reference.RefCache, Reference.NomRefCache, Reference.Title, Reference.NomTitleAbbrev, Reference.Series, RefCategory.RefCategoryAbbrev " +
330 " FROM Reference INNER JOIN " +
331 " RefCategory ON Reference.RefCategoryFk = RefCategory.RefCategoryId " +
332 " WHERE (Reference.RefCategoryFk = 9) AND ( Reference.series is not null AND Reference.series <>'') ";
334 if (StringUtils
.isNotBlank(config
.getReferenceIdTable())){
335 strQuery
+= String
.format(" AND (reference.refId IN " +
336 " (SELECT refId FROM %s ))" , config
.getReferenceIdTable()) ;
339 ResultSet rs
= source
.getResultSet(strQuery
);
340 boolean firstRow
= true;
343 System
.out
.println("========================================================");
344 System
.out
.println("There are Journals with series! Series should be part of the according articles.");
345 System
.out
.println("========================================================");
347 int refId
= rs
.getInt("RefId");
348 //int categoryFk = rs.getInt("RefCategoryFk");
349 String cat
= rs
.getString("RefCategoryAbbrev");
350 String nomRefCache
= rs
.getString("nomRefCache");
351 String refCache
= rs
.getString("refCache");
352 String title
= rs
.getString("title");
353 String nomTitleAbbrev
= rs
.getString("nomTitleAbbrev");
354 String series
= rs
.getString("series");
356 System
.out
.println("RefID:" + refId
+ "\n cat: " + cat
+
357 "\n refCache: " + refCache
+ "\n nomRefCache: " + nomRefCache
+
358 "\n title: " + title
+ "\n nomTitleAbbrev: " + nomTitleAbbrev
+
359 "\n series: " + series
);
360 result
= firstRow
= false;
364 } catch (SQLException e
) {
370 private static boolean checkPartOfWithVolume(BerlinModelImportConfigurator config
){
372 boolean result
= true;
373 Source source
= config
.getSource();
374 String strQuery
= "SELECT Ref.RefId as refId, RefCategory.RefCategoryAbbrev as refCategoryAbbrev, Ref.nomRefCache as nomRefCache, Ref.refCache as refCache,Ref.volume as volume, Ref.Series as series, Ref.Edition as edition, Ref.title as title, Ref.nomTitleAbbrev as nomTitleAbbrev,InRef.RefCache as inRefRefCache, InRef.NomRefCache as inRefNomRefCache, InRef.RefId as inRefId, InRef.Volume as inRefVol, InRef.Series as inRefSeries, InRef.Edition as inRefEdition" +
375 " FROM Reference AS Ref " +
376 " INNER JOIN RefCategory ON Ref.RefCategoryFk = RefCategory.RefCategoryId " +
377 " LEFT OUTER JOIN Reference AS InRef ON Ref.InRefFk = InRef.RefId " +
378 " WHERE (Ref.RefCategoryFk = 2) AND ((Ref.Volume IS NOT NULL) OR (Ref.Series IS NOT NULL) OR (Ref.Edition IS NOT NULL)) " ;
380 if (StringUtils
.isNotBlank(config
.getReferenceIdTable())){
381 strQuery
+= String
.format(" AND (Ref.refId IN " +
382 " (SELECT refId FROM %s ))" , config
.getReferenceIdTable()) ;
385 ResultSet rs
= source
.getResultSet(strQuery
);
386 boolean firstRow
= true;
389 System
.out
.println("========================================================");
390 System
.out
.println("There are PartOfOtherTitles with volumes, editions or series !");
391 System
.out
.println("========================================================");
393 int refId
= rs
.getInt("refId");
394 String cat
= rs
.getString("refCategoryAbbrev");
395 String nomRefCache
= rs
.getString("nomRefCache");
396 String refCache
= rs
.getString("refCache");
397 String title
= rs
.getString("title");
398 String nomTitleAbbrev
= rs
.getString("nomTitleAbbrev");
399 String volume
= rs
.getString("volume");
400 String edition
= rs
.getString("edition");
401 String series
= rs
.getString("series");
402 String inRefRefCache
= rs
.getString("inRefRefCache");
403 String inRefNomRefCache
= rs
.getString("inRefNomRefCache");
404 int inRefId
= rs
.getInt("inRefId");
405 String inRefVolume
= rs
.getString("inRefVol");
406 String inRefSeries
= rs
.getString("inRefSeries");
407 String inRefEdition
= rs
.getString("inRefEdition");
409 System
.out
.println("RefID:" + refId
+ "\n cat: " + cat
+
410 "\n refCache: " + refCache
+ "\n nomRefCache: " + nomRefCache
+
411 "\n title: " + title
+ "\n nomTitleAbbrev: " + nomTitleAbbrev
+ "\n volume: " + volume
+ "\n series: " + series
+"\n edition: " + edition
+
412 "\n inRef-ID:" + inRefId
+ "\n inRef-cache: " + inRefRefCache
+
413 "\n inRef-nomCache: " + inRefNomRefCache
+ "\n inRef-volume: " + inRefVolume
+"\n inRef-series: " + inRefSeries
+"\n inRef-edition: " + inRefEdition
+
415 result
= firstRow
= false;
419 } catch (SQLException e
) {
425 private static boolean checkArticleWithEdition(BerlinModelImportConfigurator config
){
427 boolean result
= true;
428 Source source
= config
.getSource();
429 String strQuery
= "SELECT Ref.RefId as refId, RefCategory.RefCategoryAbbrev as refCategoryAbbrev, Ref.nomRefCache as nomRefCache, Ref.refCache as refCache,Ref.edition as edition, Ref.title as title, Ref.nomTitleAbbrev as nomTitleAbbrev,InRef.RefCache as inRefRefCache, InRef.NomRefCache as inRefNomRefCache, InRef.RefId as inRefId, InRef.Edition as inRefEdition" +
430 " FROM Reference AS Ref " +
431 " INNER JOIN RefCategory ON Ref.RefCategoryFk = RefCategory.RefCategoryId " +
432 " LEFT OUTER JOIN Reference AS InRef ON Ref.InRefFk = InRef.RefId " +
433 " WHERE (Ref.RefCategoryFk = 1) AND (NOT (Ref.Edition IS NULL)) ";
435 if (StringUtils
.isNotBlank(config
.getReferenceIdTable())){
436 strQuery
+= String
.format(" AND (Ref.refId IN " +
437 " (SELECT refId FROM %s )) " , config
.getReferenceIdTable()) ;
439 strQuery
+= " ORDER BY InRef.RefId ";
442 ResultSet rs
= source
.getResultSet(strQuery
);
443 boolean firstRow
= true;
446 System
.out
.println("========================================================");
447 System
.out
.println("There are Articles with editions !");
448 System
.out
.println("========================================================");
450 int refId
= rs
.getInt("refId");
451 String cat
= rs
.getString("refCategoryAbbrev");
452 String nomRefCache
= rs
.getString("nomRefCache");
453 String refCache
= rs
.getString("refCache");
454 String title
= rs
.getString("title");
455 String nomTitleAbbrev
= rs
.getString("nomTitleAbbrev");
456 String edition
= rs
.getString("edition");
457 String inRefRefCache
= rs
.getString("inRefRefCache");
458 String inRefNomRefCache
= rs
.getString("inRefNomRefCache");
459 int inRefId
= rs
.getInt("inRefId");
460 String inRefEdition
= rs
.getString("inRefEdition");
462 System
.out
.println("RefID:" + refId
+ "\n cat: " + cat
+
463 "\n refCache: " + refCache
+ "\n nomRefCache: " + nomRefCache
+
464 "\n title: " + title
+ "\n nomTitleAbbrev: " + nomTitleAbbrev
+ "\n edition: " + edition
+
465 "\n inRef-ID:" + inRefId
+ "\n inRef-cache: " + inRefRefCache
+
466 "\n inRef-nomCache: " + inRefNomRefCache
+ "\n inRef-edition: " + inRefEdition
+
468 result
= firstRow
= false;
472 } catch (SQLException e
) {
478 protected boolean checkObligatoryAttributes(BerlinModelImportConfigurator config
, BerlinModelReferenceImport refImport
){
479 boolean result
= true;
482 String strQuery
= " SELECT Reference.* " +
484 // " INNER JOIN Reference ON Reference.RefId = RefDetail.RefFk " +
486 Source source
= config
.getSource();
487 ResultSet rs
= source
.getResultSet(strQuery
);
488 int colCount
= rs
.getMetaData().getColumnCount();
489 Set
<String
> existingAttributes
= new HashSet
<>();
490 for (int c
= 0; c
< colCount
; c
++){
491 existingAttributes
.add(rs
.getMetaData().getColumnLabel(c
+1).toLowerCase());
493 Set
<String
> obligatoryAttributes
= refImport
.getObligatoryAttributes(true, config
);
495 obligatoryAttributes
.removeAll(existingAttributes
);
496 for (String attr
: obligatoryAttributes
){
497 System
.out
.println("Missing attribute: " + attr
);
500 //additional Attributes
501 obligatoryAttributes
= refImport
.getObligatoryAttributes(true, config
);
503 existingAttributes
.removeAll(obligatoryAttributes
);
504 for (String attr
: existingAttributes
){
505 System
.out
.println("Additional attribute: " + attr
);
507 } catch (SQLException e
) {
515 protected boolean checkRefDetailUnimplementedAttributes(BerlinModelImportConfigurator config
){
516 boolean result
= true;
519 String strQuery
= " SELECT Count(*) as n" +
521 // " INNER JOIN Reference ON Reference.RefId = RefDetail.RefFk " +
522 " WHERE SecondarySources is not NULL AND SecondarySources <> '' ";
523 Source source
= config
.getSource();
524 ResultSet rs
= source
.getResultSet(strQuery
);
527 int count
= rs
.getInt("n");
529 System
.out
.println("========================================================");
530 System
.out
.println("There are "+ count
+ " RefDetails with SecondarySources <> NULL ! Secondary sources are not yet implemented for Berlin Model Import");
531 System
.out
.println("========================================================");
534 strQuery
= " SELECT Count(*) as n" +
536 // " INNER JOIN Reference ON Reference.RefId = RefDetail.RefFk " +
537 " WHERE IdInSource is not NULL AND IdInSource <> '' ";
538 rs
= source
.getResultSet(strQuery
);
541 count
= rs
.getInt("n");
543 System
.out
.println("========================================================");
544 System
.out
.println("There are "+ count
+ " RefDetails with IdInSource <> NULL ! IdInSource are not yet implemented for Berlin Model Import");
545 System
.out
.println("========================================================");
549 } catch (SQLException e
) {
558 @Deprecated //use validate(state, import) instead
559 public boolean validate(BerlinModelImportState state
) {
560 logger
.warn("BerlinModelReferenceImport uses wrong validation method");