Revision b9fdd7f4
Added by unknown about 7 years ago
app-import/src/main/java/eu/etaxonomy/cdm/app/caryophyllales/CaryoActivator.java | ||
---|---|---|
29 | 29 |
/** |
30 | 30 |
* @author a.mueller |
31 | 31 |
* @created 16.10.2012 |
32 |
* @version 1.0 |
|
33 | 32 |
*/ |
34 | 33 |
public class CaryoActivator extends SourceBase{ |
35 | 34 |
private static final Logger logger = Logger.getLogger(CaryoActivator.class); |
app-import/src/main/java/eu/etaxonomy/cdm/app/common/TestActivator.java | ||
---|---|---|
41 | 41 |
|
42 | 42 |
//static final Source faunaEuropaeaSource = FaunaEuropaeaSources.faunEu(); |
43 | 43 |
// static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql(); |
44 |
// static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
|
|
44 |
static final ICdmDataSource cdmDestination = CdmDestinations.localH2(); |
|
45 | 45 |
// static final ICdmDataSource cdmDestination = CdmDestinations.cdm_flora_central_africa_production(); |
46 | 46 |
// static final ICdmDataSource cdmDestination = CdmDestinations.cdm_edit_cichorieae_preview(); |
47 |
static final ICdmDataSource cdmDestination = CdmDestinations.cdm_cyprus_production(); |
|
47 |
// static final ICdmDataSource cdmDestination = CdmDestinations.cdm_cyprus_production();
|
|
48 | 48 |
|
49 | 49 |
|
50 | 50 |
static final int limitSave = 2000; |
app-import/src/main/java/eu/etaxonomy/cdm/app/greece/FloraHellenicaActivator.java | ||
---|---|---|
41 | 41 |
//database validation status (create, update, validate ...) |
42 | 42 |
static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE; |
43 | 43 |
|
44 |
// static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
|
|
44 |
static final ICdmDataSource cdmDestination = CdmDestinations.localH2(); |
|
45 | 45 |
// static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql_test(); |
46 |
static final ICdmDataSource cdmDestination = CdmDestinations.cdm_greece_checklist_production(); |
|
46 |
// static final ICdmDataSource cdmDestination = CdmDestinations.cdm_greece_checklist_production();
|
|
47 | 47 |
|
48 | 48 |
//feature tree uuid |
49 | 49 |
public static final UUID featureTreeUuid = UUID.fromString("9e1e0e81-7475-4b28-8619-b7f42cd760b6"); |
app-import/src/main/java/eu/etaxonomy/cdm/app/images/AbstractImageImporter.java | ||
---|---|---|
1 | 1 |
/** |
2 | 2 |
* Copyright (C) 2007 EDIT |
3 |
* European Distributed Institute of Taxonomy
|
|
3 |
* European Distributed Institute of Taxonomy |
|
4 | 4 |
* http://www.e-taxonomy.eu |
5 |
*
|
|
5 |
* |
|
6 | 6 |
* The contents of this file are subject to the Mozilla Public License Version 1.1 |
7 | 7 |
* See LICENSE.TXT at the top of this package for the full license terms. |
8 | 8 |
*/ |
... | ... | |
14 | 14 |
|
15 | 15 |
import eu.etaxonomy.cdm.api.application.CdmApplicationController; |
16 | 16 |
import eu.etaxonomy.cdm.api.service.IAgentService; |
17 |
import eu.etaxonomy.cdm.api.service.IClassificationService; |
|
17 | 18 |
import eu.etaxonomy.cdm.api.service.ICommonService; |
18 | 19 |
import eu.etaxonomy.cdm.api.service.IDescriptionService; |
19 | 20 |
import eu.etaxonomy.cdm.api.service.IReferenceService; |
20 | 21 |
import eu.etaxonomy.cdm.api.service.ITaxonService; |
21 |
import eu.etaxonomy.cdm.api.service.IClassificationService; |
|
22 |
import eu.etaxonomy.cdm.io.common.CdmIoBase; |
|
23 |
import eu.etaxonomy.cdm.io.common.ICdmIO; |
|
22 |
import eu.etaxonomy.cdm.io.common.CdmImportBase; |
|
24 | 23 |
|
25 | 24 |
/** |
26 |
* |
|
27 | 25 |
* @author n.hoffmann |
28 | 26 |
* @created 11.11.2008 |
29 |
* @version 1.0 |
|
30 | 27 |
*/ |
31 |
public abstract class AbstractImageImporter extends CdmIoBase<ImageImportState> implements ICdmIO<ImageImportState> { |
|
32 |
private static final Logger logger = Logger.getLogger(AbstractImageImporter.class); |
|
33 |
|
|
28 |
public abstract class AbstractImageImporter |
|
29 |
extends CdmImportBase<ImageImportConfigurator, ImageImportState> { |
|
30 |
|
|
31 |
private static final long serialVersionUID = 6178173988325980060L; |
|
32 |
private static final Logger logger = Logger.getLogger(AbstractImageImporter.class); |
|
33 |
|
|
34 | 34 |
protected CdmApplicationController appCtr; |
35 |
|
|
35 |
|
|
36 | 36 |
protected CdmApplicationController cdmApp; |
37 | 37 |
protected ITaxonService taxonService; |
38 | 38 |
protected IClassificationService classificationService; |
... | ... | |
41 | 41 |
protected IDescriptionService descriptionService; |
42 | 42 |
protected IReferenceService referenceService; |
43 | 43 |
protected ICommonService commonService; |
44 |
|
|
44 |
|
|
45 | 45 |
/* (non-Javadoc) |
46 | 46 |
* @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, java.util.Map) |
47 | 47 |
*/ |
... | ... | |
49 | 49 |
public void doInvoke(ImageImportState state) { |
50 | 50 |
//cdmApp = config.getCdmAppController(); |
51 | 51 |
//if (config instanceof ImageImportConfigurator){ |
52 |
|
|
52 |
|
|
53 | 53 |
TransactionStatus status = startTransaction(); |
54 |
|
|
54 |
|
|
55 | 55 |
taxonService = getTaxonService(); |
56 | 56 |
agentService = getAgentService(); |
57 | 57 |
referenceService = getReferenceService(); |
... | ... | |
59 | 59 |
classificationService = getClassificationService(); |
60 | 60 |
|
61 | 61 |
invokeImageImport(state); |
62 |
|
|
62 |
|
|
63 | 63 |
commitTransaction(status); |
64 |
|
|
64 |
|
|
65 | 65 |
return; |
66 | 66 |
} |
67 | 67 |
|
68 | 68 |
/** |
69 |
* This method defines the image import.
|
|
69 |
* This method defines the image import. |
|
70 | 70 |
* It should take care of where to get the images from and what object they get attached to. |
71 |
*
|
|
71 |
* |
|
72 | 72 |
* @param config |
73 | 73 |
*/ |
74 | 74 |
protected abstract void invokeImageImport(ImageImportState state); |
... | ... | |
94 | 94 |
} |
95 | 95 |
|
96 | 96 |
|
97 |
|
|
97 |
|
|
98 | 98 |
} |
app-import/src/main/java/eu/etaxonomy/cdm/app/wp6/palmae/PalmaeActivator.java | ||
---|---|---|
38 | 38 |
/** |
39 | 39 |
* @author a.mueller |
40 | 40 |
* @created 20.06.2008 |
41 |
* @version 1.0 |
|
42 | 41 |
*/ |
43 | 42 |
public class PalmaeActivator { |
44 | 43 |
private static final Logger logger = Logger.getLogger(PalmaeActivator.class); |
app-import/src/main/java/eu/etaxonomy/cdm/io/PalmaeProtologueImport.java | ||
---|---|---|
1 | 1 |
/** |
2 | 2 |
* Copyright (C) 2007 EDIT |
3 |
* European Distributed Institute of Taxonomy
|
|
3 |
* European Distributed Institute of Taxonomy |
|
4 | 4 |
* http://www.e-taxonomy.eu |
5 |
*
|
|
5 |
* |
|
6 | 6 |
* The contents of this file are subject to the Mozilla Public License Version 1.1 |
7 | 7 |
* See LICENSE.TXT at the top of this package for the full license terms. |
8 | 8 |
*/ |
... | ... | |
20 | 20 |
import org.springframework.stereotype.Component; |
21 | 21 |
|
22 | 22 |
import eu.etaxonomy.cdm.app.images.AbstractImageImporter; |
23 |
import eu.etaxonomy.cdm.app.images.ImageImportConfigurator; |
|
24 | 23 |
import eu.etaxonomy.cdm.app.images.ImageImportState; |
25 | 24 |
import eu.etaxonomy.cdm.common.ExcelUtils; |
26 | 25 |
import eu.etaxonomy.cdm.model.description.Feature; |
... | ... | |
34 | 33 |
/** |
35 | 34 |
* @author n.hoffmann |
36 | 35 |
* @created 19.11.2008 |
37 |
* @version 1.0 |
|
38 | 36 |
*/ |
39 | 37 |
@Component |
40 | 38 |
public class PalmaeProtologueImport extends AbstractImageImporter { |
41 |
private static final Logger logger = Logger.getLogger(PalmaeProtologueImport.class); |
|
39 |
private static final long serialVersionUID = -7178567387220714414L; |
|
40 |
|
|
41 |
private static final Logger logger = Logger.getLogger(PalmaeProtologueImport.class); |
|
42 | 42 |
|
43 | 43 |
public static final String SPECIES = "Species"; |
44 | 44 |
public static final String TAXONID = "Taxon ID"; |
45 | 45 |
public static final String LINK_PROTO = "Link proto"; |
46 |
|
|
47 |
/* (non-Javadoc) |
|
48 |
* @see eu.etaxonomy.cdm.app.images.AbstractImageImporter#invokeImageImport(eu.etaxonomy.cdm.io.common.IImportConfigurator) |
|
49 |
*/ |
|
46 |
|
|
50 | 47 |
@Override |
51 | 48 |
protected void invokeImageImport(ImageImportState state) { |
52 |
|
|
49 |
|
|
53 | 50 |
ArrayList<HashMap<String, String>> contents; |
54 | 51 |
try { |
55 | 52 |
contents = ExcelUtils.parseXLS(state.getConfig().getSource()); |
... | ... | |
58 | 55 |
state.setUnsuccessfull(); |
59 | 56 |
return; |
60 | 57 |
} |
61 |
|
|
58 |
|
|
62 | 59 |
Set<TaxonNameBase> taxonNameStore = new HashSet<TaxonNameBase>(); |
63 |
|
|
60 |
|
|
64 | 61 |
int count = 0; |
65 |
|
|
62 |
|
|
66 | 63 |
for (HashMap<String, String> row : contents){ |
67 | 64 |
count++; |
68 |
|
|
65 |
|
|
69 | 66 |
TaxonNameBase taxonNameBase = null; |
70 | 67 |
String species = null; |
71 | 68 |
String taxonId = null; |
... | ... | |
78 | 75 |
}catch (Exception e){ |
79 | 76 |
logger.error("The row has errors: rowNumber: " +count + ", content: " + row, e); |
80 | 77 |
} |
81 |
|
|
82 |
|
|
83 |
|
|
78 |
|
|
79 |
|
|
80 |
|
|
84 | 81 |
if(taxonNameBase == null){ |
85 | 82 |
logger.warn("no taxon with this name found: " + species + ", idInSource: " + taxonId); |
86 | 83 |
}else{ |
87 |
|
|
84 |
|
|
88 | 85 |
URI uri; |
89 | 86 |
try { |
90 | 87 |
uri = new URI(linkProto); |
91 | 88 |
MediaRepresentationPart representationPart = MediaRepresentationPart.NewInstance(uri, 0); |
92 | 89 |
MediaRepresentation representation = MediaRepresentation.NewInstance("text/html", null); |
93 | 90 |
representation.addRepresentationPart(representationPart); |
94 |
|
|
91 |
|
|
95 | 92 |
Media media = Media.NewInstance(); |
96 | 93 |
media.addRepresentation(representation); |
97 |
|
|
94 |
|
|
98 | 95 |
TaxonNameDescription description = TaxonNameDescription.NewInstance(); |
99 | 96 |
TextData protolog = TextData.NewInstance(Feature.PROTOLOGUE()); |
100 | 97 |
protolog.addMedia(media); |
... | ... | |
105 | 102 |
logger.error(message); |
106 | 103 |
e.printStackTrace(); |
107 | 104 |
} |
108 |
|
|
105 |
|
|
109 | 106 |
taxonNameStore.add(taxonNameBase); |
110 | 107 |
if(count % 50 == 0){ |
111 | 108 |
logger.info(count + " protologues processed."); |
112 | 109 |
} |
113 | 110 |
} |
114 | 111 |
} |
115 |
|
|
116 |
|
|
112 |
|
|
113 |
|
|
117 | 114 |
getNameService().save(taxonNameStore); |
118 | 115 |
logger.info(count + " protologues imported to CDM store."); |
119 |
|
|
116 |
|
|
120 | 117 |
return; |
121 | 118 |
} |
122 |
|
|
119 |
|
|
123 | 120 |
} |
app-import/src/main/java/eu/etaxonomy/cdm/io/ProtologueImport.java | ||
---|---|---|
1 | 1 |
/** |
2 | 2 |
* Copyright (C) 2007 EDIT |
3 |
* European Distributed Institute of Taxonomy
|
|
3 |
* European Distributed Institute of Taxonomy |
|
4 | 4 |
* http://www.e-taxonomy.eu |
5 |
*
|
|
5 |
* |
|
6 | 6 |
* The contents of this file are subject to the Mozilla Public License Version 1.1 |
7 | 7 |
* See LICENSE.TXT at the top of this package for the full license terms. |
8 | 8 |
*/ |
... | ... | |
22 | 22 |
import eu.etaxonomy.cdm.api.service.ICommonService; |
23 | 23 |
import eu.etaxonomy.cdm.app.wp6.palmae.config.PalmaeProtologueImportConfigurator; |
24 | 24 |
import eu.etaxonomy.cdm.common.CdmUtils; |
25 |
import eu.etaxonomy.cdm.io.common.CdmIoBase;
|
|
25 |
import eu.etaxonomy.cdm.io.common.CdmImportBase;
|
|
26 | 26 |
import eu.etaxonomy.cdm.io.common.DefaultImportState; |
27 | 27 |
import eu.etaxonomy.cdm.model.description.Feature; |
28 | 28 |
import eu.etaxonomy.cdm.model.description.TaxonNameDescription; |
... | ... | |
36 | 36 |
/** |
37 | 37 |
* @author a.mueller |
38 | 38 |
* @created 29.07.2008 |
39 |
* @version 1.0 |
|
40 | 39 |
*/ |
41 | 40 |
@Component |
42 |
public class ProtologueImport extends CdmIoBase<DefaultImportState<PalmaeProtologueImportConfigurator>> { |
|
43 |
private static final Logger logger = Logger.getLogger(ProtologueImport.class); |
|
41 |
public class ProtologueImport |
|
42 |
extends CdmImportBase<PalmaeProtologueImportConfigurator, DefaultImportState<PalmaeProtologueImportConfigurator>>{ |
|
43 |
|
|
44 |
private static final long serialVersionUID = 4580327331805229644L; |
|
45 |
private static final Logger logger = Logger.getLogger(ProtologueImport.class); |
|
44 | 46 |
|
45 | 47 |
private String pluralString = "protologues"; |
46 | 48 |
private static int modCount = 200; |
... | ... | |
49 | 51 |
super(); |
50 | 52 |
} |
51 | 53 |
|
52 |
public void doInvoke(DefaultImportState<PalmaeProtologueImportConfigurator> state){ |
|
54 |
@Override |
|
55 |
public void doInvoke(DefaultImportState<PalmaeProtologueImportConfigurator> state){ |
|
53 | 56 |
logger.info("start make Protologues from files ..."); |
54 |
|
|
57 |
|
|
55 | 58 |
Set<TaxonNameBase> nameStore = new HashSet<TaxonNameBase>(); |
56 |
|
|
59 |
|
|
57 | 60 |
PalmaeProtologueImportConfigurator config = state.getConfig(); |
58 | 61 |
File source = config.getSource(); |
59 | 62 |
TaxonNameBase name; |
... | ... | |
78 | 81 |
logger.info("end make Protologues from files ..."); |
79 | 82 |
return; |
80 | 83 |
} |
81 |
|
|
84 |
|
|
82 | 85 |
private void storeName(Set<TaxonNameBase> nameStore, TaxonNameBase name, DefaultImportState<PalmaeProtologueImportConfigurator> state){ |
83 | 86 |
if (name != null){ |
84 | 87 |
nameStore.add(name); |
... | ... | |
88 | 91 |
return; |
89 | 92 |
} |
90 | 93 |
} |
91 |
|
|
94 |
|
|
92 | 95 |
private TaxonNameBase importFile(File file, DefaultImportState<PalmaeProtologueImportConfigurator> state){ |
93 | 96 |
String originalSourceId = file.getName(); |
94 | 97 |
originalSourceId =originalSourceId.replace("_P.pdf", ""); |
95 | 98 |
originalSourceId =originalSourceId.replace("_tc_", "_tn_"); |
96 | 99 |
String namespace = state.getConfig().getOriginalSourceTaxonNamespace(); |
97 |
|
|
98 |
|
|
100 |
|
|
101 |
|
|
99 | 102 |
//for testing only |
100 | 103 |
TaxonNameBase taxonName = getTaxonName(originalSourceId, namespace); |
101 | 104 |
if (taxonName == null){ |
102 | 105 |
logger.warn("Name not found for " + originalSourceId); |
103 | 106 |
return null; |
104 | 107 |
} |
105 |
|
|
108 |
|
|
106 | 109 |
// TaxonNameDescription nameDescription = null; |
107 | 110 |
// if (taxonName.getDescriptions().size() > 0){ |
108 | 111 |
// nameDescription = (TaxonNameDescription)taxonName.getDescriptions().iterator().next(); |
... | ... | |
118 | 121 |
description.addElement(protolog); |
119 | 122 |
return taxonName; |
120 | 123 |
} |
121 |
|
|
124 |
|
|
122 | 125 |
}catch(NullPointerException e){ |
123 | 126 |
logger.warn("MediaUrl and/or MediaPath not set. Could not get protologue."); |
124 | 127 |
return null; |
125 | 128 |
} |
126 | 129 |
return null; |
127 |
|
|
130 |
|
|
128 | 131 |
} |
129 | 132 |
|
130 | 133 |
private TaxonNameDescription getNameDescription(TaxonNameBase taxonName) { |
... | ... | |
135 | 138 |
result = TaxonNameDescription.NewInstance(); |
136 | 139 |
taxonName.addDescription(result); |
137 | 140 |
} |
138 |
|
|
141 |
|
|
139 | 142 |
return result; |
140 | 143 |
} |
141 |
|
|
144 |
|
|
142 | 145 |
private Media getMedia(DefaultImportState<PalmaeProtologueImportConfigurator> state, File file){ |
143 | 146 |
try { |
144 | 147 |
//File file = (File)state.getConfig().getSource(); |
145 | 148 |
String url = file.toURI().toURL().toString(); |
146 |
String mimeTypePdf = "application/pdf";
|
|
147 |
String suffixPdf = "pdf";
|
|
148 |
String urlStringPdf = state.getConfig().getUrlString() + file.getName();
|
|
149 |
String mimeTypePdf = "application/pdf"; |
|
150 |
String suffixPdf = "pdf"; |
|
151 |
String urlStringPdf = state.getConfig().getUrlString() + file.getName(); |
|
149 | 152 |
URI uri = CdmUtils.string2Uri(urlStringPdf); |
150 | 153 |
Integer size = null; |
151 |
|
|
152 |
if (file.exists()){
|
|
154 |
|
|
155 |
if (file.exists()){ |
|
153 | 156 |
Media media = Media.NewInstance(); |
154 |
|
|
155 |
MediaRepresentation representationPdf = MediaRepresentation.NewInstance(mimeTypePdf, suffixPdf);
|
|
156 |
representationPdf.addRepresentationPart(MediaRepresentationPart.NewInstance(uri, size));
|
|
157 |
media.addRepresentation(representationPdf);
|
|
157 |
|
|
158 |
MediaRepresentation representationPdf = MediaRepresentation.NewInstance(mimeTypePdf, suffixPdf); |
|
159 |
representationPdf.addRepresentationPart(MediaRepresentationPart.NewInstance(uri, size)); |
|
160 |
media.addRepresentation(representationPdf); |
|
158 | 161 |
return media; |
159 | 162 |
}else{ |
160 | 163 |
return null; |
... | ... | |
163 | 166 |
logger.error(e.getMessage()); |
164 | 167 |
return null; |
165 | 168 |
} |
166 |
|
|
169 |
|
|
167 | 170 |
} |
168 |
|
|
171 |
|
|
169 | 172 |
private TaxonNameBase getTaxonName(String originalSourceId, String namespace){ |
170 | 173 |
TaxonNameBase result; |
171 | 174 |
ICommonService commonService = getCommonService(); |
172 |
|
|
175 |
|
|
173 | 176 |
result = (TaxonNameBase)commonService.getSourcedObjectByIdInSource(TaxonNameBase.class, originalSourceId , namespace); |
174 | 177 |
if (result == null){ |
175 | 178 |
logger.warn("Taxon (id: " + originalSourceId + ", namespace: " + namespace + ") could not be found"); |
176 | 179 |
} |
177 | 180 |
return result; |
178 | 181 |
} |
179 |
|
|
180 |
|
|
181 |
public boolean doCheck(DefaultImportState state){ |
|
182 |
|
|
183 |
|
|
184 |
@Override |
|
185 |
public boolean doCheck(DefaultImportState state){ |
|
182 | 186 |
boolean result = true; |
183 | 187 |
return result; |
184 | 188 |
} |
185 |
|
|
189 |
|
|
186 | 190 |
/* (non-Javadoc) |
187 | 191 |
* @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator) |
188 | 192 |
*/ |
189 |
protected boolean isIgnore(DefaultImportState state){ |
|
193 |
@Override |
|
194 |
protected boolean isIgnore(DefaultImportState state){ |
|
190 | 195 |
return false; // ! state.getConfig(); |
191 | 196 |
} |
192 |
|
|
197 |
|
|
193 | 198 |
protected void doCount(int count, int modCount, String pluralString){ |
194 | 199 |
if ((count % modCount ) == 0 && count!= 0 ){ logger.info(pluralString + " handled: " + (count));} |
195 | 200 |
} |
app-import/src/main/java/eu/etaxonomy/cdm/io/algaterra/AlgaTerraDnaImport.java | ||
---|---|---|
72 | 72 |
} |
73 | 73 |
|
74 | 74 |
|
75 |
|
|
76 |
/* (non-Javadoc) |
|
77 |
* @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getIdQuery() |
|
78 |
*/ |
|
79 | 75 |
@Override |
80 | 76 |
protected String getIdQuery(BerlinModelImportState bmState) { |
81 | 77 |
AlgaTerraImportState state = (AlgaTerraImportState)bmState; |
... | ... | |
368 | 364 |
String nameSpace; |
369 | 365 |
Class<?> cdmClass; |
370 | 366 |
Set<String> idSet; |
371 |
Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
|
|
367 |
Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<>(); |
|
372 | 368 |
|
373 | 369 |
try{ |
374 |
Set<String> taxonIdSet = new HashSet<String>();
|
|
370 |
Set<String> taxonIdSet = new HashSet<>(); |
|
375 | 371 |
|
376 |
Set<String> ecoFactFkSet = new HashSet<String>();
|
|
372 |
Set<String> ecoFactFkSet = new HashSet<>(); |
|
377 | 373 |
|
378 | 374 |
while (rs.next()){ |
379 | 375 |
handleForeignKey(rs, taxonIdSet, "taxonId"); |
app-import/src/main/java/eu/etaxonomy/cdm/io/greece/FloraHellenicaCommentsImport.java | ||
---|---|---|
24 | 24 |
import eu.etaxonomy.cdm.model.taxon.Taxon; |
25 | 25 |
|
26 | 26 |
/** |
27 |
* Import for the Flora Hellenica taxon comments. |
|
28 |
* |
|
27 | 29 |
* @author a.mueller |
28 | 30 |
* @date 14.12.2016 |
29 |
* |
|
30 | 31 |
*/ |
31 | 32 |
|
32 | 33 |
@Component |
... | ... | |
100 | 101 |
return ; |
101 | 102 |
} |
102 | 103 |
|
103 |
|
|
104 | 104 |
} |
Also available in: Unified diff
cleanup