added findById(Set) to IService
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / dwca / in / ConverterBase.java
1 // $Id$
2 /**
3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10 package eu.etaxonomy.cdm.io.dwca.in;
11
12 import java.util.Set;
13
14 import org.apache.commons.lang.StringUtils;
15 import org.apache.log4j.Logger;
16
17 import eu.etaxonomy.cdm.io.common.IoStateBase;
18 import eu.etaxonomy.cdm.io.common.events.IIoEvent;
19 import eu.etaxonomy.cdm.io.common.events.IIoObserver;
20 import eu.etaxonomy.cdm.io.common.events.IoProblemEvent;
21 import eu.etaxonomy.cdm.io.dwca.TermUri;
22
23 /**
24 * @author a.mueller
25 * @date 23.11.2011
26 *
27 */
28 public class ConverterBase<STATE extends IoStateBase> {
29 @SuppressWarnings("unused")
30 private static final Logger logger = Logger.getLogger(ConverterBase.class);
31
32 protected STATE state;
33
34
35 protected void fireWarningEvent(String message, CsvStreamItem item, Integer severity) {
36 fireWarningEvent(message, getDataLocation(item), severity, 1);
37 }
38
39 private String getDataLocation(CsvStreamItem item) {
40 String location = item.getLocation();
41 return location;
42 }
43
44 protected void fireWarningEvent(String message, String dataLocation, Integer severity) {
45 fireWarningEvent(message, dataLocation, severity, 1);
46 }
47
48 protected void fireWarningEvent(String message, String dataLocation, Integer severity, int stackDepth) {
49 stackDepth++;
50 StackTraceElement[] stackTrace = new Exception().getStackTrace();
51 int lineNumber = stackTrace[stackDepth].getLineNumber();
52 String methodName = stackTrace[stackDepth].getMethodName();
53
54 IoProblemEvent event = IoProblemEvent.NewInstance(this.getClass(), message, dataLocation,
55 lineNumber, severity, methodName);
56
57 //for performance improvement one may read:
58 //http://stackoverflow.com/questions/421280/in-java-how-do-i-find-the-caller-of-a-method-using-stacktrace-or-reflection
59 // Object o = new SecurityManager().getSecurityContext();
60
61 fire(event);
62 }
63
64 protected void fire(IIoEvent event){
65 Set<IIoObserver> observers = state.getConfig().getObservers();
66 for (IIoObserver observer: observers){
67 observer.handleEvent(event);
68 }
69 if (observers.size() == 0){
70 logger.warn(event.getMessage() + " (no observer for message!).");
71 }
72 }
73
74
75
76 /**
77 * Returns the value for the given term in the item.
78 */
79 protected String getValue(CsvStreamItem item, TermUri term) {
80 return item.get(term.getUriString());
81 }
82
83 /**
84 * Checks if the given term has a value in item that is not blank (null, empty or whitespace only).
85 * @param term
86 * @param item
87 * @return true if value is not blank
88 */
89 protected boolean exists(TermUri term, CsvStreamItem item) {
90 return ! StringUtils.isBlank(getValue(item, term));
91 }
92
93 }