diff --git a/api/pom.xml b/api/pom.xml index 256505eac3..4c2b8ddf25 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -13,7 +13,7 @@ api jar - COL API + CLB API 4.10.0 diff --git a/coldp/pom.xml b/coldp/pom.xml index 11b9301ed8..4fdf70b3e3 100644 --- a/coldp/pom.xml +++ b/coldp/pom.xml @@ -10,7 +10,7 @@ coldp - COL Data Packages + CLB Data Packages This module provides terms for the ColDP format with minimal dependencies diff --git a/core/dataset/003/3/4-names.txt.gz b/core/dataset/003/3/4-names.txt.gz new file mode 100644 index 0000000000..e1d083d8e4 Binary files /dev/null and b/core/dataset/003/3/4-names.txt.gz differ diff --git a/core/dataset/003/3/4-tree.txt.gz b/core/dataset/003/3/4-tree.txt.gz new file mode 100644 index 0000000000..82265307f1 Binary files /dev/null and b/core/dataset/003/3/4-tree.txt.gz differ diff --git a/core/dataset/003/3/sector/2/1-names.txt.gz b/core/dataset/003/3/sector/2/1-names.txt.gz new file mode 100644 index 0000000000..001322f84b Binary files /dev/null and b/core/dataset/003/3/sector/2/1-names.txt.gz differ diff --git a/core/dataset/003/3/sector/3/1-names.txt.gz b/core/dataset/003/3/sector/3/1-names.txt.gz new file mode 100644 index 0000000000..01d740cbdd Binary files /dev/null and b/core/dataset/003/3/sector/3/1-names.txt.gz differ diff --git a/core/dataset/003/3/sector/4/1-names.txt.gz b/core/dataset/003/3/sector/4/1-names.txt.gz new file mode 100644 index 0000000000..28e53f331c Binary files /dev/null and b/core/dataset/003/3/sector/4/1-names.txt.gz differ diff --git a/core/pom.xml b/core/pom.xml new file mode 100644 index 0000000000..74b749820c --- /dev/null +++ b/core/pom.xml @@ -0,0 +1,330 @@ + + + 4.0.0 + + org.catalogueoflife + motherpom + 1.0-SNAPSHOT + + + core + CLB core + Core components of ChecklistBank not yet tight to any webservice framework + + + + + org.catalogueoflife + coldp + + + org.catalogueoflife + metadata + + + org.catalogueoflife + api + + + org.gbif + name-parser-api + + + org.catalogueoflife + parser + + + org.catalogueoflife + reader + + + org.catalogueoflife + reader-xls + + + org.catalogueoflife + dao + + + org.catalogueoflife + doi + + + org.gbif + dwc-api + + + org.gbif + dwca-io + + + org.gbif + text-tree + + + + org.mybatis + mybatis + + + org.postgresql + postgresql + + + com.zaxxer + HikariCP + + + + + + org.mapdb + mapdb + + + com.esotericsoftware + kryo + + + org.apache.fury + fury-core + + + + + org.elasticsearch.client + elasticsearch-rest-client + ${elasticsearch.version} + + + + com.github.docker-java + docker-java + + + com.github.docker-java + docker-java-transport-httpclient5 + + + + + it.unimi.dsi + fastutil + + + com.univocity + univocity-parsers + + + + + com.ibm.icu + icu4j + + + + + jakarta.xml.bind + jakarta.xml.bind-api + + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + + + + org.apache.commons + commons-lang3 + + + org.apache.commons + commons-text + + + + + org.simplejavamail + simple-java-mail + + + com.github.ben-manes.caffeine + caffeine + + + io.jsonwebtoken + jjwt-api + + + io.jsonwebtoken + jjwt-impl + runtime + + + io.jsonwebtoken + jjwt-jackson + runtime + + + org.apache.tika + tika-core + + + org.apache.poi + poi-ooxml + + + org.eclipse.jetty + jetty-util + + + jakarta.ws.rs + jakarta.ws.rs-api + + + + + org.slf4j + slf4j-api + + + org.slf4j + jul-to-slf4j + + + ch.qos.logback + logback-classic + + + jakarta.validation + jakarta.validation-api + + + co.elastic.logging + logback-ecs-encoder + + + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.vintage + junit-vintage-engine + test + + + org.mockito + mockito-core + test + + + org.assertj + assertj-core + test + + + org.catalogueoflife + api + tests + test + + + org.catalogueoflife + dao + tests + test + + + org.javers + javers-core + test + + + org.testcontainers + junit-jupiter + test + + + org.testcontainers + postgresql + test + + + org.testcontainers + elasticsearch + test + + + + com.fasterxml.jackson.jakarta.rs + jackson-jakarta-rs-json-provider + test + + + org.hibernate.validator + hibernate-validator + test + + + org.glassfish + jakarta.el + test + + + + + + + src/main/resources + false + + **/*.yaml + + + + src/main/resources + true + + **/*.yaml + + + + + + + src/test/resources + false + + gbifAuth.yaml + datacite.yaml + + + + src/test/resources + true + + gbifAuth.yaml + datacite.yaml + + + + + + \ No newline at end of file diff --git a/webservice/src/main/java/life/catalogue/assembly/SectorDelete.java b/core/src/main/java/life/catalogue/assembly/SectorDelete.java similarity index 100% rename from webservice/src/main/java/life/catalogue/assembly/SectorDelete.java rename to core/src/main/java/life/catalogue/assembly/SectorDelete.java diff --git a/webservice/src/main/java/life/catalogue/assembly/SectorDeleteFull.java b/core/src/main/java/life/catalogue/assembly/SectorDeleteFull.java similarity index 99% rename from webservice/src/main/java/life/catalogue/assembly/SectorDeleteFull.java rename to core/src/main/java/life/catalogue/assembly/SectorDeleteFull.java index 962ace5fe0..09313b5526 100644 --- a/webservice/src/main/java/life/catalogue/assembly/SectorDeleteFull.java +++ b/core/src/main/java/life/catalogue/assembly/SectorDeleteFull.java @@ -3,7 +3,6 @@ import life.catalogue.api.model.DSID; import life.catalogue.api.model.DSIDValue; import life.catalogue.api.model.Sector; -import life.catalogue.api.model.User; import life.catalogue.api.vocab.ImportState; import life.catalogue.dao.SectorDao; import life.catalogue.dao.SectorImportDao; diff --git a/webservice/src/main/java/life/catalogue/assembly/SectorRunnable.java b/core/src/main/java/life/catalogue/assembly/SectorRunnable.java similarity index 98% rename from webservice/src/main/java/life/catalogue/assembly/SectorRunnable.java rename to core/src/main/java/life/catalogue/assembly/SectorRunnable.java index 32bd5245e5..5a8a282038 100644 --- a/webservice/src/main/java/life/catalogue/assembly/SectorRunnable.java +++ b/core/src/main/java/life/catalogue/assembly/SectorRunnable.java @@ -7,6 +7,8 @@ import life.catalogue.api.util.ObjectUtils; import life.catalogue.api.vocab.*; import life.catalogue.common.util.LoggingUtils; +import life.catalogue.concurrent.DatasetBlockedException; +import life.catalogue.concurrent.DatasetLock; import life.catalogue.dao.DatasetInfoCache; import life.catalogue.dao.SectorDao; import life.catalogue.dao.SectorImportDao; @@ -39,6 +41,7 @@ abstract class SectorRunnable implements Runnable { Rank.SUBSPECIES, Rank.VARIETY, Rank.FORM ); + protected final UUID key = UUID.randomUUID(); protected final DSID sectorKey; protected final int subjectDatasetKey; protected Sector sector; @@ -126,9 +129,6 @@ public Map getDecisions() { @Override public void run() { - LoggingUtils.setSectorMDC(sectorKey, state.getAttempt()); - LoggingUtils.setSourceMDC(sector.getSubjectDatasetKey()); - try { state.setStarted(LocalDateTime.now()); state.setState( ImportState.PREPARING); diff --git a/webservice/src/main/java/life/catalogue/assembly/SectorSync.java b/core/src/main/java/life/catalogue/assembly/SectorSync.java similarity index 100% rename from webservice/src/main/java/life/catalogue/assembly/SectorSync.java rename to core/src/main/java/life/catalogue/assembly/SectorSync.java diff --git a/webservice/src/main/java/life/catalogue/assembly/SycnException.java b/core/src/main/java/life/catalogue/assembly/SycnException.java similarity index 100% rename from webservice/src/main/java/life/catalogue/assembly/SycnException.java rename to core/src/main/java/life/catalogue/assembly/SycnException.java diff --git a/webservice/src/main/java/life/catalogue/assembly/SyncFactory.java b/core/src/main/java/life/catalogue/assembly/SyncFactory.java similarity index 98% rename from webservice/src/main/java/life/catalogue/assembly/SyncFactory.java rename to core/src/main/java/life/catalogue/assembly/SyncFactory.java index ed1066c2df..1992a38a33 100644 --- a/webservice/src/main/java/life/catalogue/assembly/SyncFactory.java +++ b/core/src/main/java/life/catalogue/assembly/SyncFactory.java @@ -2,7 +2,6 @@ import life.catalogue.api.model.DSID; import life.catalogue.api.model.Sector; -import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.common.id.ShortUUID; import life.catalogue.dao.DatasetInfoCache; import life.catalogue.dao.EstimateDao; diff --git a/webservice/src/main/java/life/catalogue/assembly/SyncManager.java b/core/src/main/java/life/catalogue/assembly/SyncManager.java similarity index 91% rename from webservice/src/main/java/life/catalogue/assembly/SyncManager.java rename to core/src/main/java/life/catalogue/assembly/SyncManager.java index 0735820596..69ebb4257f 100644 --- a/webservice/src/main/java/life/catalogue/assembly/SyncManager.java +++ b/core/src/main/java/life/catalogue/assembly/SyncManager.java @@ -17,7 +17,6 @@ import life.catalogue.db.mapper.NameMapper; import life.catalogue.db.mapper.SectorImportMapper; import life.catalogue.db.mapper.SectorMapper; -import life.catalogue.importer.ImportManager; import life.catalogue.matching.nidx.NameIndex; import org.gbif.nameparser.utils.NamedThreadFactory; @@ -32,7 +31,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; -import org.apache.ibatis.exceptions.PersistenceException; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.slf4j.Logger; @@ -49,7 +47,6 @@ public class SyncManager implements Managed, Idle { private static final String SCHEDULER_THREAD_NAME = "sync-scheduler"; private ExecutorService exec; - private ImportManager importManager; private final SyncManagerConfig cfg; private Thread schedulerThread; private SyncSchedulerJob schedulerJob; @@ -151,10 +148,6 @@ public boolean isIdle() { return !hasStarted() || getState().isIdle(); } - public void setImportManager(ImportManager importManager) { - this.importManager = importManager; - } - public SyncState getState() { return new SyncState(syncs.values(), total(failed), total(counter)); } @@ -187,28 +180,17 @@ public DSID hasSyncingSector(int datasetKey){ } /** - * Makes sure the dataset has data and is currently not importing + * Makes sure the dataset has data */ - private void assertStableData(SectorRunnable job) throws IllegalArgumentException { + private void assertDataExists(SectorRunnable job) throws IllegalArgumentException { Sector s = job.sector; try (SqlSession session = factory.openSession(true)) { - try { - //make sure dataset is currently not imported - if (importManager != null && importManager.isRunning(s.getSubjectDatasetKey())) { - LOG.warn("Concurrently running dataset import. Cannot sync {}", s); - throw new IllegalArgumentException("Dataset "+s.getSubjectDatasetKey()+" currently being imported. Cannot sync " + s); - } - NameMapper nm = session.getMapper(NameMapper.class); - if (!(job instanceof SectorSync) || nm.hasData(s.getSubjectDatasetKey())) { - return; - } - } catch (PersistenceException e) { - // missing partitions cause this - LOG.debug("No partition exists for dataset {}", s.getSubjectDatasetKey(), e); + NameMapper nm = session.getMapper(NameMapper.class); + if (job instanceof SectorSync && !nm.hasData(s.getSubjectDatasetKey())) { + LOG.warn("Cannot sync {} which has no data and probably never has been imported", s); + throw new IllegalArgumentException("Dataset empty. Cannot sync " + s); } } - LOG.warn("Cannot sync {} which has never been imported", s); - throw new IllegalArgumentException("Dataset empty. Cannot sync " + s); } private DatasetSettings projectSettings(int projectKey) { @@ -299,7 +281,7 @@ private synchronized boolean queueJob(SectorRunnable job, boolean blockMergeSync return rejectJob(job, String.format("Merge sectors blocked in project, skip sync of sector %s", job.sector)); } else { - assertStableData(job); + assertDataExists(job); syncs.put(job.sectorKey, new SectorFuture(job, exec.submit(job))); LOG.info("Queued {} for {} targeting {}", job.getClass().getSimpleName(), job.sector, job.sector.getTarget()); return true; diff --git a/webservice/src/main/java/life/catalogue/assembly/SyncNameUsageRules.java b/core/src/main/java/life/catalogue/assembly/SyncNameUsageRules.java similarity index 100% rename from webservice/src/main/java/life/catalogue/assembly/SyncNameUsageRules.java rename to core/src/main/java/life/catalogue/assembly/SyncNameUsageRules.java diff --git a/webservice/src/main/java/life/catalogue/assembly/SyncSchedulerJob.java b/core/src/main/java/life/catalogue/assembly/SyncSchedulerJob.java similarity index 97% rename from webservice/src/main/java/life/catalogue/assembly/SyncSchedulerJob.java rename to core/src/main/java/life/catalogue/assembly/SyncSchedulerJob.java index 48ed26695d..fcb85dbec6 100644 --- a/webservice/src/main/java/life/catalogue/assembly/SyncSchedulerJob.java +++ b/core/src/main/java/life/catalogue/assembly/SyncSchedulerJob.java @@ -1,7 +1,6 @@ package life.catalogue.assembly; import life.catalogue.api.model.Sector; -import life.catalogue.api.model.User; import life.catalogue.api.search.DatasetSearchRequest; import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.api.vocab.Setting; @@ -10,7 +9,6 @@ import life.catalogue.config.SyncManagerConfig; import life.catalogue.db.mapper.DatasetMapper; import life.catalogue.db.mapper.SectorMapper; -import life.catalogue.importer.ImportRequest; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; diff --git a/webservice/src/main/java/life/catalogue/assembly/SyncState.java b/core/src/main/java/life/catalogue/assembly/SyncState.java similarity index 100% rename from webservice/src/main/java/life/catalogue/assembly/SyncState.java rename to core/src/main/java/life/catalogue/assembly/SyncState.java diff --git a/webservice/src/main/java/life/catalogue/assembly/TreeBaseHandler.java b/core/src/main/java/life/catalogue/assembly/TreeBaseHandler.java similarity index 100% rename from webservice/src/main/java/life/catalogue/assembly/TreeBaseHandler.java rename to core/src/main/java/life/catalogue/assembly/TreeBaseHandler.java diff --git a/webservice/src/main/java/life/catalogue/assembly/TreeCopyHandler.java b/core/src/main/java/life/catalogue/assembly/TreeCopyHandler.java similarity index 99% rename from webservice/src/main/java/life/catalogue/assembly/TreeCopyHandler.java rename to core/src/main/java/life/catalogue/assembly/TreeCopyHandler.java index 09f8b6c466..05d2d6a86b 100644 --- a/webservice/src/main/java/life/catalogue/assembly/TreeCopyHandler.java +++ b/core/src/main/java/life/catalogue/assembly/TreeCopyHandler.java @@ -1,7 +1,6 @@ package life.catalogue.assembly; import life.catalogue.api.model.*; -import life.catalogue.api.vocab.DatasetType; import life.catalogue.api.vocab.IgnoreReason; import life.catalogue.api.vocab.TaxonomicStatus; import life.catalogue.dao.CopyUtil; diff --git a/webservice/src/main/java/life/catalogue/assembly/TreeHandler.java b/core/src/main/java/life/catalogue/assembly/TreeHandler.java similarity index 100% rename from webservice/src/main/java/life/catalogue/assembly/TreeHandler.java rename to core/src/main/java/life/catalogue/assembly/TreeHandler.java diff --git a/webservice/src/main/java/life/catalogue/assembly/TreeMergeHandler.java b/core/src/main/java/life/catalogue/assembly/TreeMergeHandler.java similarity index 100% rename from webservice/src/main/java/life/catalogue/assembly/TreeMergeHandler.java rename to core/src/main/java/life/catalogue/assembly/TreeMergeHandler.java diff --git a/webservice/src/main/java/life/catalogue/assembly/TreeMergeHandlerConfig.java b/core/src/main/java/life/catalogue/assembly/TreeMergeHandlerConfig.java similarity index 100% rename from webservice/src/main/java/life/catalogue/assembly/TreeMergeHandlerConfig.java rename to core/src/main/java/life/catalogue/assembly/TreeMergeHandlerConfig.java diff --git a/webservice/src/main/java/life/catalogue/basgroup/BasionymSorter.java b/core/src/main/java/life/catalogue/basgroup/BasionymSorter.java similarity index 91% rename from webservice/src/main/java/life/catalogue/basgroup/BasionymSorter.java rename to core/src/main/java/life/catalogue/basgroup/BasionymSorter.java index 62d4bead15..83c5ec7ce1 100644 --- a/webservice/src/main/java/life/catalogue/basgroup/BasionymSorter.java +++ b/core/src/main/java/life/catalogue/basgroup/BasionymSorter.java @@ -1,7 +1,5 @@ package life.catalogue.basgroup; -import com.google.common.annotations.VisibleForTesting; - import life.catalogue.api.model.*; import life.catalogue.api.vocab.Issue; @@ -13,7 +11,6 @@ import java.util.*; import java.util.function.Consumer; import java.util.function.Function; -import java.util.function.IntFunction; import java.util.function.ToIntFunction; import org.gbif.nameparser.api.NomCode; @@ -22,8 +19,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Functions; - import it.unimi.dsi.fastutil.Pair; /** @@ -86,8 +81,8 @@ public String toString() { * @return */ public Collection> groupBasionyms(NomCode code, String epithet, List names, - Function nameResolver, - Consumer> issueConsumer + Function nameResolver, + Consumer> issueConsumer ) { List> groups = new ArrayList<>(); diff --git a/webservice/src/main/java/life/catalogue/basgroup/HomotypicConsolidationJob.java b/core/src/main/java/life/catalogue/basgroup/HomotypicConsolidationJob.java similarity index 100% rename from webservice/src/main/java/life/catalogue/basgroup/HomotypicConsolidationJob.java rename to core/src/main/java/life/catalogue/basgroup/HomotypicConsolidationJob.java diff --git a/webservice/src/main/java/life/catalogue/basgroup/HomotypicConsolidator.java b/core/src/main/java/life/catalogue/basgroup/HomotypicConsolidator.java similarity index 100% rename from webservice/src/main/java/life/catalogue/basgroup/HomotypicConsolidator.java rename to core/src/main/java/life/catalogue/basgroup/HomotypicConsolidator.java diff --git a/webservice/src/main/java/life/catalogue/basgroup/HomotypicGroup.java b/core/src/main/java/life/catalogue/basgroup/HomotypicGroup.java similarity index 99% rename from webservice/src/main/java/life/catalogue/basgroup/HomotypicGroup.java rename to core/src/main/java/life/catalogue/basgroup/HomotypicGroup.java index 10905a8db9..e5dd21da1d 100644 --- a/webservice/src/main/java/life/catalogue/basgroup/HomotypicGroup.java +++ b/core/src/main/java/life/catalogue/basgroup/HomotypicGroup.java @@ -1,7 +1,6 @@ package life.catalogue.basgroup; import life.catalogue.api.model.FormattableName; -import life.catalogue.api.model.HasID; import org.gbif.nameparser.api.Authorship; diff --git a/webservice/src/main/java/life/catalogue/basgroup/SectorPriority.java b/core/src/main/java/life/catalogue/basgroup/SectorPriority.java similarity index 100% rename from webservice/src/main/java/life/catalogue/basgroup/SectorPriority.java rename to core/src/main/java/life/catalogue/basgroup/SectorPriority.java diff --git a/webservice/src/main/java/life/catalogue/cache/CacheFlush.java b/core/src/main/java/life/catalogue/cache/CacheFlush.java similarity index 100% rename from webservice/src/main/java/life/catalogue/cache/CacheFlush.java rename to core/src/main/java/life/catalogue/cache/CacheFlush.java diff --git a/webservice/src/main/java/life/catalogue/cache/LatestDatasetKeyCache.java b/core/src/main/java/life/catalogue/cache/LatestDatasetKeyCache.java similarity index 100% rename from webservice/src/main/java/life/catalogue/cache/LatestDatasetKeyCache.java rename to core/src/main/java/life/catalogue/cache/LatestDatasetKeyCache.java diff --git a/webservice/src/main/java/life/catalogue/cache/LatestDatasetKeyCacheImpl.java b/core/src/main/java/life/catalogue/cache/LatestDatasetKeyCacheImpl.java similarity index 100% rename from webservice/src/main/java/life/catalogue/cache/LatestDatasetKeyCacheImpl.java rename to core/src/main/java/life/catalogue/cache/LatestDatasetKeyCacheImpl.java diff --git a/webservice/src/main/java/life/catalogue/doi/DoiUpdater.java b/core/src/main/java/life/catalogue/doi/DoiUpdater.java similarity index 100% rename from webservice/src/main/java/life/catalogue/doi/DoiUpdater.java rename to core/src/main/java/life/catalogue/doi/DoiUpdater.java diff --git a/webservice/src/main/java/life/catalogue/exporter/AcefExport.java b/core/src/main/java/life/catalogue/exporter/AcefExport.java similarity index 96% rename from webservice/src/main/java/life/catalogue/exporter/AcefExport.java rename to core/src/main/java/life/catalogue/exporter/AcefExport.java index 92c55ae684..8e7e841974 100644 --- a/webservice/src/main/java/life/catalogue/exporter/AcefExport.java +++ b/core/src/main/java/life/catalogue/exporter/AcefExport.java @@ -1,6 +1,5 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.Dataset; import life.catalogue.api.model.DatasetImport; import life.catalogue.api.model.ExportRequest; @@ -45,7 +44,7 @@ public class AcefExport extends DatasetExportJob { private static final Pattern COPY_END = Pattern.compile("^\\s*\\)\\s*TO\\s*'(.+)'"); private static final Pattern VAR_DATASET_KEY = Pattern.compile("\\{\\{datasetKey}}", Pattern.CASE_INSENSITIVE); - public AcefExport(ExportRequest req, int userKey, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService) { + public AcefExport(ExportRequest req, int userKey, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService) { super(req, userKey, DataFormat.ACEF, false, factory, cfg, imageService); if (req.hasFilter()) { throw new IllegalArgumentException("ACEF exports cannot have any filters"); @@ -115,12 +114,12 @@ private void exportLogos() throws IOException { List resp = dm.search(req, null, new Page(0,1000)); LOG.info("Found " +resp.size()+ " source datasets of project " + datasetKey); for (Dataset d : resp) { - Path p = cfg.img.datasetLogo(d.getKey(), ImgConfig.Scale.MEDIUM); + Path p = iCfg.datasetLogo(d.getKey(), ImgConfig.Scale.MEDIUM); if (java.nio.file.Files.exists(p)) { File img = new File(logoDir, (d.getKey()-1000) + ".png"); Files.copy(p.toFile(), img); - p = cfg.img.datasetLogo(d.getKey(), ImgConfig.Scale.SMALL); + p = iCfg.datasetLogo(d.getKey(), ImgConfig.Scale.SMALL); img = new File(logoDir, (d.getKey()-1000) + "-sm.png"); Files.copy(p.toFile(), img); counter++; diff --git a/webservice/src/main/java/life/catalogue/exporter/ArchiveExport.java b/core/src/main/java/life/catalogue/exporter/ArchiveExport.java similarity index 98% rename from webservice/src/main/java/life/catalogue/exporter/ArchiveExport.java rename to core/src/main/java/life/catalogue/exporter/ArchiveExport.java index 696d54e192..a5a13152d0 100644 --- a/webservice/src/main/java/life/catalogue/exporter/ArchiveExport.java +++ b/core/src/main/java/life/catalogue/exporter/ArchiveExport.java @@ -1,6 +1,5 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.*; import life.catalogue.api.search.EstimateSearchRequest; import life.catalogue.api.util.ObjectUtils; @@ -24,8 +23,6 @@ import java.io.IOException; import java.util.*; -import jakarta.ws.rs.core.UriBuilder; - import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.session.SqlSession; @@ -39,6 +36,7 @@ import it.unimi.dsi.fastutil.ints.Int2IntMap; import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; +import jakarta.ws.rs.core.UriBuilder; public abstract class ArchiveExport extends DatasetExportJob { private static final Logger LOG = LoggerFactory.getLogger(ArchiveExport.class); @@ -59,9 +57,9 @@ public abstract class ArchiveExport extends DatasetExportJob { private final SXSSFWorkbook wb; protected final boolean inclTreatments; - ArchiveExport(DataFormat requiredFormat, int userKey, ExportRequest req, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService) { + ArchiveExport(DataFormat requiredFormat, int userKey, ExportRequest req, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService) { super(req, userKey, requiredFormat, true, factory, cfg, imageService); - logoUriBuilder = cfg.apiURI == null ? null : UriBuilder.fromUri(cfg.apiURI).path("/dataset/{key}/logo?size=ORIGINAL"); + logoUriBuilder = cfg.getApiUri() == null ? null : UriBuilder.fromUri(cfg.getApiUri()).path("/dataset/{key}/logo?size=ORIGINAL"); refCache = Caffeine.newBuilder() .maximumSize(10000) .build(this::lookupReference); diff --git a/webservice/src/main/java/life/catalogue/exporter/ColdpExtendedExport.java b/core/src/main/java/life/catalogue/exporter/ColdpExtendedExport.java similarity index 99% rename from webservice/src/main/java/life/catalogue/exporter/ColdpExtendedExport.java rename to core/src/main/java/life/catalogue/exporter/ColdpExtendedExport.java index d916d314c5..674865400a 100644 --- a/webservice/src/main/java/life/catalogue/exporter/ColdpExtendedExport.java +++ b/core/src/main/java/life/catalogue/exporter/ColdpExtendedExport.java @@ -1,6 +1,5 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.jackson.ApiModule; import life.catalogue.api.jackson.PermissiveEnumSerde; import life.catalogue.api.model.*; @@ -22,7 +21,6 @@ import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,7 +37,7 @@ public class ColdpExtendedExport extends ArchiveExport { private NameUsageKeyMap nameUsageKeyMap; private final File treatmentDir; - public ColdpExtendedExport(ExportRequest req, int userKey, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService) { + public ColdpExtendedExport(ExportRequest req, int userKey, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService) { super(DataFormat.COLDP, userKey, req, factory, cfg, imageService); if (inclTreatments) { treatmentDir = new File(tmpDir, "treatments"); diff --git a/webservice/src/main/java/life/catalogue/exporter/ColdpSimpleExport.java b/core/src/main/java/life/catalogue/exporter/ColdpSimpleExport.java similarity index 82% rename from webservice/src/main/java/life/catalogue/exporter/ColdpSimpleExport.java rename to core/src/main/java/life/catalogue/exporter/ColdpSimpleExport.java index 4520d808b1..d13818df30 100644 --- a/webservice/src/main/java/life/catalogue/exporter/ColdpSimpleExport.java +++ b/core/src/main/java/life/catalogue/exporter/ColdpSimpleExport.java @@ -1,6 +1,5 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.ExportRequest; import life.catalogue.api.vocab.DataFormat; import life.catalogue.api.vocab.TabularFormat; @@ -11,11 +10,11 @@ public class ColdpSimpleExport extends PrinterExport { - private ColdpSimpleExport(Class clazz, ExportRequest req, int userKey, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService) { + private ColdpSimpleExport(Class clazz, ExportRequest req, int userKey, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService) { super(clazz, "ColDP", DataFormat.COLDP, req, userKey, factory, cfg, imageService); } - public static ColdpSimpleExport build(ExportRequest req, int userKey, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService) { + public static ColdpSimpleExport build(ExportRequest req, int userKey, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService) { if (req.getTabFormat() == TabularFormat.CSV) { return new ColdpSimpleExport<>(ColdpPrinter.CSV.class, req, userKey, factory, cfg, imageService); diff --git a/webservice/src/main/java/life/catalogue/exporter/DatasetExportJob.java b/core/src/main/java/life/catalogue/exporter/DatasetExportJob.java similarity index 91% rename from webservice/src/main/java/life/catalogue/exporter/DatasetExportJob.java rename to core/src/main/java/life/catalogue/exporter/DatasetExportJob.java index 216b40e599..7fe0a23491 100644 --- a/webservice/src/main/java/life/catalogue/exporter/DatasetExportJob.java +++ b/core/src/main/java/life/catalogue/exporter/DatasetExportJob.java @@ -1,6 +1,5 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.exception.NotFoundException; import life.catalogue.api.model.DSID; import life.catalogue.api.model.DatasetExport; @@ -10,14 +9,13 @@ import life.catalogue.api.vocab.JobStatus; import life.catalogue.common.io.CompressionUtil; import life.catalogue.common.lang.Exceptions; -import life.catalogue.concurrent.BackgroundJob; -import life.catalogue.concurrent.DatasetBlockingJob; -import life.catalogue.concurrent.JobPriority; -import life.catalogue.concurrent.UsageCounter; +import life.catalogue.concurrent.*; +import life.catalogue.config.NormalizerConfig; import life.catalogue.db.mapper.DatasetExportMapper; import life.catalogue.db.mapper.NameUsageMapper; import life.catalogue.db.mapper.TaxonMapper; import life.catalogue.img.ImageService; +import life.catalogue.img.ImgConfig; import life.catalogue.metadata.coldp.DatasetYamlWriter; import java.io.File; @@ -45,14 +43,16 @@ abstract class DatasetExportJob extends DatasetBlockingJob { protected final ExportRequest req; protected File archive; protected File tmpDir; - protected final WsServerConfig cfg; + protected final JobConfig jCfg; + protected final NormalizerConfig nCfg; + protected final ImgConfig iCfg; protected final ImageService imageService; protected final UsageCounter counter = new UsageCounter(); private final DatasetExport export; @VisibleForTesting DatasetExportJob(ExportRequest req, int userKey, DataFormat requiredFormat, List classification, SqlSessionFactory factory, - WsServerConfig cfg, ImageService imageService) { + ExporterConfig cfg, ImageService imageService) { super(req.getDatasetKey(), userKey, JobPriority.LOW); Preconditions.checkNotNull(requiredFormat, "format required"); if (req.getFormat() == null) { @@ -60,12 +60,14 @@ abstract class DatasetExportJob extends DatasetBlockingJob { } else if (req.getFormat() != requiredFormat) { throw new IllegalArgumentException("Format "+req.getFormat()+" cannot be exported with "+getClass().getSimpleName()); } - this.cfg = cfg; + this.jCfg = cfg.getJob(); + this.nCfg = cfg.getNormalizerConfig(); + this.iCfg = cfg.getImgConfig(); this.imageService = imageService; this.req = Preconditions.checkNotNull(req); this.factory = factory; - this.archive = cfg.job.downloadFile(getKey()); - this.tmpDir = new File(cfg.normalizer.scratchDir, "export/" + getKey().toString()); + this.archive = this.jCfg.downloadFile(getKey()); + this.tmpDir = new File(nCfg.scratchDir, "export/" + getKey().toString()); this.dataset = loadDataset(factory, req.getDatasetKey()); export = DatasetExport.createWaiting(getKey(), userKey, req, dataset); export.setClassification(classification); @@ -77,7 +79,7 @@ abstract class DatasetExportJob extends DatasetBlockingJob { } DatasetExportJob(ExportRequest req, int userKey, DataFormat requiredFormat, boolean allowExcel, SqlSessionFactory factory, - WsServerConfig cfg, ImageService imageService) { + ExporterConfig cfg, ImageService imageService) { this(req, userKey, requiredFormat, loadClassification(factory, req), factory, cfg, imageService); if (req.isExcel() && !allowExcel) { throw new IllegalArgumentException(requiredFormat.getName() + " cannot be exported in Excel"); diff --git a/webservice/src/main/java/life/catalogue/exporter/DotExport.java b/core/src/main/java/life/catalogue/exporter/DotExport.java similarity index 85% rename from webservice/src/main/java/life/catalogue/exporter/DotExport.java rename to core/src/main/java/life/catalogue/exporter/DotExport.java index 2295237819..f464188e1c 100644 --- a/webservice/src/main/java/life/catalogue/exporter/DotExport.java +++ b/core/src/main/java/life/catalogue/exporter/DotExport.java @@ -1,6 +1,5 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.ExportRequest; import life.catalogue.api.vocab.DataFormat; import life.catalogue.img.ImageService; @@ -10,7 +9,7 @@ public class DotExport extends PrinterExport { - public DotExport(ExportRequest req, int userKey, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService) { + public DotExport(ExportRequest req, int userKey, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService) { super(DotPrinter.class, "DOT", DataFormat.DOT, req, userKey, factory, cfg, imageService); } diff --git a/webservice/src/main/java/life/catalogue/exporter/DwcaExtendedExport.java b/core/src/main/java/life/catalogue/exporter/DwcaExtendedExport.java similarity index 98% rename from webservice/src/main/java/life/catalogue/exporter/DwcaExtendedExport.java rename to core/src/main/java/life/catalogue/exporter/DwcaExtendedExport.java index 03907e4d99..2bb925827c 100644 --- a/webservice/src/main/java/life/catalogue/exporter/DwcaExtendedExport.java +++ b/core/src/main/java/life/catalogue/exporter/DwcaExtendedExport.java @@ -1,6 +1,5 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.*; import life.catalogue.api.vocab.*; import life.catalogue.coldp.ColdpTerm; @@ -28,9 +27,6 @@ import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; - -import org.gbif.nameparser.util.RankUtils; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,7 +48,7 @@ public class DwcaExtendedExport extends ArchiveExport { private final Archive arch = new Archive(); private final AtomicInteger bareNameID = new AtomicInteger(1); - public DwcaExtendedExport(ExportRequest req, int userKey, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService) { + public DwcaExtendedExport(ExportRequest req, int userKey, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService) { super(DataFormat.DWCA, userKey, req, factory, cfg, imageService); } diff --git a/webservice/src/main/java/life/catalogue/exporter/DwcaSimpleExport.java b/core/src/main/java/life/catalogue/exporter/DwcaSimpleExport.java similarity index 83% rename from webservice/src/main/java/life/catalogue/exporter/DwcaSimpleExport.java rename to core/src/main/java/life/catalogue/exporter/DwcaSimpleExport.java index 7fec54be05..c2c5bb57e1 100644 --- a/webservice/src/main/java/life/catalogue/exporter/DwcaSimpleExport.java +++ b/core/src/main/java/life/catalogue/exporter/DwcaSimpleExport.java @@ -1,29 +1,24 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.ExportRequest; import life.catalogue.api.util.ObjectUtils; import life.catalogue.api.vocab.DataFormat; import life.catalogue.api.vocab.TabularFormat; import life.catalogue.common.io.Resources; -import life.catalogue.common.io.TmpIO; import life.catalogue.img.ImageService; - import life.catalogue.printer.DwcaPrinter; -import org.apache.commons.io.IOUtils; -import org.apache.ibatis.session.SqlSessionFactory; - import java.io.File; -import java.io.FileOutputStream; + +import org.apache.ibatis.session.SqlSessionFactory; public class DwcaSimpleExport extends PrinterExport { - private DwcaSimpleExport(Class clazz, ExportRequest req, int userKey, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService) { + private DwcaSimpleExport(Class clazz, ExportRequest req, int userKey, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService) { super(clazz, "DwCA", DataFormat.DWCA, req, userKey, factory, cfg, imageService); } - public static DwcaSimpleExport build(ExportRequest req, int userKey, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService) { + public static DwcaSimpleExport build(ExportRequest req, int userKey, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService) { return new DwcaSimpleExport(req.getTabFormat() == TabularFormat.CSV ? DwcaPrinter.CSV.class : DwcaPrinter.TSV.class, req, userKey, factory, cfg, imageService); } diff --git a/webservice/src/main/java/life/catalogue/exporter/ExcelTermWriter.java b/core/src/main/java/life/catalogue/exporter/ExcelTermWriter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/exporter/ExcelTermWriter.java rename to core/src/main/java/life/catalogue/exporter/ExcelTermWriter.java diff --git a/webservice/src/main/java/life/catalogue/exporter/ExportManager.java b/core/src/main/java/life/catalogue/exporter/ExportManager.java similarity index 97% rename from webservice/src/main/java/life/catalogue/exporter/ExportManager.java rename to core/src/main/java/life/catalogue/exporter/ExportManager.java index d2dbff640b..cc19100fcf 100644 --- a/webservice/src/main/java/life/catalogue/exporter/ExportManager.java +++ b/core/src/main/java/life/catalogue/exporter/ExportManager.java @@ -1,6 +1,5 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.event.DatasetChanged; import life.catalogue.api.model.DSID; import life.catalogue.api.model.DatasetExport; @@ -27,14 +26,14 @@ public class ExportManager { private static final Logger LOG = LoggerFactory.getLogger(ExportManager.class); - private final WsServerConfig cfg; + private final ExporterConfig cfg; private final SqlSessionFactory factory; private final ImageService imageService; private final JobExecutor executor; private final DatasetExportDao dao; private final DatasetImportDao diDao; - public ExportManager(WsServerConfig cfg, SqlSessionFactory factory, JobExecutor executor, ImageService imageService, + public ExportManager(ExporterConfig cfg, SqlSessionFactory factory, JobExecutor executor, ImageService imageService, DatasetExportDao exportDao, DatasetImportDao diDao) { this.cfg = cfg; this.factory = factory; diff --git a/core/src/main/java/life/catalogue/exporter/ExporterConfig.java b/core/src/main/java/life/catalogue/exporter/ExporterConfig.java new file mode 100644 index 0000000000..21d8dc31fd --- /dev/null +++ b/core/src/main/java/life/catalogue/exporter/ExporterConfig.java @@ -0,0 +1,15 @@ +package life.catalogue.exporter; + +import life.catalogue.concurrent.JobConfig; +import life.catalogue.config.NormalizerConfig; +import life.catalogue.img.ImgConfig; + +import java.net.URI; + +public interface ExporterConfig { + + URI getApiUri(); + JobConfig getJob(); + ImgConfig getImgConfig(); + NormalizerConfig getNormalizerConfig(); +} diff --git a/webservice/src/main/java/life/catalogue/exporter/NameUsageKeyMap.java b/core/src/main/java/life/catalogue/exporter/NameUsageKeyMap.java similarity index 100% rename from webservice/src/main/java/life/catalogue/exporter/NameUsageKeyMap.java rename to core/src/main/java/life/catalogue/exporter/NameUsageKeyMap.java diff --git a/webservice/src/main/java/life/catalogue/exporter/NewickExport.java b/core/src/main/java/life/catalogue/exporter/NewickExport.java similarity index 69% rename from webservice/src/main/java/life/catalogue/exporter/NewickExport.java rename to core/src/main/java/life/catalogue/exporter/NewickExport.java index b005f60511..e186b4158e 100644 --- a/webservice/src/main/java/life/catalogue/exporter/NewickExport.java +++ b/core/src/main/java/life/catalogue/exporter/NewickExport.java @@ -1,25 +1,15 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.ExportRequest; import life.catalogue.api.vocab.DataFormat; -import life.catalogue.common.io.UTF8IoUtils; -import life.catalogue.printer.AbstractPrinter; -import life.catalogue.printer.DotPrinter; -import life.catalogue.printer.NewickPrinter; -import life.catalogue.printer.PrinterFactory; import life.catalogue.img.ImageService; - -import java.io.File; -import java.io.Writer; +import life.catalogue.printer.NewickPrinter; import org.apache.ibatis.session.SqlSessionFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class NewickExport extends PrinterExport { - public NewickExport(ExportRequest req, int userKey, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService) { + public NewickExport(ExportRequest req, int userKey, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService) { super(NewickPrinter.class, "Newick", DataFormat.NEWICK, req, userKey, factory, cfg, imageService); if (req.isSynonyms()) { throw new IllegalArgumentException("The Newick format does not support synonyms"); diff --git a/webservice/src/main/java/life/catalogue/exporter/PrinterExport.java b/core/src/main/java/life/catalogue/exporter/PrinterExport.java similarity index 91% rename from webservice/src/main/java/life/catalogue/exporter/PrinterExport.java rename to core/src/main/java/life/catalogue/exporter/PrinterExport.java index b3de3e666a..6e09a85b8b 100644 --- a/webservice/src/main/java/life/catalogue/exporter/PrinterExport.java +++ b/core/src/main/java/life/catalogue/exporter/PrinterExport.java @@ -1,20 +1,21 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.ExportRequest; import life.catalogue.api.vocab.DataFormat; import life.catalogue.common.io.UTF8IoUtils; +import life.catalogue.concurrent.JobConfig; +import life.catalogue.config.NormalizerConfig; import life.catalogue.img.ImageService; import life.catalogue.printer.AbstractPrinter; import life.catalogue.printer.PrinterFactory; +import java.io.File; +import java.io.Writer; + import org.apache.ibatis.session.SqlSessionFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; -import java.io.Writer; - public abstract class PrinterExport extends DatasetExportJob { private static final Logger LOG = LoggerFactory.getLogger(PrinterExport.class); @@ -22,7 +23,7 @@ public abstract class PrinterExport extends DatasetEx private final String printerName; PrinterExport(Class printerClass, String printerName, DataFormat requiredFormat, - ExportRequest req, int userKey, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService + ExportRequest req, int userKey, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService ) { super(req, userKey, requiredFormat, false, factory, cfg, imageService); this.printerClass = printerClass; diff --git a/webservice/src/main/java/life/catalogue/exporter/TextTreeExport.java b/core/src/main/java/life/catalogue/exporter/TextTreeExport.java similarity index 69% rename from webservice/src/main/java/life/catalogue/exporter/TextTreeExport.java rename to core/src/main/java/life/catalogue/exporter/TextTreeExport.java index 3d15ee27c3..5eb3f6b0c9 100644 --- a/webservice/src/main/java/life/catalogue/exporter/TextTreeExport.java +++ b/core/src/main/java/life/catalogue/exporter/TextTreeExport.java @@ -1,23 +1,14 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.ExportRequest; import life.catalogue.api.vocab.DataFormat; -import life.catalogue.common.io.UTF8IoUtils; -import life.catalogue.printer.NewickPrinter; -import life.catalogue.printer.PrinterFactory; -import life.catalogue.printer.TextTreePrinter; import life.catalogue.img.ImageService; - -import java.io.File; -import java.io.Writer; +import life.catalogue.printer.TextTreePrinter; import org.apache.ibatis.session.SqlSessionFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class TextTreeExport extends PrinterExport { - public TextTreeExport(ExportRequest req, int userKey, SqlSessionFactory factory, WsServerConfig cfg, ImageService imageService) { + public TextTreeExport(ExportRequest req, int userKey, SqlSessionFactory factory, ExporterConfig cfg, ImageService imageService) { super(TextTreePrinter.class, "text tree", DataFormat.TEXT_TREE, req, userKey, factory, cfg, imageService); } diff --git a/webservice/src/main/java/life/catalogue/gbifsync/DatasetPager.java b/core/src/main/java/life/catalogue/gbifsync/DatasetPager.java similarity index 100% rename from webservice/src/main/java/life/catalogue/gbifsync/DatasetPager.java rename to core/src/main/java/life/catalogue/gbifsync/DatasetPager.java diff --git a/webservice/src/main/java/life/catalogue/gbifsync/GbifSyncJob.java b/core/src/main/java/life/catalogue/gbifsync/GbifSyncJob.java similarity index 98% rename from webservice/src/main/java/life/catalogue/gbifsync/GbifSyncJob.java rename to core/src/main/java/life/catalogue/gbifsync/GbifSyncJob.java index 4f58bac49c..25f3a89906 100644 --- a/webservice/src/main/java/life/catalogue/gbifsync/GbifSyncJob.java +++ b/core/src/main/java/life/catalogue/gbifsync/GbifSyncJob.java @@ -12,7 +12,6 @@ import life.catalogue.concurrent.JobPriority; import life.catalogue.config.GbifConfig; import life.catalogue.dao.DatasetDao; -import life.catalogue.db.PgUtils; import life.catalogue.db.mapper.DatasetMapper; import java.time.LocalDate; @@ -21,7 +20,6 @@ import jakarta.ws.rs.client.Client; -import org.apache.ibatis.exceptions.PersistenceException; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.slf4j.Logger; diff --git a/webservice/src/main/java/life/catalogue/gbifsync/GbifSyncManager.java b/core/src/main/java/life/catalogue/gbifsync/GbifSyncManager.java similarity index 100% rename from webservice/src/main/java/life/catalogue/gbifsync/GbifSyncManager.java rename to core/src/main/java/life/catalogue/gbifsync/GbifSyncManager.java diff --git a/webservice/src/main/java/life/catalogue/importer/ExtinctName.java b/core/src/main/java/life/catalogue/interpreter/ExtinctName.java similarity index 93% rename from webservice/src/main/java/life/catalogue/importer/ExtinctName.java rename to core/src/main/java/life/catalogue/interpreter/ExtinctName.java index 9fa2730bc9..0f926213cc 100644 --- a/webservice/src/main/java/life/catalogue/importer/ExtinctName.java +++ b/core/src/main/java/life/catalogue/interpreter/ExtinctName.java @@ -1,4 +1,4 @@ -package life.catalogue.importer; +package life.catalogue.interpreter; import life.catalogue.common.tax.SciNameNormalizer; diff --git a/core/src/main/java/life/catalogue/interpreter/InterpreterUtils.java b/core/src/main/java/life/catalogue/interpreter/InterpreterUtils.java new file mode 100644 index 0000000000..7da5e461a0 --- /dev/null +++ b/core/src/main/java/life/catalogue/interpreter/InterpreterUtils.java @@ -0,0 +1,99 @@ +package life.catalogue.interpreter; + +import life.catalogue.api.model.Identifier; +import life.catalogue.api.model.IssueContainer; +import life.catalogue.api.model.VerbatimRecord; +import life.catalogue.api.vocab.Issue; + +import org.gbif.dwc.terms.Term; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.annotation.Nullable; + +import org.apache.commons.lang3.StringUtils; +import org.jsoup.Jsoup; + +import static life.catalogue.matching.NameValidator.MAX_YEAR; +import static life.catalogue.matching.NameValidator.MIN_YEAR; + +public class InterpreterUtils { + private static final Pattern YEAR_PATTERN = Pattern.compile("^(\\d{3})(\\d|\\s*\\?)(?:-[0-9-]+)?(?:\\s*[a-zA-Z])?$"); + private static final Pattern SPLIT_COMMA = Pattern.compile("(? MAX_YEAR) { + issues.addIssue(Issue.UNLIKELY_YEAR); + } else { + return y; + } + } else { + issues.addIssue(Issue.UNPARSABLE_YEAR); + } + } + return null; + } + + public static List interpretIdentifiers(String idsRaw, @Nullable Identifier.Scope defaultScope, IssueContainer issues) { + if (!StringUtils.isBlank(idsRaw)) { + List ids = new ArrayList<>(); + for (String altID : SPLIT_COMMA.split(idsRaw)) { + var id = Identifier.parse(altID); + ids.add(id); + if (id.isLocal()) { + if (defaultScope != null) { + id.setScope(defaultScope); + } else { + issues.addIssue(Issue.IDENTIFIER_WITHOUT_SCOPE); + } + } + } + return ids; + } + return Collections.emptyList(); + } +} diff --git a/webservice/src/main/java/life/catalogue/importer/NameInterpreter.java b/core/src/main/java/life/catalogue/interpreter/NameInterpreter.java similarity index 97% rename from webservice/src/main/java/life/catalogue/importer/NameInterpreter.java rename to core/src/main/java/life/catalogue/interpreter/NameInterpreter.java index 8b0ca4ab05..d48bf8ad07 100644 --- a/webservice/src/main/java/life/catalogue/importer/NameInterpreter.java +++ b/core/src/main/java/life/catalogue/interpreter/NameInterpreter.java @@ -1,4 +1,4 @@ -package life.catalogue.importer; +package life.catalogue.interpreter; import life.catalogue.api.model.*; import life.catalogue.api.util.ObjectUtils; @@ -109,7 +109,7 @@ public Optional interpret(final String id, String vrank, @Nulla uninomial, genus, infraGenus, species, infraspecies, cultivar, v.get(combAuthors), v.get(combExAuthors), v.get(combAuthorsYear), v.get(basAuthors), v.get(basExAuthors), v.get(basAuthorsYear), nothoVal, originalSpellingVal, v.get(nomStatus), - v.getRaw(link), InterpreterBase.replaceHtml(v.get(remarks),true), v.getRaw(identifiers), v + v.getRaw(link), InterpreterUtils.replaceHtml(v.get(remarks),true), v.getRaw(identifiers), v ); // keep the verbatim id opt.ifPresent(parsedNameUsage -> parsedNameUsage.getName().setVerbatimKey(v.getId())); @@ -271,13 +271,13 @@ private Optional interpret(final boolean allowToInferRank, // populate name published in through various channels and verify its a real nomenclatural date if (publishedInYear != null){ - Integer year = InterpreterBase.parseNomenYear(publishedInYear, issues); + Integer year = InterpreterUtils.parseNomenYear(publishedInYear, issues); if (year != null) { pnu.getName().setPublishedInYear(year); } } if (pnu.getName().getCombinationAuthorship() != null && pnu.getName().getCombinationAuthorship().getYear() != null){ - Integer year = InterpreterBase.parseNomenYear(pnu.getName().getCombinationAuthorship().getYear(), issues); + Integer year = InterpreterUtils.parseNomenYear(pnu.getName().getCombinationAuthorship().getYear(), issues); if (year != null) { if (pnu.getName().getPublishedInYear() == null) { pnu.getName().setPublishedInYear(year); @@ -318,7 +318,7 @@ private Optional interpret(final boolean allowToInferRank, // add raw status to remarks pnu.getName().addRemarks(nomStatus); } - pnu.getName().setIdentifier(InterpreterBase.interpretIdentifiers(identifiers, null, issues)); + pnu.getName().setIdentifier(InterpreterUtils.interpretIdentifiers(identifiers, null, issues)); // finally update the scientificName with the canonical form if we can pnu.getName().rebuildScientificName(); @@ -363,7 +363,7 @@ private static String cleanAuthor(String author) { } private static void verifyNomenYear(Authorship authorship, IssueContainer issues) { - InterpreterBase.parseNomenYear(authorship.getYear(), issues); + InterpreterUtils.parseNomenYear(authorship.getYear(), issues); } /** diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/DatasetSchedulerJob.java b/core/src/main/java/life/catalogue/jobs/DatasetSchedulerJob.java similarity index 99% rename from webservice/src/main/java/life/catalogue/admin/jobs/DatasetSchedulerJob.java rename to core/src/main/java/life/catalogue/jobs/DatasetSchedulerJob.java index 27013f46b0..4e14ef72e3 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/DatasetSchedulerJob.java +++ b/core/src/main/java/life/catalogue/jobs/DatasetSchedulerJob.java @@ -1,4 +1,4 @@ -package life.catalogue.admin.jobs; +package life.catalogue.jobs; import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.common.func.ThrowingConsumer; diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/IndexJob.java b/core/src/main/java/life/catalogue/jobs/IndexJob.java similarity index 98% rename from webservice/src/main/java/life/catalogue/admin/jobs/IndexJob.java rename to core/src/main/java/life/catalogue/jobs/IndexJob.java index d9553ca0f7..52dc093267 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/IndexJob.java +++ b/core/src/main/java/life/catalogue/jobs/IndexJob.java @@ -1,4 +1,4 @@ -package life.catalogue.admin.jobs; +package life.catalogue.jobs; import com.google.common.eventbus.EventBus; diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/MetricsSchedulerJob.java b/core/src/main/java/life/catalogue/jobs/MetricsSchedulerJob.java similarity index 97% rename from webservice/src/main/java/life/catalogue/admin/jobs/MetricsSchedulerJob.java rename to core/src/main/java/life/catalogue/jobs/MetricsSchedulerJob.java index a3865d3cb4..7fbfd4fdd2 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/MetricsSchedulerJob.java +++ b/core/src/main/java/life/catalogue/jobs/MetricsSchedulerJob.java @@ -1,4 +1,4 @@ -package life.catalogue.admin.jobs; +package life.catalogue.jobs; import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.concurrent.BackgroundJob; diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/RebuildMetricsJob.java b/core/src/main/java/life/catalogue/jobs/RebuildMetricsJob.java similarity index 74% rename from webservice/src/main/java/life/catalogue/admin/jobs/RebuildMetricsJob.java rename to core/src/main/java/life/catalogue/jobs/RebuildMetricsJob.java index ce76b24a65..6d9decdb2c 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/RebuildMetricsJob.java +++ b/core/src/main/java/life/catalogue/jobs/RebuildMetricsJob.java @@ -1,22 +1,13 @@ -package life.catalogue.admin.jobs; +package life.catalogue.jobs; import life.catalogue.concurrent.BackgroundJob; import life.catalogue.concurrent.DatasetBlockingJob; import life.catalogue.concurrent.JobPriority; import life.catalogue.dao.DaoUtils; -import life.catalogue.dao.MetricsDao; -import life.catalogue.dao.NameDao; -import life.catalogue.dao.TaxonDao; -import life.catalogue.es.NameUsageIndexService; -import life.catalogue.matching.nidx.NameIndexFactory; - -import jakarta.validation.Validator; import life.catalogue.release.MetricsBuilder; import org.apache.ibatis.session.SqlSessionFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * Recreates all taxon metrics for a given dataset diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/ReindexSchedulerJob.java b/core/src/main/java/life/catalogue/jobs/ReindexSchedulerJob.java similarity index 97% rename from webservice/src/main/java/life/catalogue/admin/jobs/ReindexSchedulerJob.java rename to core/src/main/java/life/catalogue/jobs/ReindexSchedulerJob.java index 1bebbd67c2..8bb459e90a 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/ReindexSchedulerJob.java +++ b/core/src/main/java/life/catalogue/jobs/ReindexSchedulerJob.java @@ -1,4 +1,4 @@ -package life.catalogue.admin.jobs; +package life.catalogue.jobs; import com.google.common.eventbus.EventBus; diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/RematchSchedulerJob.java b/core/src/main/java/life/catalogue/jobs/RematchSchedulerJob.java similarity index 97% rename from webservice/src/main/java/life/catalogue/admin/jobs/RematchSchedulerJob.java rename to core/src/main/java/life/catalogue/jobs/RematchSchedulerJob.java index 4c5b5bc4a1..dd0161a99c 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/RematchSchedulerJob.java +++ b/core/src/main/java/life/catalogue/jobs/RematchSchedulerJob.java @@ -1,4 +1,4 @@ -package life.catalogue.admin.jobs; +package life.catalogue.jobs; import com.google.common.eventbus.EventBus; diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/UsageCountJob.java b/core/src/main/java/life/catalogue/jobs/UsageCountJob.java similarity index 97% rename from webservice/src/main/java/life/catalogue/admin/jobs/UsageCountJob.java rename to core/src/main/java/life/catalogue/jobs/UsageCountJob.java index 32ad17d7fc..6c900b095d 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/UsageCountJob.java +++ b/core/src/main/java/life/catalogue/jobs/UsageCountJob.java @@ -1,4 +1,4 @@ -package life.catalogue.admin.jobs; +package life.catalogue.jobs; import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.concurrent.GlobalBlockingJob; diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/ValidationJob.java b/core/src/main/java/life/catalogue/jobs/ValidationJob.java similarity index 98% rename from webservice/src/main/java/life/catalogue/admin/jobs/ValidationJob.java rename to core/src/main/java/life/catalogue/jobs/ValidationJob.java index 8044dfc22c..b6752f54d0 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/ValidationJob.java +++ b/core/src/main/java/life/catalogue/jobs/ValidationJob.java @@ -1,4 +1,4 @@ -package life.catalogue.admin.jobs; +package life.catalogue.jobs; import life.catalogue.api.model.TreeTraversalParameter; import life.catalogue.common.date.DateUtils; diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/cron/CronExecutor.java b/core/src/main/java/life/catalogue/jobs/cron/CronExecutor.java similarity index 87% rename from webservice/src/main/java/life/catalogue/admin/jobs/cron/CronExecutor.java rename to core/src/main/java/life/catalogue/jobs/cron/CronExecutor.java index 394186253f..89eaabb2ad 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/cron/CronExecutor.java +++ b/core/src/main/java/life/catalogue/jobs/cron/CronExecutor.java @@ -1,7 +1,8 @@ -package life.catalogue.admin.jobs.cron; +package life.catalogue.jobs.cron; import com.google.common.base.Preconditions; +import life.catalogue.common.Managed; import life.catalogue.concurrent.NamedThreadFactory; import java.util.ArrayList; @@ -13,7 +14,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import io.dropwizard.lifecycle.Managed; public class CronExecutor implements Managed { private static final Logger LOG = LoggerFactory.getLogger(CronExecutor.class); @@ -38,6 +38,11 @@ private CronExecutor() { ); } + @Override + public void start() throws Exception { + + } + @Override public void stop() throws Exception { LOG.info("Stopping cron executor with {} jobs", futures.size()); @@ -47,4 +52,9 @@ public void stop() throws Exception { scheduler.shutdown(); LOG.info("Cron executor stopped"); } + + @Override + public boolean hasStarted() { + return scheduler.isShutdown(); + } } diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/cron/CronJob.java b/core/src/main/java/life/catalogue/jobs/cron/CronJob.java similarity index 94% rename from webservice/src/main/java/life/catalogue/admin/jobs/cron/CronJob.java rename to core/src/main/java/life/catalogue/jobs/cron/CronJob.java index 9497dfe410..28f1b9a892 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/cron/CronJob.java +++ b/core/src/main/java/life/catalogue/jobs/cron/CronJob.java @@ -1,4 +1,4 @@ -package life.catalogue.admin.jobs.cron; +package life.catalogue.jobs.cron; import java.util.concurrent.TimeUnit; diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/cron/ProjectCounterUpdate.java b/core/src/main/java/life/catalogue/jobs/cron/ProjectCounterUpdate.java similarity index 88% rename from webservice/src/main/java/life/catalogue/admin/jobs/cron/ProjectCounterUpdate.java rename to core/src/main/java/life/catalogue/jobs/cron/ProjectCounterUpdate.java index 8301205abb..16a79576fd 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/cron/ProjectCounterUpdate.java +++ b/core/src/main/java/life/catalogue/jobs/cron/ProjectCounterUpdate.java @@ -1,6 +1,6 @@ -package life.catalogue.admin.jobs.cron; +package life.catalogue.jobs.cron; -import life.catalogue.admin.jobs.UsageCountJob; +import life.catalogue.jobs.UsageCountJob; import life.catalogue.api.vocab.Users; import life.catalogue.concurrent.JobPriority; diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/cron/TempDatasetCleanup.java b/core/src/main/java/life/catalogue/jobs/cron/TempDatasetCleanup.java similarity index 93% rename from webservice/src/main/java/life/catalogue/admin/jobs/cron/TempDatasetCleanup.java rename to core/src/main/java/life/catalogue/jobs/cron/TempDatasetCleanup.java index 1db4bbc384..d5b7e1ad58 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/cron/TempDatasetCleanup.java +++ b/core/src/main/java/life/catalogue/jobs/cron/TempDatasetCleanup.java @@ -1,4 +1,4 @@ -package life.catalogue.admin.jobs.cron; +package life.catalogue.jobs.cron; import life.catalogue.dao.DatasetDao; diff --git a/webservice/src/main/java/life/catalogue/matching/DockerConfig.java b/core/src/main/java/life/catalogue/matching/DockerConfig.java similarity index 100% rename from webservice/src/main/java/life/catalogue/matching/DockerConfig.java rename to core/src/main/java/life/catalogue/matching/DockerConfig.java diff --git a/webservice/src/main/java/life/catalogue/matching/MatchedParentStack.java b/core/src/main/java/life/catalogue/matching/MatchedParentStack.java similarity index 100% rename from webservice/src/main/java/life/catalogue/matching/MatchedParentStack.java rename to core/src/main/java/life/catalogue/matching/MatchedParentStack.java diff --git a/webservice/src/main/java/life/catalogue/matching/MatchingJob.java b/core/src/main/java/life/catalogue/matching/MatchingJob.java similarity index 98% rename from webservice/src/main/java/life/catalogue/matching/MatchingJob.java rename to core/src/main/java/life/catalogue/matching/MatchingJob.java index e035a4dcc7..c8d81f0185 100644 --- a/webservice/src/main/java/life/catalogue/matching/MatchingJob.java +++ b/core/src/main/java/life/catalogue/matching/MatchingJob.java @@ -1,6 +1,5 @@ package life.catalogue.matching; -import life.catalogue.WsServerConfig; import life.catalogue.api.exception.NotFoundException; import life.catalogue.api.exception.UnavailableException; import life.catalogue.api.jackson.PermissiveEnumSerde; @@ -17,15 +16,14 @@ import life.catalogue.concurrent.DatasetBlockingJob; import life.catalogue.concurrent.JobPriority; import life.catalogue.concurrent.UsageCounter; +import life.catalogue.config.NormalizerConfig; import life.catalogue.csv.CsvReader; import life.catalogue.dao.TreeStreams; import life.catalogue.db.mapper.NameUsageMapper; import life.catalogue.db.mapper.TaxonMapper; -import life.catalogue.importer.NameInterpreter; +import life.catalogue.interpreter.NameInterpreter; import life.catalogue.parser.*; -import org.apache.commons.lang3.StringUtils; - import org.gbif.dwc.terms.DwcTerm; import org.gbif.dwc.terms.Term; @@ -42,6 +40,7 @@ import java.util.zip.ZipOutputStream; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.slf4j.Logger; @@ -74,14 +73,14 @@ public class MatchingJob extends DatasetBlockingJob { private final SqlSessionFactory factory; private final UsageMatcherGlobal matcher; private final NameInterpreter interpreter = new NameInterpreter(new DatasetSettings(), true); - private final WsServerConfig cfg; + private final NormalizerConfig cfg; // job specifics private final MatchingRequest req; private final JobResult result; private final UsageCounter counter = new UsageCounter(); private List rootClassification; - public MatchingJob(MatchingRequest req, int userKey, SqlSessionFactory factory, UsageMatcherGlobal matcher, WsServerConfig cfg) { + public MatchingJob(MatchingRequest req, int userKey, SqlSessionFactory factory, UsageMatcherGlobal matcher, NormalizerConfig cfg) { super(req.getDatasetKey(), userKey, JobPriority.LOW); this.logToFile = true; this.cfg = cfg; @@ -114,7 +113,7 @@ public MatchingRequest getRequest() { } private File matchResultFile() { - return cfg.normalizer.scratchFile(getKey()); + return cfg.scratchFile(getKey()); } @Override diff --git a/webservice/src/main/java/life/catalogue/matching/MatchingRequest.java b/core/src/main/java/life/catalogue/matching/MatchingRequest.java similarity index 100% rename from webservice/src/main/java/life/catalogue/matching/MatchingRequest.java rename to core/src/main/java/life/catalogue/matching/MatchingRequest.java diff --git a/webservice/src/main/java/life/catalogue/matching/NidxExportJob.java b/core/src/main/java/life/catalogue/matching/NidxExportJob.java similarity index 96% rename from webservice/src/main/java/life/catalogue/matching/NidxExportJob.java rename to core/src/main/java/life/catalogue/matching/NidxExportJob.java index 443e8470de..b323a40b8f 100644 --- a/webservice/src/main/java/life/catalogue/matching/NidxExportJob.java +++ b/core/src/main/java/life/catalogue/matching/NidxExportJob.java @@ -1,6 +1,5 @@ package life.catalogue.matching; -import life.catalogue.WsServerConfig; import life.catalogue.api.jackson.ApiModule; import life.catalogue.api.jackson.PermissiveEnumSerde; import life.catalogue.api.model.Dataset; @@ -10,6 +9,7 @@ import life.catalogue.common.io.UTF8IoUtils; import life.catalogue.concurrent.BackgroundJob; import life.catalogue.concurrent.JobPriority; +import life.catalogue.config.NormalizerConfig; import life.catalogue.db.mapper.DatasetMapper; import life.catalogue.db.mapper.NamesIndexMapper; import life.catalogue.metadata.coldp.DatasetYamlWriter; @@ -38,7 +38,7 @@ public class NidxExportJob extends BackgroundJob { private static final Logger LOG = LoggerFactory.getLogger(NidxExportJob.class); private static final TypeReference> TYPE_REF = new TypeReference>() {}; private final SqlSessionFactory factory; - private final WsServerConfig cfg; + private final NormalizerConfig cfg; // job specifics private final List datasetKeys; private final List datasets; @@ -46,7 +46,7 @@ public class NidxExportJob extends BackgroundJob { private int minDatasets; private int counter = 0; - public NidxExportJob(List datasetKeys, int minDatasets, int userKey, SqlSessionFactory factory, WsServerConfig cfg) { + public NidxExportJob(List datasetKeys, int minDatasets, int userKey, SqlSessionFactory factory, NormalizerConfig cfg) { super(JobPriority.LOW, userKey); Preconditions.checkNotNull(datasetKeys, "at least one datasetKey must be requested"); Preconditions.checkArgument(!datasetKeys.isEmpty(), "at least one datasetKey must be requested"); @@ -81,7 +81,7 @@ public String getEmailTemplatePrefix() { @Override public void execute() throws Exception { - try (TempFile dir = TempFile.directory(cfg.normalizer.scratchDir(getKey())); + try (TempFile dir = TempFile.directory(cfg.scratchDir(getKey())); Writer fw = UTF8IoUtils.writerFromFile(new File(dir.file, "nidx-export.tsv")) ) { LOG.info("Write nidx export for job {} to temp directory {}", getKey(), dir.file.getAbsolutePath()); diff --git a/webservice/src/main/java/life/catalogue/matching/RankComparator.java b/core/src/main/java/life/catalogue/matching/RankComparator.java similarity index 100% rename from webservice/src/main/java/life/catalogue/matching/RankComparator.java rename to core/src/main/java/life/catalogue/matching/RankComparator.java diff --git a/webservice/src/main/java/life/catalogue/matching/TaxonomicAlignJob.java b/core/src/main/java/life/catalogue/matching/TaxonomicAlignJob.java similarity index 100% rename from webservice/src/main/java/life/catalogue/matching/TaxonomicAlignJob.java rename to core/src/main/java/life/catalogue/matching/TaxonomicAlignJob.java diff --git a/webservice/src/main/java/life/catalogue/matching/UsageMatch.java b/core/src/main/java/life/catalogue/matching/UsageMatch.java similarity index 100% rename from webservice/src/main/java/life/catalogue/matching/UsageMatch.java rename to core/src/main/java/life/catalogue/matching/UsageMatch.java diff --git a/webservice/src/main/java/life/catalogue/matching/UsageMatchWithOriginal.java b/core/src/main/java/life/catalogue/matching/UsageMatchWithOriginal.java similarity index 100% rename from webservice/src/main/java/life/catalogue/matching/UsageMatchWithOriginal.java rename to core/src/main/java/life/catalogue/matching/UsageMatchWithOriginal.java diff --git a/webservice/src/main/java/life/catalogue/matching/UsageMatcherGlobal.java b/core/src/main/java/life/catalogue/matching/UsageMatcherGlobal.java similarity index 100% rename from webservice/src/main/java/life/catalogue/matching/UsageMatcherGlobal.java rename to core/src/main/java/life/catalogue/matching/UsageMatcherGlobal.java diff --git a/webservice/src/main/java/life/catalogue/release/AbstractProjectCopy.java b/core/src/main/java/life/catalogue/release/AbstractProjectCopy.java similarity index 99% rename from webservice/src/main/java/life/catalogue/release/AbstractProjectCopy.java rename to core/src/main/java/life/catalogue/release/AbstractProjectCopy.java index cd6cfe61c4..673efaec56 100644 --- a/webservice/src/main/java/life/catalogue/release/AbstractProjectCopy.java +++ b/core/src/main/java/life/catalogue/release/AbstractProjectCopy.java @@ -14,15 +14,13 @@ import java.time.LocalDateTime; -import jakarta.validation.Validator; - import org.apache.commons.lang3.time.DurationFormatUtils; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; +import jakarta.validation.Validator; import static life.catalogue.common.lang.Exceptions.interruptIfCancelled; diff --git a/webservice/src/main/java/life/catalogue/release/AuthorlistGenerator.java b/core/src/main/java/life/catalogue/release/AuthorlistGenerator.java similarity index 93% rename from webservice/src/main/java/life/catalogue/release/AuthorlistGenerator.java rename to core/src/main/java/life/catalogue/release/AuthorlistGenerator.java index 1fc4e359f5..f73bb5ddcf 100644 --- a/webservice/src/main/java/life/catalogue/release/AuthorlistGenerator.java +++ b/core/src/main/java/life/catalogue/release/AuthorlistGenerator.java @@ -2,18 +2,12 @@ import life.catalogue.api.model.Agent; import life.catalogue.api.model.Dataset; -import life.catalogue.api.model.DatasetSettings; -import life.catalogue.api.vocab.DatasetType; -import life.catalogue.api.vocab.Setting; import life.catalogue.dao.DatasetSourceDao; import java.util.*; -import java.util.function.Consumer; -import java.util.function.Supplier; import jakarta.validation.Validation; import jakarta.validation.Validator; -import scala.reflect.internal.util.Set; public class AuthorlistGenerator { private final Validator validator; diff --git a/webservice/src/main/java/life/catalogue/release/IdProvider.java b/core/src/main/java/life/catalogue/release/IdProvider.java similarity index 100% rename from webservice/src/main/java/life/catalogue/release/IdProvider.java rename to core/src/main/java/life/catalogue/release/IdProvider.java diff --git a/webservice/src/main/java/life/catalogue/release/MetricsBuilder.java b/core/src/main/java/life/catalogue/release/MetricsBuilder.java similarity index 99% rename from webservice/src/main/java/life/catalogue/release/MetricsBuilder.java rename to core/src/main/java/life/catalogue/release/MetricsBuilder.java index bff15ea116..7c9e8aa479 100644 --- a/webservice/src/main/java/life/catalogue/release/MetricsBuilder.java +++ b/core/src/main/java/life/catalogue/release/MetricsBuilder.java @@ -7,8 +7,6 @@ import life.catalogue.db.mapper.SectorMapper; import life.catalogue.db.mapper.TaxonMetricsMapper; -import org.apache.ibatis.session.SqlSessionFactory; - import org.gbif.nameparser.api.Rank; import java.util.List; @@ -19,13 +17,13 @@ import javax.annotation.Nullable; import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.LoadingCache; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class MetricsBuilder { private static final Logger LOG = LoggerFactory.getLogger(MetricsBuilder.class); private final ClassificationTracker clTracker; diff --git a/webservice/src/main/java/life/catalogue/release/ParentStack.java b/core/src/main/java/life/catalogue/release/ParentStack.java similarity index 99% rename from webservice/src/main/java/life/catalogue/release/ParentStack.java rename to core/src/main/java/life/catalogue/release/ParentStack.java index 033c81a327..e7b4f76e93 100644 --- a/webservice/src/main/java/life/catalogue/release/ParentStack.java +++ b/core/src/main/java/life/catalogue/release/ParentStack.java @@ -5,7 +5,6 @@ import org.gbif.nameparser.api.Rank; import java.util.*; -import java.util.function.Consumer; import java.util.stream.Collectors; import org.slf4j.Logger; diff --git a/webservice/src/main/java/life/catalogue/release/ProjectCopyFactory.java b/core/src/main/java/life/catalogue/release/ProjectCopyFactory.java similarity index 82% rename from webservice/src/main/java/life/catalogue/release/ProjectCopyFactory.java rename to core/src/main/java/life/catalogue/release/ProjectCopyFactory.java index 7a83260338..73eda1397d 100644 --- a/webservice/src/main/java/life/catalogue/release/ProjectCopyFactory.java +++ b/core/src/main/java/life/catalogue/release/ProjectCopyFactory.java @@ -1,21 +1,23 @@ package life.catalogue.release; -import life.catalogue.WsServerConfig; -import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.assembly.SyncFactory; +import life.catalogue.config.ReleaseConfig; import life.catalogue.dao.*; import life.catalogue.doi.DoiUpdater; +import life.catalogue.doi.service.DoiConfig; import life.catalogue.doi.service.DoiService; import life.catalogue.es.NameUsageIndexService; import life.catalogue.exporter.ExportManager; import life.catalogue.img.ImageService; import life.catalogue.matching.UsageMatcherGlobal; -import jakarta.validation.Validator; +import java.net.URI; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.ibatis.session.SqlSessionFactory; +import jakarta.validation.Validator; + public class ProjectCopyFactory { private final ExportManager exportManager; @@ -34,12 +36,17 @@ public class ProjectCopyFactory { private final CloseableHttpClient client; private final Validator validator; private final UsageMatcherGlobal matcher; - private final WsServerConfig cfg; + private final ReleaseConfig cfg; + private final DoiConfig doiCfg; + private final URI apiURI; + private final URI clbURI; public ProjectCopyFactory(CloseableHttpClient client, UsageMatcherGlobal matcher, SyncFactory syncFactory, DatasetImportDao diDao, DatasetDao dDao, SectorImportDao siDao, ReferenceDao rDao, NameDao nDao, SectorDao sDao, ExportManager exportManager, NameUsageIndexService indexService, ImageService imageService, - DoiService doiService, DoiUpdater doiUpdater, SqlSessionFactory factory, Validator validator, WsServerConfig cfg) { + DoiService doiService, DoiUpdater doiUpdater, SqlSessionFactory factory, Validator validator, + ReleaseConfig cfg, DoiConfig doiCfg, URI apiURI, URI clbURI + ) { this.client = client; this.matcher = matcher; this.syncFactory = syncFactory; @@ -57,6 +64,9 @@ public ProjectCopyFactory(CloseableHttpClient client, UsageMatcherGlobal matcher this.factory = factory; this.validator = validator; this.cfg = cfg; + this.doiCfg = doiCfg; + this.apiURI = apiURI; + this.clbURI = clbURI; } /** @@ -66,7 +76,8 @@ public ProjectCopyFactory(CloseableHttpClient client, UsageMatcherGlobal matcher * @throws IllegalArgumentException if the dataset is not a release */ public XRelease buildExtendedRelease(final int releaseKey, final int userKey) { - return new XRelease(factory, syncFactory, matcher, indexService, imageService, dDao, diDao, siDao, rDao, nDao, sDao, releaseKey, userKey, cfg, client, exportManager, doiService, doiUpdater, validator); + return new XRelease(factory, syncFactory, matcher, indexService, imageService, dDao, diDao, siDao, rDao, nDao, sDao, releaseKey, userKey, + cfg, doiCfg, apiURI, clbURI, client, exportManager, doiService, doiUpdater, validator); } /** @@ -76,7 +87,8 @@ public XRelease buildExtendedRelease(final int releaseKey, final int userKey) { * @throws IllegalArgumentException if the dataset is not managed */ public ProjectRelease buildRelease(final int projectKey, final int userKey) { - return new ProjectRelease(factory, indexService, imageService, diDao, dDao, rDao, nDao, sDao, projectKey, userKey, cfg, client, exportManager, doiService, doiUpdater, validator); + return new ProjectRelease(factory, indexService, imageService, diDao, dDao, rDao, nDao, sDao, projectKey, userKey, + cfg, doiCfg, apiURI, clbURI, client, exportManager, doiService, doiUpdater, validator); } /** diff --git a/webservice/src/main/java/life/catalogue/release/ProjectDuplication.java b/core/src/main/java/life/catalogue/release/ProjectDuplication.java similarity index 78% rename from webservice/src/main/java/life/catalogue/release/ProjectDuplication.java rename to core/src/main/java/life/catalogue/release/ProjectDuplication.java index f20374a514..1061403be0 100644 --- a/webservice/src/main/java/life/catalogue/release/ProjectDuplication.java +++ b/core/src/main/java/life/catalogue/release/ProjectDuplication.java @@ -1,24 +1,23 @@ package life.catalogue.release; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.Dataset; -import life.catalogue.api.model.DatasetSettings; +import life.catalogue.config.ReleaseConfig; import life.catalogue.dao.DatasetDao; import life.catalogue.dao.DatasetImportDao; import life.catalogue.es.NameUsageIndexService; -import jakarta.validation.Validator; - import org.apache.ibatis.session.SqlSessionFactory; +import jakarta.validation.Validator; + /** * Job to duplicate a managed project with all its data, decisions and metadata */ public class ProjectDuplication extends AbstractProjectCopy { ProjectDuplication(SqlSessionFactory factory, NameUsageIndexService indexService, DatasetImportDao diDao, DatasetDao dDao, Validator validator, - int datasetKey, int userKey, WsServerConfig cfg) { - super("duplicating", factory, diDao, dDao, indexService, validator, userKey, datasetKey, false, cfg.release.deleteOnError); + int datasetKey, int userKey, ReleaseConfig cfg) { + super("duplicating", factory, diDao, dDao, indexService, validator, userKey, datasetKey, false, cfg.deleteOnError); } @Override diff --git a/webservice/src/main/java/life/catalogue/release/ProjectRelease.java b/core/src/main/java/life/catalogue/release/ProjectRelease.java similarity index 85% rename from webservice/src/main/java/life/catalogue/release/ProjectRelease.java rename to core/src/main/java/life/catalogue/release/ProjectRelease.java index 663491f190..e7f73b7347 100644 --- a/webservice/src/main/java/life/catalogue/release/ProjectRelease.java +++ b/core/src/main/java/life/catalogue/release/ProjectRelease.java @@ -1,10 +1,5 @@ package life.catalogue.release; -import com.google.common.annotations.VisibleForTesting; - -import com.google.common.base.Preconditions; - -import life.catalogue.WsServerConfig; import life.catalogue.api.model.DOI; import life.catalogue.api.model.Dataset; import life.catalogue.api.model.ExportRequest; @@ -19,12 +14,14 @@ import life.catalogue.common.text.CitationUtils; import life.catalogue.common.util.LoggingUtils; import life.catalogue.common.util.YamlUtils; +import life.catalogue.config.ReleaseConfig; import life.catalogue.dao.*; import life.catalogue.db.mapper.CitationMapper; import life.catalogue.db.mapper.DatasetMapper; import life.catalogue.db.mapper.DatasetSourceMapper; import life.catalogue.db.mapper.SectorMapper; import life.catalogue.doi.DoiUpdater; +import life.catalogue.doi.service.DoiConfig; import life.catalogue.doi.service.DoiService; import life.catalogue.es.NameUsageIndexService; import life.catalogue.exporter.ExportManager; @@ -40,8 +37,6 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; -import jakarta.validation.Validator; - import org.apache.commons.io.FileUtils; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.ibatis.session.SqlSession; @@ -49,6 +44,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.annotations.VisibleForTesting; + +import jakarta.validation.Validator; import jakarta.ws.rs.core.UriBuilder; import static life.catalogue.api.util.ObjectUtils.coalesce; @@ -59,7 +57,10 @@ public class ProjectRelease extends AbstractProjectCopy { private static final String DEFAULT_ALIAS_TEMPLATE = "{aliasOrTitle}-{date}"; private static final String DEFAULT_VERSION_TEMPLATE = "{date}"; - protected final WsServerConfig cfg; + protected final ReleaseConfig cfg; + protected final DoiConfig doiCfg; + protected final URI apiURI; + protected final URI clbURI; protected final ReferenceDao rDao; protected final NameDao nDao; protected final SectorDao sDao; @@ -71,29 +72,35 @@ public class ProjectRelease extends AbstractProjectCopy { private final DoiService doiService; private final DoiUpdater doiUpdater; private Integer prevReleaseKey; - protected ProjectReleaseConfig rCfg; + protected ProjectReleaseConfig prCfg; ProjectRelease(SqlSessionFactory factory, NameUsageIndexService indexService, ImageService imageService, DatasetImportDao diDao, DatasetDao dDao, ReferenceDao rDao, NameDao nDao, SectorDao sDao, - int datasetKey, int userKey, WsServerConfig cfg, CloseableHttpClient client, ExportManager exportManager, + int datasetKey, int userKey, ReleaseConfig cfg, DoiConfig doiCfg, URI apiURI, URI clbURI, + CloseableHttpClient client, ExportManager exportManager, DoiService doiService, DoiUpdater doiUpdater, Validator validator) { - this("releasing", factory, indexService, imageService, diDao, dDao, rDao, nDao, sDao, datasetKey, userKey, cfg, client, exportManager, doiService, doiUpdater, validator); + this("releasing", factory, indexService, imageService, diDao, dDao, rDao, nDao, sDao, datasetKey, userKey, + cfg, doiCfg, apiURI, clbURI, client, exportManager, doiService, doiUpdater, validator); } ProjectRelease(String action, SqlSessionFactory factory, NameUsageIndexService indexService, ImageService imageService, DatasetImportDao diDao, DatasetDao dDao, ReferenceDao rDao, NameDao nDao, SectorDao sDao, - int baseReleaseOrProjectKey, int userKey, WsServerConfig cfg, CloseableHttpClient client, ExportManager exportManager, + int baseReleaseOrProjectKey, int userKey, ReleaseConfig cfg, DoiConfig doiCfg, URI apiURI, URI clbURI, + CloseableHttpClient client, ExportManager exportManager, DoiService doiService, DoiUpdater doiUpdater, Validator validator) { - super(action, factory, diDao, dDao, indexService, validator, userKey, baseReleaseOrProjectKey, true, cfg.release.deleteOnError); + super(action, factory, diDao, dDao, indexService, validator, userKey, baseReleaseOrProjectKey, true, cfg.deleteOnError); + this.cfg = cfg; + this.doiCfg = doiCfg; + this.apiURI = apiURI; + this.clbURI = clbURI; this.imageService = imageService; this.doiService = doiService; this.rDao = rDao; this.nDao = nDao; this.sDao = sDao; - this.cfg = cfg; String latestRelease = String.format("L%sR", getClass().equals(XRelease.class) ? "X" : ""); - this.datasetApiBuilder = cfg.apiURI == null ? null : UriBuilder.fromUri(cfg.apiURI).path("dataset/{key}"+latestRelease); - this.portalURI = cfg.apiURI == null ? null : UriBuilder.fromUri(cfg.apiURI).path("portal").build(); + this.datasetApiBuilder = apiURI == null ? null : UriBuilder.fromUri(apiURI).path("dataset/{key}"+latestRelease); + this.portalURI = apiURI == null ? null : UriBuilder.fromUri(apiURI).path("portal").build(); this.client = client; this.exportManager = exportManager; this.doiUpdater = doiUpdater; @@ -103,7 +110,7 @@ public class ProjectRelease extends AbstractProjectCopy { void initJob() throws Exception { super.initJob(); // point to release in CLB - this requires the datasetKey to exist already - newDataset.setUrl(UriBuilder.fromUri(cfg.clbURI) + newDataset.setUrl(UriBuilder.fromUri(clbURI) .path("dataset") .path(newDataset.getKey().toString()) .build()); @@ -112,7 +119,7 @@ void initJob() throws Exception { @Override protected void loadConfigs() { - rCfg = loadConfig(ProjectReleaseConfig.class, settings.getURI(Setting.RELEASE_CONFIG)); + prCfg = loadConfig(ProjectReleaseConfig.class, settings.getURI(Setting.RELEASE_CONFIG)); verifyConfigTemplates(); } @@ -134,10 +141,10 @@ protected void verifyConfigTemplates() throws IllegalArgumentException { CitationUtils.ReleaseWrapper dw = new CitationUtils.ReleaseWrapper(d,d,d); // verify all templates and throw early otherwise - verifyTemplate("alias", rCfg.metadata.alias, dw); - verifyTemplate("title", rCfg.metadata.title, dw); - verifyTemplate("version", rCfg.metadata.version, dw); - verifyTemplate("description", rCfg.metadata.description, dw); + verifyTemplate("alias", prCfg.metadata.alias, dw); + verifyTemplate("title", prCfg.metadata.title, dw); + verifyTemplate("version", prCfg.metadata.version, dw); + verifyTemplate("description", prCfg.metadata.description, dw); } private void verifyTemplate(String field, String template, CitationUtils.ReleaseWrapper d) throws IllegalArgumentException { @@ -177,7 +184,7 @@ public String getEmailTemplatePrefix() { } public URI getReportURI() { - return cfg.release.reportURI(projectKey, attempt); + return cfg.reportURI(projectKey, attempt); } @Override @@ -189,10 +196,10 @@ protected void modifyDataset(Dataset d) { d.setIssued(today); var data = new CitationUtils.ReleaseWrapper(d, base, dataset); - d.setAlias( CitationUtils.fromTemplate(data, coalesce(rCfg.metadata.alias, DEFAULT_ALIAS_TEMPLATE)) ); - d.setTitle( CitationUtils.fromTemplate(data, coalesce(rCfg.metadata.title, d.getTitle())) ); - d.setVersion( CitationUtils.fromTemplate(data, coalesce(rCfg.metadata.version, DEFAULT_VERSION_TEMPLATE)) ); - d.setDescription( CitationUtils.fromTemplate(data, coalesce(rCfg.metadata.description, d.getDescription())) ); + d.setAlias( CitationUtils.fromTemplate(data, coalesce(prCfg.metadata.alias, DEFAULT_ALIAS_TEMPLATE)) ); + d.setTitle( CitationUtils.fromTemplate(data, coalesce(prCfg.metadata.title, d.getTitle())) ); + d.setVersion( CitationUtils.fromTemplate(data, coalesce(prCfg.metadata.version, DEFAULT_VERSION_TEMPLATE)) ); + d.setDescription( CitationUtils.fromTemplate(data, coalesce(prCfg.metadata.description, d.getDescription())) ); // all releases are private candidate releases first d.setPrivat(true); @@ -212,7 +219,7 @@ void removeOrphans(int dKey) { void prepWork() throws Exception { LocalDateTime start = LocalDateTime.now(); - if (rCfg.removeBareNames) { + if (prCfg.removeBareNames) { removeOrphans(projectKey); } @@ -222,7 +229,7 @@ void prepWork() throws Exception { // map ids start = LocalDateTime.now(); updateState(ImportState.MATCHING); - IdProvider idp = new IdProvider(projectKey, DatasetOrigin.RELEASE, attempt, newDatasetKey, cfg.release, factory); + IdProvider idp = new IdProvider(projectKey, DatasetOrigin.RELEASE, attempt, newDatasetKey, cfg, factory); idp.mapIds(); idp.report(); DateUtils.logDuration(LOG, "ID provider", start); @@ -255,8 +262,8 @@ protected Integer createReleaseDOI() throws Exception { */ protected Integer createReleaseDOI(Integer prevReleaseKey) throws Exception { // assign DOIs? - if (cfg.doi != null) { - newDataset.setDoi(cfg.doi.datasetDOI(newDatasetKey)); + if (doiCfg != null) { + newDataset.setDoi(doiCfg.datasetDOI(newDatasetKey)); updateDataset(newDataset); LOG.info("Use previous release {} for DOI metadata of {}", prevReleaseKey, newDatasetKey); @@ -313,11 +320,11 @@ void finalWork() throws Exception { // This DOES create source dataset records for aggregated publishers. // It does not create source records for merge sectors without data in the release itself! for (var d : srcDao.listSectorBasedSources(projectKey, newDatasetKey, true)) { - if (rCfg.issueSourceDOIs && cfg.doi != null) { + if (prCfg.issueSourceDOIs && doiCfg != null) { // can we reuse a previous DOI for the source? DOI srcDOI = findSourceDOI(prevReleaseKey, d.getKey(), session); if (srcDOI == null) { - srcDOI = cfg.doi.datasetSourceDOI(newDatasetKey, d.getKey()); + srcDOI = doiCfg.datasetSourceDOI(newDatasetKey, d.getKey()); d.setDoi(srcDOI); LOG.info("Creating new DOI {} for modified source {} of release {}", srcDOI, d.getKey(), newDatasetKey); var srcAttr = doiUpdater.buildSourceMetadata(d, newDataset, true); @@ -345,7 +352,7 @@ void finalWork() throws Exception { // aggregate authors for release from sources checkIfCancelled(); var authGen = new AuthorlistGenerator(validator, srcDao); - if (authGen.appendSourceAuthors(newDataset, rCfg.metadata)) { + if (authGen.appendSourceAuthors(newDataset, prCfg.metadata)) { dDao.update(newDataset, user); } @@ -363,7 +370,7 @@ void finalWork() throws Exception { VarnishUtils.ban(client, portalURI); // flush also /colseo which also points to latest releases } // kick off exports - if (rCfg.prepareDownloads) { + if (prCfg.prepareDownloads) { LOG.info("Prepare exports for release {}", newDatasetKey); for (DataFormat df : EXPORT_FORMATS) { ExportRequest req = new ExportRequest(); @@ -375,13 +382,13 @@ void finalWork() throws Exception { } } // generic hooks - if (cfg.release.actions != null && cfg.release.actions.containsKey(projectKey)) { + if (cfg.actions != null && cfg.actions.containsKey(projectKey)) { // reload dataset metadata final Dataset d; try (SqlSession session = factory.openSession(true)) { d = session.getMapper(DatasetMapper.class).get(newDatasetKey); } - for (var action : cfg.release.actions.get(projectKey)) { + for (var action : cfg.actions.get(projectKey)) { if (!action.onPublish) { action.call(client, d); } @@ -393,7 +400,7 @@ void finalWork() throws Exception { protected void onError(Exception e) { super.onError(e); // remove reports - File dir = cfg.release.reportDir(projectKey, attempt); + File dir = cfg.reportDir(projectKey, attempt); if (dir.exists()) { LOG.info("Remove release report {}-{} for failed dataset {}", projectKey, metrics.attempt(), newDatasetKey); FileUtils.deleteQuietly(dir); diff --git a/webservice/src/main/java/life/catalogue/release/ProjectReleaseConfig.java b/core/src/main/java/life/catalogue/release/ProjectReleaseConfig.java similarity index 78% rename from webservice/src/main/java/life/catalogue/release/ProjectReleaseConfig.java rename to core/src/main/java/life/catalogue/release/ProjectReleaseConfig.java index 331134bb98..9bee69a4e2 100644 --- a/webservice/src/main/java/life/catalogue/release/ProjectReleaseConfig.java +++ b/core/src/main/java/life/catalogue/release/ProjectReleaseConfig.java @@ -1,21 +1,8 @@ package life.catalogue.release; -import jakarta.validation.Valid; -import jakarta.validation.constraints.Min; -import jakarta.validation.constraints.NotNull; - -import life.catalogue.api.model.EditorialDecision; -import life.catalogue.api.model.Name; -import life.catalogue.api.model.SimpleName; -import life.catalogue.api.model.SimpleNameClassified; import life.catalogue.api.vocab.DatasetType; -import life.catalogue.api.vocab.Issue; -import org.gbif.nameparser.api.Rank; - -import javax.annotation.Nullable; - -import java.util.*; +import java.util.List; public class ProjectReleaseConfig { diff --git a/webservice/src/main/java/life/catalogue/release/PublicReleaseListener.java b/core/src/main/java/life/catalogue/release/PublicReleaseListener.java similarity index 90% rename from webservice/src/main/java/life/catalogue/release/PublicReleaseListener.java rename to core/src/main/java/life/catalogue/release/PublicReleaseListener.java index 93f0c4284f..4e80d9fffe 100644 --- a/webservice/src/main/java/life/catalogue/release/PublicReleaseListener.java +++ b/core/src/main/java/life/catalogue/release/PublicReleaseListener.java @@ -1,6 +1,5 @@ package life.catalogue.release; -import life.catalogue.WsServerConfig; import life.catalogue.api.event.DatasetChanged; import life.catalogue.api.model.DOI; import life.catalogue.api.model.Dataset; @@ -11,6 +10,8 @@ import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.api.vocab.Datasets; import life.catalogue.common.io.PathUtils; +import life.catalogue.concurrent.JobConfig; +import life.catalogue.config.ReleaseConfig; import life.catalogue.dao.DatasetExportDao; import life.catalogue.dao.DatasetSourceDao; import life.catalogue.dao.NameUsageArchiver; @@ -49,7 +50,8 @@ public class PublicReleaseListener { private static final Logger LOG = LoggerFactory.getLogger(PublicReleaseListener.class); - private final WsServerConfig cfg; + private final ReleaseConfig cfg; + private final JobConfig jCfg; private final SqlSessionFactory factory; private final DatasetExportDao dao; private final DoiService doiService; @@ -57,8 +59,9 @@ public class PublicReleaseListener { private final NameUsageArchiver archiver; private final CloseableHttpClient httpClient; - public PublicReleaseListener(WsServerConfig cfg, SqlSessionFactory factory, CloseableHttpClient httpClient, DatasetExportDao dao, DoiService doiService, DatasetConverter converter) { - this.cfg = cfg; + public PublicReleaseListener(ReleaseConfig rCfg, JobConfig jCfg, SqlSessionFactory factory, CloseableHttpClient httpClient, DatasetExportDao dao, DoiService doiService, DatasetConverter converter) { + this.cfg = rCfg; + this.jCfg = jCfg; this.factory = factory; this.dao = dao; this.httpClient = httpClient; @@ -94,8 +97,8 @@ public void datasetChanged(DatasetChanged event){ archiver.archiveRelease(event.obj.getSourceKey(), event.obj.getKey()); // generic hooks - if (cfg.release.actions != null && cfg.release.actions.containsKey(event.obj.getSourceKey())) { - for (var action : cfg.release.actions.get(event.obj.getSourceKey())) { + if (cfg.actions != null && cfg.actions.containsKey(event.obj.getSourceKey())) { + for (var action : cfg.actions.get(event.obj.getSourceKey())) { if (action.onPublish) { action.call(httpClient, event.obj); } @@ -178,7 +181,7 @@ private void updateColDoiUrls(Dataset release) { } public void copyExportsToColDownload(Dataset dataset, boolean symLinkLatest) { - if (cfg.release.colDownloadDir != null) { + if (cfg.colDownloadDir != null) { final int datasetKey = dataset.getKey(); final int projectKey = dataset.getSourceKey(); if (dataset.getIssued() == null) { @@ -197,26 +200,26 @@ public void copyExportsToColDownload(Dataset dataset, boolean symLinkLatest) { if (symLinkLatest && dataset.getAttempt() != null) { try { // set latest_logs -> /srv/releases/3/50 - File logs = cfg.release.reportDir(projectKey, dataset.getAttempt()); - File symlink = new File(cfg.release.colDownloadDir, "latest_logs"); + File logs = cfg.reportDir(projectKey, dataset.getAttempt()); + File symlink = new File(cfg.colDownloadDir, "latest_logs"); PathUtils.symlink(symlink, logs); } catch (IOException e) { LOG.error("Failed to symlink latest release logs", e); } } - LOG.info("Copied {} COL exports to downloads at {}", done.size(), cfg.release.colDownloadDir); + LOG.info("Copied {} COL exports to downloads at {}", done.size(), cfg.colDownloadDir); } } public void copyExportToColDownload(Dataset dataset, DataFormat df, UUID exportKey, boolean symLinkLatest) { - File target = colDownloadFile(cfg.release.colDownloadDir, dataset, df); - File source = cfg.job.downloadFile(exportKey); + File target = colDownloadFile(cfg.colDownloadDir, dataset, df); + File source = jCfg.downloadFile(exportKey); if (source.exists()) { try { LOG.info("Copy COL {} export {} to {}", df, exportKey, target); FileUtils.copyFile(source, target); if (symLinkLatest) { - File symlink = colLatestFile(cfg.release.colDownloadDir, df); + File symlink = colLatestFile(cfg.colDownloadDir, df); LOG.info("Symlink COL {} export {} at {} to {}", df, exportKey, target, symlink); PathUtils.symlink(symlink, target); } diff --git a/webservice/src/main/java/life/catalogue/release/ReleasedIds.java b/core/src/main/java/life/catalogue/release/ReleasedIds.java similarity index 99% rename from webservice/src/main/java/life/catalogue/release/ReleasedIds.java rename to core/src/main/java/life/catalogue/release/ReleasedIds.java index 55f94afa97..c7e2841133 100644 --- a/webservice/src/main/java/life/catalogue/release/ReleasedIds.java +++ b/core/src/main/java/life/catalogue/release/ReleasedIds.java @@ -1,7 +1,6 @@ package life.catalogue.release; import life.catalogue.api.model.SimpleNameWithNidx; -import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.api.vocab.MatchType; import life.catalogue.api.vocab.TaxonomicStatus; import life.catalogue.common.id.IdConverter; diff --git a/webservice/src/main/java/life/catalogue/release/ScoreMatrix.java b/core/src/main/java/life/catalogue/release/ScoreMatrix.java similarity index 100% rename from webservice/src/main/java/life/catalogue/release/ScoreMatrix.java rename to core/src/main/java/life/catalogue/release/ScoreMatrix.java diff --git a/webservice/src/main/java/life/catalogue/release/TreeCleanerAndValidator.java b/core/src/main/java/life/catalogue/release/TreeCleanerAndValidator.java similarity index 98% rename from webservice/src/main/java/life/catalogue/release/TreeCleanerAndValidator.java rename to core/src/main/java/life/catalogue/release/TreeCleanerAndValidator.java index 3521929aac..81fe7a7bfc 100644 --- a/webservice/src/main/java/life/catalogue/release/TreeCleanerAndValidator.java +++ b/core/src/main/java/life/catalogue/release/TreeCleanerAndValidator.java @@ -1,6 +1,8 @@ package life.catalogue.release; -import life.catalogue.api.model.*; +import life.catalogue.api.model.DSID; +import life.catalogue.api.model.IssueContainer; +import life.catalogue.api.model.LinneanNameUsage; import life.catalogue.api.util.ObjectUtils; import life.catalogue.api.vocab.Issue; import life.catalogue.assembly.TreeMergeHandler; @@ -18,7 +20,6 @@ import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/webservice/src/main/java/life/catalogue/release/UsageIdGen.java b/core/src/main/java/life/catalogue/release/UsageIdGen.java similarity index 100% rename from webservice/src/main/java/life/catalogue/release/UsageIdGen.java rename to core/src/main/java/life/catalogue/release/UsageIdGen.java diff --git a/webservice/src/main/java/life/catalogue/release/XIdGen.java b/core/src/main/java/life/catalogue/release/XIdGen.java similarity index 100% rename from webservice/src/main/java/life/catalogue/release/XIdGen.java rename to core/src/main/java/life/catalogue/release/XIdGen.java diff --git a/webservice/src/main/java/life/catalogue/release/XIdProvider.java b/core/src/main/java/life/catalogue/release/XIdProvider.java similarity index 99% rename from webservice/src/main/java/life/catalogue/release/XIdProvider.java rename to core/src/main/java/life/catalogue/release/XIdProvider.java index c8c673220d..5e5509f0d3 100644 --- a/webservice/src/main/java/life/catalogue/release/XIdProvider.java +++ b/core/src/main/java/life/catalogue/release/XIdProvider.java @@ -3,15 +3,14 @@ import life.catalogue.api.model.SimpleNameWithNidx; import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.config.ReleaseConfig; - import life.catalogue.matching.nidx.NameIndex; -import org.apache.ibatis.session.SqlSessionFactory; - import java.io.IOException; import java.io.Writer; import java.util.List; +import org.apache.ibatis.session.SqlSessionFactory; + /** * ID generator for the extended release based on the IdProvider that looks at * previous releases and the deleted usage archive to know about historical identifiers that can be reused. diff --git a/webservice/src/main/java/life/catalogue/release/XRelease.java b/core/src/main/java/life/catalogue/release/XRelease.java similarity index 97% rename from webservice/src/main/java/life/catalogue/release/XRelease.java rename to core/src/main/java/life/catalogue/release/XRelease.java index ddca4b566c..e787a65f49 100644 --- a/webservice/src/main/java/life/catalogue/release/XRelease.java +++ b/core/src/main/java/life/catalogue/release/XRelease.java @@ -1,6 +1,5 @@ package life.catalogue.release; -import life.catalogue.WsServerConfig; import life.catalogue.api.exception.NotFoundException; import life.catalogue.api.model.*; import life.catalogue.api.vocab.*; @@ -12,22 +11,25 @@ import life.catalogue.basgroup.SectorPriority; import life.catalogue.common.date.DateUtils; import life.catalogue.concurrent.ExecutorUtils; +import life.catalogue.config.ReleaseConfig; import life.catalogue.dao.*; import life.catalogue.db.CopyDataset; import life.catalogue.db.PgUtils; import life.catalogue.db.mapper.*; import life.catalogue.doi.DoiUpdater; +import life.catalogue.doi.service.DoiConfig; import life.catalogue.doi.service.DoiService; import life.catalogue.es.NameUsageIndexService; import life.catalogue.exporter.ExportManager; import life.catalogue.img.ImageService; -import life.catalogue.matching.nidx.NameIndex; import life.catalogue.matching.RematchMissing; import life.catalogue.matching.UsageMatcherGlobal; +import life.catalogue.matching.nidx.NameIndex; import org.gbif.nameparser.api.NameType; import org.gbif.nameparser.api.Rank; +import java.net.URI; import java.time.LocalDateTime; import java.util.Collection; import java.util.HashSet; @@ -36,8 +38,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Supplier; -import jakarta.validation.Validator; - import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.ibatis.exceptions.PersistenceException; import org.apache.ibatis.session.SqlSession; @@ -47,6 +47,8 @@ import com.google.common.annotations.VisibleForTesting; +import jakarta.validation.Validator; + public class XRelease extends ProjectRelease { private static final Logger LOG = LoggerFactory.getLogger(XRelease.class); private final int baseReleaseKey; @@ -65,9 +67,9 @@ public class XRelease extends ProjectRelease { XRelease(SqlSessionFactory factory, SyncFactory syncFactory, UsageMatcherGlobal matcher, NameUsageIndexService indexService, ImageService imageService, DatasetDao dDao, DatasetImportDao diDao, SectorImportDao siDao, ReferenceDao rDao, NameDao nDao, SectorDao sDao, - int releaseKey, int userKey, WsServerConfig cfg, CloseableHttpClient client, ExportManager exportManager, + int releaseKey, int userKey, ReleaseConfig cfg, DoiConfig doiCfg, URI apiURI, URI clbURI, CloseableHttpClient client, ExportManager exportManager, DoiService doiService, DoiUpdater doiUpdater, Validator validator) { - super("releasing extended", factory, indexService, imageService, diDao, dDao, rDao, nDao, sDao, releaseKey, userKey, cfg, client, exportManager, doiService, doiUpdater, validator); + super("releasing extended", factory, indexService, imageService, diDao, dDao, rDao, nDao, sDao, releaseKey, userKey, cfg, doiCfg, apiURI, clbURI, client, exportManager, doiService, doiUpdater, validator); this.siDao = siDao; this.syncFactory = syncFactory; this.matcher = matcher; @@ -85,9 +87,9 @@ void setCfg(XReleaseConfig xCfg) { @Override protected void loadConfigs() { - rCfg = loadConfig(XReleaseConfig.class, settings.getURI(Setting.XRELEASE_CONFIG)); + prCfg = loadConfig(XReleaseConfig.class, settings.getURI(Setting.XRELEASE_CONFIG)); verifyConfigTemplates(); - xCfg = (XReleaseConfig) rCfg; + xCfg = (XReleaseConfig) prCfg; } @Override @@ -157,7 +159,7 @@ void prepWork() throws Exception { createReleaseDOI(); // setup id generator - usageIdGen = new XIdProvider(projectKey, attempt, newDatasetKey, cfg.release, ni, factory); + usageIdGen = new XIdProvider(projectKey, attempt, newDatasetKey, cfg, ni, factory); // make sure the missing matching is completed before we deal with the real data thread.join(); diff --git a/webservice/src/main/java/life/catalogue/release/XReleaseConfig.java b/core/src/main/java/life/catalogue/release/XReleaseConfig.java similarity index 98% rename from webservice/src/main/java/life/catalogue/release/XReleaseConfig.java rename to core/src/main/java/life/catalogue/release/XReleaseConfig.java index 4d2677209d..21453b7f64 100644 --- a/webservice/src/main/java/life/catalogue/release/XReleaseConfig.java +++ b/core/src/main/java/life/catalogue/release/XReleaseConfig.java @@ -6,17 +6,16 @@ import life.catalogue.api.model.SimpleNameClassified; import life.catalogue.api.vocab.Issue; +import org.gbif.nameparser.api.Rank; + import java.util.*; import javax.annotation.Nullable; + import jakarta.validation.Valid; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotNull; -import life.catalogue.config.ReleaseConfig; - -import org.gbif.nameparser.api.Rank; - public class XReleaseConfig extends ProjectReleaseConfig { /** diff --git a/webservice/src/main/resources/export/acef/ac-export.sql b/core/src/main/resources/export/acef/ac-export.sql similarity index 100% rename from webservice/src/main/resources/export/acef/ac-export.sql rename to core/src/main/resources/export/acef/ac-export.sql diff --git a/webservice/src/main/resources/export/acef/load-export.sql b/core/src/main/resources/export/acef/load-export.sql similarity index 100% rename from webservice/src/main/resources/export/acef/load-export.sql rename to core/src/main/resources/export/acef/load-export.sql diff --git a/webservice/src/main/resources/export/dwca/simple-meta-csv.xml b/core/src/main/resources/export/dwca/simple-meta-csv.xml similarity index 100% rename from webservice/src/main/resources/export/dwca/simple-meta-csv.xml rename to core/src/main/resources/export/dwca/simple-meta-csv.xml diff --git a/webservice/src/main/resources/export/dwca/simple-meta-tsv.xml b/core/src/main/resources/export/dwca/simple-meta-tsv.xml similarity index 100% rename from webservice/src/main/resources/export/dwca/simple-meta-tsv.xml rename to core/src/main/resources/export/dwca/simple-meta-tsv.xml diff --git a/webservice/src/main/resources/freemarker-templates/email/export-canceled.ftl b/core/src/main/resources/freemarker-templates/email/export-canceled.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/export-canceled.ftl rename to core/src/main/resources/freemarker-templates/email/export-canceled.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/export-failed.ftl b/core/src/main/resources/freemarker-templates/email/export-failed.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/export-failed.ftl rename to core/src/main/resources/freemarker-templates/email/export-failed.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/export-finished.ftl b/core/src/main/resources/freemarker-templates/email/export-finished.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/export-finished.ftl rename to core/src/main/resources/freemarker-templates/email/export-finished.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/failed.ftl b/core/src/main/resources/freemarker-templates/email/failed.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/failed.ftl rename to core/src/main/resources/freemarker-templates/email/failed.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/footer.ftl b/core/src/main/resources/freemarker-templates/email/footer.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/footer.ftl rename to core/src/main/resources/freemarker-templates/email/footer.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/header.ftl b/core/src/main/resources/freemarker-templates/email/header.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/header.ftl rename to core/src/main/resources/freemarker-templates/email/header.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/matching-canceled.ftl b/core/src/main/resources/freemarker-templates/email/matching-canceled.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/matching-canceled.ftl rename to core/src/main/resources/freemarker-templates/email/matching-canceled.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/matching-failed.ftl b/core/src/main/resources/freemarker-templates/email/matching-failed.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/matching-failed.ftl rename to core/src/main/resources/freemarker-templates/email/matching-failed.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/matching-finished.ftl b/core/src/main/resources/freemarker-templates/email/matching-finished.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/matching-finished.ftl rename to core/src/main/resources/freemarker-templates/email/matching-finished.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/nidx-export-canceled.ftl b/core/src/main/resources/freemarker-templates/email/nidx-export-canceled.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/nidx-export-canceled.ftl rename to core/src/main/resources/freemarker-templates/email/nidx-export-canceled.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/nidx-export-datasets.ftl b/core/src/main/resources/freemarker-templates/email/nidx-export-datasets.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/nidx-export-datasets.ftl rename to core/src/main/resources/freemarker-templates/email/nidx-export-datasets.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/nidx-export-failed.ftl b/core/src/main/resources/freemarker-templates/email/nidx-export-failed.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/nidx-export-failed.ftl rename to core/src/main/resources/freemarker-templates/email/nidx-export-failed.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/nidx-export-finished.ftl b/core/src/main/resources/freemarker-templates/email/nidx-export-finished.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/nidx-export-finished.ftl rename to core/src/main/resources/freemarker-templates/email/nidx-export-finished.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/release-canceled.ftl b/core/src/main/resources/freemarker-templates/email/release-canceled.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/release-canceled.ftl rename to core/src/main/resources/freemarker-templates/email/release-canceled.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/release-failed.ftl b/core/src/main/resources/freemarker-templates/email/release-failed.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/release-failed.ftl rename to core/src/main/resources/freemarker-templates/email/release-failed.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/release-finished.ftl b/core/src/main/resources/freemarker-templates/email/release-finished.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/release-finished.ftl rename to core/src/main/resources/freemarker-templates/email/release-finished.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/taxalign-canceled.ftl b/core/src/main/resources/freemarker-templates/email/taxalign-canceled.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/taxalign-canceled.ftl rename to core/src/main/resources/freemarker-templates/email/taxalign-canceled.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/taxalign-failed.ftl b/core/src/main/resources/freemarker-templates/email/taxalign-failed.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/taxalign-failed.ftl rename to core/src/main/resources/freemarker-templates/email/taxalign-failed.ftl diff --git a/webservice/src/main/resources/freemarker-templates/email/taxalign-finished.ftl b/core/src/main/resources/freemarker-templates/email/taxalign-finished.ftl similarity index 100% rename from webservice/src/main/resources/freemarker-templates/email/taxalign-finished.ftl rename to core/src/main/resources/freemarker-templates/email/taxalign-finished.ftl diff --git a/webservice/src/test/java/life/catalogue/ApiUtils.java b/core/src/test/java/life/catalogue/ApiUtils.java similarity index 100% rename from webservice/src/test/java/life/catalogue/ApiUtils.java rename to core/src/test/java/life/catalogue/ApiUtils.java diff --git a/core/src/test/java/life/catalogue/TestConfigs.java b/core/src/test/java/life/catalogue/TestConfigs.java new file mode 100644 index 0000000000..bcf4b93c0e --- /dev/null +++ b/core/src/test/java/life/catalogue/TestConfigs.java @@ -0,0 +1,67 @@ +package life.catalogue; + +import com.google.common.io.Files; + +import life.catalogue.concurrent.JobConfig; +import life.catalogue.config.GbifConfig; +import life.catalogue.config.ImporterConfig; +import life.catalogue.config.NormalizerConfig; +import life.catalogue.config.ReleaseConfig; +import life.catalogue.db.PgConfig; +import life.catalogue.doi.service.DoiConfig; +import life.catalogue.exporter.ExporterConfig; +import life.catalogue.img.ImgConfig; + +import java.net.URI; + +public class TestConfigs implements ExporterConfig { + public URI apiURI = ApiUtils.API; + public URI clbURI = URI.create("http://localhost/clb"); + public URI portalURI = URI.create("http://localhost/portal"); + + public ImporterConfig importer = new ImporterConfig(); + public NormalizerConfig normalizer = new NormalizerConfig(); + public ImgConfig img = new ImgConfig(); + public ReleaseConfig release = new ReleaseConfig(); + public JobConfig job = new JobConfig(); + public GbifConfig gbif = new GbifConfig(); + public DoiConfig doi; + public PgConfig db; + + public static TestConfigs build() { + var cfg = new TestConfigs(); + cfg.release.restart = null; + + cfg.gbif.fullSyncFrequency = 0; + + cfg.importer.continuous.polling = 0; + cfg.importer.threads = 2; + // wait for half a minute before completing an import to run assertions + cfg.importer.wait = 30; + + cfg.normalizer.archiveDir = Files.createTempDir(); + cfg.normalizer.scratchDir = Files.createTempDir(); + + return cfg; + } + + @Override + public URI getApiUri() { + return apiURI; + } + + @Override + public JobConfig getJob() { + return job; + } + + @Override + public ImgConfig getImgConfig() { + return img; + } + + @Override + public NormalizerConfig getNormalizerConfig() { + return normalizer; + } +} diff --git a/core/src/test/java/life/catalogue/TestDataRules.java b/core/src/test/java/life/catalogue/TestDataRules.java new file mode 100644 index 0000000000..318068edbc --- /dev/null +++ b/core/src/test/java/life/catalogue/TestDataRules.java @@ -0,0 +1,55 @@ +package life.catalogue; + +import life.catalogue.api.vocab.DataFormat; +import life.catalogue.junit.TestDataRule; + +import java.util.Map; +import java.util.Set; + +import it.unimi.dsi.fastutil.Pair; + +/** + * More test data rules that have been generated via the TestDataGenerator class in the importer module. + */ +public class TestDataRules { + final static TestDataRule.TestData MATCHING = new TestDataRule.TestData("matching", 101, Set.of(101, 102), false); + + final static TestDataRule.TestData SYNCS = new TestDataRule.TestData("syncs", 3, null, false, Map.ofEntries( + Map.entry(Pair.of(DataFormat.COLDP, 38), 118), + Map.entry(Pair.of(DataFormat.DWCA, 1), 106), + Map.entry(Pair.of(DataFormat.COLDP, 35), 117), + Map.entry(Pair.of(DataFormat.DWCA, 2), 107), + Map.entry(Pair.of(DataFormat.COLDP, 4), 112), + Map.entry(Pair.of(DataFormat.ACEF, 14), 120), + Map.entry(Pair.of(DataFormat.COLDP, 2), 111), + Map.entry(Pair.of(DataFormat.COLDP, 34), 116), + Map.entry(Pair.of(DataFormat.COLDP, 0), 103), + Map.entry(Pair.of(DataFormat.ACEF, 11), 110), + Map.entry(Pair.of(DataFormat.COLDP, 27), 101), + Map.entry(Pair.of(DataFormat.COLDP, 25), 105), + Map.entry(Pair.of(DataFormat.COLDP, 26), 115), + Map.entry(Pair.of(DataFormat.COLDP, 24), 114), + Map.entry(Pair.of(DataFormat.ACEF, 1), 102), + Map.entry(Pair.of(DataFormat.COLDP, 22), 104), + Map.entry(Pair.of(DataFormat.DWCA, 45), 119), + Map.entry(Pair.of(DataFormat.COLDP, 14), 113), + Map.entry(Pair.of(DataFormat.ACEF, 6), 109), + Map.entry(Pair.of(DataFormat.ACEF, 5), 108) + )); + final static TestDataRule.TestData XCOL = new TestDataRule.TestData("xcol", 3, null, false); + final static TestDataRule.TestData GROUPING = new TestDataRule.TestData("homgroup", 4, null, false); + + public static TestDataRule homotypigGrouping() { + return new TestDataRule(GROUPING); + } + public static TestDataRule matching() { + return new TestDataRule(MATCHING); + } + public static TestDataRule syncs() { + return new TestDataRule(SYNCS); + } + public static TestDataRule xcol() { + return new TestDataRule(XCOL); + } + +} \ No newline at end of file diff --git a/webservice/src/test/java/life/catalogue/assembly/AssemblyCoordinatorOrderTest.java b/core/src/test/java/life/catalogue/assembly/AssemblyCoordinatorOrderTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/assembly/AssemblyCoordinatorOrderTest.java rename to core/src/test/java/life/catalogue/assembly/AssemblyCoordinatorOrderTest.java diff --git a/webservice/src/test/java/life/catalogue/assembly/AssemblyCoordinatorTest.java b/core/src/test/java/life/catalogue/assembly/AssemblyCoordinatorTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/assembly/AssemblyCoordinatorTest.java rename to core/src/test/java/life/catalogue/assembly/AssemblyCoordinatorTest.java diff --git a/webservice/src/test/java/life/catalogue/assembly/ParentStackTest.java b/core/src/test/java/life/catalogue/assembly/ParentStackTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/assembly/ParentStackTest.java rename to core/src/test/java/life/catalogue/assembly/ParentStackTest.java diff --git a/webservice/src/test/java/life/catalogue/assembly/SectorSyncIT.java b/core/src/test/java/life/catalogue/assembly/SectorSyncIT.java similarity index 98% rename from webservice/src/test/java/life/catalogue/assembly/SectorSyncIT.java rename to core/src/test/java/life/catalogue/assembly/SectorSyncIT.java index a93919cd73..f0f362b9fb 100644 --- a/webservice/src/test/java/life/catalogue/assembly/SectorSyncIT.java +++ b/core/src/test/java/life/catalogue/assembly/SectorSyncIT.java @@ -1,16 +1,11 @@ package life.catalogue.assembly; -import life.catalogue.TestDataGenerator; +import life.catalogue.TestDataRules; import life.catalogue.api.model.*; import life.catalogue.api.vocab.*; import life.catalogue.dao.TaxonDao; -import life.catalogue.db.PgUtils; -import life.catalogue.junit.TreeRepoRule; -import life.catalogue.junit.NameMatchingRule; -import life.catalogue.junit.PgSetupRule; -import life.catalogue.junit.SqlSessionFactoryRule; -import life.catalogue.junit.TestDataRule; import life.catalogue.db.mapper.*; +import life.catalogue.junit.*; import org.gbif.nameparser.api.NameType; import org.gbif.nameparser.api.NomCode; @@ -37,7 +32,7 @@ public class SectorSyncIT extends SectorSyncTestBase { final static SqlSessionFactoryRule pg = new PgSetupRule(); // PgConnectionRule("col", "postgres", "postgres"); - final static TestDataRule dataRule = TestDataGenerator.syncs(); + final static TestDataRule dataRule = TestDataRules.syncs(); final static TreeRepoRule treeRepoRule = new TreeRepoRule(); final static NameMatchingRule matchingRule = new NameMatchingRule(); final static SyncFactoryRule syncFactoryRule = new SyncFactoryRule(); diff --git a/webservice/src/test/java/life/catalogue/assembly/SectorSyncMergeIT.java b/core/src/test/java/life/catalogue/assembly/SectorSyncMergeIT.java similarity index 100% rename from webservice/src/test/java/life/catalogue/assembly/SectorSyncMergeIT.java rename to core/src/test/java/life/catalogue/assembly/SectorSyncMergeIT.java diff --git a/webservice/src/test/java/life/catalogue/assembly/SectorSyncNameUpdIT.java b/core/src/test/java/life/catalogue/assembly/SectorSyncNameUpdIT.java similarity index 99% rename from webservice/src/test/java/life/catalogue/assembly/SectorSyncNameUpdIT.java rename to core/src/test/java/life/catalogue/assembly/SectorSyncNameUpdIT.java index 67f1964fce..35abd3509e 100644 --- a/webservice/src/test/java/life/catalogue/assembly/SectorSyncNameUpdIT.java +++ b/core/src/test/java/life/catalogue/assembly/SectorSyncNameUpdIT.java @@ -14,7 +14,6 @@ import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; -import java.util.List; import java.util.Set; import org.apache.ibatis.session.SqlSession; diff --git a/webservice/src/test/java/life/catalogue/assembly/SectorSyncTest.java b/core/src/test/java/life/catalogue/assembly/SectorSyncTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/assembly/SectorSyncTest.java rename to core/src/test/java/life/catalogue/assembly/SectorSyncTest.java diff --git a/webservice/src/test/java/life/catalogue/assembly/SectorSyncTestBase.java b/core/src/test/java/life/catalogue/assembly/SectorSyncTestBase.java similarity index 100% rename from webservice/src/test/java/life/catalogue/assembly/SectorSyncTestBase.java rename to core/src/test/java/life/catalogue/assembly/SectorSyncTestBase.java diff --git a/webservice/src/test/java/life/catalogue/assembly/SyncFactoryRule.java b/core/src/test/java/life/catalogue/assembly/SyncFactoryRule.java similarity index 100% rename from webservice/src/test/java/life/catalogue/assembly/SyncFactoryRule.java rename to core/src/test/java/life/catalogue/assembly/SyncFactoryRule.java diff --git a/webservice/src/test/java/life/catalogue/assembly/TreeBaseHandlerTest.java b/core/src/test/java/life/catalogue/assembly/TreeBaseHandlerTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/assembly/TreeBaseHandlerTest.java rename to core/src/test/java/life/catalogue/assembly/TreeBaseHandlerTest.java diff --git a/webservice/src/test/java/life/catalogue/basgroup/BasionymGroupTest.java b/core/src/test/java/life/catalogue/basgroup/BasionymGroupTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/basgroup/BasionymGroupTest.java rename to core/src/test/java/life/catalogue/basgroup/BasionymGroupTest.java diff --git a/webservice/src/test/java/life/catalogue/basgroup/BasionymSorterTest.java b/core/src/test/java/life/catalogue/basgroup/BasionymSorterTest.java similarity index 99% rename from webservice/src/test/java/life/catalogue/basgroup/BasionymSorterTest.java rename to core/src/test/java/life/catalogue/basgroup/BasionymSorterTest.java index ae7e179c98..4cb9cebb86 100644 --- a/webservice/src/test/java/life/catalogue/basgroup/BasionymSorterTest.java +++ b/core/src/test/java/life/catalogue/basgroup/BasionymSorterTest.java @@ -1,6 +1,5 @@ package life.catalogue.basgroup; -import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Functions; import life.catalogue.api.model.Name; diff --git a/webservice/src/test/java/life/catalogue/basgroup/HomotypicConsolidator2IT.java b/core/src/test/java/life/catalogue/basgroup/HomotypicConsolidator2IT.java similarity index 97% rename from webservice/src/test/java/life/catalogue/basgroup/HomotypicConsolidator2IT.java rename to core/src/test/java/life/catalogue/basgroup/HomotypicConsolidator2IT.java index 0c3aae5332..ebeb71bf1f 100644 --- a/webservice/src/test/java/life/catalogue/basgroup/HomotypicConsolidator2IT.java +++ b/core/src/test/java/life/catalogue/basgroup/HomotypicConsolidator2IT.java @@ -1,6 +1,6 @@ package life.catalogue.basgroup; -import life.catalogue.TestDataGenerator; +import life.catalogue.TestDataRules; import life.catalogue.api.model.DSID; import life.catalogue.api.model.SimpleName; import life.catalogue.api.model.TreeTraversalParameter; @@ -40,7 +40,7 @@ public class HomotypicConsolidator2IT { public final static PgSetupRule pg = new PgSetupRule(); final NameMatchingRule matchingRule = new NameMatchingRule(); - final TestDataRule dataRule = TestDataGenerator.homotypigGrouping(); + final TestDataRule dataRule = TestDataRules.homotypigGrouping(); @Rule public final TestRule chain = RuleChain diff --git a/webservice/src/test/java/life/catalogue/basgroup/HomotypicConsolidatorIT.java b/core/src/test/java/life/catalogue/basgroup/HomotypicConsolidatorIT.java similarity index 97% rename from webservice/src/test/java/life/catalogue/basgroup/HomotypicConsolidatorIT.java rename to core/src/test/java/life/catalogue/basgroup/HomotypicConsolidatorIT.java index 43f2e572d2..9126c8525d 100644 --- a/webservice/src/test/java/life/catalogue/basgroup/HomotypicConsolidatorIT.java +++ b/core/src/test/java/life/catalogue/basgroup/HomotypicConsolidatorIT.java @@ -1,6 +1,5 @@ package life.catalogue.basgroup; -import life.catalogue.api.model.LinneanNameUsage; import life.catalogue.assembly.SectorSyncIT; import life.catalogue.junit.NameMatchingRule; import life.catalogue.junit.PgSetupRule; diff --git a/webservice/src/test/java/life/catalogue/basgroup/HomotypicConsolidatorTest.java b/core/src/test/java/life/catalogue/basgroup/HomotypicConsolidatorTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/basgroup/HomotypicConsolidatorTest.java rename to core/src/test/java/life/catalogue/basgroup/HomotypicConsolidatorTest.java diff --git a/webservice/src/test/java/life/catalogue/exporter/AcefExportTest.java b/core/src/test/java/life/catalogue/exporter/AcefExportTest.java similarity index 99% rename from webservice/src/test/java/life/catalogue/exporter/AcefExportTest.java rename to core/src/test/java/life/catalogue/exporter/AcefExportTest.java index 1ee80b3a47..c655f8fa5d 100644 --- a/webservice/src/test/java/life/catalogue/exporter/AcefExportTest.java +++ b/core/src/test/java/life/catalogue/exporter/AcefExportTest.java @@ -8,20 +8,18 @@ import life.catalogue.api.vocab.Datasets; import life.catalogue.api.vocab.Users; import life.catalogue.common.io.CompressionUtil; -import life.catalogue.db.*; +import life.catalogue.db.LookupTables; import life.catalogue.db.mapper.DatasetMapper; import life.catalogue.img.ImageService; - -import java.io.File; -import java.nio.charset.StandardCharsets; -import java.util.List; - import life.catalogue.junit.MybatisTestUtils; import life.catalogue.junit.PgSetupRule; import life.catalogue.junit.SqlSessionFactoryRule; - import life.catalogue.junit.TestDataRule; +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.util.List; + import org.apache.commons.io.FileUtils; import org.apache.ibatis.session.SqlSession; import org.junit.*; diff --git a/webservice/src/test/java/life/catalogue/exporter/ColdpExtendedExportTest.java b/core/src/test/java/life/catalogue/exporter/ColdpExtendedExportTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/exporter/ColdpExtendedExportTest.java rename to core/src/test/java/life/catalogue/exporter/ColdpExtendedExportTest.java diff --git a/webservice/src/test/java/life/catalogue/exporter/ColdpSimpleExportTest.java b/core/src/test/java/life/catalogue/exporter/ColdpSimpleExportTest.java similarity index 98% rename from webservice/src/test/java/life/catalogue/exporter/ColdpSimpleExportTest.java rename to core/src/test/java/life/catalogue/exporter/ColdpSimpleExportTest.java index bb9cd936e1..5bbf88724d 100644 --- a/webservice/src/test/java/life/catalogue/exporter/ColdpSimpleExportTest.java +++ b/core/src/test/java/life/catalogue/exporter/ColdpSimpleExportTest.java @@ -15,8 +15,6 @@ import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.*; - public class ColdpSimpleExportTest extends ExportTest { ExportRequest req; diff --git a/webservice/src/test/java/life/catalogue/exporter/DwcaExtendedExportTest.java b/core/src/test/java/life/catalogue/exporter/DwcaExtendedExportTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/exporter/DwcaExtendedExportTest.java rename to core/src/test/java/life/catalogue/exporter/DwcaExtendedExportTest.java diff --git a/webservice/src/test/java/life/catalogue/exporter/DwcaSimpleExportTest.java b/core/src/test/java/life/catalogue/exporter/DwcaSimpleExportTest.java similarity index 94% rename from webservice/src/test/java/life/catalogue/exporter/DwcaSimpleExportTest.java rename to core/src/test/java/life/catalogue/exporter/DwcaSimpleExportTest.java index e1cf99502a..8e78659afb 100644 --- a/webservice/src/test/java/life/catalogue/exporter/DwcaSimpleExportTest.java +++ b/core/src/test/java/life/catalogue/exporter/DwcaSimpleExportTest.java @@ -9,8 +9,6 @@ import org.junit.Test; -import static org.junit.Assert.*; - public class DwcaSimpleExportTest extends ExportTest { @Test diff --git a/webservice/src/test/java/life/catalogue/exporter/ExportJobEmailTest.java b/core/src/test/java/life/catalogue/exporter/ExportJobEmailTest.java similarity index 89% rename from webservice/src/test/java/life/catalogue/exporter/ExportJobEmailTest.java rename to core/src/test/java/life/catalogue/exporter/ExportJobEmailTest.java index d22dcd4a08..2a9c6bc92f 100644 --- a/webservice/src/test/java/life/catalogue/exporter/ExportJobEmailTest.java +++ b/core/src/test/java/life/catalogue/exporter/ExportJobEmailTest.java @@ -1,6 +1,6 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; +import life.catalogue.TestConfigs; import life.catalogue.api.model.ExportRequest; import life.catalogue.api.model.SimpleName; import life.catalogue.api.vocab.Users; @@ -28,6 +28,7 @@ public BackgroundJob buildJob() { ExportRequest req = new ExportRequest(); req.setDatasetKey(dataRule.testData.key); req.setRoot(SimpleName.sn(Rank.FAMILY, "Asteraceae")); - return new ColdpExtendedExport(req, Users.TESTER, SqlSessionFactoryRule.getSqlSessionFactory(), new WsServerConfig(), null); + var cfg = TestConfigs.build(); + return new ColdpExtendedExport(req, Users.TESTER, SqlSessionFactoryRule.getSqlSessionFactory(), cfg, null); } } \ No newline at end of file diff --git a/webservice/src/test/java/life/catalogue/exporter/ExportManagerIT.java b/core/src/test/java/life/catalogue/exporter/ExportManagerIT.java similarity index 97% rename from webservice/src/test/java/life/catalogue/exporter/ExportManagerIT.java rename to core/src/test/java/life/catalogue/exporter/ExportManagerIT.java index cfd3f27297..36bb361e76 100644 --- a/webservice/src/test/java/life/catalogue/exporter/ExportManagerIT.java +++ b/core/src/test/java/life/catalogue/exporter/ExportManagerIT.java @@ -1,6 +1,6 @@ package life.catalogue.exporter; -import life.catalogue.WsServerConfig; +import life.catalogue.TestConfigs; import life.catalogue.api.model.ExportRequest; import life.catalogue.api.model.User; import life.catalogue.api.vocab.DataFormat; @@ -10,10 +10,10 @@ import life.catalogue.dao.DatasetExportDao; import life.catalogue.dao.DatasetImportDao; import life.catalogue.dao.UserDao; +import life.catalogue.img.ImageService; import life.catalogue.junit.PgSetupRule; import life.catalogue.junit.SqlSessionFactoryRule; import life.catalogue.junit.TestDataRule; -import life.catalogue.img.ImageService; import life.catalogue.release.ProjectRelease; import java.io.File; @@ -38,7 +38,7 @@ public class ExportManagerIT { @Rule public TestDataRule testDataRule = TestDataRule.apple(); - WsServerConfig cfg = new WsServerConfig(); + TestConfigs cfg = TestConfigs.build(); JobExecutor executor; DatasetExportDao exDao; User user = new User(); diff --git a/webservice/src/test/java/life/catalogue/exporter/ExportTest.java b/core/src/test/java/life/catalogue/exporter/ExportTest.java similarity index 85% rename from webservice/src/test/java/life/catalogue/exporter/ExportTest.java rename to core/src/test/java/life/catalogue/exporter/ExportTest.java index 41adc58548..4f07a03e1e 100644 --- a/webservice/src/test/java/life/catalogue/exporter/ExportTest.java +++ b/core/src/test/java/life/catalogue/exporter/ExportTest.java @@ -1,10 +1,13 @@ package life.catalogue.exporter; -import life.catalogue.ApiUtils; -import life.catalogue.WsServerConfig; +import life.catalogue.TestConfigs; import life.catalogue.junit.PgSetupRule; import life.catalogue.junit.TestDataRule; +import java.io.File; +import java.nio.file.Files; +import java.util.concurrent.TimeUnit; + import org.apache.commons.io.FileUtils; import org.junit.After; import org.junit.Before; @@ -13,17 +16,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; -import java.nio.file.Files; -import java.util.concurrent.TimeUnit; - import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; public class ExportTest { private static final Logger LOG = LoggerFactory.getLogger(ExportTest.class); - WsServerConfig cfg; + TestConfigs cfg; @ClassRule public static PgSetupRule pgSetupRule = new PgSetupRule(); @@ -41,14 +39,13 @@ public ExportTest(TestDataRule.TestData testData) { @Before public void initCfg() { - cfg = new WsServerConfig(); - cfg.apiURI= ApiUtils.API; + cfg = TestConfigs.build(); } @After public void cleanup() { LOG.info("Cleaning up download directory {}", cfg.job.downloadDir); - FileUtils.deleteQuietly(cfg.job.downloadDir); + FileUtils.deleteQuietly(cfg.getJob().downloadDir); } static void assertExportExists(File file) { diff --git a/webservice/src/test/java/life/catalogue/exporter/NameUsageKeyMapTest.java b/core/src/test/java/life/catalogue/exporter/NameUsageKeyMapTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/exporter/NameUsageKeyMapTest.java rename to core/src/test/java/life/catalogue/exporter/NameUsageKeyMapTest.java diff --git a/webservice/src/test/java/life/catalogue/gbifsync/DatasetPagerTest.java b/core/src/test/java/life/catalogue/gbifsync/DatasetPagerTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/gbifsync/DatasetPagerTest.java rename to core/src/test/java/life/catalogue/gbifsync/DatasetPagerTest.java diff --git a/webservice/src/test/java/life/catalogue/gbifsync/GbifSyncTest.java b/core/src/test/java/life/catalogue/gbifsync/GbifSyncTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/gbifsync/GbifSyncTest.java rename to core/src/test/java/life/catalogue/gbifsync/GbifSyncTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/NameInterpreterTest.java b/core/src/test/java/life/catalogue/interpreter/NameInterpreterTest.java similarity index 99% rename from webservice/src/test/java/life/catalogue/importer/NameInterpreterTest.java rename to core/src/test/java/life/catalogue/interpreter/NameInterpreterTest.java index 91d82eb387..aa1e72d676 100644 --- a/webservice/src/test/java/life/catalogue/importer/NameInterpreterTest.java +++ b/core/src/test/java/life/catalogue/interpreter/NameInterpreterTest.java @@ -1,4 +1,4 @@ -package life.catalogue.importer; +package life.catalogue.interpreter; import life.catalogue.api.model.*; import life.catalogue.api.vocab.Issue; diff --git a/webservice/src/test/java/life/catalogue/matching/DockerConfigTest.java b/core/src/test/java/life/catalogue/matching/DockerConfigTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/matching/DockerConfigTest.java rename to core/src/test/java/life/catalogue/matching/DockerConfigTest.java diff --git a/webservice/src/test/java/life/catalogue/matching/MatchingJobTest.java b/core/src/test/java/life/catalogue/matching/MatchingJobTest.java similarity index 90% rename from webservice/src/test/java/life/catalogue/matching/MatchingJobTest.java rename to core/src/test/java/life/catalogue/matching/MatchingJobTest.java index 9c954a7b02..1644a50cfb 100644 --- a/webservice/src/test/java/life/catalogue/matching/MatchingJobTest.java +++ b/core/src/test/java/life/catalogue/matching/MatchingJobTest.java @@ -1,6 +1,6 @@ package life.catalogue.matching; -import life.catalogue.WsServerConfig; +import life.catalogue.TestConfigs; import life.catalogue.api.vocab.Users; import life.catalogue.common.io.TempFile; import life.catalogue.concurrent.BackgroundJob; @@ -31,12 +31,14 @@ public class MatchingJobTest extends EmailNotificationTemplateTest { public final TestDataRule dataRule = TestDataRule.apple(); UsageMatcherGlobal matcher; + TestConfigs cfg; @Before public void setUp() throws Exception { matcher = mock(UsageMatcherGlobal.class); int dkey = dataRule.testData.key; when(matcher.match(anyInt(), any(), any(), anyBoolean(), anyBoolean())).thenReturn(UsageMatch.empty(dkey)); + this.cfg = TestConfigs.build(); } @Override @@ -45,7 +47,7 @@ public BackgroundJob buildJob() { MatchingRequest req = new MatchingRequest(); req.setDatasetKey(dataRule.testData.key); req.setUpload(tmp.file); - return new MatchingJob(req, Users.TESTER, SqlSessionFactoryRule.getSqlSessionFactory(), matcher, new WsServerConfig()); + return new MatchingJob(req, Users.TESTER, SqlSessionFactoryRule.getSqlSessionFactory(), matcher, cfg.normalizer); } } @@ -54,7 +56,7 @@ public void testMatching() throws Exception { MatchingRequest req = new MatchingRequest(); req.setDatasetKey(dataRule.testData.key); req.setSourceDatasetKey(dataRule.testData.key); - var job = new MatchingJob(req, Users.TESTER, SqlSessionFactoryRule.getSqlSessionFactory(), matcher, new WsServerConfig()); + var job = new MatchingJob(req, Users.TESTER, SqlSessionFactoryRule.getSqlSessionFactory(), matcher, cfg.normalizer); job.run(); assertTrue(job.isFinished()); } diff --git a/webservice/src/test/java/life/catalogue/matching/MatchingRequestTest.java b/core/src/test/java/life/catalogue/matching/MatchingRequestTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/matching/MatchingRequestTest.java rename to core/src/test/java/life/catalogue/matching/MatchingRequestTest.java diff --git a/webservice/src/test/java/life/catalogue/matching/NidxExportJobIT.java b/core/src/test/java/life/catalogue/matching/NidxExportJobIT.java similarity index 87% rename from webservice/src/test/java/life/catalogue/matching/NidxExportJobIT.java rename to core/src/test/java/life/catalogue/matching/NidxExportJobIT.java index 58ec4ebfe3..983c32785e 100644 --- a/webservice/src/test/java/life/catalogue/matching/NidxExportJobIT.java +++ b/core/src/test/java/life/catalogue/matching/NidxExportJobIT.java @@ -1,6 +1,6 @@ package life.catalogue.matching; -import life.catalogue.WsServerConfig; +import life.catalogue.TestConfigs; import life.catalogue.api.vocab.Users; import life.catalogue.junit.PgSetupRule; import life.catalogue.junit.SqlSessionFactoryRule; @@ -22,7 +22,8 @@ public class NidxExportJobIT { @Test public void export() { - var job = new NidxExportJob(List.copyOf(dataRule.testData.datasetKeys), 1, Users.TESTER, SqlSessionFactoryRule.getSqlSessionFactory(), new WsServerConfig()); + var cfg = TestConfigs.build(); + var job = new NidxExportJob(List.copyOf(dataRule.testData.datasetKeys), 1, Users.TESTER, SqlSessionFactoryRule.getSqlSessionFactory(), cfg.normalizer); job.run(); } } \ No newline at end of file diff --git a/webservice/src/test/java/life/catalogue/matching/NidxExportJobTemplateTest.java b/core/src/test/java/life/catalogue/matching/NidxExportJobTemplateTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/matching/NidxExportJobTemplateTest.java rename to core/src/test/java/life/catalogue/matching/NidxExportJobTemplateTest.java diff --git a/webservice/src/test/java/life/catalogue/matching/NidxExportJobTest.java b/core/src/test/java/life/catalogue/matching/NidxExportJobTest.java similarity index 89% rename from webservice/src/test/java/life/catalogue/matching/NidxExportJobTest.java rename to core/src/test/java/life/catalogue/matching/NidxExportJobTest.java index edf86b6888..f14bfdeb5e 100644 --- a/webservice/src/test/java/life/catalogue/matching/NidxExportJobTest.java +++ b/core/src/test/java/life/catalogue/matching/NidxExportJobTest.java @@ -1,6 +1,6 @@ package life.catalogue.matching; -import life.catalogue.WsServerConfig; +import life.catalogue.TestConfigs; import life.catalogue.api.vocab.Users; import life.catalogue.concurrent.BackgroundJob; import life.catalogue.concurrent.EmailNotificationTemplateTest; @@ -23,6 +23,7 @@ public class NidxExportJobTest extends EmailNotificationTemplateTest { @Override public BackgroundJob buildJob() { - return new NidxExportJob(List.copyOf(dataRule.testData.datasetKeys), 1, Users.TESTER, SqlSessionFactoryRule.getSqlSessionFactory(), new WsServerConfig()); + var cfg = TestConfigs.build(); + return new NidxExportJob(List.copyOf(dataRule.testData.datasetKeys), 1, Users.TESTER, SqlSessionFactoryRule.getSqlSessionFactory(), cfg.normalizer); } } \ No newline at end of file diff --git a/webservice/src/test/java/life/catalogue/matching/RankComparatorTest.java b/core/src/test/java/life/catalogue/matching/RankComparatorTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/matching/RankComparatorTest.java rename to core/src/test/java/life/catalogue/matching/RankComparatorTest.java diff --git a/webservice/src/test/java/life/catalogue/matching/TaxonomicAlignJobTest.java b/core/src/test/java/life/catalogue/matching/TaxonomicAlignJobTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/matching/TaxonomicAlignJobTest.java rename to core/src/test/java/life/catalogue/matching/TaxonomicAlignJobTest.java diff --git a/webservice/src/test/java/life/catalogue/matching/UsageMatchTest.java b/core/src/test/java/life/catalogue/matching/UsageMatchTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/matching/UsageMatchTest.java rename to core/src/test/java/life/catalogue/matching/UsageMatchTest.java diff --git a/webservice/src/test/java/life/catalogue/matching/UsageMatchWithOriginalTest.java b/core/src/test/java/life/catalogue/matching/UsageMatchWithOriginalTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/matching/UsageMatchWithOriginalTest.java rename to core/src/test/java/life/catalogue/matching/UsageMatchWithOriginalTest.java diff --git a/webservice/src/test/java/life/catalogue/matching/UsageMatcherGlobalTest.java b/core/src/test/java/life/catalogue/matching/UsageMatcherGlobalTest.java similarity index 98% rename from webservice/src/test/java/life/catalogue/matching/UsageMatcherGlobalTest.java rename to core/src/test/java/life/catalogue/matching/UsageMatcherGlobalTest.java index 009da9c85a..ce2ed90c2c 100644 --- a/webservice/src/test/java/life/catalogue/matching/UsageMatcherGlobalTest.java +++ b/core/src/test/java/life/catalogue/matching/UsageMatcherGlobalTest.java @@ -1,17 +1,17 @@ package life.catalogue.matching; -import life.catalogue.TestDataGenerator; +import life.catalogue.TestDataRules; import life.catalogue.api.model.*; import life.catalogue.api.util.ObjectUtils; import life.catalogue.api.vocab.Datasets; import life.catalogue.api.vocab.MatchType; import life.catalogue.api.vocab.TaxonomicStatus; import life.catalogue.cache.UsageCache; +import life.catalogue.db.mapper.NameUsageMapper; import life.catalogue.junit.NameMatchingRule; import life.catalogue.junit.PgSetupRule; import life.catalogue.junit.SqlSessionFactoryRule; import life.catalogue.junit.TestDataRule; -import life.catalogue.db.mapper.NameUsageMapper; import life.catalogue.parser.NameParser; import org.gbif.nameparser.api.NomCode; @@ -33,7 +33,7 @@ public class UsageMatcherGlobalTest { public final static PgSetupRule pg = new PgSetupRule(); - public final static TestDataRule dataRule = TestDataGenerator.matching(); + public final static TestDataRule dataRule = TestDataRules.matching(); public final static NameMatchingRule matchingRule = new NameMatchingRule(); final int datasetKey = dataRule.testData.key; diff --git a/webservice/src/test/java/life/catalogue/release/AuthorlistGeneratorTest.java b/core/src/test/java/life/catalogue/release/AuthorlistGeneratorTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/release/AuthorlistGeneratorTest.java rename to core/src/test/java/life/catalogue/release/AuthorlistGeneratorTest.java diff --git a/webservice/src/test/java/life/catalogue/release/IdProviderIT.java b/core/src/test/java/life/catalogue/release/IdProviderIT.java similarity index 100% rename from webservice/src/test/java/life/catalogue/release/IdProviderIT.java rename to core/src/test/java/life/catalogue/release/IdProviderIT.java diff --git a/webservice/src/test/java/life/catalogue/release/IdProviderTest.java b/core/src/test/java/life/catalogue/release/IdProviderTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/release/IdProviderTest.java rename to core/src/test/java/life/catalogue/release/IdProviderTest.java diff --git a/webservice/src/test/java/life/catalogue/release/MetricsBuilderTest.java b/core/src/test/java/life/catalogue/release/MetricsBuilderTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/release/MetricsBuilderTest.java rename to core/src/test/java/life/catalogue/release/MetricsBuilderTest.java diff --git a/webservice/src/test/java/life/catalogue/release/ProjectBaseIT.java b/core/src/test/java/life/catalogue/release/ProjectBaseIT.java similarity index 90% rename from webservice/src/test/java/life/catalogue/release/ProjectBaseIT.java rename to core/src/test/java/life/catalogue/release/ProjectBaseIT.java index 046ecdd096..6a73c60968 100644 --- a/webservice/src/test/java/life/catalogue/release/ProjectBaseIT.java +++ b/core/src/test/java/life/catalogue/release/ProjectBaseIT.java @@ -1,26 +1,25 @@ package life.catalogue.release; -import life.catalogue.WsServerConfig; +import life.catalogue.TestConfigs; import life.catalogue.assembly.SyncFactoryRule; import life.catalogue.cache.LatestDatasetKeyCacheImpl; -import life.catalogue.dao.*; -import life.catalogue.junit.NameMatchingRule; -import life.catalogue.junit.PgSetupRule; -import life.catalogue.junit.SqlSessionFactoryRule; +import life.catalogue.dao.DatasetDao; +import life.catalogue.dao.DatasetExportDao; +import life.catalogue.dao.ReferenceDao; +import life.catalogue.dao.UserDao; import life.catalogue.doi.DoiUpdater; import life.catalogue.doi.service.DatasetConverter; import life.catalogue.doi.service.DoiService; import life.catalogue.es.NameUsageIndexService; import life.catalogue.exporter.ExportManager; import life.catalogue.img.ImageService; +import life.catalogue.junit.NameMatchingRule; +import life.catalogue.junit.PgSetupRule; +import life.catalogue.junit.SqlSessionFactoryRule; +import life.catalogue.junit.TreeRepoRule; import java.net.URI; -import jakarta.validation.Validation; -import jakarta.validation.Validator; - -import life.catalogue.junit.TreeRepoRule; - import org.junit.Before; import org.junit.ClassRule; import org.junit.rules.RuleChain; @@ -28,6 +27,9 @@ import com.google.common.eventbus.EventBus; +import jakarta.validation.Validation; +import jakarta.validation.Validator; + import static org.mockito.Mockito.mock; public abstract class ProjectBaseIT { @@ -52,7 +54,7 @@ public abstract class ProjectBaseIT { @Before public void init() throws Exception { - WsServerConfig cfg = new WsServerConfig(); + TestConfigs cfg = TestConfigs.build(); cfg.apiURI = null; cfg.clbURI = URI.create("https://www.dev.checklistbank.org"); EventBus bus = mock(EventBus.class); @@ -70,7 +72,8 @@ public void init() throws Exception { ); projectCopyFactory = new ProjectCopyFactory(null, syncFactoryRule.getMatcher(), SyncFactoryRule.getFactory(), syncFactoryRule.getDiDao(), dDao, syncFactoryRule.getSiDao(), rdao, syncFactoryRule.getnDao(), syncFactoryRule.getSdao(), - exm, NameUsageIndexService.passThru(), ImageService.passThru(), doiService, doiUpdater, SqlSessionFactoryRule.getSqlSessionFactory(), validator, cfg + exm, NameUsageIndexService.passThru(), ImageService.passThru(), doiService, doiUpdater, SqlSessionFactoryRule.getSqlSessionFactory(), validator, + cfg.release, cfg.doi, cfg.apiURI, cfg.clbURI ); } diff --git a/webservice/src/test/java/life/catalogue/release/ProjectDuplicationEmptyIT.java b/core/src/test/java/life/catalogue/release/ProjectDuplicationEmptyIT.java similarity index 100% rename from webservice/src/test/java/life/catalogue/release/ProjectDuplicationEmptyIT.java rename to core/src/test/java/life/catalogue/release/ProjectDuplicationEmptyIT.java diff --git a/webservice/src/test/java/life/catalogue/release/ProjectReleaseIT.java b/core/src/test/java/life/catalogue/release/ProjectReleaseIT.java similarity index 96% rename from webservice/src/test/java/life/catalogue/release/ProjectReleaseIT.java rename to core/src/test/java/life/catalogue/release/ProjectReleaseIT.java index 7227b75212..1f4d5a6b4e 100644 --- a/webservice/src/test/java/life/catalogue/release/ProjectReleaseIT.java +++ b/core/src/test/java/life/catalogue/release/ProjectReleaseIT.java @@ -2,16 +2,17 @@ import life.catalogue.api.model.*; import life.catalogue.api.vocab.ImportState; -import life.catalogue.api.vocab.Setting; import life.catalogue.api.vocab.Users; import life.catalogue.common.io.Resources; import life.catalogue.concurrent.EmailNotificationTemplateTest; import life.catalogue.config.ReleaseConfig; import life.catalogue.dao.DatasetImportDao; -import life.catalogue.junit.SqlSessionFactoryRule; -import life.catalogue.junit.TestDataRule; import life.catalogue.db.mapper.DatasetMapper; import life.catalogue.db.mapper.NameUsageMapper; +import life.catalogue.junit.SqlSessionFactoryRule; +import life.catalogue.junit.TestDataRule; +import life.catalogue.printer.PrinterFactory; +import life.catalogue.printer.TextTreePrinter; import java.io.File; import java.io.IOException; @@ -20,11 +21,7 @@ import java.sql.Connection; import java.util.List; -import life.catalogue.printer.PrinterFactory; -import life.catalogue.printer.TextTreePrinter; - import org.apache.ibatis.session.SqlSession; - import org.junit.Rule; import org.junit.Test; import org.junit.rules.RuleChain; @@ -35,7 +32,6 @@ import static org.junit.Assert.*; public class ProjectReleaseIT extends ProjectBaseIT { - private static final Logger LOG = LoggerFactory.getLogger(ProjectReleaseIT.class); @Rule public final TestRule chain = RuleChain @@ -70,7 +66,7 @@ public void releaseMetadata() throws Exception { } ProjectRelease pr = buildRelease(); - pr.rCfg.metadata.alias = "CoL{created,yy.M}"; + pr.prCfg.metadata.alias = "CoL{created,yy.M}"; pr.initJob(); assertEquals("CoL20.10", pr.newDataset.getAlias()); assertEquals("Catalogue of Life", pr.newDataset.getTitle()); diff --git a/webservice/src/test/java/life/catalogue/release/ReleasedIdsTest.java b/core/src/test/java/life/catalogue/release/ReleasedIdsTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/release/ReleasedIdsTest.java rename to core/src/test/java/life/catalogue/release/ReleasedIdsTest.java diff --git a/webservice/src/test/java/life/catalogue/release/ScoreMatrixTest.java b/core/src/test/java/life/catalogue/release/ScoreMatrixTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/release/ScoreMatrixTest.java rename to core/src/test/java/life/catalogue/release/ScoreMatrixTest.java diff --git a/webservice/src/test/java/life/catalogue/release/TreeCleanerAndValidatorIT.java b/core/src/test/java/life/catalogue/release/TreeCleanerAndValidatorIT.java similarity index 94% rename from webservice/src/test/java/life/catalogue/release/TreeCleanerAndValidatorIT.java rename to core/src/test/java/life/catalogue/release/TreeCleanerAndValidatorIT.java index 603798ad1f..9b70277a03 100644 --- a/webservice/src/test/java/life/catalogue/release/TreeCleanerAndValidatorIT.java +++ b/core/src/test/java/life/catalogue/release/TreeCleanerAndValidatorIT.java @@ -1,15 +1,11 @@ package life.catalogue.release; import life.catalogue.api.model.DSID; -import life.catalogue.api.model.NameUsageBase; import life.catalogue.api.model.TreeTraversalParameter; -import life.catalogue.api.vocab.DataFormat; import life.catalogue.api.vocab.Issue; import life.catalogue.assembly.SectorSyncIT; import life.catalogue.db.PgUtils; import life.catalogue.db.mapper.NameUsageMapper; -import life.catalogue.db.mapper.TaxonMapper; -import life.catalogue.db.mapper.VerbatimRecordMapper; import life.catalogue.db.mapper.VerbatimSourceMapper; import life.catalogue.junit.PgSetupRule; import life.catalogue.junit.SqlSessionFactoryRule; @@ -20,7 +16,6 @@ import org.gbif.nameparser.api.Rank; -import org.junit.Assert; import org.junit.ClassRule; import org.junit.Test; import org.junit.rules.RuleChain; diff --git a/webservice/src/test/java/life/catalogue/release/XReleaseBasicIT.java b/core/src/test/java/life/catalogue/release/XReleaseBasicIT.java similarity index 94% rename from webservice/src/test/java/life/catalogue/release/XReleaseBasicIT.java rename to core/src/test/java/life/catalogue/release/XReleaseBasicIT.java index 3d1c062c5a..034eac7c34 100644 --- a/webservice/src/test/java/life/catalogue/release/XReleaseBasicIT.java +++ b/core/src/test/java/life/catalogue/release/XReleaseBasicIT.java @@ -1,6 +1,6 @@ package life.catalogue.release; -import life.catalogue.WsServerConfig; +import life.catalogue.TestConfigs; import life.catalogue.api.model.DSID; import life.catalogue.api.model.Page; import life.catalogue.api.vocab.*; @@ -9,10 +9,6 @@ import life.catalogue.cache.LatestDatasetKeyCacheImpl; import life.catalogue.concurrent.EmailNotificationTemplateTest; import life.catalogue.dao.*; -import life.catalogue.junit.NameMatchingRule; -import life.catalogue.junit.PgSetupRule; -import life.catalogue.junit.SqlSessionFactoryRule; -import life.catalogue.junit.TestDataRule; import life.catalogue.db.mapper.NameUsageMapper; import life.catalogue.db.mapper.VerbatimSourceMapper; import life.catalogue.doi.DoiUpdater; @@ -21,25 +17,24 @@ import life.catalogue.es.NameUsageIndexService; import life.catalogue.exporter.ExportManager; import life.catalogue.img.ImageService; +import life.catalogue.junit.*; + +import org.gbif.nameparser.api.NameType; import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.util.Map; -import jakarta.validation.Validation; - -import life.catalogue.junit.TreeRepoRule; import org.apache.ibatis.session.SqlSession; - -import org.gbif.nameparser.api.NameType; - import org.junit.*; import org.junit.rules.RuleChain; import org.junit.rules.TestRule; import com.google.common.eventbus.EventBus; +import jakarta.validation.Validation; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; @@ -61,7 +56,7 @@ public class XReleaseBasicIT { final NameMatchingRule matchingRule = new NameMatchingRule(); final SyncFactoryRule syncFactoryRule = new SyncFactoryRule(); ProjectCopyFactory projectCopyFactory; - private WsServerConfig cfg; + private TestConfigs cfg; @Rule public final TestRule chain = RuleChain @@ -72,7 +67,7 @@ public class XReleaseBasicIT { @Before public void init() throws IOException { - cfg = new WsServerConfig(); + cfg = TestConfigs.build(); cfg.apiURI = null; cfg.clbURI = URI.create("https://www.dev.checklistbank.org"); @@ -96,7 +91,8 @@ public void init() throws IOException { projectCopyFactory = new ProjectCopyFactory(null, syncFactoryRule.getMatcher(), SyncFactoryRule.getFactory(), syncFactoryRule.getDiDao(), dDao, syncFactoryRule.getSiDao(), rdao, syncFactoryRule.getnDao(), syncFactoryRule.getSdao(), - exm, nuIdxService, imgService, doiService, doiUpdater, factory, validator, cfg + exm, nuIdxService, imgService, doiService, doiUpdater, factory, validator, + cfg.release, cfg.doi, cfg.apiURI, cfg.clbURI ); } diff --git a/webservice/src/test/java/life/catalogue/release/XReleaseConfigTest.java b/core/src/test/java/life/catalogue/release/XReleaseConfigTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/release/XReleaseConfigTest.java rename to core/src/test/java/life/catalogue/release/XReleaseConfigTest.java diff --git a/webservice/src/test/java/life/catalogue/release/XReleaseIT.java b/core/src/test/java/life/catalogue/release/XReleaseIT.java similarity index 91% rename from webservice/src/test/java/life/catalogue/release/XReleaseIT.java rename to core/src/test/java/life/catalogue/release/XReleaseIT.java index f54662d4b5..1ddb6750fc 100644 --- a/webservice/src/test/java/life/catalogue/release/XReleaseIT.java +++ b/core/src/test/java/life/catalogue/release/XReleaseIT.java @@ -1,43 +1,32 @@ package life.catalogue.release; -import life.catalogue.WsServerConfig; +import life.catalogue.TestConfigs; import life.catalogue.api.model.DSID; -import life.catalogue.api.model.Sector; -import life.catalogue.api.model.SimpleName; -import life.catalogue.api.model.SimpleNameClassified; import life.catalogue.api.vocab.*; import life.catalogue.assembly.SectorSyncMergeIT; import life.catalogue.assembly.SectorSyncTestBase; import life.catalogue.assembly.SyncFactory; import life.catalogue.cache.UsageCache; import life.catalogue.common.io.DownloadUtil; -import life.catalogue.common.util.YamlUtils; import life.catalogue.dao.*; -import life.catalogue.junit.NameMatchingRule; -import life.catalogue.junit.PgSetupRule; -import life.catalogue.junit.SqlSessionFactoryRule; -import life.catalogue.junit.TestDataRule; import life.catalogue.db.mapper.DatasetMapper; import life.catalogue.db.mapper.NameUsageMapper; -import life.catalogue.db.mapper.SectorMapper; import life.catalogue.db.mapper.VerbatimSourceMapper; import life.catalogue.doi.DoiUpdater; import life.catalogue.doi.service.DoiService; import life.catalogue.es.NameUsageIndexService; import life.catalogue.exporter.ExportManager; import life.catalogue.img.ImageService; -import life.catalogue.junit.TreeRepoRule; -import life.catalogue.matching.nidx.NameIndexFactory; +import life.catalogue.junit.*; import life.catalogue.matching.UsageMatcherGlobal; -import life.catalogue.junit.TxtTreeDataRule; - -import org.apache.ibatis.io.Resources; +import life.catalogue.matching.nidx.NameIndexFactory; import org.gbif.nameparser.api.NameType; import org.gbif.nameparser.api.Rank; -import java.io.IOException; -import java.util.*; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; @@ -153,7 +142,7 @@ public void init () throws Throwable { tdao.setSectorDao(sdao); var matcher = new UsageMatcherGlobal(NameMatchingRule.getIndex(), UsageCache.hashMap(), SqlSessionFactoryRule.getSqlSessionFactory()); var syncFactory = new SyncFactory(SqlSessionFactoryRule.getSqlSessionFactory(), NameMatchingRule.getIndex(), matcher, sdao, siDao, eDao, NameUsageIndexService.passThru(), new EventBus("test-bus")); - var cfg = new WsServerConfig(); + var cfg = TestConfigs.build(); hc = HttpClientBuilder.create().build(); var du = new DownloadUtil(hc); @@ -164,7 +153,8 @@ public void init () throws Throwable { var doiUpdater = mock(DoiUpdater.class); projectCopyFactory = new ProjectCopyFactory(hc, matcher, syncFactory, diDao, dDao, siDao, rDao, nDao, sdao, exportManager, NameUsageIndexService.passThru(), ImageService.passThru(), doiService, doiUpdater, - SqlSessionFactoryRule.getSqlSessionFactory(), validator, cfg + SqlSessionFactoryRule.getSqlSessionFactory(), validator, + cfg.release, cfg.doi, cfg.apiURI, cfg.clbURI ); // set project default settings diff --git a/webservice/src/test/resources/assembly-trees/cat-merge1.txt b/core/src/test/resources/assembly-trees/cat-merge1.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat-merge1.txt rename to core/src/test/resources/assembly-trees/cat-merge1.txt diff --git a/webservice/src/test/resources/assembly-trees/cat0.txt b/core/src/test/resources/assembly-trees/cat0.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat0.txt rename to core/src/test/resources/assembly-trees/cat0.txt diff --git a/webservice/src/test/resources/assembly-trees/cat0_2.txt b/core/src/test/resources/assembly-trees/cat0_2.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat0_2.txt rename to core/src/test/resources/assembly-trees/cat0_2.txt diff --git a/webservice/src/test/resources/assembly-trees/cat1.txt b/core/src/test/resources/assembly-trees/cat1.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat1.txt rename to core/src/test/resources/assembly-trees/cat1.txt diff --git a/webservice/src/test/resources/assembly-trees/cat14.txt b/core/src/test/resources/assembly-trees/cat14.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat14.txt rename to core/src/test/resources/assembly-trees/cat14.txt diff --git a/webservice/src/test/resources/assembly-trees/cat14b.txt b/core/src/test/resources/assembly-trees/cat14b.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat14b.txt rename to core/src/test/resources/assembly-trees/cat14b.txt diff --git a/webservice/src/test/resources/assembly-trees/cat1_5_6.txt b/core/src/test/resources/assembly-trees/cat1_5_6.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat1_5_6.txt rename to core/src/test/resources/assembly-trees/cat1_5_6.txt diff --git a/webservice/src/test/resources/assembly-trees/cat22.txt b/core/src/test/resources/assembly-trees/cat22.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat22.txt rename to core/src/test/resources/assembly-trees/cat22.txt diff --git a/webservice/src/test/resources/assembly-trees/cat24.txt b/core/src/test/resources/assembly-trees/cat24.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat24.txt rename to core/src/test/resources/assembly-trees/cat24.txt diff --git a/webservice/src/test/resources/assembly-trees/cat34-35.txt b/core/src/test/resources/assembly-trees/cat34-35.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat34-35.txt rename to core/src/test/resources/assembly-trees/cat34-35.txt diff --git a/webservice/src/test/resources/assembly-trees/cat34.txt b/core/src/test/resources/assembly-trees/cat34.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat34.txt rename to core/src/test/resources/assembly-trees/cat34.txt diff --git a/webservice/src/test/resources/assembly-trees/cat38.txt b/core/src/test/resources/assembly-trees/cat38.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat38.txt rename to core/src/test/resources/assembly-trees/cat38.txt diff --git a/webservice/src/test/resources/assembly-trees/cat4.txt b/core/src/test/resources/assembly-trees/cat4.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat4.txt rename to core/src/test/resources/assembly-trees/cat4.txt diff --git a/webservice/src/test/resources/assembly-trees/cat5_6_11.txt b/core/src/test/resources/assembly-trees/cat5_6_11.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat5_6_11.txt rename to core/src/test/resources/assembly-trees/cat5_6_11.txt diff --git a/webservice/src/test/resources/assembly-trees/cat5_6_11_delete_5.txt b/core/src/test/resources/assembly-trees/cat5_6_11_delete_5.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat5_6_11_delete_5.txt rename to core/src/test/resources/assembly-trees/cat5_6_11_delete_5.txt diff --git a/webservice/src/test/resources/assembly-trees/cat5_6_11_delete_5_6.txt b/core/src/test/resources/assembly-trees/cat5_6_11_delete_5_6.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat5_6_11_delete_5_6.txt rename to core/src/test/resources/assembly-trees/cat5_6_11_delete_5_6.txt diff --git a/webservice/src/test/resources/assembly-trees/cat5_6_11_delete_full_5.txt b/core/src/test/resources/assembly-trees/cat5_6_11_delete_full_5.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat5_6_11_delete_full_5.txt rename to core/src/test/resources/assembly-trees/cat5_6_11_delete_full_5.txt diff --git a/webservice/src/test/resources/assembly-trees/cat5_6_11_delete_full_5_6.txt b/core/src/test/resources/assembly-trees/cat5_6_11_delete_full_5_6.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat5_6_11_delete_full_5_6.txt rename to core/src/test/resources/assembly-trees/cat5_6_11_delete_full_5_6.txt diff --git a/webservice/src/test/resources/assembly-trees/cat6_11.txt b/core/src/test/resources/assembly-trees/cat6_11.txt similarity index 100% rename from webservice/src/test/resources/assembly-trees/cat6_11.txt rename to core/src/test/resources/assembly-trees/cat6_11.txt diff --git a/webservice/src/test/resources/assembly-trees/release-expected.tree b/core/src/test/resources/assembly-trees/release-expected.tree similarity index 100% rename from webservice/src/test/resources/assembly-trees/release-expected.tree rename to core/src/test/resources/assembly-trees/release-expected.tree diff --git a/webservice/src/test/resources/assembly-trees/xrelease-expected.tree b/core/src/test/resources/assembly-trees/xrelease-expected.tree similarity index 100% rename from webservice/src/test/resources/assembly-trees/xrelease-expected.tree rename to core/src/test/resources/assembly-trees/xrelease-expected.tree diff --git a/webservice/src/test/resources/grouping-trees/hg-atc.txt b/core/src/test/resources/grouping-trees/hg-atc.txt similarity index 100% rename from webservice/src/test/resources/grouping-trees/hg-atc.txt rename to core/src/test/resources/grouping-trees/hg-atc.txt diff --git a/webservice/src/test/resources/grouping-trees/hg-atv.txt b/core/src/test/resources/grouping-trees/hg-atv.txt similarity index 100% rename from webservice/src/test/resources/grouping-trees/hg-atv.txt rename to core/src/test/resources/grouping-trees/hg-atv.txt diff --git a/webservice/src/test/resources/grouping-trees/hg-dfc.txt b/core/src/test/resources/grouping-trees/hg-dfc.txt similarity index 100% rename from webservice/src/test/resources/grouping-trees/hg-dfc.txt rename to core/src/test/resources/grouping-trees/hg-dfc.txt diff --git a/webservice/src/test/resources/grouping-trees/hg-mfo.txt b/core/src/test/resources/grouping-trees/hg-mfo.txt similarity index 100% rename from webservice/src/test/resources/grouping-trees/hg-mfo.txt rename to core/src/test/resources/grouping-trees/hg-mfo.txt diff --git a/webservice/src/test/resources/grouping-trees/hg-pott.txt b/core/src/test/resources/grouping-trees/hg-pott.txt similarity index 100% rename from webservice/src/test/resources/grouping-trees/hg-pott.txt rename to core/src/test/resources/grouping-trees/hg-pott.txt diff --git a/webservice/src/test/resources/grouping-trees/hg1.txt b/core/src/test/resources/grouping-trees/hg1.txt similarity index 100% rename from webservice/src/test/resources/grouping-trees/hg1.txt rename to core/src/test/resources/grouping-trees/hg1.txt diff --git a/webservice/src/test/resources/legacy-index/nub1.json b/core/src/test/resources/legacy-index/nub1.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub1.json rename to core/src/test/resources/legacy-index/nub1.json diff --git a/webservice/src/test/resources/legacy-index/nub10.json b/core/src/test/resources/legacy-index/nub10.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub10.json rename to core/src/test/resources/legacy-index/nub10.json diff --git a/webservice/src/test/resources/legacy-index/nub100.json b/core/src/test/resources/legacy-index/nub100.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub100.json rename to core/src/test/resources/legacy-index/nub100.json diff --git a/webservice/src/test/resources/legacy-index/nub101.json b/core/src/test/resources/legacy-index/nub101.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub101.json rename to core/src/test/resources/legacy-index/nub101.json diff --git a/webservice/src/test/resources/legacy-index/nub102.json b/core/src/test/resources/legacy-index/nub102.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub102.json rename to core/src/test/resources/legacy-index/nub102.json diff --git a/webservice/src/test/resources/legacy-index/nub103.json b/core/src/test/resources/legacy-index/nub103.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub103.json rename to core/src/test/resources/legacy-index/nub103.json diff --git a/webservice/src/test/resources/legacy-index/nub104.json b/core/src/test/resources/legacy-index/nub104.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub104.json rename to core/src/test/resources/legacy-index/nub104.json diff --git a/webservice/src/test/resources/legacy-index/nub105.json b/core/src/test/resources/legacy-index/nub105.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub105.json rename to core/src/test/resources/legacy-index/nub105.json diff --git a/webservice/src/test/resources/legacy-index/nub106.json b/core/src/test/resources/legacy-index/nub106.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub106.json rename to core/src/test/resources/legacy-index/nub106.json diff --git a/webservice/src/test/resources/legacy-index/nub107.json b/core/src/test/resources/legacy-index/nub107.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub107.json rename to core/src/test/resources/legacy-index/nub107.json diff --git a/webservice/src/test/resources/legacy-index/nub108.json b/core/src/test/resources/legacy-index/nub108.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub108.json rename to core/src/test/resources/legacy-index/nub108.json diff --git a/webservice/src/test/resources/legacy-index/nub109.json b/core/src/test/resources/legacy-index/nub109.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub109.json rename to core/src/test/resources/legacy-index/nub109.json diff --git a/webservice/src/test/resources/legacy-index/nub11.json b/core/src/test/resources/legacy-index/nub11.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub11.json rename to core/src/test/resources/legacy-index/nub11.json diff --git a/webservice/src/test/resources/legacy-index/nub110.json b/core/src/test/resources/legacy-index/nub110.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub110.json rename to core/src/test/resources/legacy-index/nub110.json diff --git a/webservice/src/test/resources/legacy-index/nub111.json b/core/src/test/resources/legacy-index/nub111.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub111.json rename to core/src/test/resources/legacy-index/nub111.json diff --git a/webservice/src/test/resources/legacy-index/nub112.json b/core/src/test/resources/legacy-index/nub112.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub112.json rename to core/src/test/resources/legacy-index/nub112.json diff --git a/webservice/src/test/resources/legacy-index/nub113.json b/core/src/test/resources/legacy-index/nub113.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub113.json rename to core/src/test/resources/legacy-index/nub113.json diff --git a/webservice/src/test/resources/legacy-index/nub114.json b/core/src/test/resources/legacy-index/nub114.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub114.json rename to core/src/test/resources/legacy-index/nub114.json diff --git a/webservice/src/test/resources/legacy-index/nub115.json b/core/src/test/resources/legacy-index/nub115.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub115.json rename to core/src/test/resources/legacy-index/nub115.json diff --git a/webservice/src/test/resources/legacy-index/nub116.json b/core/src/test/resources/legacy-index/nub116.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub116.json rename to core/src/test/resources/legacy-index/nub116.json diff --git a/webservice/src/test/resources/legacy-index/nub117.json b/core/src/test/resources/legacy-index/nub117.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub117.json rename to core/src/test/resources/legacy-index/nub117.json diff --git a/webservice/src/test/resources/legacy-index/nub118.json b/core/src/test/resources/legacy-index/nub118.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub118.json rename to core/src/test/resources/legacy-index/nub118.json diff --git a/webservice/src/test/resources/legacy-index/nub119.json b/core/src/test/resources/legacy-index/nub119.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub119.json rename to core/src/test/resources/legacy-index/nub119.json diff --git a/webservice/src/test/resources/legacy-index/nub12.json b/core/src/test/resources/legacy-index/nub12.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub12.json rename to core/src/test/resources/legacy-index/nub12.json diff --git a/webservice/src/test/resources/legacy-index/nub120.json b/core/src/test/resources/legacy-index/nub120.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub120.json rename to core/src/test/resources/legacy-index/nub120.json diff --git a/webservice/src/test/resources/legacy-index/nub121.json b/core/src/test/resources/legacy-index/nub121.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub121.json rename to core/src/test/resources/legacy-index/nub121.json diff --git a/webservice/src/test/resources/legacy-index/nub122.json b/core/src/test/resources/legacy-index/nub122.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub122.json rename to core/src/test/resources/legacy-index/nub122.json diff --git a/webservice/src/test/resources/legacy-index/nub123.json b/core/src/test/resources/legacy-index/nub123.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub123.json rename to core/src/test/resources/legacy-index/nub123.json diff --git a/webservice/src/test/resources/legacy-index/nub124.json b/core/src/test/resources/legacy-index/nub124.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub124.json rename to core/src/test/resources/legacy-index/nub124.json diff --git a/webservice/src/test/resources/legacy-index/nub125.json b/core/src/test/resources/legacy-index/nub125.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub125.json rename to core/src/test/resources/legacy-index/nub125.json diff --git a/webservice/src/test/resources/legacy-index/nub126.json b/core/src/test/resources/legacy-index/nub126.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub126.json rename to core/src/test/resources/legacy-index/nub126.json diff --git a/webservice/src/test/resources/legacy-index/nub127.json b/core/src/test/resources/legacy-index/nub127.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub127.json rename to core/src/test/resources/legacy-index/nub127.json diff --git a/webservice/src/test/resources/legacy-index/nub128.json b/core/src/test/resources/legacy-index/nub128.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub128.json rename to core/src/test/resources/legacy-index/nub128.json diff --git a/webservice/src/test/resources/legacy-index/nub129.json b/core/src/test/resources/legacy-index/nub129.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub129.json rename to core/src/test/resources/legacy-index/nub129.json diff --git a/webservice/src/test/resources/legacy-index/nub13.json b/core/src/test/resources/legacy-index/nub13.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub13.json rename to core/src/test/resources/legacy-index/nub13.json diff --git a/webservice/src/test/resources/legacy-index/nub130.json b/core/src/test/resources/legacy-index/nub130.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub130.json rename to core/src/test/resources/legacy-index/nub130.json diff --git a/webservice/src/test/resources/legacy-index/nub131.json b/core/src/test/resources/legacy-index/nub131.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub131.json rename to core/src/test/resources/legacy-index/nub131.json diff --git a/webservice/src/test/resources/legacy-index/nub132.json b/core/src/test/resources/legacy-index/nub132.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub132.json rename to core/src/test/resources/legacy-index/nub132.json diff --git a/webservice/src/test/resources/legacy-index/nub133.json b/core/src/test/resources/legacy-index/nub133.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub133.json rename to core/src/test/resources/legacy-index/nub133.json diff --git a/webservice/src/test/resources/legacy-index/nub134.json b/core/src/test/resources/legacy-index/nub134.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub134.json rename to core/src/test/resources/legacy-index/nub134.json diff --git a/webservice/src/test/resources/legacy-index/nub135.json b/core/src/test/resources/legacy-index/nub135.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub135.json rename to core/src/test/resources/legacy-index/nub135.json diff --git a/webservice/src/test/resources/legacy-index/nub136.json b/core/src/test/resources/legacy-index/nub136.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub136.json rename to core/src/test/resources/legacy-index/nub136.json diff --git a/webservice/src/test/resources/legacy-index/nub137.json b/core/src/test/resources/legacy-index/nub137.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub137.json rename to core/src/test/resources/legacy-index/nub137.json diff --git a/webservice/src/test/resources/legacy-index/nub138.json b/core/src/test/resources/legacy-index/nub138.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub138.json rename to core/src/test/resources/legacy-index/nub138.json diff --git a/webservice/src/test/resources/legacy-index/nub139.json b/core/src/test/resources/legacy-index/nub139.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub139.json rename to core/src/test/resources/legacy-index/nub139.json diff --git a/webservice/src/test/resources/legacy-index/nub14.json b/core/src/test/resources/legacy-index/nub14.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub14.json rename to core/src/test/resources/legacy-index/nub14.json diff --git a/webservice/src/test/resources/legacy-index/nub140.json b/core/src/test/resources/legacy-index/nub140.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub140.json rename to core/src/test/resources/legacy-index/nub140.json diff --git a/webservice/src/test/resources/legacy-index/nub141.json b/core/src/test/resources/legacy-index/nub141.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub141.json rename to core/src/test/resources/legacy-index/nub141.json diff --git a/webservice/src/test/resources/legacy-index/nub142.json b/core/src/test/resources/legacy-index/nub142.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub142.json rename to core/src/test/resources/legacy-index/nub142.json diff --git a/webservice/src/test/resources/legacy-index/nub143.json b/core/src/test/resources/legacy-index/nub143.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub143.json rename to core/src/test/resources/legacy-index/nub143.json diff --git a/webservice/src/test/resources/legacy-index/nub144.json b/core/src/test/resources/legacy-index/nub144.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub144.json rename to core/src/test/resources/legacy-index/nub144.json diff --git a/webservice/src/test/resources/legacy-index/nub145.json b/core/src/test/resources/legacy-index/nub145.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub145.json rename to core/src/test/resources/legacy-index/nub145.json diff --git a/webservice/src/test/resources/legacy-index/nub146.json b/core/src/test/resources/legacy-index/nub146.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub146.json rename to core/src/test/resources/legacy-index/nub146.json diff --git a/webservice/src/test/resources/legacy-index/nub147.json b/core/src/test/resources/legacy-index/nub147.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub147.json rename to core/src/test/resources/legacy-index/nub147.json diff --git a/webservice/src/test/resources/legacy-index/nub148.json b/core/src/test/resources/legacy-index/nub148.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub148.json rename to core/src/test/resources/legacy-index/nub148.json diff --git a/webservice/src/test/resources/legacy-index/nub149.json b/core/src/test/resources/legacy-index/nub149.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub149.json rename to core/src/test/resources/legacy-index/nub149.json diff --git a/webservice/src/test/resources/legacy-index/nub15.json b/core/src/test/resources/legacy-index/nub15.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub15.json rename to core/src/test/resources/legacy-index/nub15.json diff --git a/webservice/src/test/resources/legacy-index/nub150.json b/core/src/test/resources/legacy-index/nub150.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub150.json rename to core/src/test/resources/legacy-index/nub150.json diff --git a/webservice/src/test/resources/legacy-index/nub151.json b/core/src/test/resources/legacy-index/nub151.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub151.json rename to core/src/test/resources/legacy-index/nub151.json diff --git a/webservice/src/test/resources/legacy-index/nub152.json b/core/src/test/resources/legacy-index/nub152.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub152.json rename to core/src/test/resources/legacy-index/nub152.json diff --git a/webservice/src/test/resources/legacy-index/nub153.json b/core/src/test/resources/legacy-index/nub153.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub153.json rename to core/src/test/resources/legacy-index/nub153.json diff --git a/webservice/src/test/resources/legacy-index/nub154.json b/core/src/test/resources/legacy-index/nub154.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub154.json rename to core/src/test/resources/legacy-index/nub154.json diff --git a/webservice/src/test/resources/legacy-index/nub155.json b/core/src/test/resources/legacy-index/nub155.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub155.json rename to core/src/test/resources/legacy-index/nub155.json diff --git a/webservice/src/test/resources/legacy-index/nub156.json b/core/src/test/resources/legacy-index/nub156.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub156.json rename to core/src/test/resources/legacy-index/nub156.json diff --git a/webservice/src/test/resources/legacy-index/nub157.json b/core/src/test/resources/legacy-index/nub157.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub157.json rename to core/src/test/resources/legacy-index/nub157.json diff --git a/webservice/src/test/resources/legacy-index/nub158.json b/core/src/test/resources/legacy-index/nub158.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub158.json rename to core/src/test/resources/legacy-index/nub158.json diff --git a/webservice/src/test/resources/legacy-index/nub159.json b/core/src/test/resources/legacy-index/nub159.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub159.json rename to core/src/test/resources/legacy-index/nub159.json diff --git a/webservice/src/test/resources/legacy-index/nub16.json b/core/src/test/resources/legacy-index/nub16.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub16.json rename to core/src/test/resources/legacy-index/nub16.json diff --git a/webservice/src/test/resources/legacy-index/nub160.json b/core/src/test/resources/legacy-index/nub160.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub160.json rename to core/src/test/resources/legacy-index/nub160.json diff --git a/webservice/src/test/resources/legacy-index/nub161.json b/core/src/test/resources/legacy-index/nub161.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub161.json rename to core/src/test/resources/legacy-index/nub161.json diff --git a/webservice/src/test/resources/legacy-index/nub162.json b/core/src/test/resources/legacy-index/nub162.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub162.json rename to core/src/test/resources/legacy-index/nub162.json diff --git a/webservice/src/test/resources/legacy-index/nub163.json b/core/src/test/resources/legacy-index/nub163.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub163.json rename to core/src/test/resources/legacy-index/nub163.json diff --git a/webservice/src/test/resources/legacy-index/nub164.json b/core/src/test/resources/legacy-index/nub164.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub164.json rename to core/src/test/resources/legacy-index/nub164.json diff --git a/webservice/src/test/resources/legacy-index/nub165.json b/core/src/test/resources/legacy-index/nub165.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub165.json rename to core/src/test/resources/legacy-index/nub165.json diff --git a/webservice/src/test/resources/legacy-index/nub166.json b/core/src/test/resources/legacy-index/nub166.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub166.json rename to core/src/test/resources/legacy-index/nub166.json diff --git a/webservice/src/test/resources/legacy-index/nub167.json b/core/src/test/resources/legacy-index/nub167.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub167.json rename to core/src/test/resources/legacy-index/nub167.json diff --git a/webservice/src/test/resources/legacy-index/nub168.json b/core/src/test/resources/legacy-index/nub168.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub168.json rename to core/src/test/resources/legacy-index/nub168.json diff --git a/webservice/src/test/resources/legacy-index/nub169.json b/core/src/test/resources/legacy-index/nub169.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub169.json rename to core/src/test/resources/legacy-index/nub169.json diff --git a/webservice/src/test/resources/legacy-index/nub17.json b/core/src/test/resources/legacy-index/nub17.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub17.json rename to core/src/test/resources/legacy-index/nub17.json diff --git a/webservice/src/test/resources/legacy-index/nub170.json b/core/src/test/resources/legacy-index/nub170.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub170.json rename to core/src/test/resources/legacy-index/nub170.json diff --git a/webservice/src/test/resources/legacy-index/nub171.json b/core/src/test/resources/legacy-index/nub171.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub171.json rename to core/src/test/resources/legacy-index/nub171.json diff --git a/webservice/src/test/resources/legacy-index/nub172.json b/core/src/test/resources/legacy-index/nub172.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub172.json rename to core/src/test/resources/legacy-index/nub172.json diff --git a/webservice/src/test/resources/legacy-index/nub173.json b/core/src/test/resources/legacy-index/nub173.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub173.json rename to core/src/test/resources/legacy-index/nub173.json diff --git a/webservice/src/test/resources/legacy-index/nub174.json b/core/src/test/resources/legacy-index/nub174.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub174.json rename to core/src/test/resources/legacy-index/nub174.json diff --git a/webservice/src/test/resources/legacy-index/nub175.json b/core/src/test/resources/legacy-index/nub175.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub175.json rename to core/src/test/resources/legacy-index/nub175.json diff --git a/webservice/src/test/resources/legacy-index/nub176.json b/core/src/test/resources/legacy-index/nub176.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub176.json rename to core/src/test/resources/legacy-index/nub176.json diff --git a/webservice/src/test/resources/legacy-index/nub177.json b/core/src/test/resources/legacy-index/nub177.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub177.json rename to core/src/test/resources/legacy-index/nub177.json diff --git a/webservice/src/test/resources/legacy-index/nub178.json b/core/src/test/resources/legacy-index/nub178.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub178.json rename to core/src/test/resources/legacy-index/nub178.json diff --git a/webservice/src/test/resources/legacy-index/nub179.json b/core/src/test/resources/legacy-index/nub179.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub179.json rename to core/src/test/resources/legacy-index/nub179.json diff --git a/webservice/src/test/resources/legacy-index/nub18.json b/core/src/test/resources/legacy-index/nub18.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub18.json rename to core/src/test/resources/legacy-index/nub18.json diff --git a/webservice/src/test/resources/legacy-index/nub180.json b/core/src/test/resources/legacy-index/nub180.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub180.json rename to core/src/test/resources/legacy-index/nub180.json diff --git a/webservice/src/test/resources/legacy-index/nub181.json b/core/src/test/resources/legacy-index/nub181.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub181.json rename to core/src/test/resources/legacy-index/nub181.json diff --git a/webservice/src/test/resources/legacy-index/nub182.json b/core/src/test/resources/legacy-index/nub182.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub182.json rename to core/src/test/resources/legacy-index/nub182.json diff --git a/webservice/src/test/resources/legacy-index/nub183.json b/core/src/test/resources/legacy-index/nub183.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub183.json rename to core/src/test/resources/legacy-index/nub183.json diff --git a/webservice/src/test/resources/legacy-index/nub184.json b/core/src/test/resources/legacy-index/nub184.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub184.json rename to core/src/test/resources/legacy-index/nub184.json diff --git a/webservice/src/test/resources/legacy-index/nub185.json b/core/src/test/resources/legacy-index/nub185.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub185.json rename to core/src/test/resources/legacy-index/nub185.json diff --git a/webservice/src/test/resources/legacy-index/nub186.json b/core/src/test/resources/legacy-index/nub186.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub186.json rename to core/src/test/resources/legacy-index/nub186.json diff --git a/webservice/src/test/resources/legacy-index/nub187.json b/core/src/test/resources/legacy-index/nub187.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub187.json rename to core/src/test/resources/legacy-index/nub187.json diff --git a/webservice/src/test/resources/legacy-index/nub188.json b/core/src/test/resources/legacy-index/nub188.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub188.json rename to core/src/test/resources/legacy-index/nub188.json diff --git a/webservice/src/test/resources/legacy-index/nub189.json b/core/src/test/resources/legacy-index/nub189.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub189.json rename to core/src/test/resources/legacy-index/nub189.json diff --git a/webservice/src/test/resources/legacy-index/nub19.json b/core/src/test/resources/legacy-index/nub19.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub19.json rename to core/src/test/resources/legacy-index/nub19.json diff --git a/webservice/src/test/resources/legacy-index/nub190.json b/core/src/test/resources/legacy-index/nub190.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub190.json rename to core/src/test/resources/legacy-index/nub190.json diff --git a/webservice/src/test/resources/legacy-index/nub191.json b/core/src/test/resources/legacy-index/nub191.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub191.json rename to core/src/test/resources/legacy-index/nub191.json diff --git a/webservice/src/test/resources/legacy-index/nub192.json b/core/src/test/resources/legacy-index/nub192.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub192.json rename to core/src/test/resources/legacy-index/nub192.json diff --git a/webservice/src/test/resources/legacy-index/nub193.json b/core/src/test/resources/legacy-index/nub193.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub193.json rename to core/src/test/resources/legacy-index/nub193.json diff --git a/webservice/src/test/resources/legacy-index/nub194.json b/core/src/test/resources/legacy-index/nub194.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub194.json rename to core/src/test/resources/legacy-index/nub194.json diff --git a/webservice/src/test/resources/legacy-index/nub195.json b/core/src/test/resources/legacy-index/nub195.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub195.json rename to core/src/test/resources/legacy-index/nub195.json diff --git a/webservice/src/test/resources/legacy-index/nub196.json b/core/src/test/resources/legacy-index/nub196.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub196.json rename to core/src/test/resources/legacy-index/nub196.json diff --git a/webservice/src/test/resources/legacy-index/nub197.json b/core/src/test/resources/legacy-index/nub197.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub197.json rename to core/src/test/resources/legacy-index/nub197.json diff --git a/webservice/src/test/resources/legacy-index/nub198.json b/core/src/test/resources/legacy-index/nub198.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub198.json rename to core/src/test/resources/legacy-index/nub198.json diff --git a/webservice/src/test/resources/legacy-index/nub199.json b/core/src/test/resources/legacy-index/nub199.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub199.json rename to core/src/test/resources/legacy-index/nub199.json diff --git a/webservice/src/test/resources/legacy-index/nub2.json b/core/src/test/resources/legacy-index/nub2.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub2.json rename to core/src/test/resources/legacy-index/nub2.json diff --git a/webservice/src/test/resources/legacy-index/nub20.json b/core/src/test/resources/legacy-index/nub20.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub20.json rename to core/src/test/resources/legacy-index/nub20.json diff --git a/webservice/src/test/resources/legacy-index/nub200.json b/core/src/test/resources/legacy-index/nub200.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub200.json rename to core/src/test/resources/legacy-index/nub200.json diff --git a/webservice/src/test/resources/legacy-index/nub201.json b/core/src/test/resources/legacy-index/nub201.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub201.json rename to core/src/test/resources/legacy-index/nub201.json diff --git a/webservice/src/test/resources/legacy-index/nub202.json b/core/src/test/resources/legacy-index/nub202.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub202.json rename to core/src/test/resources/legacy-index/nub202.json diff --git a/webservice/src/test/resources/legacy-index/nub203.json b/core/src/test/resources/legacy-index/nub203.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub203.json rename to core/src/test/resources/legacy-index/nub203.json diff --git a/webservice/src/test/resources/legacy-index/nub204.json b/core/src/test/resources/legacy-index/nub204.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub204.json rename to core/src/test/resources/legacy-index/nub204.json diff --git a/webservice/src/test/resources/legacy-index/nub205.json b/core/src/test/resources/legacy-index/nub205.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub205.json rename to core/src/test/resources/legacy-index/nub205.json diff --git a/webservice/src/test/resources/legacy-index/nub206.json b/core/src/test/resources/legacy-index/nub206.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub206.json rename to core/src/test/resources/legacy-index/nub206.json diff --git a/webservice/src/test/resources/legacy-index/nub207.json b/core/src/test/resources/legacy-index/nub207.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub207.json rename to core/src/test/resources/legacy-index/nub207.json diff --git a/webservice/src/test/resources/legacy-index/nub208.json b/core/src/test/resources/legacy-index/nub208.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub208.json rename to core/src/test/resources/legacy-index/nub208.json diff --git a/webservice/src/test/resources/legacy-index/nub209.json b/core/src/test/resources/legacy-index/nub209.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub209.json rename to core/src/test/resources/legacy-index/nub209.json diff --git a/webservice/src/test/resources/legacy-index/nub21.json b/core/src/test/resources/legacy-index/nub21.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub21.json rename to core/src/test/resources/legacy-index/nub21.json diff --git a/webservice/src/test/resources/legacy-index/nub210.json b/core/src/test/resources/legacy-index/nub210.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub210.json rename to core/src/test/resources/legacy-index/nub210.json diff --git a/webservice/src/test/resources/legacy-index/nub211.json b/core/src/test/resources/legacy-index/nub211.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub211.json rename to core/src/test/resources/legacy-index/nub211.json diff --git a/webservice/src/test/resources/legacy-index/nub212.json b/core/src/test/resources/legacy-index/nub212.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub212.json rename to core/src/test/resources/legacy-index/nub212.json diff --git a/webservice/src/test/resources/legacy-index/nub213.json b/core/src/test/resources/legacy-index/nub213.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub213.json rename to core/src/test/resources/legacy-index/nub213.json diff --git a/webservice/src/test/resources/legacy-index/nub214.json b/core/src/test/resources/legacy-index/nub214.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub214.json rename to core/src/test/resources/legacy-index/nub214.json diff --git a/webservice/src/test/resources/legacy-index/nub215.json b/core/src/test/resources/legacy-index/nub215.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub215.json rename to core/src/test/resources/legacy-index/nub215.json diff --git a/webservice/src/test/resources/legacy-index/nub216.json b/core/src/test/resources/legacy-index/nub216.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub216.json rename to core/src/test/resources/legacy-index/nub216.json diff --git a/webservice/src/test/resources/legacy-index/nub217.json b/core/src/test/resources/legacy-index/nub217.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub217.json rename to core/src/test/resources/legacy-index/nub217.json diff --git a/webservice/src/test/resources/legacy-index/nub218.json b/core/src/test/resources/legacy-index/nub218.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub218.json rename to core/src/test/resources/legacy-index/nub218.json diff --git a/webservice/src/test/resources/legacy-index/nub219.json b/core/src/test/resources/legacy-index/nub219.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub219.json rename to core/src/test/resources/legacy-index/nub219.json diff --git a/webservice/src/test/resources/legacy-index/nub22.json b/core/src/test/resources/legacy-index/nub22.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub22.json rename to core/src/test/resources/legacy-index/nub22.json diff --git a/webservice/src/test/resources/legacy-index/nub220.json b/core/src/test/resources/legacy-index/nub220.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub220.json rename to core/src/test/resources/legacy-index/nub220.json diff --git a/webservice/src/test/resources/legacy-index/nub221.json b/core/src/test/resources/legacy-index/nub221.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub221.json rename to core/src/test/resources/legacy-index/nub221.json diff --git a/webservice/src/test/resources/legacy-index/nub222.json b/core/src/test/resources/legacy-index/nub222.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub222.json rename to core/src/test/resources/legacy-index/nub222.json diff --git a/webservice/src/test/resources/legacy-index/nub223.json b/core/src/test/resources/legacy-index/nub223.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub223.json rename to core/src/test/resources/legacy-index/nub223.json diff --git a/webservice/src/test/resources/legacy-index/nub224.json b/core/src/test/resources/legacy-index/nub224.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub224.json rename to core/src/test/resources/legacy-index/nub224.json diff --git a/webservice/src/test/resources/legacy-index/nub225.json b/core/src/test/resources/legacy-index/nub225.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub225.json rename to core/src/test/resources/legacy-index/nub225.json diff --git a/webservice/src/test/resources/legacy-index/nub226.json b/core/src/test/resources/legacy-index/nub226.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub226.json rename to core/src/test/resources/legacy-index/nub226.json diff --git a/webservice/src/test/resources/legacy-index/nub227.json b/core/src/test/resources/legacy-index/nub227.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub227.json rename to core/src/test/resources/legacy-index/nub227.json diff --git a/webservice/src/test/resources/legacy-index/nub228.json b/core/src/test/resources/legacy-index/nub228.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub228.json rename to core/src/test/resources/legacy-index/nub228.json diff --git a/webservice/src/test/resources/legacy-index/nub229.json b/core/src/test/resources/legacy-index/nub229.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub229.json rename to core/src/test/resources/legacy-index/nub229.json diff --git a/webservice/src/test/resources/legacy-index/nub23.json b/core/src/test/resources/legacy-index/nub23.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub23.json rename to core/src/test/resources/legacy-index/nub23.json diff --git a/webservice/src/test/resources/legacy-index/nub230.json b/core/src/test/resources/legacy-index/nub230.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub230.json rename to core/src/test/resources/legacy-index/nub230.json diff --git a/webservice/src/test/resources/legacy-index/nub231.json b/core/src/test/resources/legacy-index/nub231.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub231.json rename to core/src/test/resources/legacy-index/nub231.json diff --git a/webservice/src/test/resources/legacy-index/nub232.json b/core/src/test/resources/legacy-index/nub232.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub232.json rename to core/src/test/resources/legacy-index/nub232.json diff --git a/webservice/src/test/resources/legacy-index/nub233.json b/core/src/test/resources/legacy-index/nub233.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub233.json rename to core/src/test/resources/legacy-index/nub233.json diff --git a/webservice/src/test/resources/legacy-index/nub234.json b/core/src/test/resources/legacy-index/nub234.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub234.json rename to core/src/test/resources/legacy-index/nub234.json diff --git a/webservice/src/test/resources/legacy-index/nub235.json b/core/src/test/resources/legacy-index/nub235.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub235.json rename to core/src/test/resources/legacy-index/nub235.json diff --git a/webservice/src/test/resources/legacy-index/nub236.json b/core/src/test/resources/legacy-index/nub236.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub236.json rename to core/src/test/resources/legacy-index/nub236.json diff --git a/webservice/src/test/resources/legacy-index/nub237.json b/core/src/test/resources/legacy-index/nub237.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub237.json rename to core/src/test/resources/legacy-index/nub237.json diff --git a/webservice/src/test/resources/legacy-index/nub238.json b/core/src/test/resources/legacy-index/nub238.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub238.json rename to core/src/test/resources/legacy-index/nub238.json diff --git a/webservice/src/test/resources/legacy-index/nub239.json b/core/src/test/resources/legacy-index/nub239.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub239.json rename to core/src/test/resources/legacy-index/nub239.json diff --git a/webservice/src/test/resources/legacy-index/nub24.json b/core/src/test/resources/legacy-index/nub24.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub24.json rename to core/src/test/resources/legacy-index/nub24.json diff --git a/webservice/src/test/resources/legacy-index/nub240.json b/core/src/test/resources/legacy-index/nub240.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub240.json rename to core/src/test/resources/legacy-index/nub240.json diff --git a/webservice/src/test/resources/legacy-index/nub241.json b/core/src/test/resources/legacy-index/nub241.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub241.json rename to core/src/test/resources/legacy-index/nub241.json diff --git a/webservice/src/test/resources/legacy-index/nub242.json b/core/src/test/resources/legacy-index/nub242.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub242.json rename to core/src/test/resources/legacy-index/nub242.json diff --git a/webservice/src/test/resources/legacy-index/nub243.json b/core/src/test/resources/legacy-index/nub243.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub243.json rename to core/src/test/resources/legacy-index/nub243.json diff --git a/webservice/src/test/resources/legacy-index/nub244.json b/core/src/test/resources/legacy-index/nub244.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub244.json rename to core/src/test/resources/legacy-index/nub244.json diff --git a/webservice/src/test/resources/legacy-index/nub245.json b/core/src/test/resources/legacy-index/nub245.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub245.json rename to core/src/test/resources/legacy-index/nub245.json diff --git a/webservice/src/test/resources/legacy-index/nub246.json b/core/src/test/resources/legacy-index/nub246.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub246.json rename to core/src/test/resources/legacy-index/nub246.json diff --git a/webservice/src/test/resources/legacy-index/nub247.json b/core/src/test/resources/legacy-index/nub247.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub247.json rename to core/src/test/resources/legacy-index/nub247.json diff --git a/webservice/src/test/resources/legacy-index/nub248.json b/core/src/test/resources/legacy-index/nub248.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub248.json rename to core/src/test/resources/legacy-index/nub248.json diff --git a/webservice/src/test/resources/legacy-index/nub249.json b/core/src/test/resources/legacy-index/nub249.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub249.json rename to core/src/test/resources/legacy-index/nub249.json diff --git a/webservice/src/test/resources/legacy-index/nub25.json b/core/src/test/resources/legacy-index/nub25.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub25.json rename to core/src/test/resources/legacy-index/nub25.json diff --git a/webservice/src/test/resources/legacy-index/nub250.json b/core/src/test/resources/legacy-index/nub250.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub250.json rename to core/src/test/resources/legacy-index/nub250.json diff --git a/webservice/src/test/resources/legacy-index/nub251.json b/core/src/test/resources/legacy-index/nub251.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub251.json rename to core/src/test/resources/legacy-index/nub251.json diff --git a/webservice/src/test/resources/legacy-index/nub252.json b/core/src/test/resources/legacy-index/nub252.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub252.json rename to core/src/test/resources/legacy-index/nub252.json diff --git a/webservice/src/test/resources/legacy-index/nub253.json b/core/src/test/resources/legacy-index/nub253.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub253.json rename to core/src/test/resources/legacy-index/nub253.json diff --git a/webservice/src/test/resources/legacy-index/nub254.json b/core/src/test/resources/legacy-index/nub254.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub254.json rename to core/src/test/resources/legacy-index/nub254.json diff --git a/webservice/src/test/resources/legacy-index/nub255.json b/core/src/test/resources/legacy-index/nub255.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub255.json rename to core/src/test/resources/legacy-index/nub255.json diff --git a/webservice/src/test/resources/legacy-index/nub256.json b/core/src/test/resources/legacy-index/nub256.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub256.json rename to core/src/test/resources/legacy-index/nub256.json diff --git a/webservice/src/test/resources/legacy-index/nub257.json b/core/src/test/resources/legacy-index/nub257.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub257.json rename to core/src/test/resources/legacy-index/nub257.json diff --git a/webservice/src/test/resources/legacy-index/nub258.json b/core/src/test/resources/legacy-index/nub258.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub258.json rename to core/src/test/resources/legacy-index/nub258.json diff --git a/webservice/src/test/resources/legacy-index/nub259.json b/core/src/test/resources/legacy-index/nub259.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub259.json rename to core/src/test/resources/legacy-index/nub259.json diff --git a/webservice/src/test/resources/legacy-index/nub26.json b/core/src/test/resources/legacy-index/nub26.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub26.json rename to core/src/test/resources/legacy-index/nub26.json diff --git a/webservice/src/test/resources/legacy-index/nub260.json b/core/src/test/resources/legacy-index/nub260.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub260.json rename to core/src/test/resources/legacy-index/nub260.json diff --git a/webservice/src/test/resources/legacy-index/nub261.json b/core/src/test/resources/legacy-index/nub261.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub261.json rename to core/src/test/resources/legacy-index/nub261.json diff --git a/webservice/src/test/resources/legacy-index/nub262.json b/core/src/test/resources/legacy-index/nub262.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub262.json rename to core/src/test/resources/legacy-index/nub262.json diff --git a/webservice/src/test/resources/legacy-index/nub263.json b/core/src/test/resources/legacy-index/nub263.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub263.json rename to core/src/test/resources/legacy-index/nub263.json diff --git a/webservice/src/test/resources/legacy-index/nub264.json b/core/src/test/resources/legacy-index/nub264.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub264.json rename to core/src/test/resources/legacy-index/nub264.json diff --git a/webservice/src/test/resources/legacy-index/nub265.json b/core/src/test/resources/legacy-index/nub265.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub265.json rename to core/src/test/resources/legacy-index/nub265.json diff --git a/webservice/src/test/resources/legacy-index/nub266.json b/core/src/test/resources/legacy-index/nub266.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub266.json rename to core/src/test/resources/legacy-index/nub266.json diff --git a/webservice/src/test/resources/legacy-index/nub267.json b/core/src/test/resources/legacy-index/nub267.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub267.json rename to core/src/test/resources/legacy-index/nub267.json diff --git a/webservice/src/test/resources/legacy-index/nub268.json b/core/src/test/resources/legacy-index/nub268.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub268.json rename to core/src/test/resources/legacy-index/nub268.json diff --git a/webservice/src/test/resources/legacy-index/nub269.json b/core/src/test/resources/legacy-index/nub269.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub269.json rename to core/src/test/resources/legacy-index/nub269.json diff --git a/webservice/src/test/resources/legacy-index/nub27.json b/core/src/test/resources/legacy-index/nub27.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub27.json rename to core/src/test/resources/legacy-index/nub27.json diff --git a/webservice/src/test/resources/legacy-index/nub270.json b/core/src/test/resources/legacy-index/nub270.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub270.json rename to core/src/test/resources/legacy-index/nub270.json diff --git a/webservice/src/test/resources/legacy-index/nub271.json b/core/src/test/resources/legacy-index/nub271.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub271.json rename to core/src/test/resources/legacy-index/nub271.json diff --git a/webservice/src/test/resources/legacy-index/nub272.json b/core/src/test/resources/legacy-index/nub272.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub272.json rename to core/src/test/resources/legacy-index/nub272.json diff --git a/webservice/src/test/resources/legacy-index/nub273.json b/core/src/test/resources/legacy-index/nub273.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub273.json rename to core/src/test/resources/legacy-index/nub273.json diff --git a/webservice/src/test/resources/legacy-index/nub274.json b/core/src/test/resources/legacy-index/nub274.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub274.json rename to core/src/test/resources/legacy-index/nub274.json diff --git a/webservice/src/test/resources/legacy-index/nub275.json b/core/src/test/resources/legacy-index/nub275.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub275.json rename to core/src/test/resources/legacy-index/nub275.json diff --git a/webservice/src/test/resources/legacy-index/nub276.json b/core/src/test/resources/legacy-index/nub276.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub276.json rename to core/src/test/resources/legacy-index/nub276.json diff --git a/webservice/src/test/resources/legacy-index/nub277.json b/core/src/test/resources/legacy-index/nub277.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub277.json rename to core/src/test/resources/legacy-index/nub277.json diff --git a/webservice/src/test/resources/legacy-index/nub278.json b/core/src/test/resources/legacy-index/nub278.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub278.json rename to core/src/test/resources/legacy-index/nub278.json diff --git a/webservice/src/test/resources/legacy-index/nub279.json b/core/src/test/resources/legacy-index/nub279.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub279.json rename to core/src/test/resources/legacy-index/nub279.json diff --git a/webservice/src/test/resources/legacy-index/nub28.json b/core/src/test/resources/legacy-index/nub28.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub28.json rename to core/src/test/resources/legacy-index/nub28.json diff --git a/webservice/src/test/resources/legacy-index/nub280.json b/core/src/test/resources/legacy-index/nub280.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub280.json rename to core/src/test/resources/legacy-index/nub280.json diff --git a/webservice/src/test/resources/legacy-index/nub281.json b/core/src/test/resources/legacy-index/nub281.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub281.json rename to core/src/test/resources/legacy-index/nub281.json diff --git a/webservice/src/test/resources/legacy-index/nub282.json b/core/src/test/resources/legacy-index/nub282.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub282.json rename to core/src/test/resources/legacy-index/nub282.json diff --git a/webservice/src/test/resources/legacy-index/nub283.json b/core/src/test/resources/legacy-index/nub283.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub283.json rename to core/src/test/resources/legacy-index/nub283.json diff --git a/webservice/src/test/resources/legacy-index/nub284.json b/core/src/test/resources/legacy-index/nub284.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub284.json rename to core/src/test/resources/legacy-index/nub284.json diff --git a/webservice/src/test/resources/legacy-index/nub285.json b/core/src/test/resources/legacy-index/nub285.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub285.json rename to core/src/test/resources/legacy-index/nub285.json diff --git a/webservice/src/test/resources/legacy-index/nub29.json b/core/src/test/resources/legacy-index/nub29.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub29.json rename to core/src/test/resources/legacy-index/nub29.json diff --git a/webservice/src/test/resources/legacy-index/nub3.json b/core/src/test/resources/legacy-index/nub3.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub3.json rename to core/src/test/resources/legacy-index/nub3.json diff --git a/webservice/src/test/resources/legacy-index/nub30.json b/core/src/test/resources/legacy-index/nub30.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub30.json rename to core/src/test/resources/legacy-index/nub30.json diff --git a/webservice/src/test/resources/legacy-index/nub31.json b/core/src/test/resources/legacy-index/nub31.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub31.json rename to core/src/test/resources/legacy-index/nub31.json diff --git a/webservice/src/test/resources/legacy-index/nub32.json b/core/src/test/resources/legacy-index/nub32.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub32.json rename to core/src/test/resources/legacy-index/nub32.json diff --git a/webservice/src/test/resources/legacy-index/nub33.json b/core/src/test/resources/legacy-index/nub33.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub33.json rename to core/src/test/resources/legacy-index/nub33.json diff --git a/webservice/src/test/resources/legacy-index/nub34.json b/core/src/test/resources/legacy-index/nub34.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub34.json rename to core/src/test/resources/legacy-index/nub34.json diff --git a/webservice/src/test/resources/legacy-index/nub35.json b/core/src/test/resources/legacy-index/nub35.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub35.json rename to core/src/test/resources/legacy-index/nub35.json diff --git a/webservice/src/test/resources/legacy-index/nub36.json b/core/src/test/resources/legacy-index/nub36.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub36.json rename to core/src/test/resources/legacy-index/nub36.json diff --git a/webservice/src/test/resources/legacy-index/nub37.json b/core/src/test/resources/legacy-index/nub37.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub37.json rename to core/src/test/resources/legacy-index/nub37.json diff --git a/webservice/src/test/resources/legacy-index/nub38.json b/core/src/test/resources/legacy-index/nub38.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub38.json rename to core/src/test/resources/legacy-index/nub38.json diff --git a/webservice/src/test/resources/legacy-index/nub39.json b/core/src/test/resources/legacy-index/nub39.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub39.json rename to core/src/test/resources/legacy-index/nub39.json diff --git a/webservice/src/test/resources/legacy-index/nub4.json b/core/src/test/resources/legacy-index/nub4.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub4.json rename to core/src/test/resources/legacy-index/nub4.json diff --git a/webservice/src/test/resources/legacy-index/nub40.json b/core/src/test/resources/legacy-index/nub40.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub40.json rename to core/src/test/resources/legacy-index/nub40.json diff --git a/webservice/src/test/resources/legacy-index/nub41.json b/core/src/test/resources/legacy-index/nub41.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub41.json rename to core/src/test/resources/legacy-index/nub41.json diff --git a/webservice/src/test/resources/legacy-index/nub42.json b/core/src/test/resources/legacy-index/nub42.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub42.json rename to core/src/test/resources/legacy-index/nub42.json diff --git a/webservice/src/test/resources/legacy-index/nub43.json b/core/src/test/resources/legacy-index/nub43.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub43.json rename to core/src/test/resources/legacy-index/nub43.json diff --git a/webservice/src/test/resources/legacy-index/nub44.json b/core/src/test/resources/legacy-index/nub44.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub44.json rename to core/src/test/resources/legacy-index/nub44.json diff --git a/webservice/src/test/resources/legacy-index/nub45.json b/core/src/test/resources/legacy-index/nub45.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub45.json rename to core/src/test/resources/legacy-index/nub45.json diff --git a/webservice/src/test/resources/legacy-index/nub46.json b/core/src/test/resources/legacy-index/nub46.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub46.json rename to core/src/test/resources/legacy-index/nub46.json diff --git a/webservice/src/test/resources/legacy-index/nub47.json b/core/src/test/resources/legacy-index/nub47.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub47.json rename to core/src/test/resources/legacy-index/nub47.json diff --git a/webservice/src/test/resources/legacy-index/nub48.json b/core/src/test/resources/legacy-index/nub48.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub48.json rename to core/src/test/resources/legacy-index/nub48.json diff --git a/webservice/src/test/resources/legacy-index/nub49.json b/core/src/test/resources/legacy-index/nub49.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub49.json rename to core/src/test/resources/legacy-index/nub49.json diff --git a/webservice/src/test/resources/legacy-index/nub5.json b/core/src/test/resources/legacy-index/nub5.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub5.json rename to core/src/test/resources/legacy-index/nub5.json diff --git a/webservice/src/test/resources/legacy-index/nub50.json b/core/src/test/resources/legacy-index/nub50.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub50.json rename to core/src/test/resources/legacy-index/nub50.json diff --git a/webservice/src/test/resources/legacy-index/nub51.json b/core/src/test/resources/legacy-index/nub51.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub51.json rename to core/src/test/resources/legacy-index/nub51.json diff --git a/webservice/src/test/resources/legacy-index/nub52.json b/core/src/test/resources/legacy-index/nub52.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub52.json rename to core/src/test/resources/legacy-index/nub52.json diff --git a/webservice/src/test/resources/legacy-index/nub53.json b/core/src/test/resources/legacy-index/nub53.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub53.json rename to core/src/test/resources/legacy-index/nub53.json diff --git a/webservice/src/test/resources/legacy-index/nub54.json b/core/src/test/resources/legacy-index/nub54.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub54.json rename to core/src/test/resources/legacy-index/nub54.json diff --git a/webservice/src/test/resources/legacy-index/nub55.json b/core/src/test/resources/legacy-index/nub55.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub55.json rename to core/src/test/resources/legacy-index/nub55.json diff --git a/webservice/src/test/resources/legacy-index/nub56.json b/core/src/test/resources/legacy-index/nub56.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub56.json rename to core/src/test/resources/legacy-index/nub56.json diff --git a/webservice/src/test/resources/legacy-index/nub57.json b/core/src/test/resources/legacy-index/nub57.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub57.json rename to core/src/test/resources/legacy-index/nub57.json diff --git a/webservice/src/test/resources/legacy-index/nub58.json b/core/src/test/resources/legacy-index/nub58.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub58.json rename to core/src/test/resources/legacy-index/nub58.json diff --git a/webservice/src/test/resources/legacy-index/nub59.json b/core/src/test/resources/legacy-index/nub59.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub59.json rename to core/src/test/resources/legacy-index/nub59.json diff --git a/webservice/src/test/resources/legacy-index/nub6.json b/core/src/test/resources/legacy-index/nub6.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub6.json rename to core/src/test/resources/legacy-index/nub6.json diff --git a/webservice/src/test/resources/legacy-index/nub60.json b/core/src/test/resources/legacy-index/nub60.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub60.json rename to core/src/test/resources/legacy-index/nub60.json diff --git a/webservice/src/test/resources/legacy-index/nub61.json b/core/src/test/resources/legacy-index/nub61.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub61.json rename to core/src/test/resources/legacy-index/nub61.json diff --git a/webservice/src/test/resources/legacy-index/nub62.json b/core/src/test/resources/legacy-index/nub62.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub62.json rename to core/src/test/resources/legacy-index/nub62.json diff --git a/webservice/src/test/resources/legacy-index/nub63.json b/core/src/test/resources/legacy-index/nub63.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub63.json rename to core/src/test/resources/legacy-index/nub63.json diff --git a/webservice/src/test/resources/legacy-index/nub64.json b/core/src/test/resources/legacy-index/nub64.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub64.json rename to core/src/test/resources/legacy-index/nub64.json diff --git a/webservice/src/test/resources/legacy-index/nub65.json b/core/src/test/resources/legacy-index/nub65.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub65.json rename to core/src/test/resources/legacy-index/nub65.json diff --git a/webservice/src/test/resources/legacy-index/nub66.json b/core/src/test/resources/legacy-index/nub66.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub66.json rename to core/src/test/resources/legacy-index/nub66.json diff --git a/webservice/src/test/resources/legacy-index/nub67.json b/core/src/test/resources/legacy-index/nub67.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub67.json rename to core/src/test/resources/legacy-index/nub67.json diff --git a/webservice/src/test/resources/legacy-index/nub68.json b/core/src/test/resources/legacy-index/nub68.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub68.json rename to core/src/test/resources/legacy-index/nub68.json diff --git a/webservice/src/test/resources/legacy-index/nub69.json b/core/src/test/resources/legacy-index/nub69.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub69.json rename to core/src/test/resources/legacy-index/nub69.json diff --git a/webservice/src/test/resources/legacy-index/nub7.json b/core/src/test/resources/legacy-index/nub7.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub7.json rename to core/src/test/resources/legacy-index/nub7.json diff --git a/webservice/src/test/resources/legacy-index/nub70.json b/core/src/test/resources/legacy-index/nub70.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub70.json rename to core/src/test/resources/legacy-index/nub70.json diff --git a/webservice/src/test/resources/legacy-index/nub71.json b/core/src/test/resources/legacy-index/nub71.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub71.json rename to core/src/test/resources/legacy-index/nub71.json diff --git a/webservice/src/test/resources/legacy-index/nub72.json b/core/src/test/resources/legacy-index/nub72.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub72.json rename to core/src/test/resources/legacy-index/nub72.json diff --git a/webservice/src/test/resources/legacy-index/nub73.json b/core/src/test/resources/legacy-index/nub73.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub73.json rename to core/src/test/resources/legacy-index/nub73.json diff --git a/webservice/src/test/resources/legacy-index/nub74.json b/core/src/test/resources/legacy-index/nub74.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub74.json rename to core/src/test/resources/legacy-index/nub74.json diff --git a/webservice/src/test/resources/legacy-index/nub75.json b/core/src/test/resources/legacy-index/nub75.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub75.json rename to core/src/test/resources/legacy-index/nub75.json diff --git a/webservice/src/test/resources/legacy-index/nub76.json b/core/src/test/resources/legacy-index/nub76.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub76.json rename to core/src/test/resources/legacy-index/nub76.json diff --git a/webservice/src/test/resources/legacy-index/nub77.json b/core/src/test/resources/legacy-index/nub77.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub77.json rename to core/src/test/resources/legacy-index/nub77.json diff --git a/webservice/src/test/resources/legacy-index/nub78.json b/core/src/test/resources/legacy-index/nub78.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub78.json rename to core/src/test/resources/legacy-index/nub78.json diff --git a/webservice/src/test/resources/legacy-index/nub79.json b/core/src/test/resources/legacy-index/nub79.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub79.json rename to core/src/test/resources/legacy-index/nub79.json diff --git a/webservice/src/test/resources/legacy-index/nub8.json b/core/src/test/resources/legacy-index/nub8.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub8.json rename to core/src/test/resources/legacy-index/nub8.json diff --git a/webservice/src/test/resources/legacy-index/nub80.json b/core/src/test/resources/legacy-index/nub80.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub80.json rename to core/src/test/resources/legacy-index/nub80.json diff --git a/webservice/src/test/resources/legacy-index/nub81.json b/core/src/test/resources/legacy-index/nub81.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub81.json rename to core/src/test/resources/legacy-index/nub81.json diff --git a/webservice/src/test/resources/legacy-index/nub82.json b/core/src/test/resources/legacy-index/nub82.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub82.json rename to core/src/test/resources/legacy-index/nub82.json diff --git a/webservice/src/test/resources/legacy-index/nub83.json b/core/src/test/resources/legacy-index/nub83.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub83.json rename to core/src/test/resources/legacy-index/nub83.json diff --git a/webservice/src/test/resources/legacy-index/nub84.json b/core/src/test/resources/legacy-index/nub84.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub84.json rename to core/src/test/resources/legacy-index/nub84.json diff --git a/webservice/src/test/resources/legacy-index/nub85.json b/core/src/test/resources/legacy-index/nub85.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub85.json rename to core/src/test/resources/legacy-index/nub85.json diff --git a/webservice/src/test/resources/legacy-index/nub86.json b/core/src/test/resources/legacy-index/nub86.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub86.json rename to core/src/test/resources/legacy-index/nub86.json diff --git a/webservice/src/test/resources/legacy-index/nub87.json b/core/src/test/resources/legacy-index/nub87.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub87.json rename to core/src/test/resources/legacy-index/nub87.json diff --git a/webservice/src/test/resources/legacy-index/nub88.json b/core/src/test/resources/legacy-index/nub88.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub88.json rename to core/src/test/resources/legacy-index/nub88.json diff --git a/webservice/src/test/resources/legacy-index/nub89.json b/core/src/test/resources/legacy-index/nub89.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub89.json rename to core/src/test/resources/legacy-index/nub89.json diff --git a/webservice/src/test/resources/legacy-index/nub9.json b/core/src/test/resources/legacy-index/nub9.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub9.json rename to core/src/test/resources/legacy-index/nub9.json diff --git a/webservice/src/test/resources/legacy-index/nub90.json b/core/src/test/resources/legacy-index/nub90.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub90.json rename to core/src/test/resources/legacy-index/nub90.json diff --git a/webservice/src/test/resources/legacy-index/nub91.json b/core/src/test/resources/legacy-index/nub91.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub91.json rename to core/src/test/resources/legacy-index/nub91.json diff --git a/webservice/src/test/resources/legacy-index/nub92.json b/core/src/test/resources/legacy-index/nub92.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub92.json rename to core/src/test/resources/legacy-index/nub92.json diff --git a/webservice/src/test/resources/legacy-index/nub93.json b/core/src/test/resources/legacy-index/nub93.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub93.json rename to core/src/test/resources/legacy-index/nub93.json diff --git a/webservice/src/test/resources/legacy-index/nub94.json b/core/src/test/resources/legacy-index/nub94.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub94.json rename to core/src/test/resources/legacy-index/nub94.json diff --git a/webservice/src/test/resources/legacy-index/nub95.json b/core/src/test/resources/legacy-index/nub95.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub95.json rename to core/src/test/resources/legacy-index/nub95.json diff --git a/webservice/src/test/resources/legacy-index/nub96.json b/core/src/test/resources/legacy-index/nub96.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub96.json rename to core/src/test/resources/legacy-index/nub96.json diff --git a/webservice/src/test/resources/legacy-index/nub97.json b/core/src/test/resources/legacy-index/nub97.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub97.json rename to core/src/test/resources/legacy-index/nub97.json diff --git a/webservice/src/test/resources/legacy-index/nub98.json b/core/src/test/resources/legacy-index/nub98.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub98.json rename to core/src/test/resources/legacy-index/nub98.json diff --git a/webservice/src/test/resources/legacy-index/nub99.json b/core/src/test/resources/legacy-index/nub99.json similarity index 100% rename from webservice/src/test/resources/legacy-index/nub99.json rename to core/src/test/resources/legacy-index/nub99.json diff --git a/webservice/src/test/resources/taxalign/a/Taxon.tsv b/core/src/test/resources/taxalign/a/Taxon.tsv similarity index 100% rename from webservice/src/test/resources/taxalign/a/Taxon.tsv rename to core/src/test/resources/taxalign/a/Taxon.tsv diff --git a/webservice/src/test/resources/taxalign/b/Taxon.tsv b/core/src/test/resources/taxalign/b/Taxon.tsv similarity index 100% rename from webservice/src/test/resources/taxalign/b/Taxon.tsv rename to core/src/test/resources/taxalign/b/Taxon.tsv diff --git a/webservice/src/test/resources/test-data/homgroup/dataset.csv b/core/src/test/resources/test-data/homgroup/dataset.csv similarity index 100% rename from webservice/src/test/resources/test-data/homgroup/dataset.csv rename to core/src/test/resources/test-data/homgroup/dataset.csv diff --git a/webservice/src/test/resources/test-data/homgroup/name_4.csv b/core/src/test/resources/test-data/homgroup/name_4.csv similarity index 100% rename from webservice/src/test/resources/test-data/homgroup/name_4.csv rename to core/src/test/resources/test-data/homgroup/name_4.csv diff --git a/webservice/src/test/resources/test-data/homgroup/name_rel_4.csv b/core/src/test/resources/test-data/homgroup/name_rel_4.csv similarity index 100% rename from webservice/src/test/resources/test-data/homgroup/name_rel_4.csv rename to core/src/test/resources/test-data/homgroup/name_rel_4.csv diff --git a/webservice/src/test/resources/test-data/homgroup/name_usage_4.csv b/core/src/test/resources/test-data/homgroup/name_usage_4.csv similarity index 100% rename from webservice/src/test/resources/test-data/homgroup/name_usage_4.csv rename to core/src/test/resources/test-data/homgroup/name_usage_4.csv diff --git a/webservice/src/test/resources/test-data/matching/dataset.csv b/core/src/test/resources/test-data/matching/dataset.csv similarity index 100% rename from webservice/src/test/resources/test-data/matching/dataset.csv rename to core/src/test/resources/test-data/matching/dataset.csv diff --git a/webservice/src/test/resources/test-data/matching/name_101.csv b/core/src/test/resources/test-data/matching/name_101.csv similarity index 100% rename from webservice/src/test/resources/test-data/matching/name_101.csv rename to core/src/test/resources/test-data/matching/name_101.csv diff --git a/webservice/src/test/resources/test-data/matching/name_102.csv b/core/src/test/resources/test-data/matching/name_102.csv similarity index 100% rename from webservice/src/test/resources/test-data/matching/name_102.csv rename to core/src/test/resources/test-data/matching/name_102.csv diff --git a/webservice/src/test/resources/test-data/matching/name_usage_101.csv b/core/src/test/resources/test-data/matching/name_usage_101.csv similarity index 100% rename from webservice/src/test/resources/test-data/matching/name_usage_101.csv rename to core/src/test/resources/test-data/matching/name_usage_101.csv diff --git a/webservice/src/test/resources/test-data/matching/name_usage_102.csv b/core/src/test/resources/test-data/matching/name_usage_102.csv similarity index 100% rename from webservice/src/test/resources/test-data/matching/name_usage_102.csv rename to core/src/test/resources/test-data/matching/name_usage_102.csv diff --git a/webservice/src/test/resources/test-data/project/dataset.csv b/core/src/test/resources/test-data/project/dataset.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/dataset.csv rename to core/src/test/resources/test-data/project/dataset.csv diff --git a/webservice/src/test/resources/test-data/project/dataset_import.csv b/core/src/test/resources/test-data/project/dataset_import.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/dataset_import.csv rename to core/src/test/resources/test-data/project/dataset_import.csv diff --git a/webservice/src/test/resources/test-data/project/dataset_patch.csv b/core/src/test/resources/test-data/project/dataset_patch.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/dataset_patch.csv rename to core/src/test/resources/test-data/project/dataset_patch.csv diff --git a/webservice/src/test/resources/test-data/project/distribution_3.csv b/core/src/test/resources/test-data/project/distribution_3.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/distribution_3.csv rename to core/src/test/resources/test-data/project/distribution_3.csv diff --git a/webservice/src/test/resources/test-data/project/idmap b/core/src/test/resources/test-data/project/idmap similarity index 100% rename from webservice/src/test/resources/test-data/project/idmap rename to core/src/test/resources/test-data/project/idmap diff --git a/webservice/src/test/resources/test-data/project/media_3.csv b/core/src/test/resources/test-data/project/media_3.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/media_3.csv rename to core/src/test/resources/test-data/project/media_3.csv diff --git a/webservice/src/test/resources/test-data/project/name_12.csv b/core/src/test/resources/test-data/project/name_12.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/name_12.csv rename to core/src/test/resources/test-data/project/name_12.csv diff --git a/webservice/src/test/resources/test-data/project/name_13.csv b/core/src/test/resources/test-data/project/name_13.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/name_13.csv rename to core/src/test/resources/test-data/project/name_13.csv diff --git a/webservice/src/test/resources/test-data/project/name_3.csv b/core/src/test/resources/test-data/project/name_3.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/name_3.csv rename to core/src/test/resources/test-data/project/name_3.csv diff --git a/webservice/src/test/resources/test-data/project/name_relation_3.csv b/core/src/test/resources/test-data/project/name_relation_3.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/name_relation_3.csv rename to core/src/test/resources/test-data/project/name_relation_3.csv diff --git a/webservice/src/test/resources/test-data/project/name_usage_12.csv b/core/src/test/resources/test-data/project/name_usage_12.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/name_usage_12.csv rename to core/src/test/resources/test-data/project/name_usage_12.csv diff --git a/webservice/src/test/resources/test-data/project/name_usage_13.csv b/core/src/test/resources/test-data/project/name_usage_13.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/name_usage_13.csv rename to core/src/test/resources/test-data/project/name_usage_13.csv diff --git a/webservice/src/test/resources/test-data/project/name_usage_3.csv b/core/src/test/resources/test-data/project/name_usage_3.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/name_usage_3.csv rename to core/src/test/resources/test-data/project/name_usage_3.csv diff --git a/webservice/src/test/resources/test-data/project/name_usage_archive.csv b/core/src/test/resources/test-data/project/name_usage_archive.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/name_usage_archive.csv rename to core/src/test/resources/test-data/project/name_usage_archive.csv diff --git a/webservice/src/test/resources/test-data/project/reference_12.csv b/core/src/test/resources/test-data/project/reference_12.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/reference_12.csv rename to core/src/test/resources/test-data/project/reference_12.csv diff --git a/webservice/src/test/resources/test-data/project/reference_13.csv b/core/src/test/resources/test-data/project/reference_13.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/reference_13.csv rename to core/src/test/resources/test-data/project/reference_13.csv diff --git a/webservice/src/test/resources/test-data/project/reference_3.csv b/core/src/test/resources/test-data/project/reference_3.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/reference_3.csv rename to core/src/test/resources/test-data/project/reference_3.csv diff --git a/webservice/src/test/resources/test-data/project/sector.csv b/core/src/test/resources/test-data/project/sector.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/sector.csv rename to core/src/test/resources/test-data/project/sector.csv diff --git a/webservice/src/test/resources/test-data/project/type_material_3.csv b/core/src/test/resources/test-data/project/type_material_3.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/type_material_3.csv rename to core/src/test/resources/test-data/project/type_material_3.csv diff --git a/webservice/src/test/resources/test-data/project/vernacular_name_3.csv b/core/src/test/resources/test-data/project/vernacular_name_3.csv similarity index 100% rename from webservice/src/test/resources/test-data/project/vernacular_name_3.csv rename to core/src/test/resources/test-data/project/vernacular_name_3.csv diff --git a/webservice/src/test/resources/test-data/syncs/dataset.csv b/core/src/test/resources/test-data/syncs/dataset.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/dataset.csv rename to core/src/test/resources/test-data/syncs/dataset.csv diff --git a/webservice/src/test/resources/test-data/syncs/distribution_102.csv b/core/src/test/resources/test-data/syncs/distribution_102.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/distribution_102.csv rename to core/src/test/resources/test-data/syncs/distribution_102.csv diff --git a/webservice/src/test/resources/test-data/syncs/distribution_103.csv b/core/src/test/resources/test-data/syncs/distribution_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/distribution_103.csv rename to core/src/test/resources/test-data/syncs/distribution_103.csv diff --git a/webservice/src/test/resources/test-data/syncs/media_103.csv b/core/src/test/resources/test-data/syncs/media_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/media_103.csv rename to core/src/test/resources/test-data/syncs/media_103.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_101.csv b/core/src/test/resources/test-data/syncs/name_101.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_101.csv rename to core/src/test/resources/test-data/syncs/name_101.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_102.csv b/core/src/test/resources/test-data/syncs/name_102.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_102.csv rename to core/src/test/resources/test-data/syncs/name_102.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_103.csv b/core/src/test/resources/test-data/syncs/name_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_103.csv rename to core/src/test/resources/test-data/syncs/name_103.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_104.csv b/core/src/test/resources/test-data/syncs/name_104.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_104.csv rename to core/src/test/resources/test-data/syncs/name_104.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_105.csv b/core/src/test/resources/test-data/syncs/name_105.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_105.csv rename to core/src/test/resources/test-data/syncs/name_105.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_106.csv b/core/src/test/resources/test-data/syncs/name_106.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_106.csv rename to core/src/test/resources/test-data/syncs/name_106.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_107.csv b/core/src/test/resources/test-data/syncs/name_107.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_107.csv rename to core/src/test/resources/test-data/syncs/name_107.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_108.csv b/core/src/test/resources/test-data/syncs/name_108.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_108.csv rename to core/src/test/resources/test-data/syncs/name_108.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_109.csv b/core/src/test/resources/test-data/syncs/name_109.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_109.csv rename to core/src/test/resources/test-data/syncs/name_109.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_110.csv b/core/src/test/resources/test-data/syncs/name_110.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_110.csv rename to core/src/test/resources/test-data/syncs/name_110.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_111.csv b/core/src/test/resources/test-data/syncs/name_111.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_111.csv rename to core/src/test/resources/test-data/syncs/name_111.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_112.csv b/core/src/test/resources/test-data/syncs/name_112.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_112.csv rename to core/src/test/resources/test-data/syncs/name_112.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_113.csv b/core/src/test/resources/test-data/syncs/name_113.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_113.csv rename to core/src/test/resources/test-data/syncs/name_113.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_114.csv b/core/src/test/resources/test-data/syncs/name_114.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_114.csv rename to core/src/test/resources/test-data/syncs/name_114.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_115.csv b/core/src/test/resources/test-data/syncs/name_115.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_115.csv rename to core/src/test/resources/test-data/syncs/name_115.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_116.csv b/core/src/test/resources/test-data/syncs/name_116.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_116.csv rename to core/src/test/resources/test-data/syncs/name_116.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_117.csv b/core/src/test/resources/test-data/syncs/name_117.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_117.csv rename to core/src/test/resources/test-data/syncs/name_117.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_118.csv b/core/src/test/resources/test-data/syncs/name_118.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_118.csv rename to core/src/test/resources/test-data/syncs/name_118.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_119.csv b/core/src/test/resources/test-data/syncs/name_119.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_119.csv rename to core/src/test/resources/test-data/syncs/name_119.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_120.csv b/core/src/test/resources/test-data/syncs/name_120.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_120.csv rename to core/src/test/resources/test-data/syncs/name_120.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_rel_103.csv b/core/src/test/resources/test-data/syncs/name_rel_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_rel_103.csv rename to core/src/test/resources/test-data/syncs/name_rel_103.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_rel_106.csv b/core/src/test/resources/test-data/syncs/name_rel_106.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_rel_106.csv rename to core/src/test/resources/test-data/syncs/name_rel_106.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_rel_111.csv b/core/src/test/resources/test-data/syncs/name_rel_111.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_rel_111.csv rename to core/src/test/resources/test-data/syncs/name_rel_111.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_101.csv b/core/src/test/resources/test-data/syncs/name_usage_101.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_101.csv rename to core/src/test/resources/test-data/syncs/name_usage_101.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_102.csv b/core/src/test/resources/test-data/syncs/name_usage_102.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_102.csv rename to core/src/test/resources/test-data/syncs/name_usage_102.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_103.csv b/core/src/test/resources/test-data/syncs/name_usage_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_103.csv rename to core/src/test/resources/test-data/syncs/name_usage_103.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_104.csv b/core/src/test/resources/test-data/syncs/name_usage_104.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_104.csv rename to core/src/test/resources/test-data/syncs/name_usage_104.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_105.csv b/core/src/test/resources/test-data/syncs/name_usage_105.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_105.csv rename to core/src/test/resources/test-data/syncs/name_usage_105.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_106.csv b/core/src/test/resources/test-data/syncs/name_usage_106.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_106.csv rename to core/src/test/resources/test-data/syncs/name_usage_106.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_107.csv b/core/src/test/resources/test-data/syncs/name_usage_107.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_107.csv rename to core/src/test/resources/test-data/syncs/name_usage_107.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_108.csv b/core/src/test/resources/test-data/syncs/name_usage_108.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_108.csv rename to core/src/test/resources/test-data/syncs/name_usage_108.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_109.csv b/core/src/test/resources/test-data/syncs/name_usage_109.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_109.csv rename to core/src/test/resources/test-data/syncs/name_usage_109.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_110.csv b/core/src/test/resources/test-data/syncs/name_usage_110.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_110.csv rename to core/src/test/resources/test-data/syncs/name_usage_110.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_111.csv b/core/src/test/resources/test-data/syncs/name_usage_111.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_111.csv rename to core/src/test/resources/test-data/syncs/name_usage_111.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_112.csv b/core/src/test/resources/test-data/syncs/name_usage_112.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_112.csv rename to core/src/test/resources/test-data/syncs/name_usage_112.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_113.csv b/core/src/test/resources/test-data/syncs/name_usage_113.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_113.csv rename to core/src/test/resources/test-data/syncs/name_usage_113.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_114.csv b/core/src/test/resources/test-data/syncs/name_usage_114.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_114.csv rename to core/src/test/resources/test-data/syncs/name_usage_114.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_115.csv b/core/src/test/resources/test-data/syncs/name_usage_115.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_115.csv rename to core/src/test/resources/test-data/syncs/name_usage_115.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_116.csv b/core/src/test/resources/test-data/syncs/name_usage_116.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_116.csv rename to core/src/test/resources/test-data/syncs/name_usage_116.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_117.csv b/core/src/test/resources/test-data/syncs/name_usage_117.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_117.csv rename to core/src/test/resources/test-data/syncs/name_usage_117.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_118.csv b/core/src/test/resources/test-data/syncs/name_usage_118.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_118.csv rename to core/src/test/resources/test-data/syncs/name_usage_118.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_119.csv b/core/src/test/resources/test-data/syncs/name_usage_119.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_119.csv rename to core/src/test/resources/test-data/syncs/name_usage_119.csv diff --git a/webservice/src/test/resources/test-data/syncs/name_usage_120.csv b/core/src/test/resources/test-data/syncs/name_usage_120.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/name_usage_120.csv rename to core/src/test/resources/test-data/syncs/name_usage_120.csv diff --git a/webservice/src/test/resources/test-data/syncs/reference_102.csv b/core/src/test/resources/test-data/syncs/reference_102.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/reference_102.csv rename to core/src/test/resources/test-data/syncs/reference_102.csv diff --git a/webservice/src/test/resources/test-data/syncs/reference_103.csv b/core/src/test/resources/test-data/syncs/reference_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/reference_103.csv rename to core/src/test/resources/test-data/syncs/reference_103.csv diff --git a/webservice/src/test/resources/test-data/syncs/reference_109.csv b/core/src/test/resources/test-data/syncs/reference_109.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/reference_109.csv rename to core/src/test/resources/test-data/syncs/reference_109.csv diff --git a/webservice/src/test/resources/test-data/syncs/reference_110.csv b/core/src/test/resources/test-data/syncs/reference_110.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/reference_110.csv rename to core/src/test/resources/test-data/syncs/reference_110.csv diff --git a/webservice/src/test/resources/test-data/syncs/reference_115.csv b/core/src/test/resources/test-data/syncs/reference_115.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/reference_115.csv rename to core/src/test/resources/test-data/syncs/reference_115.csv diff --git a/webservice/src/test/resources/test-data/syncs/type_material_103.csv b/core/src/test/resources/test-data/syncs/type_material_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/type_material_103.csv rename to core/src/test/resources/test-data/syncs/type_material_103.csv diff --git a/webservice/src/test/resources/test-data/syncs/vernacular_name_102.csv b/core/src/test/resources/test-data/syncs/vernacular_name_102.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/vernacular_name_102.csv rename to core/src/test/resources/test-data/syncs/vernacular_name_102.csv diff --git a/webservice/src/test/resources/test-data/syncs/vernacular_name_103.csv b/core/src/test/resources/test-data/syncs/vernacular_name_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/syncs/vernacular_name_103.csv rename to core/src/test/resources/test-data/syncs/vernacular_name_103.csv diff --git a/webservice/src/test/resources/test-data/xcol/dataset.csv b/core/src/test/resources/test-data/xcol/dataset.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/dataset.csv rename to core/src/test/resources/test-data/xcol/dataset.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_101.csv b/core/src/test/resources/test-data/xcol/name_101.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_101.csv rename to core/src/test/resources/test-data/xcol/name_101.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_102.csv b/core/src/test/resources/test-data/xcol/name_102.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_102.csv rename to core/src/test/resources/test-data/xcol/name_102.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_103.csv b/core/src/test/resources/test-data/xcol/name_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_103.csv rename to core/src/test/resources/test-data/xcol/name_103.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_104.csv b/core/src/test/resources/test-data/xcol/name_104.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_104.csv rename to core/src/test/resources/test-data/xcol/name_104.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_105.csv b/core/src/test/resources/test-data/xcol/name_105.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_105.csv rename to core/src/test/resources/test-data/xcol/name_105.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_106.csv b/core/src/test/resources/test-data/xcol/name_106.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_106.csv rename to core/src/test/resources/test-data/xcol/name_106.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_107.csv b/core/src/test/resources/test-data/xcol/name_107.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_107.csv rename to core/src/test/resources/test-data/xcol/name_107.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_108.csv b/core/src/test/resources/test-data/xcol/name_108.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_108.csv rename to core/src/test/resources/test-data/xcol/name_108.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_109.csv b/core/src/test/resources/test-data/xcol/name_109.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_109.csv rename to core/src/test/resources/test-data/xcol/name_109.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_3.csv b/core/src/test/resources/test-data/xcol/name_3.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_3.csv rename to core/src/test/resources/test-data/xcol/name_3.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_4.csv b/core/src/test/resources/test-data/xcol/name_4.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_4.csv rename to core/src/test/resources/test-data/xcol/name_4.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_usage_101.csv b/core/src/test/resources/test-data/xcol/name_usage_101.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_usage_101.csv rename to core/src/test/resources/test-data/xcol/name_usage_101.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_usage_102.csv b/core/src/test/resources/test-data/xcol/name_usage_102.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_usage_102.csv rename to core/src/test/resources/test-data/xcol/name_usage_102.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_usage_103.csv b/core/src/test/resources/test-data/xcol/name_usage_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_usage_103.csv rename to core/src/test/resources/test-data/xcol/name_usage_103.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_usage_104.csv b/core/src/test/resources/test-data/xcol/name_usage_104.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_usage_104.csv rename to core/src/test/resources/test-data/xcol/name_usage_104.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_usage_105.csv b/core/src/test/resources/test-data/xcol/name_usage_105.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_usage_105.csv rename to core/src/test/resources/test-data/xcol/name_usage_105.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_usage_106.csv b/core/src/test/resources/test-data/xcol/name_usage_106.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_usage_106.csv rename to core/src/test/resources/test-data/xcol/name_usage_106.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_usage_107.csv b/core/src/test/resources/test-data/xcol/name_usage_107.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_usage_107.csv rename to core/src/test/resources/test-data/xcol/name_usage_107.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_usage_108.csv b/core/src/test/resources/test-data/xcol/name_usage_108.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_usage_108.csv rename to core/src/test/resources/test-data/xcol/name_usage_108.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_usage_109.csv b/core/src/test/resources/test-data/xcol/name_usage_109.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_usage_109.csv rename to core/src/test/resources/test-data/xcol/name_usage_109.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_usage_3.csv b/core/src/test/resources/test-data/xcol/name_usage_3.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_usage_3.csv rename to core/src/test/resources/test-data/xcol/name_usage_3.csv diff --git a/webservice/src/test/resources/test-data/xcol/name_usage_4.csv b/core/src/test/resources/test-data/xcol/name_usage_4.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/name_usage_4.csv rename to core/src/test/resources/test-data/xcol/name_usage_4.csv diff --git a/webservice/src/test/resources/test-data/xcol/sector.csv b/core/src/test/resources/test-data/xcol/sector.csv similarity index 100% rename from webservice/src/test/resources/test-data/xcol/sector.csv rename to core/src/test/resources/test-data/xcol/sector.csv diff --git a/webservice/src/test/resources/test-data/xrelease/dataset.csv b/core/src/test/resources/test-data/xrelease/dataset.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/dataset.csv rename to core/src/test/resources/test-data/xrelease/dataset.csv diff --git a/webservice/src/test/resources/test-data/xrelease/dataset_import.csv b/core/src/test/resources/test-data/xrelease/dataset_import.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/dataset_import.csv rename to core/src/test/resources/test-data/xrelease/dataset_import.csv diff --git a/webservice/src/test/resources/test-data/xrelease/name_100.csv b/core/src/test/resources/test-data/xrelease/name_100.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/name_100.csv rename to core/src/test/resources/test-data/xrelease/name_100.csv diff --git a/webservice/src/test/resources/test-data/xrelease/name_101.csv b/core/src/test/resources/test-data/xrelease/name_101.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/name_101.csv rename to core/src/test/resources/test-data/xrelease/name_101.csv diff --git a/webservice/src/test/resources/test-data/xrelease/name_102.csv b/core/src/test/resources/test-data/xrelease/name_102.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/name_102.csv rename to core/src/test/resources/test-data/xrelease/name_102.csv diff --git a/webservice/src/test/resources/test-data/xrelease/name_103.csv b/core/src/test/resources/test-data/xrelease/name_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/name_103.csv rename to core/src/test/resources/test-data/xrelease/name_103.csv diff --git a/webservice/src/test/resources/test-data/xrelease/name_13.csv b/core/src/test/resources/test-data/xrelease/name_13.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/name_13.csv rename to core/src/test/resources/test-data/xrelease/name_13.csv diff --git a/webservice/src/test/resources/test-data/xrelease/name_relation_100.csv b/core/src/test/resources/test-data/xrelease/name_relation_100.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/name_relation_100.csv rename to core/src/test/resources/test-data/xrelease/name_relation_100.csv diff --git a/webservice/src/test/resources/test-data/xrelease/name_usage_100.csv b/core/src/test/resources/test-data/xrelease/name_usage_100.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/name_usage_100.csv rename to core/src/test/resources/test-data/xrelease/name_usage_100.csv diff --git a/webservice/src/test/resources/test-data/xrelease/name_usage_101.csv b/core/src/test/resources/test-data/xrelease/name_usage_101.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/name_usage_101.csv rename to core/src/test/resources/test-data/xrelease/name_usage_101.csv diff --git a/webservice/src/test/resources/test-data/xrelease/name_usage_102.csv b/core/src/test/resources/test-data/xrelease/name_usage_102.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/name_usage_102.csv rename to core/src/test/resources/test-data/xrelease/name_usage_102.csv diff --git a/webservice/src/test/resources/test-data/xrelease/name_usage_103.csv b/core/src/test/resources/test-data/xrelease/name_usage_103.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/name_usage_103.csv rename to core/src/test/resources/test-data/xrelease/name_usage_103.csv diff --git a/webservice/src/test/resources/test-data/xrelease/name_usage_13.csv b/core/src/test/resources/test-data/xrelease/name_usage_13.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/name_usage_13.csv rename to core/src/test/resources/test-data/xrelease/name_usage_13.csv diff --git a/webservice/src/test/resources/test-data/xrelease/reference_100.csv b/core/src/test/resources/test-data/xrelease/reference_100.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/reference_100.csv rename to core/src/test/resources/test-data/xrelease/reference_100.csv diff --git a/webservice/src/test/resources/test-data/xrelease/reference_101.csv b/core/src/test/resources/test-data/xrelease/reference_101.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/reference_101.csv rename to core/src/test/resources/test-data/xrelease/reference_101.csv diff --git a/webservice/src/test/resources/test-data/xrelease/reference_13.csv b/core/src/test/resources/test-data/xrelease/reference_13.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/reference_13.csv rename to core/src/test/resources/test-data/xrelease/reference_13.csv diff --git a/webservice/src/test/resources/test-data/xrelease/sector.csv b/core/src/test/resources/test-data/xrelease/sector.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/sector.csv rename to core/src/test/resources/test-data/xrelease/sector.csv diff --git a/webservice/src/test/resources/test-data/xrelease/verbatim_source_13.csv b/core/src/test/resources/test-data/xrelease/verbatim_source_13.csv similarity index 100% rename from webservice/src/test/resources/test-data/xrelease/verbatim_source_13.csv rename to core/src/test/resources/test-data/xrelease/verbatim_source_13.csv diff --git a/webservice/src/test/resources/traverse/tree-order.txt b/core/src/test/resources/traverse/tree-order.txt similarity index 100% rename from webservice/src/test/resources/traverse/tree-order.txt rename to core/src/test/resources/traverse/tree-order.txt diff --git a/webservice/src/test/resources/traverse/tree.txt b/core/src/test/resources/traverse/tree.txt similarity index 100% rename from webservice/src/test/resources/traverse/tree.txt rename to core/src/test/resources/traverse/tree.txt diff --git a/webservice/src/test/resources/traverse/treeAccepted.txt b/core/src/test/resources/traverse/treeAccepted.txt similarity index 100% rename from webservice/src/test/resources/traverse/treeAccepted.txt rename to core/src/test/resources/traverse/treeAccepted.txt diff --git a/webservice/src/test/resources/traverse/treeAcceptedGenus.txt b/core/src/test/resources/traverse/treeAcceptedGenus.txt similarity index 100% rename from webservice/src/test/resources/traverse/treeAcceptedGenus.txt rename to core/src/test/resources/traverse/treeAcceptedGenus.txt diff --git a/webservice/src/test/resources/traverse/treeBasionym.txt b/core/src/test/resources/traverse/treeBasionym.txt similarity index 100% rename from webservice/src/test/resources/traverse/treeBasionym.txt rename to core/src/test/resources/traverse/treeBasionym.txt diff --git a/webservice/src/test/resources/traverse/treeGenus.txt b/core/src/test/resources/traverse/treeGenus.txt similarity index 100% rename from webservice/src/test/resources/traverse/treeGenus.txt rename to core/src/test/resources/traverse/treeGenus.txt diff --git a/webservice/src/test/resources/traverse/treePhylum.txt b/core/src/test/resources/traverse/treePhylum.txt similarity index 100% rename from webservice/src/test/resources/traverse/treePhylum.txt rename to core/src/test/resources/traverse/treePhylum.txt diff --git a/webservice/src/test/resources/txtree/abas/expected.txtree b/core/src/test/resources/txtree/abas/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/abas/expected.txtree rename to core/src/test/resources/txtree/abas/expected.txtree diff --git a/webservice/src/test/resources/txtree/abas/pbdb.txtree b/core/src/test/resources/txtree/abas/pbdb.txtree similarity index 100% rename from webservice/src/test/resources/txtree/abas/pbdb.txtree rename to core/src/test/resources/txtree/abas/pbdb.txtree diff --git a/webservice/src/test/resources/txtree/abas/pbdb.yaml b/core/src/test/resources/txtree/abas/pbdb.yaml similarity index 100% rename from webservice/src/test/resources/txtree/abas/pbdb.yaml rename to core/src/test/resources/txtree/abas/pbdb.yaml diff --git a/webservice/src/test/resources/txtree/abas/project.txtree b/core/src/test/resources/txtree/abas/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/abas/project.txtree rename to core/src/test/resources/txtree/abas/project.txtree diff --git a/webservice/src/test/resources/txtree/abas/readme.md b/core/src/test/resources/txtree/abas/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/abas/readme.md rename to core/src/test/resources/txtree/abas/readme.md diff --git a/webservice/src/test/resources/txtree/abas/worms.txtree b/core/src/test/resources/txtree/abas/worms.txtree similarity index 100% rename from webservice/src/test/resources/txtree/abas/worms.txtree rename to core/src/test/resources/txtree/abas/worms.txtree diff --git a/webservice/src/test/resources/txtree/abas/worms.yaml b/core/src/test/resources/txtree/abas/worms.yaml similarity index 100% rename from webservice/src/test/resources/txtree/abas/worms.yaml rename to core/src/test/resources/txtree/abas/worms.yaml diff --git a/webservice/src/test/resources/txtree/abronia/itis.txtree b/core/src/test/resources/txtree/abronia/itis.txtree similarity index 100% rename from webservice/src/test/resources/txtree/abronia/itis.txtree rename to core/src/test/resources/txtree/abronia/itis.txtree diff --git a/webservice/src/test/resources/txtree/abronia/project.txtree b/core/src/test/resources/txtree/abronia/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/abronia/project.txtree rename to core/src/test/resources/txtree/abronia/project.txtree diff --git a/webservice/src/test/resources/txtree/abronia/readme.md b/core/src/test/resources/txtree/abronia/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/abronia/readme.md rename to core/src/test/resources/txtree/abronia/readme.md diff --git a/webservice/src/test/resources/txtree/abronia/repdb.txtree b/core/src/test/resources/txtree/abronia/repdb.txtree similarity index 100% rename from webservice/src/test/resources/txtree/abronia/repdb.txtree rename to core/src/test/resources/txtree/abronia/repdb.txtree diff --git a/webservice/src/test/resources/txtree/abronia/wcvp.txtree b/core/src/test/resources/txtree/abronia/wcvp.txtree similarity index 100% rename from webservice/src/test/resources/txtree/abronia/wcvp.txtree rename to core/src/test/resources/txtree/abronia/wcvp.txtree diff --git a/webservice/src/test/resources/txtree/abronia/xcfg.yaml b/core/src/test/resources/txtree/abronia/xcfg.yaml similarity index 100% rename from webservice/src/test/resources/txtree/abronia/xcfg.yaml rename to core/src/test/resources/txtree/abronia/xcfg.yaml diff --git a/webservice/src/test/resources/txtree/abronia/xrelease.txtree b/core/src/test/resources/txtree/abronia/xrelease.txtree similarity index 100% rename from webservice/src/test/resources/txtree/abronia/xrelease.txtree rename to core/src/test/resources/txtree/abronia/xrelease.txtree diff --git a/webservice/src/test/resources/txtree/anas/azores.txtree b/core/src/test/resources/txtree/anas/azores.txtree similarity index 100% rename from webservice/src/test/resources/txtree/anas/azores.txtree rename to core/src/test/resources/txtree/anas/azores.txtree diff --git a/webservice/src/test/resources/txtree/anas/expected.txtree b/core/src/test/resources/txtree/anas/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/anas/expected.txtree rename to core/src/test/resources/txtree/anas/expected.txtree diff --git a/webservice/src/test/resources/txtree/anas/project.txtree b/core/src/test/resources/txtree/anas/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/anas/project.txtree rename to core/src/test/resources/txtree/anas/project.txtree diff --git a/webservice/src/test/resources/txtree/anas/worms.txtree b/core/src/test/resources/txtree/anas/worms.txtree similarity index 100% rename from webservice/src/test/resources/txtree/anas/worms.txtree rename to core/src/test/resources/txtree/anas/worms.txtree diff --git a/webservice/src/test/resources/txtree/anas/xcfg.yaml b/core/src/test/resources/txtree/anas/xcfg.yaml similarity index 100% rename from webservice/src/test/resources/txtree/anas/xcfg.yaml rename to core/src/test/resources/txtree/anas/xcfg.yaml diff --git a/webservice/src/test/resources/txtree/aphanizomenon/dyntaxa.txtree b/core/src/test/resources/txtree/aphanizomenon/dyntaxa.txtree similarity index 100% rename from webservice/src/test/resources/txtree/aphanizomenon/dyntaxa.txtree rename to core/src/test/resources/txtree/aphanizomenon/dyntaxa.txtree diff --git a/webservice/src/test/resources/txtree/aphanizomenon/expected.txtree b/core/src/test/resources/txtree/aphanizomenon/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/aphanizomenon/expected.txtree rename to core/src/test/resources/txtree/aphanizomenon/expected.txtree diff --git a/webservice/src/test/resources/txtree/aphanizomenon/ncbi.txtree b/core/src/test/resources/txtree/aphanizomenon/ncbi.txtree similarity index 100% rename from webservice/src/test/resources/txtree/aphanizomenon/ncbi.txtree rename to core/src/test/resources/txtree/aphanizomenon/ncbi.txtree diff --git a/webservice/src/test/resources/txtree/aphanizomenon/ncbi.yaml b/core/src/test/resources/txtree/aphanizomenon/ncbi.yaml similarity index 100% rename from webservice/src/test/resources/txtree/aphanizomenon/ncbi.yaml rename to core/src/test/resources/txtree/aphanizomenon/ncbi.yaml diff --git a/webservice/src/test/resources/txtree/aphanizomenon/project.txtree b/core/src/test/resources/txtree/aphanizomenon/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/aphanizomenon/project.txtree rename to core/src/test/resources/txtree/aphanizomenon/project.txtree diff --git a/webservice/src/test/resources/txtree/aphanizomenon/readme.md b/core/src/test/resources/txtree/aphanizomenon/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/aphanizomenon/readme.md rename to core/src/test/resources/txtree/aphanizomenon/readme.md diff --git a/webservice/src/test/resources/txtree/aphanizomenon/worms.txtree b/core/src/test/resources/txtree/aphanizomenon/worms.txtree similarity index 100% rename from webservice/src/test/resources/txtree/aphanizomenon/worms.txtree rename to core/src/test/resources/txtree/aphanizomenon/worms.txtree diff --git a/webservice/src/test/resources/txtree/aphanizomenon/worms.yaml b/core/src/test/resources/txtree/aphanizomenon/worms.yaml similarity index 100% rename from webservice/src/test/resources/txtree/aphanizomenon/worms.yaml rename to core/src/test/resources/txtree/aphanizomenon/worms.yaml diff --git a/webservice/src/test/resources/txtree/author-dupes/beetles.txtree b/core/src/test/resources/txtree/author-dupes/beetles.txtree similarity index 100% rename from webservice/src/test/resources/txtree/author-dupes/beetles.txtree rename to core/src/test/resources/txtree/author-dupes/beetles.txtree diff --git a/webservice/src/test/resources/txtree/author-dupes/expected.txtree b/core/src/test/resources/txtree/author-dupes/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/author-dupes/expected.txtree rename to core/src/test/resources/txtree/author-dupes/expected.txtree diff --git a/webservice/src/test/resources/txtree/author-dupes/fake.txtree b/core/src/test/resources/txtree/author-dupes/fake.txtree similarity index 100% rename from webservice/src/test/resources/txtree/author-dupes/fake.txtree rename to core/src/test/resources/txtree/author-dupes/fake.txtree diff --git a/webservice/src/test/resources/txtree/author-dupes/iucn.txtree b/core/src/test/resources/txtree/author-dupes/iucn.txtree similarity index 100% rename from webservice/src/test/resources/txtree/author-dupes/iucn.txtree rename to core/src/test/resources/txtree/author-dupes/iucn.txtree diff --git a/webservice/src/test/resources/txtree/author-dupes/plazi1.txtree b/core/src/test/resources/txtree/author-dupes/plazi1.txtree similarity index 100% rename from webservice/src/test/resources/txtree/author-dupes/plazi1.txtree rename to core/src/test/resources/txtree/author-dupes/plazi1.txtree diff --git a/webservice/src/test/resources/txtree/author-dupes/project.txtree b/core/src/test/resources/txtree/author-dupes/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/author-dupes/project.txtree rename to core/src/test/resources/txtree/author-dupes/project.txtree diff --git a/webservice/src/test/resources/txtree/author-dupes/readme.md b/core/src/test/resources/txtree/author-dupes/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/author-dupes/readme.md rename to core/src/test/resources/txtree/author-dupes/readme.md diff --git a/webservice/src/test/resources/txtree/author-dupes/swiss.txtree b/core/src/test/resources/txtree/author-dupes/swiss.txtree similarity index 100% rename from webservice/src/test/resources/txtree/author-dupes/swiss.txtree rename to core/src/test/resources/txtree/author-dupes/swiss.txtree diff --git a/webservice/src/test/resources/txtree/author-dupes/taiwan.txtree b/core/src/test/resources/txtree/author-dupes/taiwan.txtree similarity index 100% rename from webservice/src/test/resources/txtree/author-dupes/taiwan.txtree rename to core/src/test/resources/txtree/author-dupes/taiwan.txtree diff --git a/webservice/src/test/resources/txtree/author-dupes/taxref.txtree b/core/src/test/resources/txtree/author-dupes/taxref.txtree similarity index 100% rename from webservice/src/test/resources/txtree/author-dupes/taxref.txtree rename to core/src/test/resources/txtree/author-dupes/taxref.txtree diff --git a/webservice/src/test/resources/txtree/biota/expected.txtree b/core/src/test/resources/txtree/biota/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/biota/expected.txtree rename to core/src/test/resources/txtree/biota/expected.txtree diff --git a/webservice/src/test/resources/txtree/biota/ipni.txtree b/core/src/test/resources/txtree/biota/ipni.txtree similarity index 100% rename from webservice/src/test/resources/txtree/biota/ipni.txtree rename to core/src/test/resources/txtree/biota/ipni.txtree diff --git a/webservice/src/test/resources/txtree/biota/lcvp.txtree b/core/src/test/resources/txtree/biota/lcvp.txtree similarity index 100% rename from webservice/src/test/resources/txtree/biota/lcvp.txtree rename to core/src/test/resources/txtree/biota/lcvp.txtree diff --git a/webservice/src/test/resources/txtree/biota/project.txtree b/core/src/test/resources/txtree/biota/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/biota/project.txtree rename to core/src/test/resources/txtree/biota/project.txtree diff --git a/webservice/src/test/resources/txtree/biota/wcvp.txtree b/core/src/test/resources/txtree/biota/wcvp.txtree similarity index 100% rename from webservice/src/test/resources/txtree/biota/wcvp.txtree rename to core/src/test/resources/txtree/biota/wcvp.txtree diff --git a/webservice/src/test/resources/txtree/biota2/expected.txtree b/core/src/test/resources/txtree/biota2/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/biota2/expected.txtree rename to core/src/test/resources/txtree/biota2/expected.txtree diff --git a/webservice/src/test/resources/txtree/biota2/ipni.txtree b/core/src/test/resources/txtree/biota2/ipni.txtree similarity index 100% rename from webservice/src/test/resources/txtree/biota2/ipni.txtree rename to core/src/test/resources/txtree/biota2/ipni.txtree diff --git a/webservice/src/test/resources/txtree/biota2/project.txtree b/core/src/test/resources/txtree/biota2/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/biota2/project.txtree rename to core/src/test/resources/txtree/biota2/project.txtree diff --git a/webservice/src/test/resources/txtree/bolyeriidae/expected.txtree b/core/src/test/resources/txtree/bolyeriidae/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/bolyeriidae/expected.txtree rename to core/src/test/resources/txtree/bolyeriidae/expected.txtree diff --git a/webservice/src/test/resources/txtree/bolyeriidae/itis.txtree b/core/src/test/resources/txtree/bolyeriidae/itis.txtree similarity index 100% rename from webservice/src/test/resources/txtree/bolyeriidae/itis.txtree rename to core/src/test/resources/txtree/bolyeriidae/itis.txtree diff --git a/webservice/src/test/resources/txtree/bolyeriidae/pbdb.txtree b/core/src/test/resources/txtree/bolyeriidae/pbdb.txtree similarity index 100% rename from webservice/src/test/resources/txtree/bolyeriidae/pbdb.txtree rename to core/src/test/resources/txtree/bolyeriidae/pbdb.txtree diff --git a/webservice/src/test/resources/txtree/bolyeriidae/project.txtree b/core/src/test/resources/txtree/bolyeriidae/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/bolyeriidae/project.txtree rename to core/src/test/resources/txtree/bolyeriidae/project.txtree diff --git a/webservice/src/test/resources/txtree/bolyeriidae/readme.md b/core/src/test/resources/txtree/bolyeriidae/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/bolyeriidae/readme.md rename to core/src/test/resources/txtree/bolyeriidae/readme.md diff --git a/webservice/src/test/resources/txtree/bolyeriidae/reptiledb.txtree b/core/src/test/resources/txtree/bolyeriidae/reptiledb.txtree similarity index 100% rename from webservice/src/test/resources/txtree/bolyeriidae/reptiledb.txtree rename to core/src/test/resources/txtree/bolyeriidae/reptiledb.txtree diff --git a/webservice/src/test/resources/txtree/bolyeriidae/uksi.txtree b/core/src/test/resources/txtree/bolyeriidae/uksi.txtree similarity index 100% rename from webservice/src/test/resources/txtree/bolyeriidae/uksi.txtree rename to core/src/test/resources/txtree/bolyeriidae/uksi.txtree diff --git a/webservice/src/test/resources/txtree/cactus/expected.txtree b/core/src/test/resources/txtree/cactus/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/cactus/expected.txtree rename to core/src/test/resources/txtree/cactus/expected.txtree diff --git a/webservice/src/test/resources/txtree/cactus/grin.txtree b/core/src/test/resources/txtree/cactus/grin.txtree similarity index 100% rename from webservice/src/test/resources/txtree/cactus/grin.txtree rename to core/src/test/resources/txtree/cactus/grin.txtree diff --git a/webservice/src/test/resources/txtree/cactus/pbdb.txtree b/core/src/test/resources/txtree/cactus/pbdb.txtree similarity index 100% rename from webservice/src/test/resources/txtree/cactus/pbdb.txtree rename to core/src/test/resources/txtree/cactus/pbdb.txtree diff --git a/webservice/src/test/resources/txtree/cactus/project.txtree b/core/src/test/resources/txtree/cactus/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/cactus/project.txtree rename to core/src/test/resources/txtree/cactus/project.txtree diff --git a/webservice/src/test/resources/txtree/cactus/readme.md b/core/src/test/resources/txtree/cactus/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/cactus/readme.md rename to core/src/test/resources/txtree/cactus/readme.md diff --git a/webservice/src/test/resources/txtree/cactus/taxref.txtree b/core/src/test/resources/txtree/cactus/taxref.txtree similarity index 100% rename from webservice/src/test/resources/txtree/cactus/taxref.txtree rename to core/src/test/resources/txtree/cactus/taxref.txtree diff --git a/webservice/src/test/resources/txtree/cactus/tpl.txtree b/core/src/test/resources/txtree/cactus/tpl.txtree similarity index 100% rename from webservice/src/test/resources/txtree/cactus/tpl.txtree rename to core/src/test/resources/txtree/cactus/tpl.txtree diff --git a/webservice/src/test/resources/txtree/cactus/wcvp.txtree b/core/src/test/resources/txtree/cactus/wcvp.txtree similarity index 100% rename from webservice/src/test/resources/txtree/cactus/wcvp.txtree rename to core/src/test/resources/txtree/cactus/wcvp.txtree diff --git a/webservice/src/test/resources/txtree/cactus/wfo.txtree b/core/src/test/resources/txtree/cactus/wfo.txtree similarity index 100% rename from webservice/src/test/resources/txtree/cactus/wfo.txtree rename to core/src/test/resources/txtree/cactus/wfo.txtree diff --git a/webservice/src/test/resources/txtree/circular/expected.txtree b/core/src/test/resources/txtree/circular/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/circular/expected.txtree rename to core/src/test/resources/txtree/circular/expected.txtree diff --git a/webservice/src/test/resources/txtree/circular/project.txtree b/core/src/test/resources/txtree/circular/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/circular/project.txtree rename to core/src/test/resources/txtree/circular/project.txtree diff --git a/webservice/src/test/resources/txtree/circular/src1.txtree b/core/src/test/resources/txtree/circular/src1.txtree similarity index 100% rename from webservice/src/test/resources/txtree/circular/src1.txtree rename to core/src/test/resources/txtree/circular/src1.txtree diff --git a/webservice/src/test/resources/txtree/circular/src2.txtree b/core/src/test/resources/txtree/circular/src2.txtree similarity index 100% rename from webservice/src/test/resources/txtree/circular/src2.txtree rename to core/src/test/resources/txtree/circular/src2.txtree diff --git a/webservice/src/test/resources/txtree/circular/src3.txtree b/core/src/test/resources/txtree/circular/src3.txtree similarity index 100% rename from webservice/src/test/resources/txtree/circular/src3.txtree rename to core/src/test/resources/txtree/circular/src3.txtree diff --git a/webservice/src/test/resources/txtree/clavaria/expected.txtree b/core/src/test/resources/txtree/clavaria/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/clavaria/expected.txtree rename to core/src/test/resources/txtree/clavaria/expected.txtree diff --git a/webservice/src/test/resources/txtree/clavaria/project.txtree b/core/src/test/resources/txtree/clavaria/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/clavaria/project.txtree rename to core/src/test/resources/txtree/clavaria/project.txtree diff --git a/webservice/src/test/resources/txtree/clavaria/readme.md b/core/src/test/resources/txtree/clavaria/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/clavaria/readme.md rename to core/src/test/resources/txtree/clavaria/readme.md diff --git a/webservice/src/test/resources/txtree/clavaria/unite.txtree b/core/src/test/resources/txtree/clavaria/unite.txtree similarity index 100% rename from webservice/src/test/resources/txtree/clavaria/unite.txtree rename to core/src/test/resources/txtree/clavaria/unite.txtree diff --git a/webservice/src/test/resources/txtree/clavaria/unite.yaml b/core/src/test/resources/txtree/clavaria/unite.yaml similarity index 100% rename from webservice/src/test/resources/txtree/clavaria/unite.yaml rename to core/src/test/resources/txtree/clavaria/unite.yaml diff --git a/webservice/src/test/resources/txtree/convulatum/dyntaxa.txtree b/core/src/test/resources/txtree/convulatum/dyntaxa.txtree similarity index 100% rename from webservice/src/test/resources/txtree/convulatum/dyntaxa.txtree rename to core/src/test/resources/txtree/convulatum/dyntaxa.txtree diff --git a/webservice/src/test/resources/txtree/convulatum/expected.txtree b/core/src/test/resources/txtree/convulatum/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/convulatum/expected.txtree rename to core/src/test/resources/txtree/convulatum/expected.txtree diff --git a/webservice/src/test/resources/txtree/convulatum/project.txtree b/core/src/test/resources/txtree/convulatum/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/convulatum/project.txtree rename to core/src/test/resources/txtree/convulatum/project.txtree diff --git a/webservice/src/test/resources/txtree/doryphora/3i.txtree b/core/src/test/resources/txtree/doryphora/3i.txtree similarity index 100% rename from webservice/src/test/resources/txtree/doryphora/3i.txtree rename to core/src/test/resources/txtree/doryphora/3i.txtree diff --git a/webservice/src/test/resources/txtree/doryphora/coleo.txtree b/core/src/test/resources/txtree/doryphora/coleo.txtree similarity index 100% rename from webservice/src/test/resources/txtree/doryphora/coleo.txtree rename to core/src/test/resources/txtree/doryphora/coleo.txtree diff --git a/webservice/src/test/resources/txtree/doryphora/coleo.yaml b/core/src/test/resources/txtree/doryphora/coleo.yaml similarity index 100% rename from webservice/src/test/resources/txtree/doryphora/coleo.yaml rename to core/src/test/resources/txtree/doryphora/coleo.yaml diff --git a/webservice/src/test/resources/txtree/doryphora/expected.txtree b/core/src/test/resources/txtree/doryphora/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/doryphora/expected.txtree rename to core/src/test/resources/txtree/doryphora/expected.txtree diff --git a/webservice/src/test/resources/txtree/doryphora/pbdb.txtree b/core/src/test/resources/txtree/doryphora/pbdb.txtree similarity index 100% rename from webservice/src/test/resources/txtree/doryphora/pbdb.txtree rename to core/src/test/resources/txtree/doryphora/pbdb.txtree diff --git a/webservice/src/test/resources/txtree/doryphora/project.txtree b/core/src/test/resources/txtree/doryphora/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/doryphora/project.txtree rename to core/src/test/resources/txtree/doryphora/project.txtree diff --git a/webservice/src/test/resources/txtree/doryphora/readme.md b/core/src/test/resources/txtree/doryphora/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/doryphora/readme.md rename to core/src/test/resources/txtree/doryphora/readme.md diff --git a/webservice/src/test/resources/txtree/doryphora/wcvp.txtree b/core/src/test/resources/txtree/doryphora/wcvp.txtree similarity index 100% rename from webservice/src/test/resources/txtree/doryphora/wcvp.txtree rename to core/src/test/resources/txtree/doryphora/wcvp.txtree diff --git a/webservice/src/test/resources/txtree/doryphora/worms.txtree b/core/src/test/resources/txtree/doryphora/worms.txtree similarity index 100% rename from webservice/src/test/resources/txtree/doryphora/worms.txtree rename to core/src/test/resources/txtree/doryphora/worms.txtree diff --git a/webservice/src/test/resources/txtree/doryphora/zoobank.txtree b/core/src/test/resources/txtree/doryphora/zoobank.txtree similarity index 100% rename from webservice/src/test/resources/txtree/doryphora/zoobank.txtree rename to core/src/test/resources/txtree/doryphora/zoobank.txtree diff --git a/webservice/src/test/resources/txtree/dupe-genera/project.txtree b/core/src/test/resources/txtree/dupe-genera/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/dupe-genera/project.txtree rename to core/src/test/resources/txtree/dupe-genera/project.txtree diff --git a/webservice/src/test/resources/txtree/dupe-genera/readme.md b/core/src/test/resources/txtree/dupe-genera/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/dupe-genera/readme.md rename to core/src/test/resources/txtree/dupe-genera/readme.md diff --git a/webservice/src/test/resources/txtree/dupe-genera/src1.txtree b/core/src/test/resources/txtree/dupe-genera/src1.txtree similarity index 100% rename from webservice/src/test/resources/txtree/dupe-genera/src1.txtree rename to core/src/test/resources/txtree/dupe-genera/src1.txtree diff --git a/webservice/src/test/resources/txtree/dupe-genera/src2.txtree b/core/src/test/resources/txtree/dupe-genera/src2.txtree similarity index 100% rename from webservice/src/test/resources/txtree/dupe-genera/src2.txtree rename to core/src/test/resources/txtree/dupe-genera/src2.txtree diff --git a/webservice/src/test/resources/txtree/dupe-genera/xcfg.yaml b/core/src/test/resources/txtree/dupe-genera/xcfg.yaml similarity index 100% rename from webservice/src/test/resources/txtree/dupe-genera/xcfg.yaml rename to core/src/test/resources/txtree/dupe-genera/xcfg.yaml diff --git a/webservice/src/test/resources/txtree/dupe-genera/xrelease.txtree b/core/src/test/resources/txtree/dupe-genera/xrelease.txtree similarity index 100% rename from webservice/src/test/resources/txtree/dupe-genera/xrelease.txtree rename to core/src/test/resources/txtree/dupe-genera/xrelease.txtree diff --git a/webservice/src/test/resources/txtree/ex-authors/project.txtree b/core/src/test/resources/txtree/ex-authors/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/ex-authors/project.txtree rename to core/src/test/resources/txtree/ex-authors/project.txtree diff --git a/webservice/src/test/resources/txtree/ex-authors/readme.md b/core/src/test/resources/txtree/ex-authors/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/ex-authors/readme.md rename to core/src/test/resources/txtree/ex-authors/readme.md diff --git a/webservice/src/test/resources/txtree/ex-authors/uksi.txtree b/core/src/test/resources/txtree/ex-authors/uksi.txtree similarity index 100% rename from webservice/src/test/resources/txtree/ex-authors/uksi.txtree rename to core/src/test/resources/txtree/ex-authors/uksi.txtree diff --git a/webservice/src/test/resources/txtree/ex-authors/worms.txtree b/core/src/test/resources/txtree/ex-authors/worms.txtree similarity index 100% rename from webservice/src/test/resources/txtree/ex-authors/worms.txtree rename to core/src/test/resources/txtree/ex-authors/worms.txtree diff --git a/webservice/src/test/resources/txtree/ex-authors/xcfg.yaml b/core/src/test/resources/txtree/ex-authors/xcfg.yaml similarity index 100% rename from webservice/src/test/resources/txtree/ex-authors/xcfg.yaml rename to core/src/test/resources/txtree/ex-authors/xcfg.yaml diff --git a/webservice/src/test/resources/txtree/ex-authors/xrelease.txtree b/core/src/test/resources/txtree/ex-authors/xrelease.txtree similarity index 100% rename from webservice/src/test/resources/txtree/ex-authors/xrelease.txtree rename to core/src/test/resources/txtree/ex-authors/xrelease.txtree diff --git a/webservice/src/test/resources/txtree/falcata/expected.txtree b/core/src/test/resources/txtree/falcata/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/falcata/expected.txtree rename to core/src/test/resources/txtree/falcata/expected.txtree diff --git a/webservice/src/test/resources/txtree/falcata/griis.txtree b/core/src/test/resources/txtree/falcata/griis.txtree similarity index 100% rename from webservice/src/test/resources/txtree/falcata/griis.txtree rename to core/src/test/resources/txtree/falcata/griis.txtree diff --git a/webservice/src/test/resources/txtree/falcata/project.txtree b/core/src/test/resources/txtree/falcata/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/falcata/project.txtree rename to core/src/test/resources/txtree/falcata/project.txtree diff --git a/webservice/src/test/resources/txtree/homconsolidation-expected.txtree b/core/src/test/resources/txtree/homconsolidation-expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homconsolidation-expected.txtree rename to core/src/test/resources/txtree/homconsolidation-expected.txtree diff --git a/webservice/src/test/resources/txtree/homconsolidation.md b/core/src/test/resources/txtree/homconsolidation.md similarity index 100% rename from webservice/src/test/resources/txtree/homconsolidation.md rename to core/src/test/resources/txtree/homconsolidation.md diff --git a/webservice/src/test/resources/txtree/homconsolidation.txtree b/core/src/test/resources/txtree/homconsolidation.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homconsolidation.txtree rename to core/src/test/resources/txtree/homconsolidation.txtree diff --git a/webservice/src/test/resources/txtree/homonyms/ala.txtree b/core/src/test/resources/txtree/homonyms/ala.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homonyms/ala.txtree rename to core/src/test/resources/txtree/homonyms/ala.txtree diff --git a/webservice/src/test/resources/txtree/homonyms/expected.txtree b/core/src/test/resources/txtree/homonyms/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homonyms/expected.txtree rename to core/src/test/resources/txtree/homonyms/expected.txtree diff --git a/webservice/src/test/resources/txtree/homonyms/ipni.txtree b/core/src/test/resources/txtree/homonyms/ipni.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homonyms/ipni.txtree rename to core/src/test/resources/txtree/homonyms/ipni.txtree diff --git a/webservice/src/test/resources/txtree/homonyms/irmng.txtree b/core/src/test/resources/txtree/homonyms/irmng.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homonyms/irmng.txtree rename to core/src/test/resources/txtree/homonyms/irmng.txtree diff --git a/webservice/src/test/resources/txtree/homonyms/itis.txtree b/core/src/test/resources/txtree/homonyms/itis.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homonyms/itis.txtree rename to core/src/test/resources/txtree/homonyms/itis.txtree diff --git a/webservice/src/test/resources/txtree/homonyms/project.txtree b/core/src/test/resources/txtree/homonyms/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homonyms/project.txtree rename to core/src/test/resources/txtree/homonyms/project.txtree diff --git a/webservice/src/test/resources/txtree/homonyms/taxref.txtree b/core/src/test/resources/txtree/homonyms/taxref.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homonyms/taxref.txtree rename to core/src/test/resources/txtree/homonyms/taxref.txtree diff --git a/webservice/src/test/resources/txtree/homonyms/wcvp.txtree b/core/src/test/resources/txtree/homonyms/wcvp.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homonyms/wcvp.txtree rename to core/src/test/resources/txtree/homonyms/wcvp.txtree diff --git a/webservice/src/test/resources/txtree/homonyms/worms.txtree b/core/src/test/resources/txtree/homonyms/worms.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homonyms/worms.txtree rename to core/src/test/resources/txtree/homonyms/worms.txtree diff --git a/webservice/src/test/resources/txtree/homonyms/xcfg.yaml b/core/src/test/resources/txtree/homonyms/xcfg.yaml similarity index 100% rename from webservice/src/test/resources/txtree/homonyms/xcfg.yaml rename to core/src/test/resources/txtree/homonyms/xcfg.yaml diff --git a/webservice/src/test/resources/txtree/homonyms/xrelease.txtree b/core/src/test/resources/txtree/homonyms/xrelease.txtree similarity index 100% rename from webservice/src/test/resources/txtree/homonyms/xrelease.txtree rename to core/src/test/resources/txtree/homonyms/xrelease.txtree diff --git a/webservice/src/test/resources/txtree/incertae/nomen.txtree b/core/src/test/resources/txtree/incertae/nomen.txtree similarity index 100% rename from webservice/src/test/resources/txtree/incertae/nomen.txtree rename to core/src/test/resources/txtree/incertae/nomen.txtree diff --git a/webservice/src/test/resources/txtree/incertae/nomen.yaml b/core/src/test/resources/txtree/incertae/nomen.yaml similarity index 100% rename from webservice/src/test/resources/txtree/incertae/nomen.yaml rename to core/src/test/resources/txtree/incertae/nomen.yaml diff --git a/webservice/src/test/resources/txtree/incertae/project.txtree b/core/src/test/resources/txtree/incertae/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/incertae/project.txtree rename to core/src/test/resources/txtree/incertae/project.txtree diff --git a/webservice/src/test/resources/txtree/incertae/readme.md b/core/src/test/resources/txtree/incertae/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/incertae/readme.md rename to core/src/test/resources/txtree/incertae/readme.md diff --git a/webservice/src/test/resources/txtree/incertae/sedis.txtree b/core/src/test/resources/txtree/incertae/sedis.txtree similarity index 100% rename from webservice/src/test/resources/txtree/incertae/sedis.txtree rename to core/src/test/resources/txtree/incertae/sedis.txtree diff --git a/webservice/src/test/resources/txtree/incertae/src2.txtree b/core/src/test/resources/txtree/incertae/src2.txtree similarity index 100% rename from webservice/src/test/resources/txtree/incertae/src2.txtree rename to core/src/test/resources/txtree/incertae/src2.txtree diff --git a/webservice/src/test/resources/txtree/incertae/xcfg.yaml b/core/src/test/resources/txtree/incertae/xcfg.yaml similarity index 100% rename from webservice/src/test/resources/txtree/incertae/xcfg.yaml rename to core/src/test/resources/txtree/incertae/xcfg.yaml diff --git a/webservice/src/test/resources/txtree/incertae/xrelease.txtree b/core/src/test/resources/txtree/incertae/xrelease.txtree similarity index 100% rename from webservice/src/test/resources/txtree/incertae/xrelease.txtree rename to core/src/test/resources/txtree/incertae/xrelease.txtree diff --git a/webservice/src/test/resources/txtree/inverse_ranks/project.txtree b/core/src/test/resources/txtree/inverse_ranks/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/inverse_ranks/project.txtree rename to core/src/test/resources/txtree/inverse_ranks/project.txtree diff --git a/webservice/src/test/resources/txtree/inverse_ranks/repdb.txtree b/core/src/test/resources/txtree/inverse_ranks/repdb.txtree similarity index 100% rename from webservice/src/test/resources/txtree/inverse_ranks/repdb.txtree rename to core/src/test/resources/txtree/inverse_ranks/repdb.txtree diff --git a/webservice/src/test/resources/txtree/inverse_ranks/xcfg.yaml b/core/src/test/resources/txtree/inverse_ranks/xcfg.yaml similarity index 100% rename from webservice/src/test/resources/txtree/inverse_ranks/xcfg.yaml rename to core/src/test/resources/txtree/inverse_ranks/xcfg.yaml diff --git a/webservice/src/test/resources/txtree/inverse_ranks/xrelease.txtree b/core/src/test/resources/txtree/inverse_ranks/xrelease.txtree similarity index 100% rename from webservice/src/test/resources/txtree/inverse_ranks/xrelease.txtree rename to core/src/test/resources/txtree/inverse_ranks/xrelease.txtree diff --git a/webservice/src/test/resources/txtree/issues/bad.txtree b/core/src/test/resources/txtree/issues/bad.txtree similarity index 100% rename from webservice/src/test/resources/txtree/issues/bad.txtree rename to core/src/test/resources/txtree/issues/bad.txtree diff --git a/webservice/src/test/resources/txtree/issues/bad.yaml b/core/src/test/resources/txtree/issues/bad.yaml similarity index 100% rename from webservice/src/test/resources/txtree/issues/bad.yaml rename to core/src/test/resources/txtree/issues/bad.yaml diff --git a/webservice/src/test/resources/txtree/issues/expected.txtree b/core/src/test/resources/txtree/issues/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/issues/expected.txtree rename to core/src/test/resources/txtree/issues/expected.txtree diff --git a/webservice/src/test/resources/txtree/issues/project.txtree b/core/src/test/resources/txtree/issues/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/issues/project.txtree rename to core/src/test/resources/txtree/issues/project.txtree diff --git a/webservice/src/test/resources/txtree/myosotis/bavaria.txtree b/core/src/test/resources/txtree/myosotis/bavaria.txtree similarity index 100% rename from webservice/src/test/resources/txtree/myosotis/bavaria.txtree rename to core/src/test/resources/txtree/myosotis/bavaria.txtree diff --git a/webservice/src/test/resources/txtree/myosotis/expected.txtree b/core/src/test/resources/txtree/myosotis/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/myosotis/expected.txtree rename to core/src/test/resources/txtree/myosotis/expected.txtree diff --git a/webservice/src/test/resources/txtree/myosotis/pbdb.txtree b/core/src/test/resources/txtree/myosotis/pbdb.txtree similarity index 100% rename from webservice/src/test/resources/txtree/myosotis/pbdb.txtree rename to core/src/test/resources/txtree/myosotis/pbdb.txtree diff --git a/webservice/src/test/resources/txtree/myosotis/project.txtree b/core/src/test/resources/txtree/myosotis/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/myosotis/project.txtree rename to core/src/test/resources/txtree/myosotis/project.txtree diff --git a/webservice/src/test/resources/txtree/myosotis/readme.md b/core/src/test/resources/txtree/myosotis/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/myosotis/readme.md rename to core/src/test/resources/txtree/myosotis/readme.md diff --git a/webservice/src/test/resources/txtree/myosotis/taxref.txtree b/core/src/test/resources/txtree/myosotis/taxref.txtree similarity index 100% rename from webservice/src/test/resources/txtree/myosotis/taxref.txtree rename to core/src/test/resources/txtree/myosotis/taxref.txtree diff --git a/webservice/src/test/resources/txtree/myosotis/uksi.txtree b/core/src/test/resources/txtree/myosotis/uksi.txtree similarity index 100% rename from webservice/src/test/resources/txtree/myosotis/uksi.txtree rename to core/src/test/resources/txtree/myosotis/uksi.txtree diff --git a/webservice/src/test/resources/txtree/nidx-rebuild/0.txtree b/core/src/test/resources/txtree/nidx-rebuild/0.txtree similarity index 100% rename from webservice/src/test/resources/txtree/nidx-rebuild/0.txtree rename to core/src/test/resources/txtree/nidx-rebuild/0.txtree diff --git a/webservice/src/test/resources/txtree/nidx-rebuild/1.txtree b/core/src/test/resources/txtree/nidx-rebuild/1.txtree similarity index 100% rename from webservice/src/test/resources/txtree/nidx-rebuild/1.txtree rename to core/src/test/resources/txtree/nidx-rebuild/1.txtree diff --git a/webservice/src/test/resources/txtree/nidx-rebuild/2.txtree b/core/src/test/resources/txtree/nidx-rebuild/2.txtree similarity index 100% rename from webservice/src/test/resources/txtree/nidx-rebuild/2.txtree rename to core/src/test/resources/txtree/nidx-rebuild/2.txtree diff --git a/webservice/src/test/resources/txtree/nidx-rebuild/3.txtree b/core/src/test/resources/txtree/nidx-rebuild/3.txtree similarity index 100% rename from webservice/src/test/resources/txtree/nidx-rebuild/3.txtree rename to core/src/test/resources/txtree/nidx-rebuild/3.txtree diff --git a/webservice/src/test/resources/txtree/nidx-rebuild/4.txtree b/core/src/test/resources/txtree/nidx-rebuild/4.txtree similarity index 100% rename from webservice/src/test/resources/txtree/nidx-rebuild/4.txtree rename to core/src/test/resources/txtree/nidx-rebuild/4.txtree diff --git a/webservice/src/test/resources/txtree/nidx-rebuild/5.txtree b/core/src/test/resources/txtree/nidx-rebuild/5.txtree similarity index 100% rename from webservice/src/test/resources/txtree/nidx-rebuild/5.txtree rename to core/src/test/resources/txtree/nidx-rebuild/5.txtree diff --git a/webservice/src/test/resources/txtree/nidx-rebuild/6.txtree b/core/src/test/resources/txtree/nidx-rebuild/6.txtree similarity index 100% rename from webservice/src/test/resources/txtree/nidx-rebuild/6.txtree rename to core/src/test/resources/txtree/nidx-rebuild/6.txtree diff --git a/webservice/src/test/resources/txtree/nidx-rebuild/7.txtree b/core/src/test/resources/txtree/nidx-rebuild/7.txtree similarity index 100% rename from webservice/src/test/resources/txtree/nidx-rebuild/7.txtree rename to core/src/test/resources/txtree/nidx-rebuild/7.txtree diff --git a/webservice/src/test/resources/txtree/nidx-rebuild/8.txtree b/core/src/test/resources/txtree/nidx-rebuild/8.txtree similarity index 100% rename from webservice/src/test/resources/txtree/nidx-rebuild/8.txtree rename to core/src/test/resources/txtree/nidx-rebuild/8.txtree diff --git a/webservice/src/test/resources/txtree/nidx-rebuild/9.txtree b/core/src/test/resources/txtree/nidx-rebuild/9.txtree similarity index 100% rename from webservice/src/test/resources/txtree/nidx-rebuild/9.txtree rename to core/src/test/resources/txtree/nidx-rebuild/9.txtree diff --git a/webservice/src/test/resources/txtree/nidx-rebuild/dupe.txtree b/core/src/test/resources/txtree/nidx-rebuild/dupe.txtree similarity index 100% rename from webservice/src/test/resources/txtree/nidx-rebuild/dupe.txtree rename to core/src/test/resources/txtree/nidx-rebuild/dupe.txtree diff --git a/webservice/src/test/resources/txtree/proparte/3i.txtree b/core/src/test/resources/txtree/proparte/3i.txtree similarity index 100% rename from webservice/src/test/resources/txtree/proparte/3i.txtree rename to core/src/test/resources/txtree/proparte/3i.txtree diff --git a/webservice/src/test/resources/txtree/proparte/3i.yaml b/core/src/test/resources/txtree/proparte/3i.yaml similarity index 100% rename from webservice/src/test/resources/txtree/proparte/3i.yaml rename to core/src/test/resources/txtree/proparte/3i.yaml diff --git a/webservice/src/test/resources/txtree/proparte/expected.txtree b/core/src/test/resources/txtree/proparte/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/proparte/expected.txtree rename to core/src/test/resources/txtree/proparte/expected.txtree diff --git a/webservice/src/test/resources/txtree/proparte/project.txtree b/core/src/test/resources/txtree/proparte/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/proparte/project.txtree rename to core/src/test/resources/txtree/proparte/project.txtree diff --git a/webservice/src/test/resources/txtree/proparte/readme.md b/core/src/test/resources/txtree/proparte/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/proparte/readme.md rename to core/src/test/resources/txtree/proparte/readme.md diff --git a/webservice/src/test/resources/txtree/protoperidinium/artsnavebasen.txtree b/core/src/test/resources/txtree/protoperidinium/artsnavebasen.txtree similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/artsnavebasen.txtree rename to core/src/test/resources/txtree/protoperidinium/artsnavebasen.txtree diff --git a/webservice/src/test/resources/txtree/protoperidinium/brazil.txtree b/core/src/test/resources/txtree/protoperidinium/brazil.txtree similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/brazil.txtree rename to core/src/test/resources/txtree/protoperidinium/brazil.txtree diff --git a/webservice/src/test/resources/txtree/protoperidinium/decisions.yaml b/core/src/test/resources/txtree/protoperidinium/decisions.yaml similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/decisions.yaml rename to core/src/test/resources/txtree/protoperidinium/decisions.yaml diff --git a/webservice/src/test/resources/txtree/protoperidinium/dyntaxa.txtree b/core/src/test/resources/txtree/protoperidinium/dyntaxa.txtree similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/dyntaxa.txtree rename to core/src/test/resources/txtree/protoperidinium/dyntaxa.txtree diff --git a/webservice/src/test/resources/txtree/protoperidinium/expected-with-decisions.txtree b/core/src/test/resources/txtree/protoperidinium/expected-with-decisions.txtree similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/expected-with-decisions.txtree rename to core/src/test/resources/txtree/protoperidinium/expected-with-decisions.txtree diff --git a/webservice/src/test/resources/txtree/protoperidinium/expected.txtree b/core/src/test/resources/txtree/protoperidinium/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/expected.txtree rename to core/src/test/resources/txtree/protoperidinium/expected.txtree diff --git a/webservice/src/test/resources/txtree/protoperidinium/griis.txtree b/core/src/test/resources/txtree/protoperidinium/griis.txtree similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/griis.txtree rename to core/src/test/resources/txtree/protoperidinium/griis.txtree diff --git a/webservice/src/test/resources/txtree/protoperidinium/itis.txtree b/core/src/test/resources/txtree/protoperidinium/itis.txtree similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/itis.txtree rename to core/src/test/resources/txtree/protoperidinium/itis.txtree diff --git a/webservice/src/test/resources/txtree/protoperidinium/itis.yaml b/core/src/test/resources/txtree/protoperidinium/itis.yaml similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/itis.yaml rename to core/src/test/resources/txtree/protoperidinium/itis.yaml diff --git a/webservice/src/test/resources/txtree/protoperidinium/project.txtree b/core/src/test/resources/txtree/protoperidinium/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/project.txtree rename to core/src/test/resources/txtree/protoperidinium/project.txtree diff --git a/webservice/src/test/resources/txtree/protoperidinium/readme.md b/core/src/test/resources/txtree/protoperidinium/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/readme.md rename to core/src/test/resources/txtree/protoperidinium/readme.md diff --git a/webservice/src/test/resources/txtree/protoperidinium/taxref.txtree b/core/src/test/resources/txtree/protoperidinium/taxref.txtree similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/taxref.txtree rename to core/src/test/resources/txtree/protoperidinium/taxref.txtree diff --git a/webservice/src/test/resources/txtree/protoperidinium/worms.txtree b/core/src/test/resources/txtree/protoperidinium/worms.txtree similarity index 100% rename from webservice/src/test/resources/txtree/protoperidinium/worms.txtree rename to core/src/test/resources/txtree/protoperidinium/worms.txtree diff --git a/webservice/src/test/resources/txtree/rankorder/expected.txtree b/core/src/test/resources/txtree/rankorder/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/rankorder/expected.txtree rename to core/src/test/resources/txtree/rankorder/expected.txtree diff --git a/webservice/src/test/resources/txtree/rankorder/itis.txtree b/core/src/test/resources/txtree/rankorder/itis.txtree similarity index 100% rename from webservice/src/test/resources/txtree/rankorder/itis.txtree rename to core/src/test/resources/txtree/rankorder/itis.txtree diff --git a/webservice/src/test/resources/txtree/rankorder/project.txtree b/core/src/test/resources/txtree/rankorder/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/rankorder/project.txtree rename to core/src/test/resources/txtree/rankorder/project.txtree diff --git a/webservice/src/test/resources/txtree/rankorder/readme.md b/core/src/test/resources/txtree/rankorder/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/rankorder/readme.md rename to core/src/test/resources/txtree/rankorder/readme.md diff --git a/webservice/src/test/resources/txtree/rankorder/tpl.txtree b/core/src/test/resources/txtree/rankorder/tpl.txtree similarity index 100% rename from webservice/src/test/resources/txtree/rankorder/tpl.txtree rename to core/src/test/resources/txtree/rankorder/tpl.txtree diff --git a/webservice/src/test/resources/txtree/rankorder/wcvp.txtree b/core/src/test/resources/txtree/rankorder/wcvp.txtree similarity index 100% rename from webservice/src/test/resources/txtree/rankorder/wcvp.txtree rename to core/src/test/resources/txtree/rankorder/wcvp.txtree diff --git a/webservice/src/test/resources/txtree/rankorder/wfo.txtree b/core/src/test/resources/txtree/rankorder/wfo.txtree similarity index 100% rename from webservice/src/test/resources/txtree/rankorder/wfo.txtree rename to core/src/test/resources/txtree/rankorder/wfo.txtree diff --git a/webservice/src/test/resources/txtree/saccolomataceae/expected.txtree b/core/src/test/resources/txtree/saccolomataceae/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/saccolomataceae/expected.txtree rename to core/src/test/resources/txtree/saccolomataceae/expected.txtree diff --git a/webservice/src/test/resources/txtree/saccolomataceae/orthiopteris.txtree b/core/src/test/resources/txtree/saccolomataceae/orthiopteris.txtree similarity index 100% rename from webservice/src/test/resources/txtree/saccolomataceae/orthiopteris.txtree rename to core/src/test/resources/txtree/saccolomataceae/orthiopteris.txtree diff --git a/webservice/src/test/resources/txtree/saccolomataceae/project.txtree b/core/src/test/resources/txtree/saccolomataceae/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/saccolomataceae/project.txtree rename to core/src/test/resources/txtree/saccolomataceae/project.txtree diff --git a/webservice/src/test/resources/txtree/sector-parents/expected.txtree b/core/src/test/resources/txtree/sector-parents/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/sector-parents/expected.txtree rename to core/src/test/resources/txtree/sector-parents/expected.txtree diff --git a/webservice/src/test/resources/txtree/sector-parents/none.txtree b/core/src/test/resources/txtree/sector-parents/none.txtree similarity index 100% rename from webservice/src/test/resources/txtree/sector-parents/none.txtree rename to core/src/test/resources/txtree/sector-parents/none.txtree diff --git a/webservice/src/test/resources/txtree/sector-parents/project.txtree b/core/src/test/resources/txtree/sector-parents/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/sector-parents/project.txtree rename to core/src/test/resources/txtree/sector-parents/project.txtree diff --git a/webservice/src/test/resources/txtree/sector-parents/readme.md b/core/src/test/resources/txtree/sector-parents/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/sector-parents/readme.md rename to core/src/test/resources/txtree/sector-parents/readme.md diff --git a/webservice/src/test/resources/txtree/sector-parents/subject-target.txtree b/core/src/test/resources/txtree/sector-parents/subject-target.txtree similarity index 100% rename from webservice/src/test/resources/txtree/sector-parents/subject-target.txtree rename to core/src/test/resources/txtree/sector-parents/subject-target.txtree diff --git a/webservice/src/test/resources/txtree/sector-parents/subject-target.yaml b/core/src/test/resources/txtree/sector-parents/subject-target.yaml similarity index 100% rename from webservice/src/test/resources/txtree/sector-parents/subject-target.yaml rename to core/src/test/resources/txtree/sector-parents/subject-target.yaml diff --git a/webservice/src/test/resources/txtree/sector-parents/subject.txtree b/core/src/test/resources/txtree/sector-parents/subject.txtree similarity index 100% rename from webservice/src/test/resources/txtree/sector-parents/subject.txtree rename to core/src/test/resources/txtree/sector-parents/subject.txtree diff --git a/webservice/src/test/resources/txtree/sector-parents/subject.yaml b/core/src/test/resources/txtree/sector-parents/subject.yaml similarity index 100% rename from webservice/src/test/resources/txtree/sector-parents/subject.yaml rename to core/src/test/resources/txtree/sector-parents/subject.yaml diff --git a/webservice/src/test/resources/txtree/sector-parents/target.txtree b/core/src/test/resources/txtree/sector-parents/target.txtree similarity index 100% rename from webservice/src/test/resources/txtree/sector-parents/target.txtree rename to core/src/test/resources/txtree/sector-parents/target.txtree diff --git a/webservice/src/test/resources/txtree/sector-parents/target.yaml b/core/src/test/resources/txtree/sector-parents/target.yaml similarity index 100% rename from webservice/src/test/resources/txtree/sector-parents/target.yaml rename to core/src/test/resources/txtree/sector-parents/target.yaml diff --git a/webservice/src/test/resources/txtree/sector-parents/xcfg.yaml b/core/src/test/resources/txtree/sector-parents/xcfg.yaml similarity index 100% rename from webservice/src/test/resources/txtree/sector-parents/xcfg.yaml rename to core/src/test/resources/txtree/sector-parents/xcfg.yaml diff --git a/webservice/src/test/resources/txtree/sic/expected.txtree b/core/src/test/resources/txtree/sic/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/sic/expected.txtree rename to core/src/test/resources/txtree/sic/expected.txtree diff --git a/webservice/src/test/resources/txtree/sic/millibase.txtree b/core/src/test/resources/txtree/sic/millibase.txtree similarity index 100% rename from webservice/src/test/resources/txtree/sic/millibase.txtree rename to core/src/test/resources/txtree/sic/millibase.txtree diff --git a/webservice/src/test/resources/txtree/sic/project.txtree b/core/src/test/resources/txtree/sic/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/sic/project.txtree rename to core/src/test/resources/txtree/sic/project.txtree diff --git a/webservice/src/test/resources/txtree/subgenera-fam/2021.txtree b/core/src/test/resources/txtree/subgenera-fam/2021.txtree similarity index 100% rename from webservice/src/test/resources/txtree/subgenera-fam/2021.txtree rename to core/src/test/resources/txtree/subgenera-fam/2021.txtree diff --git a/webservice/src/test/resources/txtree/subgenera-fam/2021.yaml b/core/src/test/resources/txtree/subgenera-fam/2021.yaml similarity index 100% rename from webservice/src/test/resources/txtree/subgenera-fam/2021.yaml rename to core/src/test/resources/txtree/subgenera-fam/2021.yaml diff --git a/webservice/src/test/resources/txtree/subgenera-fam/carabcat.txtree b/core/src/test/resources/txtree/subgenera-fam/carabcat.txtree similarity index 100% rename from webservice/src/test/resources/txtree/subgenera-fam/carabcat.txtree rename to core/src/test/resources/txtree/subgenera-fam/carabcat.txtree diff --git a/webservice/src/test/resources/txtree/subgenera-fam/carabcat.yaml b/core/src/test/resources/txtree/subgenera-fam/carabcat.yaml similarity index 100% rename from webservice/src/test/resources/txtree/subgenera-fam/carabcat.yaml rename to core/src/test/resources/txtree/subgenera-fam/carabcat.yaml diff --git a/webservice/src/test/resources/txtree/subgenera-fam/expected.txtree b/core/src/test/resources/txtree/subgenera-fam/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/subgenera-fam/expected.txtree rename to core/src/test/resources/txtree/subgenera-fam/expected.txtree diff --git a/webservice/src/test/resources/txtree/subgenera-fam/project.txtree b/core/src/test/resources/txtree/subgenera-fam/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/subgenera-fam/project.txtree rename to core/src/test/resources/txtree/subgenera-fam/project.txtree diff --git a/webservice/src/test/resources/txtree/subgenera-fam/readme.md b/core/src/test/resources/txtree/subgenera-fam/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/subgenera-fam/readme.md rename to core/src/test/resources/txtree/subgenera-fam/readme.md diff --git a/webservice/src/test/resources/txtree/subgenera/2021.txtree b/core/src/test/resources/txtree/subgenera/2021.txtree similarity index 100% rename from webservice/src/test/resources/txtree/subgenera/2021.txtree rename to core/src/test/resources/txtree/subgenera/2021.txtree diff --git a/webservice/src/test/resources/txtree/subgenera/carabcat.txtree b/core/src/test/resources/txtree/subgenera/carabcat.txtree similarity index 100% rename from webservice/src/test/resources/txtree/subgenera/carabcat.txtree rename to core/src/test/resources/txtree/subgenera/carabcat.txtree diff --git a/webservice/src/test/resources/txtree/subgenera/expected.txtree b/core/src/test/resources/txtree/subgenera/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/subgenera/expected.txtree rename to core/src/test/resources/txtree/subgenera/expected.txtree diff --git a/webservice/src/test/resources/txtree/subgenera/project.txtree b/core/src/test/resources/txtree/subgenera/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/subgenera/project.txtree rename to core/src/test/resources/txtree/subgenera/project.txtree diff --git a/webservice/src/test/resources/txtree/subgenera/readme.md b/core/src/test/resources/txtree/subgenera/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/subgenera/readme.md rename to core/src/test/resources/txtree/subgenera/readme.md diff --git a/webservice/src/test/resources/txtree/tetralobus/bouchard.txtree b/core/src/test/resources/txtree/tetralobus/bouchard.txtree similarity index 100% rename from webservice/src/test/resources/txtree/tetralobus/bouchard.txtree rename to core/src/test/resources/txtree/tetralobus/bouchard.txtree diff --git a/webservice/src/test/resources/txtree/tetralobus/bouchard.yaml b/core/src/test/resources/txtree/tetralobus/bouchard.yaml similarity index 100% rename from webservice/src/test/resources/txtree/tetralobus/bouchard.yaml rename to core/src/test/resources/txtree/tetralobus/bouchard.yaml diff --git a/webservice/src/test/resources/txtree/tetralobus/expected.txtree b/core/src/test/resources/txtree/tetralobus/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/tetralobus/expected.txtree rename to core/src/test/resources/txtree/tetralobus/expected.txtree diff --git a/webservice/src/test/resources/txtree/tetralobus/plazi.txtree b/core/src/test/resources/txtree/tetralobus/plazi.txtree similarity index 100% rename from webservice/src/test/resources/txtree/tetralobus/plazi.txtree rename to core/src/test/resources/txtree/tetralobus/plazi.txtree diff --git a/webservice/src/test/resources/txtree/tetralobus/plazi.yaml b/core/src/test/resources/txtree/tetralobus/plazi.yaml similarity index 100% rename from webservice/src/test/resources/txtree/tetralobus/plazi.yaml rename to core/src/test/resources/txtree/tetralobus/plazi.yaml diff --git a/webservice/src/test/resources/txtree/tetralobus/project.txtree b/core/src/test/resources/txtree/tetralobus/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/tetralobus/project.txtree rename to core/src/test/resources/txtree/tetralobus/project.txtree diff --git a/webservice/src/test/resources/txtree/tetralobus/readme.md b/core/src/test/resources/txtree/tetralobus/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/tetralobus/readme.md rename to core/src/test/resources/txtree/tetralobus/readme.md diff --git a/webservice/src/test/resources/txtree/tetralobus/wfo.txtree b/core/src/test/resources/txtree/tetralobus/wfo.txtree similarity index 100% rename from webservice/src/test/resources/txtree/tetralobus/wfo.txtree rename to core/src/test/resources/txtree/tetralobus/wfo.txtree diff --git a/webservice/src/test/resources/txtree/tetralobus/zoobank.txtree b/core/src/test/resources/txtree/tetralobus/zoobank.txtree similarity index 100% rename from webservice/src/test/resources/txtree/tetralobus/zoobank.txtree rename to core/src/test/resources/txtree/tetralobus/zoobank.txtree diff --git a/webservice/src/test/resources/txtree/tetralobus/zoobank.yaml b/core/src/test/resources/txtree/tetralobus/zoobank.yaml similarity index 100% rename from webservice/src/test/resources/txtree/tetralobus/zoobank.yaml rename to core/src/test/resources/txtree/tetralobus/zoobank.yaml diff --git a/webservice/src/test/resources/txtree/unplaced_synonyms/project.txtree b/core/src/test/resources/txtree/unplaced_synonyms/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/unplaced_synonyms/project.txtree rename to core/src/test/resources/txtree/unplaced_synonyms/project.txtree diff --git a/webservice/src/test/resources/txtree/unplaced_synonyms/readme.md b/core/src/test/resources/txtree/unplaced_synonyms/readme.md similarity index 100% rename from webservice/src/test/resources/txtree/unplaced_synonyms/readme.md rename to core/src/test/resources/txtree/unplaced_synonyms/readme.md diff --git a/webservice/src/test/resources/txtree/unplaced_synonyms/src2.txtree b/core/src/test/resources/txtree/unplaced_synonyms/src2.txtree similarity index 100% rename from webservice/src/test/resources/txtree/unplaced_synonyms/src2.txtree rename to core/src/test/resources/txtree/unplaced_synonyms/src2.txtree diff --git a/webservice/src/test/resources/txtree/unplaced_synonyms/wcvp.txtree b/core/src/test/resources/txtree/unplaced_synonyms/wcvp.txtree similarity index 100% rename from webservice/src/test/resources/txtree/unplaced_synonyms/wcvp.txtree rename to core/src/test/resources/txtree/unplaced_synonyms/wcvp.txtree diff --git a/webservice/src/test/resources/txtree/unplaced_synonyms/xcfg.yaml b/core/src/test/resources/txtree/unplaced_synonyms/xcfg.yaml similarity index 100% rename from webservice/src/test/resources/txtree/unplaced_synonyms/xcfg.yaml rename to core/src/test/resources/txtree/unplaced_synonyms/xcfg.yaml diff --git a/webservice/src/test/resources/txtree/unplaced_synonyms/xrelease.txtree b/core/src/test/resources/txtree/unplaced_synonyms/xrelease.txtree similarity index 100% rename from webservice/src/test/resources/txtree/unplaced_synonyms/xrelease.txtree rename to core/src/test/resources/txtree/unplaced_synonyms/xrelease.txtree diff --git a/webservice/src/test/resources/txtree/unranked/expected.txtree b/core/src/test/resources/txtree/unranked/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/unranked/expected.txtree rename to core/src/test/resources/txtree/unranked/expected.txtree diff --git a/webservice/src/test/resources/txtree/unranked/palaeo.txtree b/core/src/test/resources/txtree/unranked/palaeo.txtree similarity index 100% rename from webservice/src/test/resources/txtree/unranked/palaeo.txtree rename to core/src/test/resources/txtree/unranked/palaeo.txtree diff --git a/webservice/src/test/resources/txtree/unranked/project.txtree b/core/src/test/resources/txtree/unranked/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/unranked/project.txtree rename to core/src/test/resources/txtree/unranked/project.txtree diff --git a/webservice/src/test/resources/txtree/validation/metadata.yaml b/core/src/test/resources/txtree/validation/metadata.yaml similarity index 100% rename from webservice/src/test/resources/txtree/validation/metadata.yaml rename to core/src/test/resources/txtree/validation/metadata.yaml diff --git a/webservice/src/test/resources/txtree/validation/mismatch.txtree b/core/src/test/resources/txtree/validation/mismatch.txtree similarity index 100% rename from webservice/src/test/resources/txtree/validation/mismatch.txtree rename to core/src/test/resources/txtree/validation/mismatch.txtree diff --git a/webservice/src/test/resources/txtree/vernacular/expected.txtree b/core/src/test/resources/txtree/vernacular/expected.txtree similarity index 100% rename from webservice/src/test/resources/txtree/vernacular/expected.txtree rename to core/src/test/resources/txtree/vernacular/expected.txtree diff --git a/webservice/src/test/resources/txtree/vernacular/project.txtree b/core/src/test/resources/txtree/vernacular/project.txtree similarity index 100% rename from webservice/src/test/resources/txtree/vernacular/project.txtree rename to core/src/test/resources/txtree/vernacular/project.txtree diff --git a/webservice/src/test/resources/txtree/vernacular/v1.txtree b/core/src/test/resources/txtree/vernacular/v1.txtree similarity index 100% rename from webservice/src/test/resources/txtree/vernacular/v1.txtree rename to core/src/test/resources/txtree/vernacular/v1.txtree diff --git a/webservice/src/test/resources/txtree/vernacular/v1.yaml b/core/src/test/resources/txtree/vernacular/v1.yaml similarity index 100% rename from webservice/src/test/resources/txtree/vernacular/v1.yaml rename to core/src/test/resources/txtree/vernacular/v1.yaml diff --git a/webservice/src/test/resources/txtree/vernacular/v2.txtree b/core/src/test/resources/txtree/vernacular/v2.txtree similarity index 100% rename from webservice/src/test/resources/txtree/vernacular/v2.txtree rename to core/src/test/resources/txtree/vernacular/v2.txtree diff --git a/webservice/src/test/resources/txtree/vernacular/v2.yaml b/core/src/test/resources/txtree/vernacular/v2.yaml similarity index 100% rename from webservice/src/test/resources/txtree/vernacular/v2.yaml rename to core/src/test/resources/txtree/vernacular/v2.yaml diff --git a/webservice/src/test/resources/xcol/100.txtree b/core/src/test/resources/xcol/100.txtree similarity index 100% rename from webservice/src/test/resources/xcol/100.txtree rename to core/src/test/resources/xcol/100.txtree diff --git a/webservice/src/test/resources/xcol/101.txtree b/core/src/test/resources/xcol/101.txtree similarity index 100% rename from webservice/src/test/resources/xcol/101.txtree rename to core/src/test/resources/xcol/101.txtree diff --git a/webservice/src/test/resources/xcol/102.txtree b/core/src/test/resources/xcol/102.txtree similarity index 100% rename from webservice/src/test/resources/xcol/102.txtree rename to core/src/test/resources/xcol/102.txtree diff --git a/webservice/src/test/resources/xcol/103.txtree b/core/src/test/resources/xcol/103.txtree similarity index 100% rename from webservice/src/test/resources/xcol/103.txtree rename to core/src/test/resources/xcol/103.txtree diff --git a/webservice/src/test/resources/xcol/104.txtree b/core/src/test/resources/xcol/104.txtree similarity index 100% rename from webservice/src/test/resources/xcol/104.txtree rename to core/src/test/resources/xcol/104.txtree diff --git a/webservice/src/test/resources/xcol/105.txtree b/core/src/test/resources/xcol/105.txtree similarity index 100% rename from webservice/src/test/resources/xcol/105.txtree rename to core/src/test/resources/xcol/105.txtree diff --git a/webservice/src/test/resources/xcol/106.txtree b/core/src/test/resources/xcol/106.txtree similarity index 100% rename from webservice/src/test/resources/xcol/106.txtree rename to core/src/test/resources/xcol/106.txtree diff --git a/webservice/src/test/resources/xcol/107.txtree b/core/src/test/resources/xcol/107.txtree similarity index 100% rename from webservice/src/test/resources/xcol/107.txtree rename to core/src/test/resources/xcol/107.txtree diff --git a/webservice/src/test/resources/xcol/108.txtree b/core/src/test/resources/xcol/108.txtree similarity index 100% rename from webservice/src/test/resources/xcol/108.txtree rename to core/src/test/resources/xcol/108.txtree diff --git a/webservice/src/test/resources/xcol/3.txtree b/core/src/test/resources/xcol/3.txtree similarity index 100% rename from webservice/src/test/resources/xcol/3.txtree rename to core/src/test/resources/xcol/3.txtree diff --git a/webservice/src/test/resources/xcol/README.md b/core/src/test/resources/xcol/README.md similarity index 100% rename from webservice/src/test/resources/xcol/README.md rename to core/src/test/resources/xcol/README.md diff --git a/dao/pom.xml b/dao/pom.xml index 8b97b6fb86..f3e4b242f7 100644 --- a/dao/pom.xml +++ b/dao/pom.xml @@ -10,7 +10,7 @@ dao - COL DAO + CLB DAO diff --git a/dao/src/main/java/life/catalogue/concurrent/DatasetBlockedException.java b/dao/src/main/java/life/catalogue/concurrent/DatasetBlockedException.java index a6d33d9120..9b787fb9e2 100644 --- a/dao/src/main/java/life/catalogue/concurrent/DatasetBlockedException.java +++ b/dao/src/main/java/life/catalogue/concurrent/DatasetBlockedException.java @@ -5,7 +5,7 @@ public class DatasetBlockedException extends BlockedException { public final int datasetKey; - DatasetBlockedException(UUID blockedBy, int datasetKey) { + public DatasetBlockedException(UUID blockedBy, int datasetKey) { super(blockedBy); this.datasetKey = datasetKey; } diff --git a/webservice/src/test/java/life/catalogue/config/NormalizerConfigTest.java b/dao/src/test/java/life/catalogue/config/NormalizerConfigTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/config/NormalizerConfigTest.java rename to dao/src/test/java/life/catalogue/config/NormalizerConfigTest.java diff --git a/dao/src/test/java/life/catalogue/db/mapper/ReferenceMapperTest.java b/dao/src/test/java/life/catalogue/db/mapper/ReferenceMapperTest.java index 184eccda0b..e5bda4dc93 100644 --- a/dao/src/test/java/life/catalogue/db/mapper/ReferenceMapperTest.java +++ b/dao/src/test/java/life/catalogue/db/mapper/ReferenceMapperTest.java @@ -10,9 +10,12 @@ import life.catalogue.api.vocab.Issue; import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.time.temporal.TemporalUnit; import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.concurrent.TimeUnit; import org.junit.Test; @@ -89,7 +92,8 @@ public void deleteOrphans() throws Exception { @Test public void listOrphans() throws Exception { - LocalDateTime bFirst = LocalDateTime.now(); + LocalDateTime bFirst = LocalDateTime.now().minus(1, ChronoUnit.MILLIS); + Reference r = newReference(); mapper().create(r); mapper().create(newReference()); diff --git a/doi/pom.xml b/doi/pom.xml index 1f102cae16..2c5913f250 100644 --- a/doi/pom.xml +++ b/doi/pom.xml @@ -9,7 +9,7 @@ doi - COL DOI + CLB DOI This module provides DOI services for COL wrapping DataCite diff --git a/importer/graphs/debugtree.dot b/importer/graphs/debugtree.dot new file mode 100644 index 0000000000..634b0651ee --- /dev/null +++ b/importer/graphs/debugtree.dot @@ -0,0 +1,243 @@ +digraph G { + node [shape=plaintext] + + n0 [label="DEV_NULL"] + n1 [label="SPECIES\nOxytropis nigrescens (Pall.) DC.", fontcolor=darkgreen] + n2 [label="USAGE;TAXON"] + n2 -> n1 + n3 [label="SPECIES\nSenna floribunda (Cav.) H.S.Irwin & Barneby", fontcolor=darkgreen] + n4 [label="USAGE;TAXON"] + n4 -> n3 + n5 [label="SPECIES\nLablab purpureus (L.) Sweet", fontcolor=darkgreen] + n6 [label="USAGE;TAXON"] + n6 -> n54 + n6 -> n5 + n7 [label="SPECIES\nHedysarum bucharicum B.Fedtsch.", fontcolor=darkgreen] + n8 [label="USAGE;TAXON"] + n8 -> n7 + n9 [label="SPECIES\nVigna angularis (Willd.) Ohwi & H.Ohashi", fontcolor=darkgreen] + n10 [label="USAGE;TAXON"] + n10 -> n56 + n10 -> n9 + n11 [label="SPECIES\nAlbizia lebbekoides (DC.) Benth.", fontcolor=darkgreen] + n12 [label="USAGE;TAXON"] + n12 -> n11 + n13 [label="SPECIES\nArchidendron jiringa (Jack) I.C.Nielsen", fontcolor=darkgreen] + n14 [label="USAGE;TAXON"] + n14 -> n13 + n15 [label="SPECIES\nVigna radiata (L.) R.Wilczek", fontcolor=darkgreen] + n16 [label="USAGE;TAXON"] + n16 -> n52 + n16 -> n15 + n17 [label="SPECIES\nAlbizia philippinensis I.C.Nielsen", fontcolor=darkgreen] + n18 [label="USAGE;TAXON"] + n18 -> n17 + n19 [label="SPECIES\nArchidendron havilandii (Ridl.) I.C.Nielsen", fontcolor=darkgreen] + n20 [label="USAGE;TAXON"] + n20 -> n19 + n21 [label="SPECIES\nOxytropis czukotica Jurtzev", fontcolor=darkgreen] + n22 [label="USAGE;TAXON"] + n22 -> n21 + n23 [label="SPECIES\nOxytropis politovii Sumnev.", fontcolor=darkgreen] + n24 [label="USAGE;TAXON"] + n24 -> n23 + n25 [label="SPECIES\nOxytropis sutaica N.Ulziykh.", fontcolor=darkgreen] + n26 [label="USAGE;TAXON"] + n26 -> n25 + n27 [label="SPECIES\nHedysarum daghestanicum Boiss.", fontcolor=darkgreen] + n28 [label="USAGE;TAXON"] + n28 -> n27 + n29 [label="SPECIES\nHedysarum daraut-kurganicum Sultanova", fontcolor=darkgreen] + n30 [label="USAGE;TAXON"] + n30 -> n29 + n31 [label="SPECIES\nHedysarum macrocarpum Korotkova", fontcolor=darkgreen] + n32 [label="USAGE;TAXON"] + n32 -> n31 + n33 [label="SPECIES\nHedysarum monophyllum Boriss.", fontcolor=darkgreen] + n34 [label="USAGE;TAXON"] + n34 -> n33 + n35 [label="SPECIES\nHedysarum nuratense Popov", fontcolor=darkgreen] + n36 [label="USAGE;TAXON"] + n36 -> n35 + n37 [label="SPECIES\nHedysarum omissum Korotkova ex Kovalevsk.", fontcolor=darkgreen] + n38 [label="USAGE;TAXON"] + n38 -> n37 + n39 [label="SPECIES\nHedysarum sericeum M.Bieb.", fontcolor=darkgreen] + n40 [label="USAGE;TAXON"] + n40 -> n39 + n41 [label="SPECIES\nHedysarum turczaninovii Peschkova", fontcolor=darkgreen] + n42 [label="USAGE;TAXON"] + n42 -> n41 + n43 [label="SPECIES\nHedysarum truncatum Eastw.", fontcolor=darkgreen] + n44 [label="USAGE;TAXON"] + n44 -> n43 + n45 [label="SPECIES\nBauhinia acuminata L.", fontcolor=darkgreen] + n46 [label="USAGE;TAXON"] + n46 -> n45 + n47 [label="SPECIES\nBauhinia tomentosa L.", fontcolor=darkgreen] + n48 [label="USAGE;TAXON"] + n48 -> n47 + n49 [label="SPECIES\nSenna septemtrionalis (Viv.) H.S.Irwin & Barneby", fontcolor=darkgreen] + n50 [label="USAGE;TAXON"] + n50 -> n49 + n51 [label="VARIETY\nVigna radiata var. setulosa (Dalzell) Ohwi & Ohashi", fontcolor=darkgreen] + n52 [label="USAGE;TAXON"] + n52 -> n51 + n53 [label="SUBSPECIES\nLablab purpureus purpureus", fontcolor=darkgreen] + n54 [label="USAGE;TAXON"] + n54 -> n53 + n55 [label="VARIETY\nVigna angularis var. angularis", fontcolor=darkgreen] + n56 [label="USAGE;TAXON"] + n56 -> n55 + n57 [label="SPECIES\nCassia laevigata Willd.", fontcolor=darkgreen] + n58 [label="USAGE;SYNONYM", fontcolor=blue] + n58 -> n4 [color=blue, fontcolor=blue, label="acc"] + n58 -> n50 [color=blue, fontcolor=blue, label="acc"] + n58 -> n57 + n59 [label="SPECIES\nAlbizia julibrissin", fontcolor=darkgreen] + n60 [label="USAGE;SYNONYM", fontcolor=blue] + n60 -> n12 [color=blue, fontcolor=blue, label="acc"] + n60 -> n18 [color=blue, fontcolor=blue, label="acc"] + n60 -> n59 + n61 [label="SPECIES\nAzukia angularis (Willd.) Ohwi", fontcolor=darkgreen] + n62 [label="USAGE;SYNONYM", fontcolor=blue] + n62 -> n10 [color=blue, fontcolor=blue, label="acc"] + n62 -> n56 [color=blue, fontcolor=blue, label="acc"] + n62 -> n61 + n63 [label="SPECIES\nPithecellobium bigeminum", fontcolor=darkgreen] + n64 [label="USAGE;SYNONYM", fontcolor=blue] + n64 -> n20 [color=blue, fontcolor=blue, label="acc"] + n64 -> n14 [color=blue, fontcolor=blue, label="acc"] + n64 -> n63 + n65 [label="SUBSPECIES\nHedysarum grandiflorum sericeum B.Fedtsch., p.p.", fontcolor=darkgreen] + n66 [label="USAGE;SYNONYM", fontcolor=blue] + n66 -> n28 [color=blue, fontcolor=blue, label="acc"] + n66 -> n40 [color=blue, fontcolor=blue, label="acc"] + n66 -> n65 + n67 [label="SPECIES\nHedysarum microphyllum", fontcolor=darkgreen] + n68 [label="USAGE;SYNONYM", fontcolor=blue] + n68 -> n44 [color=blue, fontcolor=blue, label="acc"] + n68 -> n42 [color=blue, fontcolor=blue, label="acc"] + n68 -> n67 + n69 [label="SPECIES\nHedysarum pamiralaicum Korotkova, p.p.", fontcolor=darkgreen] + n70 [label="USAGE;SYNONYM", fontcolor=blue] + n70 -> n36 [color=blue, fontcolor=blue, label="acc"] + n70 -> n8 [color=blue, fontcolor=blue, label="acc"] + n70 -> n69 + n71 [label="SPECIES\nOxytropis oligantha", fontcolor=darkgreen] + n72 [label="USAGE;SYNONYM", fontcolor=blue] + n72 -> n24 [color=blue, fontcolor=blue, label="acc"] + n72 -> n26 [color=blue, fontcolor=blue, label="acc"] + n72 -> n71 + n73 [label="SPECIES\nPhaseolus angularis (Willd.) W.Wight", fontcolor=darkgreen] + n74 [label="USAGE;SYNONYM", fontcolor=blue] + n74 -> n10 [color=blue, fontcolor=blue, label="acc"] + n74 -> n56 [color=blue, fontcolor=blue, label="acc"] + n74 -> n73 + n75 [label="SPECIES\nAlvesia tomentosa (L.) Britton & Rose", fontcolor=darkgreen] + n76 [label="USAGE;SYNONYM", fontcolor=blue] + n76 -> n46 [color=blue, fontcolor=blue, label="acc"] + n76 -> n48 [color=blue, fontcolor=blue, label="acc"] + n76 -> n75 + n77 [label="SPECIES\nHedysarum plumosum", fontcolor=darkgreen] + n78 [label="USAGE;SYNONYM", fontcolor=blue] + n78 -> n38 [color=blue, fontcolor=blue, label="acc"] + n78 -> n34 [color=blue, fontcolor=blue, label="acc"] + n78 -> n77 + n79 [label="SPECIES\nDolichos lablab L.", fontcolor=darkgreen] + n80 [label="USAGE;SYNONYM", fontcolor=blue] + n80 -> n6 [color=blue, fontcolor=blue, label="acc"] + n80 -> n54 [color=blue, fontcolor=blue, label="acc"] + n80 -> n79 + n81 [label="SPECIES\nHedysarum pumilum", fontcolor=darkgreen] + n82 [label="USAGE;SYNONYM", fontcolor=blue] + n82 -> n30 [color=blue, fontcolor=blue, label="acc"] + n82 -> n32 [color=blue, fontcolor=blue, label="acc"] + n82 -> n81 + n83 [label="SPECIES\nOxytropis tschuktschorum Jurtzev, p.p.", fontcolor=darkgreen] + n84 [label="USAGE;SYNONYM", fontcolor=blue] + n84 -> n2 [color=blue, fontcolor=blue, label="acc"] + n84 -> n22 [color=blue, fontcolor=blue, label="acc"] + n84 -> n83 + n85 [label="SPECIES\nPhaseolus trinervius Wight & Arn.", fontcolor=darkgreen] + n86 [label="USAGE;SYNONYM", fontcolor=blue] + n86 -> n52 [color=blue, fontcolor=blue, label="acc"] + n86 -> n16 [color=blue, fontcolor=blue, label="acc"] + n86 -> n85 + n87 [label="KINGDOM\nPlantae", fontcolor=darkgreen] + n88 [label="USAGE;TAXON;ROOT"] + n88 -> n90 + n88 -> n87 + n89 [label="PHYLUM\nTracheophyta", fontcolor=darkgreen] + n90 [label="USAGE;TAXON"] + n90 -> n92 + n90 -> n89 + n91 [label="CLASS\nMagnoliopsida", fontcolor=darkgreen] + n92 [label="USAGE;TAXON"] + n92 -> n94 + n92 -> n91 + n93 [label="ORDER\nFabales", fontcolor=darkgreen] + n94 [label="USAGE;TAXON"] + n94 -> n93 + n94 -> n96 + n95 [label="FAMILY\nFabaceae", fontcolor=darkgreen] + n96 [label="USAGE;TAXON"] + n96 -> n112 + n96 -> n110 + n96 -> n106 + n96 -> n108 + n96 -> n100 + n96 -> n104 + n96 -> n102 + n96 -> n95 + n96 -> n98 + n97 [label="GENUS\nOxytropis", fontcolor=darkgreen] + n98 [label="USAGE;TAXON"] + n98 -> n22 + n98 -> n26 + n98 -> n24 + n98 -> n2 + n98 -> n97 + n99 [label="GENUS\nSenna", fontcolor=darkgreen] + n100 [label="USAGE;TAXON"] + n100 -> n50 + n100 -> n4 + n100 -> n99 + n101 [label="GENUS\nLablab", fontcolor=darkgreen] + n102 [label="USAGE;TAXON"] + n102 -> n101 + n102 -> n6 + n103 [label="GENUS\nHedysarum", fontcolor=darkgreen] + n104 [label="USAGE;TAXON"] + n104 -> n44 + n104 -> n28 + n104 -> n30 + n104 -> n32 + n104 -> n34 + n104 -> n36 + n104 -> n38 + n104 -> n40 + n104 -> n42 + n104 -> n8 + n104 -> n103 + n105 [label="GENUS\nVigna", fontcolor=darkgreen] + n106 [label="USAGE;TAXON"] + n106 -> n16 + n106 -> n105 + n106 -> n10 + n107 [label="GENUS\nAlbizia", fontcolor=darkgreen] + n108 [label="USAGE;TAXON"] + n108 -> n18 + n108 -> n107 + n108 -> n12 + n109 [label="GENUS\nArchidendron", fontcolor=darkgreen] + n110 [label="USAGE;TAXON"] + n110 -> n14 + n110 -> n20 + n110 -> n109 + n111 [label="GENUS\nBauhinia", fontcolor=darkgreen] + n112 [label="USAGE;TAXON"] + n112 -> n111 + n112 -> n46 + n112 -> n48 +} diff --git a/importer/graphs/neodb.dot b/importer/graphs/neodb.dot new file mode 100644 index 0000000000..2c4bdb8141 --- /dev/null +++ b/importer/graphs/neodb.dot @@ -0,0 +1,25 @@ +digraph G { + node [shape=plaintext] + + n0 [label="DEV_NULL"] + n1 [label="ORDER\nColeoptera", fontcolor=darkgreen] + n2 [label="SPECIES\nPygoxyon lombardum Binaghi, 1943", fontcolor=darkgreen] + n3 [label="SPECIES\nCarpelimus chilensis (Coiffait & Sáiz, 1968)", fontcolor=darkgreen] + n3 -> n4 [color=darkgreen, fontcolor=darkgreen, label="bas"] + n4 [label="SPECIES\nTrogophloeus chilensis Coiffait & Sáiz, 1968", fontcolor=darkgreen] + n5 [label="SPECIES\nCarpelimus argentinius Coiffait & Sáiz, 1968", fontcolor=darkgreen] + n6 [label="USAGE;TAXON;ROOT"] + n6 -> n9 + n6 -> n8 + n6 -> n7 + n6 -> n1 + n7 [label="USAGE;TAXON"] + n7 -> n2 + n8 [label="USAGE;TAXON"] + n8 -> n3 + n9 [label="USAGE;TAXON"] + n9 -> n5 + n11 [label="USAGE;SYNONYM", fontcolor=blue] + n11 -> n8 [color=blue, fontcolor=blue, label="acc"] + n11 -> n4 +} diff --git a/importer/pom.xml b/importer/pom.xml new file mode 100644 index 0000000000..b39d335f1d --- /dev/null +++ b/importer/pom.xml @@ -0,0 +1,346 @@ + + + 4.0.0 + + org.catalogueoflife + motherpom + 1.0-SNAPSHOT + + + importer + CLB importer + Importer component of ChecklistBank using neo4j + + + + + org.catalogueoflife + api + + + org.catalogueoflife + core + + + org.catalogueoflife + coldp + + + org.catalogueoflife + metadata + + + org.gbif + name-parser-api + + + org.catalogueoflife + parser + + + org.catalogueoflife + reader + + + org.catalogueoflife + reader-xls + + + org.catalogueoflife + dao + + + org.catalogueoflife + doi + + + org.gbif + dwc-api + + + org.gbif + dwca-io + + + org.gbif + text-tree + + + + + org.neo4j + neo4j + + + org.neo4j + neo4j-kernel + + + org.neo4j + neo4j-cypher + + + org.neo4j + neo4j-slf4j + + + org.neo4j + graph-algorithms-algo + + + + org.bouncycastle + bcprov-jdk15on + + + + + org.mybatis + mybatis + + + org.postgresql + postgresql + + + com.zaxxer + HikariCP + + + + + + org.mapdb + mapdb + + + com.esotericsoftware + kryo + + + org.apache.fury + fury-core + + + + + org.elasticsearch.client + elasticsearch-rest-client + ${elasticsearch.version} + + + + com.github.docker-java + docker-java + + + com.github.docker-java + docker-java-transport-httpclient5 + + + + + it.unimi.dsi + fastutil + + + com.univocity + univocity-parsers + + + + + com.ibm.icu + icu4j + + + + + jakarta.xml.bind + jakarta.xml.bind-api + + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + + + + org.apache.commons + commons-lang3 + + + org.apache.commons + commons-text + + + + + org.simplejavamail + simple-java-mail + + + com.github.ben-manes.caffeine + caffeine + + + org.apache.tika + tika-core + + + org.apache.poi + poi-ooxml + + + + + org.slf4j + slf4j-api + + + org.slf4j + jul-to-slf4j + + + ch.qos.logback + logback-classic + + + jakarta.validation + jakarta.validation-api + + + co.elastic.logging + logback-ecs-encoder + + + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.vintage + junit-vintage-engine + test + + + org.mockito + mockito-core + test + + + org.assertj + assertj-core + test + + + org.catalogueoflife + api + tests + test + + + org.catalogueoflife + dao + tests + test + + + org.catalogueoflife + core + tests + test + + + org.javers + javers-core + test + + + org.testcontainers + junit-jupiter + test + + + org.testcontainers + postgresql + test + + + org.testcontainers + elasticsearch + test + + + + com.fasterxml.jackson.jakarta.rs + jackson-jakarta-rs-json-provider + test + + + org.hibernate.validator + hibernate-validator + test + + + org.glassfish + jakarta.el + test + + + + + + + src/main/resources + false + + **/*.yaml + + + + src/main/resources + true + + **/*.yaml + + + + + + + src/test/resources + false + + gbifAuth.yaml + datacite.yaml + + + + src/test/resources + true + + gbifAuth.yaml + datacite.yaml + + + + + + \ No newline at end of file diff --git a/webservice/src/main/java/life/catalogue/importer/ContinuousImporter.java b/importer/src/main/java/life/catalogue/importer/ContinuousImporter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/ContinuousImporter.java rename to importer/src/main/java/life/catalogue/importer/ContinuousImporter.java diff --git a/webservice/src/main/java/life/catalogue/importer/DataFormatDetector.java b/importer/src/main/java/life/catalogue/importer/DataFormatDetector.java similarity index 97% rename from webservice/src/main/java/life/catalogue/importer/DataFormatDetector.java rename to importer/src/main/java/life/catalogue/importer/DataFormatDetector.java index 0991fa9e29..8b35fb6f6b 100644 --- a/webservice/src/main/java/life/catalogue/importer/DataFormatDetector.java +++ b/importer/src/main/java/life/catalogue/importer/DataFormatDetector.java @@ -8,11 +8,9 @@ import life.catalogue.importer.txttree.TxtTreeInserter; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/webservice/src/main/java/life/catalogue/importer/IdGenerator.java b/importer/src/main/java/life/catalogue/importer/IdGenerator.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/IdGenerator.java rename to importer/src/main/java/life/catalogue/importer/IdGenerator.java diff --git a/webservice/src/main/java/life/catalogue/importer/ImportJob.java b/importer/src/main/java/life/catalogue/importer/ImportJob.java similarity index 93% rename from webservice/src/main/java/life/catalogue/importer/ImportJob.java rename to importer/src/main/java/life/catalogue/importer/ImportJob.java index ba50a862a2..bc17f1928d 100644 --- a/webservice/src/main/java/life/catalogue/importer/ImportJob.java +++ b/importer/src/main/java/life/catalogue/importer/ImportJob.java @@ -1,6 +1,5 @@ package life.catalogue.importer; -import life.catalogue.WsServerConfig; import life.catalogue.api.event.DatasetDataChanged; import life.catalogue.api.event.FlushDatasetCache; import life.catalogue.api.model.DatasetImport; @@ -17,6 +16,8 @@ import life.catalogue.common.lang.InterruptedRuntimeException; import life.catalogue.common.util.LoggingUtils; import life.catalogue.concurrent.StartNotifier; +import life.catalogue.config.ImporterConfig; +import life.catalogue.config.NormalizerConfig; import life.catalogue.dao.DatasetDao; import life.catalogue.dao.DatasetImportDao; import life.catalogue.dao.DecisionDao; @@ -30,11 +31,11 @@ import life.catalogue.importer.neo.NeoDbFactory; import life.catalogue.importer.proxy.ArchiveDescriptor; import life.catalogue.importer.proxy.DistributedArchiveService; -import life.catalogue.matching.nidx.NameIndex; import life.catalogue.matching.decision.DecisionRematchRequest; import life.catalogue.matching.decision.DecisionRematcher; import life.catalogue.matching.decision.SectorRematchRequest; import life.catalogue.matching.decision.SectorRematcher; +import life.catalogue.matching.nidx.NameIndex; import life.catalogue.metadata.DoiResolver; import java.io.File; @@ -49,8 +50,6 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; -import jakarta.validation.Validator; - import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.time.DurationFormatUtils; import org.apache.ibatis.session.SqlSession; @@ -61,6 +60,8 @@ import com.google.common.base.Preconditions; import com.google.common.eventbus.EventBus; +import jakarta.validation.Validator; + /** * Asynchronous import job that orchestrates the entire import process including download, * normalization and insertion into Postgres. @@ -74,7 +75,8 @@ public class ImportJob implements Runnable { private final ImportRequest req; private final DatasetWithSettings dataset; private DatasetImport di; - private final WsServerConfig cfg; + private final ImporterConfig iCfg; + private final NormalizerConfig nCfg; private final DownloadUtil downloader; private final SqlSessionFactory factory; private final DatasetImportDao dao; @@ -93,7 +95,7 @@ public class ImportJob implements Runnable { private final BiConsumer errorCallback; ImportJob(ImportRequest req, DatasetWithSettings d, - WsServerConfig cfg, + ImporterConfig iCfg, NormalizerConfig nCfg, DownloadUtil downloader, SqlSessionFactory factory, NameIndex index, Validator validator, DoiResolver resolver, NameUsageIndexService indexService, ImageService imgService, DatasetImportDao diao, DatasetDao dDao, SectorDao sDao, DecisionDao decisionDao, EventBus bus, @@ -105,7 +107,8 @@ public class ImportJob implements Runnable { this.dataset = Preconditions.checkNotNull(d); this.datasetKey = d.getKey(); this.req = req; - this.cfg = cfg; + this.iCfg = iCfg; + this.nCfg = nCfg; this.downloader = downloader; this.resolver = resolver; this.distributedArchiveService = new DistributedArchiveService(downloader.getClient()); @@ -134,7 +137,7 @@ private void validate() { throw new IllegalArgumentException("Dataset " + datasetKey + " cannot be reimported and uploaded"); } else if (req.reimportAttempt != null) { - if (!cfg.normalizer.archive(datasetKey, req.reimportAttempt).exists()) { + if (!nCfg.archive(datasetKey, req.reimportAttempt).exists()) { throw new IllegalArgumentException("Dataset " + datasetKey + " lacks a source archive for import attempt " + req.reimportAttempt); } @@ -201,12 +204,12 @@ private void checkIfCancelled() throws InterruptedException { * @return true if sourceDir should be imported */ private boolean prepareSourceData(Path sourceDir) throws IOException, IllegalArgumentException, InterruptedException { - File archive = cfg.normalizer.archive(datasetKey, getAttempt()); + File archive = nCfg.archive(datasetKey, getAttempt()); archive.getParentFile().mkdirs(); if (req.reimportAttempt != null) { // copy previous up/downloaded archive to repository - Path prev = cfg.normalizer.archive(datasetKey, req.reimportAttempt).toPath(); + Path prev = nCfg.archive(datasetKey, req.reimportAttempt).toPath(); LOG.info("Symlink previous archive from import attempt {} for dataset {}: {}", req.reimportAttempt, datasetKey, prev); Files.createSymbolicLink(archive.toPath(), prev); @@ -263,7 +266,7 @@ private boolean prepareSourceData(Path sourceDir) throws IOException, IllegalArg String lastMD5 = session.getMapper(DatasetImportMapper.class).getMD5(datasetKey, dataset.getImportAttempt()); if (Objects.equals(lastMD5, di.getMd5())) { // replace archive with symlink to last archive to save space - File lastArchive = cfg.normalizer.archive(datasetKey, dataset.getImportAttempt()); + File lastArchive = nCfg.archive(datasetKey, dataset.getImportAttempt()); if (lastArchive.exists()) { // we have seen wrong MD5 hashes being stored (BDJ), so lets recalculate the last one from the file to make sure! var lastMD5Redone = ChecksumUtils.getMD5Checksum(lastArchive); @@ -287,7 +290,7 @@ private boolean prepareSourceData(Path sourceDir) throws IOException, IllegalArg } // update latest symlink - File latest = cfg.normalizer.lastestArchiveSymlink(datasetKey); + File latest = nCfg.lastestArchiveSymlink(datasetKey); if (latest.exists()) { latest.delete(); } @@ -317,7 +320,7 @@ private void importDataset() throws Exception { LoggingUtils.setDatasetMDC(datasetKey, getAttempt(), getClass()); LOG.info("Start new {}import attempt {} for {} dataset {}: {}", req.force ? "forced " : "" ,di.getAttempt(), dataset.getOrigin(), datasetKey, dataset.getTitle()); - final Path sourceDir = cfg.normalizer.sourceDir(datasetKey).toPath(); + final Path sourceDir = nCfg.sourceDir(datasetKey).toPath(); NeoDb store = null; try { @@ -325,17 +328,17 @@ private void importDataset() throws Exception { if (doImport) { LOG.info("Normalizing {}", datasetKey); updateState(ImportState.PROCESSING); - store = NeoDbFactory.create(datasetKey, getAttempt(), cfg.normalizer); + store = NeoDbFactory.create(datasetKey, getAttempt(), nCfg); new Normalizer(dataset, store, sourceDir, index, imgService, validator, resolver).call(); LOG.info("Fetching logo for {}", datasetKey); - LogoUpdateJob.updateDatasetAsync(dataset.getDataset(), factory, downloader, cfg.normalizer::scratchFile, imgService, req.createdBy); + LogoUpdateJob.updateDatasetAsync(dataset.getDataset(), factory, downloader, nCfg::scratchFile, imgService, req.createdBy); LOG.info("Writing {} to Postgres & Elastic!", datasetKey); updateState(ImportState.INSERTING); - store = NeoDbFactory.open(datasetKey, getAttempt(), cfg.normalizer); + store = NeoDbFactory.open(datasetKey, getAttempt(), nCfg); // this does write to both pg and elastic! - var pgImport = new PgImport(di.getAttempt(), dataset, req.createdBy, store, factory, cfg.importer, dDao, indexService); + var pgImport = new PgImport(di.getAttempt(), dataset, req.createdBy, store, factory, iCfg, dDao, indexService); pgImport.call(); LOG.info("Build import metrics for dataset {}", datasetKey); @@ -368,10 +371,10 @@ private void importDataset() throws Exception { dao.delete(datasetKey, di.getAttempt()); } - if (cfg.importer.wait > 0) { - LOG.info("Wait for {}s before finishing import job", cfg.importer.wait); + if (iCfg.wait > 0) { + LOG.info("Wait for {}s before finishing import job", iCfg.wait); try { - TimeUnit.SECONDS.sleep(cfg.importer.wait); + TimeUnit.SECONDS.sleep(iCfg.wait); } catch (InterruptedException e) { LOG.debug("Woke up dataset {} from sleep", datasetKey); // swallow, we only interrupted the sleep and the import is done anyways. @@ -396,7 +399,7 @@ private void importDataset() throws Exception { store.close(); } // remove source scratch folder with neo4j and decompressed dwca folders - final File scratchDir = cfg.normalizer.scratchDir(datasetKey); + final File scratchDir = nCfg.scratchDir(datasetKey); LOG.debug("Remove scratch dir {}", scratchDir.getAbsolutePath()); try { FileUtils.deleteDirectory(scratchDir); diff --git a/webservice/src/main/java/life/catalogue/importer/ImportManager.java b/importer/src/main/java/life/catalogue/importer/ImportManager.java similarity index 95% rename from webservice/src/main/java/life/catalogue/importer/ImportManager.java rename to importer/src/main/java/life/catalogue/importer/ImportManager.java index 58c20151ec..5911cb437a 100644 --- a/webservice/src/main/java/life/catalogue/importer/ImportManager.java +++ b/importer/src/main/java/life/catalogue/importer/ImportManager.java @@ -1,6 +1,5 @@ package life.catalogue.importer; -import life.catalogue.WsServerConfig; import life.catalogue.api.event.DatasetChanged; import life.catalogue.api.exception.NotFoundException; import life.catalogue.api.exception.UnavailableException; @@ -19,6 +18,8 @@ import life.catalogue.common.lang.Exceptions; import life.catalogue.concurrent.JobExecutor; import life.catalogue.concurrent.PBQThreadPoolExecutor; +import life.catalogue.config.ImporterConfig; +import life.catalogue.config.NormalizerConfig; import life.catalogue.csv.ExcelCsvExtractor; import life.catalogue.dao.*; import life.catalogue.db.mapper.DatasetMapper; @@ -43,7 +44,6 @@ import java.util.stream.Collectors; import javax.annotation.Nullable; -import jakarta.validation.Validator; import org.apache.commons.io.FileUtils; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; @@ -60,6 +60,8 @@ import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; +import jakarta.validation.Validator; + /** * Manages import task scheduling, removing and listing */ @@ -71,7 +73,8 @@ public class ImportManager implements Managed, Idle { private PBQThreadPoolExecutor exec; private SyncManager assemblyCoordinator; private final Map futures = new ConcurrentHashMap<>(); - private final WsServerConfig cfg; + private final ImporterConfig iCfg; + private final NormalizerConfig nCfg; private final DownloadUtil downloader; private final DoiResolver resolver; private final SqlSessionFactory factory; @@ -90,16 +93,17 @@ public class ImportManager implements Managed, Idle { private final Timer importTimer; private final Counter failed; - public ImportManager(WsServerConfig cfg, MetricRegistry registry, CloseableHttpClient client, EventBus bus, + public ImportManager(ImporterConfig iCfg, NormalizerConfig nCfg, MetricRegistry registry, CloseableHttpClient client, EventBus bus, SqlSessionFactory factory, NameIndex index, DatasetImportDao diao, DatasetDao dDao, SectorDao sDao, DecisionDao decisionDao, NameUsageIndexService indexService, ImageService imgService, JobExecutor jobExecutor, Validator validator, DoiResolver resolver) { - this.cfg = cfg; + this.iCfg = iCfg; + this.nCfg = nCfg; this.bus = bus; this.factory = factory; this.validator = validator; this.resolver = resolver; this.jobExecutor = jobExecutor; - this.downloader = new DownloadUtil(client, cfg.importer.githubToken, cfg.importer.githubTokenGeoff); + this.downloader = new DownloadUtil(client, iCfg.githubToken, iCfg.githubTokenGeoff); this.index = index; this.imgService = imgService; this.indexService = indexService; @@ -287,7 +291,7 @@ public synchronized ImportRequest submit(final ImportRequest req) throws Illegal } private Path createScratchUploadFile(final int datasetKey) throws IOException { - Path up = cfg.normalizer.scratchFile(datasetKey, "upload.zip").toPath(); + Path up = nCfg.scratchFile(datasetKey, "upload.zip").toPath(); Files.createDirectories(up.getParent()); if (Files.exists(up)) { Files.delete(up); @@ -310,7 +314,7 @@ public ImportRequest upload(final int datasetKey, final InputStream content, boo if (filename == null) { filename = "upload-" + System.currentTimeMillis() + (suffix == null ? "" : "." + suffix); } - upload = cfg.normalizer.scratchFile(datasetKey, filename).toPath(); + upload = nCfg.scratchFile(datasetKey, filename).toPath(); Files.createDirectories(upload.getParent()); LOG.info("Upload data for dataset {} to tmp file {}", d.getKey(), upload); Files.copy(content, upload, StandardCopyOption.REPLACE_EXISTING); @@ -328,7 +332,7 @@ public ImportRequest uploadXls(final int datasetKey, final InputStream content, Preconditions.checkNotNull(content, "No content given"); Dataset d = validDataset(datasetKey); // extract CSV files - File csvDir = cfg.normalizer.scratchFile(datasetKey, "xls"); + File csvDir = nCfg.scratchFile(datasetKey, "xls"); if (csvDir.exists()) { FileUtils.deleteDirectory(csvDir); } @@ -348,7 +352,7 @@ public ImportRequest uploadXls(final int datasetKey, final InputStream content, * synced in the assembly or dataset does not exist or is of origin managed */ private synchronized ImportRequest submitValidDataset(final ImportRequest req) throws IllegalArgumentException { - if (exec.queueSize() >= cfg.importer.maxQueue) { + if (exec.queueSize() >= iCfg.maxQueue) { LOG.info("Import queued at max {} already. Skip dataset {}", exec.queueSize(), req.datasetKey); throw new IllegalArgumentException("Import queue full, skip dataset " + req.datasetKey); @@ -433,7 +437,7 @@ private ImportJob createImport(ImportRequest req) throws NotFoundException, Ille ds.remove(Setting.DATA_ACCESS); dm.updateSettings(req.datasetKey, ds, req.createdBy); } - return new ImportJob(req, new DatasetWithSettings(d, ds), cfg, downloader, factory, index, validator, resolver, indexService, imgService, dao, dDao, sDao, decisionDao, bus, + return new ImportJob(req, new DatasetWithSettings(d, ds), iCfg, nCfg, downloader, factory, index, validator, resolver, indexService, imgService, dao, dDao, sDao, decisionDao, bus, () -> req.start(), this::successCallBack, this::errorCallBack); @@ -471,13 +475,13 @@ private void cancelAndReschedule() { @Override public void start() { LOG.info("Starting import manager with {} import threads and a queue of {} max.", - cfg.importer.threads, - cfg.importer.maxQueue); + iCfg.threads, + iCfg.maxQueue); - exec = new PBQThreadPoolExecutor<>(cfg.importer.threads, + exec = new PBQThreadPoolExecutor<>(iCfg.threads, 60L, TimeUnit.SECONDS, - new PriorityBlockingQueue<>(cfg.importer.maxQueue), + new PriorityBlockingQueue<>(iCfg.maxQueue), new NamedThreadFactory(THREAD_NAME, Thread.NORM_PRIORITY, true), new ThreadPoolExecutor.AbortPolicy()); try { diff --git a/webservice/src/main/java/life/catalogue/importer/ImportRequest.java b/importer/src/main/java/life/catalogue/importer/ImportRequest.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/ImportRequest.java rename to importer/src/main/java/life/catalogue/importer/ImportRequest.java diff --git a/webservice/src/main/java/life/catalogue/importer/InterpreterBase.java b/importer/src/main/java/life/catalogue/importer/InterpreterBase.java similarity index 87% rename from webservice/src/main/java/life/catalogue/importer/InterpreterBase.java rename to importer/src/main/java/life/catalogue/importer/InterpreterBase.java index 62e2b32a92..90c36dc9af 100644 --- a/webservice/src/main/java/life/catalogue/importer/InterpreterBase.java +++ b/importer/src/main/java/life/catalogue/importer/InterpreterBase.java @@ -7,11 +7,14 @@ import life.catalogue.dao.ReferenceFactory; import life.catalogue.importer.neo.NeoDb; import life.catalogue.importer.neo.model.NeoUsage; +import life.catalogue.interpreter.InterpreterUtils; +import life.catalogue.interpreter.NameInterpreter; import life.catalogue.matching.NameValidator; import life.catalogue.parser.*; import org.gbif.dwc.terms.DwcTerm; import org.gbif.dwc.terms.Term; +import org.gbif.nameparser.api.Rank; import java.net.URI; import java.time.LocalDate; @@ -22,23 +25,14 @@ import java.util.regex.Pattern; import javax.annotation.Nullable; -import jakarta.validation.constraints.Null; import org.apache.commons.lang3.StringUtils; - -import org.gbif.nameparser.api.NameType; - -import org.gbif.nameparser.api.Rank; -import org.gbif.nameparser.util.RankUtils; - -import org.jsoup.Jsoup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Splitter; import com.google.common.collect.Lists; -import static life.catalogue.matching.NameValidator.*; import static life.catalogue.parser.SafeParser.parse; /** @@ -49,8 +43,6 @@ public class InterpreterBase { private static final Logger LOG = LoggerFactory.getLogger(InterpreterBase.class); protected static final Pattern AREA_VALUE_PATTERN = Pattern.compile("[\\w\\s:.-]+", Pattern.UNICODE_CHARACTER_CLASS); static final Pattern SEC_REF = Pattern.compile("^\\s*(sensu|sec\\.?|fide|auct\\.?|according to) (?!lat|str|non|nec|auct(?:orum)?)(.{3,})$", Pattern.CASE_INSENSITIVE); - private static final Pattern YEAR_PATTERN = Pattern.compile("^(\\d{3})(\\d|\\s*\\?)(?:-[0-9-]+)?(?:\\s*[a-zA-Z])?$"); - private static final Pattern SPLIT_COMMA = Pattern.compile("(? interpretIdentifiers(String idsRaw, @Nullable Identifier.Scope defaultScope, IssueContainer issues) { - if (!StringUtils.isBlank(idsRaw)) { - List ids = new ArrayList<>(); - for (String altID : SPLIT_COMMA.split(idsRaw)) { - var id = Identifier.parse(altID); - ids.add(id); - if (id.isLocal()) { - if (defaultScope != null) { - id.setScope(defaultScope); - } else { - issues.addIssue(Issue.IDENTIFIER_WITHOUT_SCOPE); - } - } - } - return ids; - } - return Collections.emptyList(); - } - protected boolean isExtinctBySetting(Rank rank) { return settings.get(Setting.EXTINCT) != null && rank != null && !rank.isUncomparable() && !rank.higherThan(settings.getEnum(Setting.EXTINCT)); } @@ -493,7 +448,7 @@ public NeoUsage interpretUsage(Term idTerm, ParsedNameUsage pnu, Term taxStatusT if (u.isNameUsageBase()) { List ids = new ArrayList<>(); for (var te : altIdTerms.entrySet()) { - var x = interpretIdentifiers(v.getRaw(te.getKey()), te.getValue(), v); + var x = InterpreterUtils.interpretIdentifiers(v.getRaw(te.getKey()), te.getValue(), v); if (x != null) { ids.addAll(x); } @@ -537,36 +492,6 @@ protected void setEnvironment(Taxon t, List environments, IssueContainer t.setEnvironments(Set.of(settings.getEnum(Setting.ENVIRONMENT))); } } - protected static Integer parseNomenYear(Term term, VerbatimRecord v) { - return parseNomenYear(v.get(term), v); - } - - /** - * Parses the nomenclatural year the name was published and flags issues if the year is unparsable - * or unlikely, i.e. before 1753 or after next year. - */ - protected static Integer parseNomenYear(String year, IssueContainer issues) { - if (!StringUtils.isBlank(year)) { - Matcher m = YEAR_PATTERN.matcher(year.trim()); - if (m.find()) { - Integer y; - if (m.group(2).equals("?")) { - // convert ? to a zero - y = Integer.parseInt(m.group(1)+"0"); - } else { - y = Integer.parseInt(m.group(1)+m.group(2)); - } - if (y < MIN_YEAR || y > MAX_YEAR) { - issues.addIssue(Issue.UNLIKELY_YEAR); - } else { - return y; - } - } else { - issues.addIssue(Issue.UNPARSABLE_YEAR); - } - } - return null; - } public static String normGeoTime(String gt, IssueContainer issues){ if (gt != null) { diff --git a/webservice/src/main/java/life/catalogue/importer/MediaInterpreter.java b/importer/src/main/java/life/catalogue/importer/MediaInterpreter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/MediaInterpreter.java rename to importer/src/main/java/life/catalogue/importer/MediaInterpreter.java diff --git a/webservice/src/main/java/life/catalogue/importer/NeoCsvInserter.java b/importer/src/main/java/life/catalogue/importer/NeoCsvInserter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/NeoCsvInserter.java rename to importer/src/main/java/life/catalogue/importer/NeoCsvInserter.java diff --git a/webservice/src/main/java/life/catalogue/importer/NeoInserter.java b/importer/src/main/java/life/catalogue/importer/NeoInserter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/NeoInserter.java rename to importer/src/main/java/life/catalogue/importer/NeoInserter.java diff --git a/webservice/src/main/java/life/catalogue/importer/NormalizationFailedException.java b/importer/src/main/java/life/catalogue/importer/NormalizationFailedException.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/NormalizationFailedException.java rename to importer/src/main/java/life/catalogue/importer/NormalizationFailedException.java diff --git a/webservice/src/main/java/life/catalogue/importer/Normalizer.java b/importer/src/main/java/life/catalogue/importer/Normalizer.java similarity index 99% rename from webservice/src/main/java/life/catalogue/importer/Normalizer.java rename to importer/src/main/java/life/catalogue/importer/Normalizer.java index ba75c7a777..698d0b1a8d 100644 --- a/webservice/src/main/java/life/catalogue/importer/Normalizer.java +++ b/importer/src/main/java/life/catalogue/importer/Normalizer.java @@ -20,6 +20,7 @@ import life.catalogue.importer.neo.model.*; import life.catalogue.importer.neo.traverse.Traversals; import life.catalogue.importer.txttree.TxtTreeInserter; +import life.catalogue.interpreter.ExtinctName; import life.catalogue.matching.nidx.NameIndex; import life.catalogue.matching.NameValidator; import life.catalogue.metadata.DoiResolver; diff --git a/webservice/src/main/java/life/catalogue/importer/PgImport.java b/importer/src/main/java/life/catalogue/importer/PgImport.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/PgImport.java rename to importer/src/main/java/life/catalogue/importer/PgImport.java diff --git a/webservice/src/main/java/life/catalogue/importer/RelationInserterBase.java b/importer/src/main/java/life/catalogue/importer/RelationInserterBase.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/RelationInserterBase.java rename to importer/src/main/java/life/catalogue/importer/RelationInserterBase.java diff --git a/webservice/src/main/java/life/catalogue/importer/acef/AcefInserter.java b/importer/src/main/java/life/catalogue/importer/acef/AcefInserter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/acef/AcefInserter.java rename to importer/src/main/java/life/catalogue/importer/acef/AcefInserter.java diff --git a/webservice/src/main/java/life/catalogue/importer/acef/AcefInterpreter.java b/importer/src/main/java/life/catalogue/importer/acef/AcefInterpreter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/acef/AcefInterpreter.java rename to importer/src/main/java/life/catalogue/importer/acef/AcefInterpreter.java diff --git a/webservice/src/main/java/life/catalogue/importer/acef/AcefRelationInserter.java b/importer/src/main/java/life/catalogue/importer/acef/AcefRelationInserter.java similarity index 98% rename from webservice/src/main/java/life/catalogue/importer/acef/AcefRelationInserter.java rename to importer/src/main/java/life/catalogue/importer/acef/AcefRelationInserter.java index 831ebd6d7c..4ddd6b495c 100644 --- a/webservice/src/main/java/life/catalogue/importer/acef/AcefRelationInserter.java +++ b/importer/src/main/java/life/catalogue/importer/acef/AcefRelationInserter.java @@ -4,7 +4,7 @@ import life.catalogue.api.model.ParsedNameUsage; import life.catalogue.api.model.VerbatimRecord; import life.catalogue.api.vocab.Issue; -import life.catalogue.importer.NameInterpreter; +import life.catalogue.interpreter.NameInterpreter; import life.catalogue.importer.RelationInserterBase; import life.catalogue.importer.neo.NeoDb; import life.catalogue.importer.neo.model.NeoName; diff --git a/webservice/src/main/java/life/catalogue/importer/bibtex/BibTexInserter.java b/importer/src/main/java/life/catalogue/importer/bibtex/BibTexInserter.java similarity index 97% rename from webservice/src/main/java/life/catalogue/importer/bibtex/BibTexInserter.java rename to importer/src/main/java/life/catalogue/importer/bibtex/BibTexInserter.java index 4665503fa9..2359acd3fb 100644 --- a/webservice/src/main/java/life/catalogue/importer/bibtex/BibTexInserter.java +++ b/importer/src/main/java/life/catalogue/importer/bibtex/BibTexInserter.java @@ -6,7 +6,6 @@ import life.catalogue.api.vocab.Issue; import life.catalogue.common.csl.CslDataConverter; import life.catalogue.dao.ReferenceFactory; -import life.catalogue.importer.NormalizationFailedException; import life.catalogue.importer.neo.NeoDb; import org.gbif.dwc.terms.BibTexTerm; @@ -16,7 +15,6 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.nio.file.Path; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; diff --git a/webservice/src/main/java/life/catalogue/importer/coldp/ColdpInserter.java b/importer/src/main/java/life/catalogue/importer/coldp/ColdpInserter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/coldp/ColdpInserter.java rename to importer/src/main/java/life/catalogue/importer/coldp/ColdpInserter.java diff --git a/webservice/src/main/java/life/catalogue/importer/coldp/ColdpInterpreter.java b/importer/src/main/java/life/catalogue/importer/coldp/ColdpInterpreter.java similarity index 98% rename from webservice/src/main/java/life/catalogue/importer/coldp/ColdpInterpreter.java rename to importer/src/main/java/life/catalogue/importer/coldp/ColdpInterpreter.java index aa096206db..b45687ddf8 100644 --- a/webservice/src/main/java/life/catalogue/importer/coldp/ColdpInterpreter.java +++ b/importer/src/main/java/life/catalogue/importer/coldp/ColdpInterpreter.java @@ -12,6 +12,7 @@ import life.catalogue.importer.neo.model.NeoRel; import life.catalogue.importer.neo.model.NeoUsage; import life.catalogue.importer.neo.model.RelType; +import life.catalogue.interpreter.InterpreterUtils; import life.catalogue.matching.NameValidator; import life.catalogue.parser.*; @@ -156,7 +157,7 @@ private void interpretUsageBase(NeoUsage u, NeoName n, VerbatimRecord v) throws NameUsageBase nub = (NameUsageBase) u.usage; setReferences(v, ColdpTerm.referenceID, COMMA_SPLITTER, nub::setReferenceIds); nub.setLink(uri(v, Issue.URL_INVALID, ColdpTerm.link)); - nub.setIdentifier(interpretIdentifiers(v.getRaw(ColdpTerm.alternativeID), null, v)); + nub.setIdentifier(InterpreterUtils.interpretIdentifiers(v.getRaw(ColdpTerm.alternativeID), null, v)); } if (n.pnu.isDoubtful() && u.usage.isTaxon()) { u.usage.setStatus(TaxonomicStatus.PROVISIONALLY_ACCEPTED); @@ -345,7 +346,7 @@ Optional interpretName(VerbatimRecord v) { setReference(v, refIdTerm, rid -> { n.setPublishedInId(rid); n.setPublishedInPage(v.get(ColdpTerm.publishedInPage)); - n.setPublishedInYear(parseNomenYear(ColdpTerm.publishedInYear, v)); + n.setPublishedInYear(InterpreterUtils.parseNomenYear(ColdpTerm.publishedInYear, v)); }); if (opt.get().getPublishedIn() == null) { String pubInAuthorship = opt.get().getPublishedIn(); diff --git a/webservice/src/main/java/life/catalogue/importer/coldp/ColdpRelationInserter.java b/importer/src/main/java/life/catalogue/importer/coldp/ColdpRelationInserter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/coldp/ColdpRelationInserter.java rename to importer/src/main/java/life/catalogue/importer/coldp/ColdpRelationInserter.java diff --git a/webservice/src/main/java/life/catalogue/importer/csljson/CslJsonInserter.java b/importer/src/main/java/life/catalogue/importer/csljson/CslJsonInserter.java similarity index 99% rename from webservice/src/main/java/life/catalogue/importer/csljson/CslJsonInserter.java rename to importer/src/main/java/life/catalogue/importer/csljson/CslJsonInserter.java index c0f307e468..b003b2ebdc 100644 --- a/webservice/src/main/java/life/catalogue/importer/csljson/CslJsonInserter.java +++ b/importer/src/main/java/life/catalogue/importer/csljson/CslJsonInserter.java @@ -19,7 +19,6 @@ import java.io.IOException; import java.net.URI; import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.Supplier; import org.gbif.dwc.terms.UnknownTerm; diff --git a/webservice/src/main/java/life/catalogue/importer/dwca/DwcInterpreter.java b/importer/src/main/java/life/catalogue/importer/dwca/DwcInterpreter.java similarity index 98% rename from webservice/src/main/java/life/catalogue/importer/dwca/DwcInterpreter.java rename to importer/src/main/java/life/catalogue/importer/dwca/DwcInterpreter.java index 5246c4d417..4f1839c1b8 100644 --- a/webservice/src/main/java/life/catalogue/importer/dwca/DwcInterpreter.java +++ b/importer/src/main/java/life/catalogue/importer/dwca/DwcInterpreter.java @@ -12,6 +12,7 @@ import life.catalogue.importer.neo.model.NeoRel; import life.catalogue.importer.neo.model.NeoUsage; import life.catalogue.importer.neo.model.RelType; +import life.catalogue.interpreter.InterpreterUtils; import life.catalogue.parser.*; import org.gbif.dwc.terms.*; @@ -124,7 +125,7 @@ Optional interpretNameRelations(VerbatimRecord rec) { SafeParser type = SafeParser.parse(NomRelTypeParser.PARSER, rec.get(ColdpTerm.type)); if (type.isPresent()) { rel.setType(RelType.from(type.get())); - rel.setRemarks(replaceHtml(rec.get(ColdpTerm.remarks), true)); + rel.setRemarks(InterpreterUtils.replaceHtml(rec.get(ColdpTerm.remarks), true)); if (rec.hasTerm(DcTerm.bibliographicCitation)) { Reference ref = refFactory.fromDWC(rec.get(ColdpTerm.referenceID), rec.get(DcTerm.bibliographicCitation), null, rec); rel.setReferenceId(ref.getId()); diff --git a/webservice/src/main/java/life/catalogue/importer/dwca/DwcaInserter.java b/importer/src/main/java/life/catalogue/importer/dwca/DwcaInserter.java similarity index 99% rename from webservice/src/main/java/life/catalogue/importer/dwca/DwcaInserter.java rename to importer/src/main/java/life/catalogue/importer/dwca/DwcaInserter.java index f8b50e8dfc..bfbf6c84c4 100644 --- a/webservice/src/main/java/life/catalogue/importer/dwca/DwcaInserter.java +++ b/importer/src/main/java/life/catalogue/importer/dwca/DwcaInserter.java @@ -3,7 +3,6 @@ import life.catalogue.api.model.DatasetSettings; import life.catalogue.api.model.DatasetWithSettings; import life.catalogue.api.model.Taxon; -import life.catalogue.api.model.VerbatimRecord; import life.catalogue.api.vocab.Issue; import life.catalogue.api.vocab.terms.EolDocumentTerm; import life.catalogue.api.vocab.terms.EolReferenceTerm; diff --git a/webservice/src/main/java/life/catalogue/importer/dwca/DwcaRelationInserter.java b/importer/src/main/java/life/catalogue/importer/dwca/DwcaRelationInserter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/dwca/DwcaRelationInserter.java rename to importer/src/main/java/life/catalogue/importer/dwca/DwcaRelationInserter.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/DotProcessor.java b/importer/src/main/java/life/catalogue/importer/neo/DotProcessor.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/DotProcessor.java rename to importer/src/main/java/life/catalogue/importer/neo/DotProcessor.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/MapStore.java b/importer/src/main/java/life/catalogue/importer/neo/MapStore.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/MapStore.java rename to importer/src/main/java/life/catalogue/importer/neo/MapStore.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/NeoCRUDStore.java b/importer/src/main/java/life/catalogue/importer/neo/NeoCRUDStore.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/NeoCRUDStore.java rename to importer/src/main/java/life/catalogue/importer/neo/NeoCRUDStore.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/NeoDb.java b/importer/src/main/java/life/catalogue/importer/neo/NeoDb.java similarity index 99% rename from webservice/src/main/java/life/catalogue/importer/neo/NeoDb.java rename to importer/src/main/java/life/catalogue/importer/neo/NeoDb.java index ba24e38d1a..47cd155f54 100644 --- a/webservice/src/main/java/life/catalogue/importer/neo/NeoDb.java +++ b/importer/src/main/java/life/catalogue/importer/neo/NeoDb.java @@ -55,8 +55,6 @@ import com.google.common.base.Preconditions; import com.google.common.collect.UnmodifiableIterator; -import org.slf4j.MDC; - import static life.catalogue.common.tax.NameFormatter.HYBRID_MARKER; /** diff --git a/webservice/src/main/java/life/catalogue/importer/neo/NeoDbFactory.java b/importer/src/main/java/life/catalogue/importer/neo/NeoDbFactory.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/NeoDbFactory.java rename to importer/src/main/java/life/catalogue/importer/neo/NeoDbFactory.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/NeoDbUtils.java b/importer/src/main/java/life/catalogue/importer/neo/NeoDbUtils.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/NeoDbUtils.java rename to importer/src/main/java/life/catalogue/importer/neo/NeoDbUtils.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/NeoKryoPool.java b/importer/src/main/java/life/catalogue/importer/neo/NeoKryoPool.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/NeoKryoPool.java rename to importer/src/main/java/life/catalogue/importer/neo/NeoKryoPool.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/NeoNameStore.java b/importer/src/main/java/life/catalogue/importer/neo/NeoNameStore.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/NeoNameStore.java rename to importer/src/main/java/life/catalogue/importer/neo/NeoNameStore.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/NeoUsageStore.java b/importer/src/main/java/life/catalogue/importer/neo/NeoUsageStore.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/NeoUsageStore.java rename to importer/src/main/java/life/catalogue/importer/neo/NeoUsageStore.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/NodeBatchProcessor.java b/importer/src/main/java/life/catalogue/importer/neo/NodeBatchProcessor.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/NodeBatchProcessor.java rename to importer/src/main/java/life/catalogue/importer/neo/NodeBatchProcessor.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/NotUniqueRuntimeException.java b/importer/src/main/java/life/catalogue/importer/neo/NotUniqueRuntimeException.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/NotUniqueRuntimeException.java rename to importer/src/main/java/life/catalogue/importer/neo/NotUniqueRuntimeException.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/ReferenceMapStore.java b/importer/src/main/java/life/catalogue/importer/neo/ReferenceMapStore.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/ReferenceMapStore.java rename to importer/src/main/java/life/catalogue/importer/neo/ReferenceMapStore.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/model/Labels.java b/importer/src/main/java/life/catalogue/importer/neo/model/Labels.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/model/Labels.java rename to importer/src/main/java/life/catalogue/importer/neo/model/Labels.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/model/NeoName.java b/importer/src/main/java/life/catalogue/importer/neo/model/NeoName.java similarity index 98% rename from webservice/src/main/java/life/catalogue/importer/neo/model/NeoName.java rename to importer/src/main/java/life/catalogue/importer/neo/model/NeoName.java index 4920521fff..01294bb6e6 100644 --- a/webservice/src/main/java/life/catalogue/importer/neo/model/NeoName.java +++ b/importer/src/main/java/life/catalogue/importer/neo/model/NeoName.java @@ -4,7 +4,6 @@ import life.catalogue.api.model.Name; import life.catalogue.api.model.ParsedNameUsage; import life.catalogue.api.model.VerbatimEntity; -import life.catalogue.api.vocab.MatchType; import life.catalogue.importer.neo.NeoDbUtils; import java.util.Objects; diff --git a/webservice/src/main/java/life/catalogue/importer/neo/model/NeoNode.java b/importer/src/main/java/life/catalogue/importer/neo/model/NeoNode.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/model/NeoNode.java rename to importer/src/main/java/life/catalogue/importer/neo/model/NeoNode.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/model/NeoProperties.java b/importer/src/main/java/life/catalogue/importer/neo/model/NeoProperties.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/model/NeoProperties.java rename to importer/src/main/java/life/catalogue/importer/neo/model/NeoProperties.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/model/NeoRel.java b/importer/src/main/java/life/catalogue/importer/neo/model/NeoRel.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/model/NeoRel.java rename to importer/src/main/java/life/catalogue/importer/neo/model/NeoRel.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/model/NeoUsage.java b/importer/src/main/java/life/catalogue/importer/neo/model/NeoUsage.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/model/NeoUsage.java rename to importer/src/main/java/life/catalogue/importer/neo/model/NeoUsage.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/model/NodeMock.java b/importer/src/main/java/life/catalogue/importer/neo/model/NodeMock.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/model/NodeMock.java rename to importer/src/main/java/life/catalogue/importer/neo/model/NodeMock.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/model/PropLabel.java b/importer/src/main/java/life/catalogue/importer/neo/model/PropLabel.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/model/PropLabel.java rename to importer/src/main/java/life/catalogue/importer/neo/model/PropLabel.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/model/RankedName.java b/importer/src/main/java/life/catalogue/importer/neo/model/RankedName.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/model/RankedName.java rename to importer/src/main/java/life/catalogue/importer/neo/model/RankedName.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/model/RankedUsage.java b/importer/src/main/java/life/catalogue/importer/neo/model/RankedUsage.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/model/RankedUsage.java rename to importer/src/main/java/life/catalogue/importer/neo/model/RankedUsage.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/model/RelType.java b/importer/src/main/java/life/catalogue/importer/neo/model/RelType.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/model/RelType.java rename to importer/src/main/java/life/catalogue/importer/neo/model/RelType.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/printer/BasePrinter.java b/importer/src/main/java/life/catalogue/importer/neo/printer/BasePrinter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/printer/BasePrinter.java rename to importer/src/main/java/life/catalogue/importer/neo/printer/BasePrinter.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/printer/DotPrinter.java b/importer/src/main/java/life/catalogue/importer/neo/printer/DotPrinter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/printer/DotPrinter.java rename to importer/src/main/java/life/catalogue/importer/neo/printer/DotPrinter.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/printer/GmlPrinter.java b/importer/src/main/java/life/catalogue/importer/neo/printer/GmlPrinter.java similarity index 98% rename from webservice/src/main/java/life/catalogue/importer/neo/printer/GmlPrinter.java rename to importer/src/main/java/life/catalogue/importer/neo/printer/GmlPrinter.java index d14ef3c966..783f78fd98 100644 --- a/webservice/src/main/java/life/catalogue/importer/neo/printer/GmlPrinter.java +++ b/importer/src/main/java/life/catalogue/importer/neo/printer/GmlPrinter.java @@ -24,7 +24,7 @@ * https://en.wikipedia.org/wiki/Graph_Modelling_Language * See http://www.fim.uni-passau.de/fileadmin/files/lehrstuhl/brandenburg/projekte/gml/gml-technical-report.pdf */ -public class GmlPrinter extends BasePrinter{ +public class GmlPrinter extends BasePrinter { private final Writer writer; private final List edges = Lists.newArrayList(); private final boolean strictTree; diff --git a/webservice/src/main/java/life/catalogue/importer/neo/printer/GraphFormat.java b/importer/src/main/java/life/catalogue/importer/neo/printer/GraphFormat.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/printer/GraphFormat.java rename to importer/src/main/java/life/catalogue/importer/neo/printer/GraphFormat.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/printer/ListPrinter.java b/importer/src/main/java/life/catalogue/importer/neo/printer/ListPrinter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/printer/ListPrinter.java rename to importer/src/main/java/life/catalogue/importer/neo/printer/ListPrinter.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/printer/PrinterUtils.java b/importer/src/main/java/life/catalogue/importer/neo/printer/PrinterUtils.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/printer/PrinterUtils.java rename to importer/src/main/java/life/catalogue/importer/neo/printer/PrinterUtils.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/printer/TabPrinter.java b/importer/src/main/java/life/catalogue/importer/neo/printer/TabPrinter.java similarity index 97% rename from webservice/src/main/java/life/catalogue/importer/neo/printer/TabPrinter.java rename to importer/src/main/java/life/catalogue/importer/neo/printer/TabPrinter.java index e28693716e..67135a2da9 100644 --- a/webservice/src/main/java/life/catalogue/importer/neo/printer/TabPrinter.java +++ b/importer/src/main/java/life/catalogue/importer/neo/printer/TabPrinter.java @@ -18,7 +18,7 @@ * Dumps a normalizer db in a simple tab delimited format used by the nub integration tests. * Expects no pro parte relations in the walker! */ -public class TabPrinter extends BasePrinter{ +public class TabPrinter extends BasePrinter { private final TabWriter writer; private static final Joiner ID_CONCAT = Joiner.on(";").skipNulls(); diff --git a/webservice/src/main/java/life/catalogue/importer/neo/printer/TreePrinter.java b/importer/src/main/java/life/catalogue/importer/neo/printer/TreePrinter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/printer/TreePrinter.java rename to importer/src/main/java/life/catalogue/importer/neo/printer/TreePrinter.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/printer/TxtPrinter.java b/importer/src/main/java/life/catalogue/importer/neo/printer/TxtPrinter.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/printer/TxtPrinter.java rename to importer/src/main/java/life/catalogue/importer/neo/printer/TxtPrinter.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/traverse/AcceptedOnlyEvaluator.java b/importer/src/main/java/life/catalogue/importer/neo/traverse/AcceptedOnlyEvaluator.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/traverse/AcceptedOnlyEvaluator.java rename to importer/src/main/java/life/catalogue/importer/neo/traverse/AcceptedOnlyEvaluator.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/traverse/ClassificationRankEvaluator.java b/importer/src/main/java/life/catalogue/importer/neo/traverse/ClassificationRankEvaluator.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/traverse/ClassificationRankEvaluator.java rename to importer/src/main/java/life/catalogue/importer/neo/traverse/ClassificationRankEvaluator.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/traverse/MultiRooIterator.java b/importer/src/main/java/life/catalogue/importer/neo/traverse/MultiRooIterator.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/traverse/MultiRooIterator.java rename to importer/src/main/java/life/catalogue/importer/neo/traverse/MultiRooIterator.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/traverse/MultiRootNodeIterator.java b/importer/src/main/java/life/catalogue/importer/neo/traverse/MultiRootNodeIterator.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/traverse/MultiRootNodeIterator.java rename to importer/src/main/java/life/catalogue/importer/neo/traverse/MultiRootNodeIterator.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/traverse/MultiRootPathIterator.java b/importer/src/main/java/life/catalogue/importer/neo/traverse/MultiRootPathIterator.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/traverse/MultiRootPathIterator.java rename to importer/src/main/java/life/catalogue/importer/neo/traverse/MultiRootPathIterator.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/traverse/StartEndHandler.java b/importer/src/main/java/life/catalogue/importer/neo/traverse/StartEndHandler.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/traverse/StartEndHandler.java rename to importer/src/main/java/life/catalogue/importer/neo/traverse/StartEndHandler.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/traverse/TaxonomicOrder.java b/importer/src/main/java/life/catalogue/importer/neo/traverse/TaxonomicOrder.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/traverse/TaxonomicOrder.java rename to importer/src/main/java/life/catalogue/importer/neo/traverse/TaxonomicOrder.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/traverse/TaxonomicOrderExpander.java b/importer/src/main/java/life/catalogue/importer/neo/traverse/TaxonomicOrderExpander.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/traverse/TaxonomicOrderExpander.java rename to importer/src/main/java/life/catalogue/importer/neo/traverse/TaxonomicOrderExpander.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/traverse/Traversals.java b/importer/src/main/java/life/catalogue/importer/neo/traverse/Traversals.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/traverse/Traversals.java rename to importer/src/main/java/life/catalogue/importer/neo/traverse/Traversals.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/traverse/TreeWalker.java b/importer/src/main/java/life/catalogue/importer/neo/traverse/TreeWalker.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/traverse/TreeWalker.java rename to importer/src/main/java/life/catalogue/importer/neo/traverse/TreeWalker.java diff --git a/webservice/src/main/java/life/catalogue/importer/neo/traverse/UsageRankEvaluator.java b/importer/src/main/java/life/catalogue/importer/neo/traverse/UsageRankEvaluator.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/neo/traverse/UsageRankEvaluator.java rename to importer/src/main/java/life/catalogue/importer/neo/traverse/UsageRankEvaluator.java diff --git a/webservice/src/main/java/life/catalogue/importer/proxy/ArchiveDescriptor.java b/importer/src/main/java/life/catalogue/importer/proxy/ArchiveDescriptor.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/proxy/ArchiveDescriptor.java rename to importer/src/main/java/life/catalogue/importer/proxy/ArchiveDescriptor.java diff --git a/webservice/src/main/java/life/catalogue/importer/proxy/DistributedArchiveService.java b/importer/src/main/java/life/catalogue/importer/proxy/DistributedArchiveService.java similarity index 100% rename from webservice/src/main/java/life/catalogue/importer/proxy/DistributedArchiveService.java rename to importer/src/main/java/life/catalogue/importer/proxy/DistributedArchiveService.java diff --git a/webservice/src/main/java/life/catalogue/importer/txttree/TxtTreeInserter.java b/importer/src/main/java/life/catalogue/importer/txttree/TxtTreeInserter.java similarity index 99% rename from webservice/src/main/java/life/catalogue/importer/txttree/TxtTreeInserter.java rename to importer/src/main/java/life/catalogue/importer/txttree/TxtTreeInserter.java index 88dd0a7835..b8aa1b166f 100644 --- a/webservice/src/main/java/life/catalogue/importer/txttree/TxtTreeInserter.java +++ b/importer/src/main/java/life/catalogue/importer/txttree/TxtTreeInserter.java @@ -5,7 +5,6 @@ import life.catalogue.api.vocab.*; import life.catalogue.api.vocab.terms.TxtTreeTerm; import life.catalogue.common.io.PathUtils; -import life.catalogue.common.io.TabReader; import life.catalogue.csv.*; import life.catalogue.dao.ReferenceFactory; import life.catalogue.importer.NeoInserter; @@ -29,7 +28,6 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.net.URI; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.HashMap; diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/ImportArticleJob.java b/importer/src/main/java/life/catalogue/jobs/ImportArticleJob.java similarity index 90% rename from webservice/src/main/java/life/catalogue/admin/jobs/ImportArticleJob.java rename to importer/src/main/java/life/catalogue/jobs/ImportArticleJob.java index 942a08bc02..7174edd600 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/ImportArticleJob.java +++ b/importer/src/main/java/life/catalogue/jobs/ImportArticleJob.java @@ -1,12 +1,12 @@ -package life.catalogue.admin.jobs; +package life.catalogue.jobs; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.User; import life.catalogue.api.search.DatasetSearchRequest; import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.api.vocab.DatasetType; import life.catalogue.concurrent.GlobalBlockingJob; import life.catalogue.concurrent.JobPriority; +import life.catalogue.config.ImporterConfig; import life.catalogue.db.mapper.DatasetMapper; import life.catalogue.importer.ImportManager; import life.catalogue.importer.ImportRequest; @@ -30,12 +30,12 @@ public class ImportArticleJob extends GlobalBlockingJob { private final SqlSessionFactory factory; private final ImportManager importManager; - private final WsServerConfig cfg; + private final ImporterConfig cfg; @JsonProperty private int counter; - public ImportArticleJob(User user, SqlSessionFactory factory, ImportManager importManager, WsServerConfig cfg) { + public ImportArticleJob(User user, SqlSessionFactory factory, ImportManager importManager, ImporterConfig cfg) { super(user.getKey(), JobPriority.HIGH); this.factory = factory; this.importManager = importManager; @@ -58,7 +58,7 @@ public void execute() { counter = 0; for (int key : keys) { try { - while (importManager.queueSize() + 5 > cfg.importer.maxQueue) { + while (importManager.queueSize() + 5 > cfg.maxQueue) { TimeUnit.MINUTES.sleep(1); } // does a local archive exist? diff --git a/webservice/src/main/java/life/catalogue/admin/jobs/ReimportJob.java b/importer/src/main/java/life/catalogue/jobs/ReimportJob.java similarity index 85% rename from webservice/src/main/java/life/catalogue/admin/jobs/ReimportJob.java rename to importer/src/main/java/life/catalogue/jobs/ReimportJob.java index 0c31843de8..8314890046 100644 --- a/webservice/src/main/java/life/catalogue/admin/jobs/ReimportJob.java +++ b/importer/src/main/java/life/catalogue/jobs/ReimportJob.java @@ -1,10 +1,11 @@ -package life.catalogue.admin.jobs; +package life.catalogue.jobs; -import life.catalogue.WsServerConfig; import life.catalogue.api.model.User; import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.concurrent.GlobalBlockingJob; import life.catalogue.concurrent.JobPriority; +import life.catalogue.config.ImporterConfig; +import life.catalogue.config.NormalizerConfig; import life.catalogue.db.mapper.DatasetMapper; import life.catalogue.importer.ImportManager; import life.catalogue.importer.ImportRequest; @@ -32,16 +33,18 @@ public class ReimportJob extends GlobalBlockingJob { private final SqlSessionFactory factory; private final ImportManager importManager; - private final WsServerConfig cfg; + private final ImporterConfig iCfg; + private final NormalizerConfig nCfg; @JsonProperty private int counter; - public ReimportJob(User user, SqlSessionFactory factory, ImportManager importManager, WsServerConfig cfg) { + public ReimportJob(User user, SqlSessionFactory factory, ImportManager importManager, ImporterConfig iCfg, NormalizerConfig nCfg) { super(user.getKey(), JobPriority.HIGH); this.factory = factory; this.importManager = importManager; - this.cfg = cfg; + this.iCfg = iCfg; + this.nCfg = nCfg; } @Override @@ -57,13 +60,13 @@ public void execute() { counter = 0; for (int key : keys) { try { - while (importManager.queueSize() + 5 > cfg.importer.maxQueue) { + while (importManager.queueSize() + 5 > iCfg.maxQueue) { TimeUnit.MINUTES.sleep(1); } // does a local archive exist? - File latestArchive = cfg.normalizer.lastestArchive(key); + File latestArchive = nCfg.lastestArchive(key); if (latestArchive != null && latestArchive.exists()) { - int attempt = cfg.normalizer.attemptFromArchive(latestArchive); + int attempt = nCfg.attemptFromArchive(latestArchive); LOG.debug("Import local archive for dataset {} from last attempt {}", key, attempt); ImportRequest req = ImportRequest.reimport(key, attempt, getUserKey()); importManager.submit(req); diff --git a/webservice/src/test/java/life/catalogue/TestDataGenerator.java b/importer/src/test/java/life/catalogue/TestDataGenerator.java similarity index 83% rename from webservice/src/test/java/life/catalogue/TestDataGenerator.java rename to importer/src/test/java/life/catalogue/TestDataGenerator.java index eb94e09838..74a33644c7 100644 --- a/webservice/src/test/java/life/catalogue/TestDataGenerator.java +++ b/importer/src/test/java/life/catalogue/TestDataGenerator.java @@ -5,14 +5,8 @@ import life.catalogue.api.vocab.*; import life.catalogue.assembly.SectorSyncIT; import life.catalogue.assembly.SyncFactoryRule; -import life.catalogue.config.ReleaseConfig; import life.catalogue.dao.DatasetDao; import life.catalogue.dao.ReferenceDao; -import life.catalogue.junit.TreeRepoRule; -import life.catalogue.junit.NameMatchingRule; -import life.catalogue.junit.PgSetupRule; -import life.catalogue.junit.SqlSessionFactoryRule; -import life.catalogue.junit.TestDataRule; import life.catalogue.db.mapper.DatasetMapper; import life.catalogue.db.mapper.NameMapper; import life.catalogue.db.mapper.SectorMapper; @@ -20,6 +14,7 @@ import life.catalogue.es.NameUsageIndexService; import life.catalogue.img.ImageService; import life.catalogue.importer.PgImportRule; +import life.catalogue.junit.*; import life.catalogue.pgcopy.PgCopyUtils; import life.catalogue.release.ProjectCopyFactory; @@ -31,12 +26,10 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.function.Function; import javax.annotation.Nullable; -import jakarta.validation.Validation; import org.apache.commons.io.FileUtils; import org.apache.ibatis.session.SqlSession; @@ -47,14 +40,14 @@ import org.junit.rules.TestRule; import org.postgresql.jdbc.PgConnection; -import it.unimi.dsi.fastutil.Pair; +import jakarta.validation.Validation; /** * Manual tool to generate test data CSV files for the TestDataRule from regular CoLDP or DwC archives which are simpler to craft than sql dumps. - * Can then be copied to the test data resources and used for quicker integration tests. + * Can then be copied to the core test data resources and used for quicker integration tests. * Run the respective "test" whenever you want the test resource to be changed based on newer archive imports. + * Note that the test data resources must live in the core module, not in the importer (which does hold the archives though) */ - @Ignore("for manual use only") public class TestDataGenerator { final static SqlSessionFactoryRule pg = new PgSetupRule(); // new PgConnectionRule("col", "postgres", "postgres", 100); @@ -63,46 +56,6 @@ public class TestDataGenerator { final static NameMatchingRule matchingRule = new NameMatchingRule(); final static SyncFactoryRule syncFactoryRule = new SyncFactoryRule(); - final static TestDataRule.TestData MATCHING = new TestDataRule.TestData("matching", 101, Set.of(101, 102), false); - - final static TestDataRule.TestData SYNCS = new TestDataRule.TestData("syncs", 3, null, false, Map.ofEntries( - Map.entry(Pair.of(DataFormat.COLDP, 38), 118), - Map.entry(Pair.of(DataFormat.DWCA, 1), 106), - Map.entry(Pair.of(DataFormat.COLDP, 35), 117), - Map.entry(Pair.of(DataFormat.DWCA, 2), 107), - Map.entry(Pair.of(DataFormat.COLDP, 4), 112), - Map.entry(Pair.of(DataFormat.ACEF, 14), 120), - Map.entry(Pair.of(DataFormat.COLDP, 2), 111), - Map.entry(Pair.of(DataFormat.COLDP, 34), 116), - Map.entry(Pair.of(DataFormat.COLDP, 0), 103), - Map.entry(Pair.of(DataFormat.ACEF, 11), 110), - Map.entry(Pair.of(DataFormat.COLDP, 27), 101), - Map.entry(Pair.of(DataFormat.COLDP, 25), 105), - Map.entry(Pair.of(DataFormat.COLDP, 26), 115), - Map.entry(Pair.of(DataFormat.COLDP, 24), 114), - Map.entry(Pair.of(DataFormat.ACEF, 1), 102), - Map.entry(Pair.of(DataFormat.COLDP, 22), 104), - Map.entry(Pair.of(DataFormat.DWCA, 45), 119), - Map.entry(Pair.of(DataFormat.COLDP, 14), 113), - Map.entry(Pair.of(DataFormat.ACEF, 6), 109), - Map.entry(Pair.of(DataFormat.ACEF, 5), 108) - )); - final static TestDataRule.TestData XCOL = new TestDataRule.TestData("xcol", 3, null, false); - final static TestDataRule.TestData GROUPING = new TestDataRule.TestData("homgroup", 4, null, false); - - public static TestDataRule homotypigGrouping() { - return new TestDataRule(GROUPING); - } - public static TestDataRule matching() { - return new TestDataRule(MATCHING); - } - public static TestDataRule syncs() { - return new TestDataRule(SYNCS); - } - public static TestDataRule xcol() { - return new TestDataRule(XCOL); - } - final Taxon COL_ROOT = TestEntityGenerator.newMinimalTaxon(Datasets.COL, "root", null, Rank.UNRANKED, "Biota"); @ClassRule @@ -117,14 +70,14 @@ public static TestDataRule xcol() { @Test public void prepareMatchingData() throws Throwable { - export(MATCHING.name, + export(TestDataRules.MATCHING.name, PgImportRule.create(DatasetOrigin.EXTERNAL, DatasetType.TAXONOMIC, DataFormat.COLDP, 28, 37) ); } @Test public void prepareSyncsData() throws Throwable { - export(SYNCS.name, + export(TestDataRules.SYNCS.name, PgImportRule.create( DatasetOrigin.EXTERNAL, DataFormat.COLDP, 27, // both zoological and botanical @@ -204,7 +157,7 @@ public void prepareXcolData() throws Throwable { var importRule = new PgImportRule(resources.toArray(new PgImportRule.TestResource[0])); // now also import the COL project - needs special attention to get the dataset key right importRule.setColImportSource(DataFormat.TEXT_TREE, "xcol/3.txtree"); - export(XCOL.name, importRule, this::supplyXcolAttachSectors, true); + export(TestDataRules.XCOL.name, importRule, this::supplyXcolAttachSectors, true); } List supplyXcolAttachSectors(PgImportRule importRule) { @@ -220,7 +173,7 @@ List supplyXcolAttachSectors(PgImportRule importRule) { @Test public void prepareHomotypicGroupingData() throws Throwable { - export(GROUPING.name, + export(TestDataRules.GROUPING.name, PgImportRule.create( DatasetOrigin.PROJECT, DataFormat.COLDP, 30 ) @@ -267,10 +220,8 @@ void export(String name, PgImportRule importRule, Function data() { List list = List.of( XReleaseBasicIT.XRELEASE_DATA, IdProviderIT.PROJECT_DATA, - TestDataGenerator.SYNCS, - TestDataGenerator.MATCHING, - TestDataGenerator.XCOL, - TestDataGenerator.GROUPING + TestDataRules.SYNCS, + TestDataRules.MATCHING, + TestDataRules.XCOL, + TestDataRules.GROUPING ); return list.stream().map(t -> new Object[]{t}).collect(Collectors.toList()); } diff --git a/webservice/src/test/java/life/catalogue/importer/DataFormatDetectorTest.java b/importer/src/test/java/life/catalogue/importer/DataFormatDetectorTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/DataFormatDetectorTest.java rename to importer/src/test/java/life/catalogue/importer/DataFormatDetectorTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/ExternalSourceUtil.java b/importer/src/test/java/life/catalogue/importer/ExternalSourceUtil.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/ExternalSourceUtil.java rename to importer/src/test/java/life/catalogue/importer/ExternalSourceUtil.java diff --git a/webservice/src/test/java/life/catalogue/importer/IdGeneratorTest.java b/importer/src/test/java/life/catalogue/importer/IdGeneratorTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/IdGeneratorTest.java rename to importer/src/test/java/life/catalogue/importer/IdGeneratorTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/ImportJobIT.java b/importer/src/test/java/life/catalogue/importer/ImportJobIT.java similarity index 74% rename from webservice/src/test/java/life/catalogue/importer/ImportJobIT.java rename to importer/src/test/java/life/catalogue/importer/ImportJobIT.java index 945be6aece..b87c860494 100644 --- a/webservice/src/test/java/life/catalogue/importer/ImportJobIT.java +++ b/importer/src/test/java/life/catalogue/importer/ImportJobIT.java @@ -1,6 +1,6 @@ package life.catalogue.importer; -import life.catalogue.WsServerConfig; +import life.catalogue.TestConfigs; import life.catalogue.api.model.DatasetWithSettings; import life.catalogue.api.vocab.DataFormat; import life.catalogue.api.vocab.DatasetOrigin; @@ -9,18 +9,19 @@ import life.catalogue.common.io.DownloadUtil; import life.catalogue.common.io.Resources; import life.catalogue.dao.*; -import life.catalogue.junit.PgSetupRule; -import life.catalogue.junit.SqlSessionFactoryRule; -import life.catalogue.junit.TestDataRule; import life.catalogue.db.mapper.DatasetMapper; import life.catalogue.es.NameUsageIndexService; import life.catalogue.img.ImageServiceFS; +import life.catalogue.junit.PgSetupRule; +import life.catalogue.junit.SqlSessionFactoryRule; +import life.catalogue.junit.TestDataRule; import life.catalogue.junit.TreeRepoRule; import life.catalogue.matching.nidx.NameIndexFactory; import java.net.URI; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.ibatis.session.SqlSession; import org.junit.*; import org.junit.runner.RunWith; @@ -29,19 +30,15 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.codahale.metrics.MetricRegistry; import com.google.common.eventbus.EventBus; -import com.google.common.io.Files; -import io.dropwizard.client.HttpClientBuilder; -import io.dropwizard.util.Duration; import jakarta.validation.Validator; import static org.junit.Assert.fail; @RunWith(MockitoJUnitRunner.class) public class ImportJobIT { - private static final Logger LOG = LoggerFactory.getLogger(ImportManagerLiveTest.class); + private static final Logger LOG = LoggerFactory.getLogger(ImportJobIT.class); CloseableHttpClient hc; DatasetImportDao diDao; @@ -57,7 +54,7 @@ public class ImportJobIT { @Rule public final TreeRepoRule treeRepoRule = new TreeRepoRule(); - private WsServerConfig cfg; + private TestConfigs cfg; private ImportJob job; private DatasetWithSettings d; private NameUsageIndexService indexService; @@ -65,32 +62,11 @@ public class ImportJobIT { private DecisionDao dDao; private DatasetDao datasetDao; - private static WsServerConfig provideConfig() { - WsServerConfig cfg = new WsServerConfig(); - cfg.gbif.syncFrequency = 0; - cfg.importer.continuous.polling = 0; - cfg.importer.threads = 2; - // wait for half a minute before completing an import to run assertions - cfg.importer.wait = 30; - cfg.normalizer.archiveDir = Files.createTempDir(); - cfg.normalizer.scratchDir = Files.createTempDir(); - cfg.db.host = "localhost"; - cfg.db.database = "colplus"; - cfg.db.user = "postgres"; - cfg.db.password = "postgres"; - cfg.es = null; - // http - cfg.client.setTimeout(Duration.minutes(1)); - cfg.client.setConnectionTimeout(Duration.minutes(1)); - cfg.client.setConnectionRequestTimeout(Duration.minutes(1)); - return cfg; - } @Before public void init() throws Exception { - MetricRegistry metrics = new MetricRegistry(); - cfg = provideConfig(); - hc = new HttpClientBuilder(metrics).using(cfg.client).build("local"); + cfg = TestConfigs.build(); + hc = HttpClients.createDefault(); diDao = new DatasetImportDao(SqlSessionFactoryRule.getSqlSessionFactory(), treeRepoRule.getRepo()); indexService = NameUsageIndexService.passThru(); NameDao nDao = new NameDao(SqlSessionFactoryRule.getSqlSessionFactory(), indexService, NameIndexFactory.passThru(), validator); @@ -136,7 +112,7 @@ private void setupAndRun(DataFormat format, String access){ } ImportRequest req = ImportRequest.external(d.getKey(), Users.TESTER); - job = new ImportJob(req, d, cfg, new DownloadUtil(hc), SqlSessionFactoryRule.getSqlSessionFactory(), NameIndexFactory.passThru(), validator, null, + job = new ImportJob(req, d, cfg.importer, cfg.normalizer, new DownloadUtil(hc), SqlSessionFactoryRule.getSqlSessionFactory(), NameIndexFactory.passThru(), validator, null, indexService, new ImageServiceFS(cfg.img, null), diDao, datasetDao, sDao, dDao, new EventBus("test-bus"), this::start, this::success, this::error); } diff --git a/webservice/src/test/java/life/catalogue/importer/ImportManagerTest.java b/importer/src/test/java/life/catalogue/importer/ImportManagerTest.java similarity index 84% rename from webservice/src/test/java/life/catalogue/importer/ImportManagerTest.java rename to importer/src/test/java/life/catalogue/importer/ImportManagerTest.java index 57fdef7468..31d473e625 100644 --- a/webservice/src/test/java/life/catalogue/importer/ImportManagerTest.java +++ b/importer/src/test/java/life/catalogue/importer/ImportManagerTest.java @@ -1,6 +1,6 @@ package life.catalogue.importer; -import life.catalogue.WsServerConfig; +import life.catalogue.TestConfigs; import life.catalogue.api.TestEntityGenerator; import life.catalogue.api.model.Dataset; import life.catalogue.api.vocab.DatasetOrigin; @@ -10,12 +10,12 @@ import life.catalogue.common.io.Resources; import life.catalogue.concurrent.JobExecutor; import life.catalogue.dao.*; -import life.catalogue.junit.PgSetupRule; -import life.catalogue.junit.SqlSessionFactoryRule; -import life.catalogue.junit.TestDataRule; import life.catalogue.db.mapper.DatasetMapper; import life.catalogue.es.NameUsageIndexService; import life.catalogue.img.ImageServiceFS; +import life.catalogue.junit.PgSetupRule; +import life.catalogue.junit.SqlSessionFactoryRule; +import life.catalogue.junit.TestDataRule; import life.catalogue.matching.nidx.NameIndexFactory; import java.io.File; @@ -26,6 +26,7 @@ import java.util.concurrent.TimeUnit; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.ibatis.session.SqlSession; import org.junit.*; import org.junit.runner.RunWith; @@ -37,9 +38,7 @@ import com.codahale.metrics.MetricRegistry; import com.google.common.collect.Lists; import com.google.common.eventbus.EventBus; -import com.google.common.io.Files; -import io.dropwizard.client.HttpClientBuilder; import jakarta.validation.Validator; import static org.junit.Assert.*; @@ -68,23 +67,6 @@ public class ImportManagerTest { @Mock Validator validator; - private static WsServerConfig provideConfig() { - WsServerConfig cfg = new WsServerConfig(); - cfg.gbif.syncFrequency = 0; - cfg.importer.continuous.polling = 0; - cfg.importer.threads = 2; - // wait for half a minute before completing an import to run assertions - cfg.importer.wait = 30; - cfg.normalizer.archiveDir = Files.createTempDir(); - cfg.normalizer.scratchDir = Files.createTempDir(); - cfg.db.host = "localhost"; - cfg.db.database = "colplus"; - cfg.db.user = "postgres"; - cfg.db.password = "postgres"; - cfg.es = null; - return cfg; - } - @Before public void init() throws Exception { try (SqlSession session = SqlSessionFactoryRule.getSqlSessionFactory().openSession(true)) { @@ -108,9 +90,9 @@ public void init() throws Exception { DatasetDao datasetDao = new DatasetDao(SqlSessionFactoryRule.getSqlSessionFactory(), null,diDao, validator); MetricRegistry metrics = new MetricRegistry(); - final WsServerConfig cfg = provideConfig(); - hc = new HttpClientBuilder(metrics).using(cfg.client).build("local"); - manager = new ImportManager(cfg, metrics, hc, new EventBus("test-bus"), SqlSessionFactoryRule.getSqlSessionFactory(), NameIndexFactory.passThru(), + final TestConfigs cfg = TestConfigs.build(); + hc = HttpClients.createDefault(); + manager = new ImportManager(cfg.importer, cfg.normalizer, metrics, hc, new EventBus("test-bus"), SqlSessionFactoryRule.getSqlSessionFactory(), NameIndexFactory.passThru(), diDao, datasetDao, sDao, dDao, indexService, imgService, jobExecutor, validator, null); manager.start(); } diff --git a/webservice/src/test/java/life/catalogue/importer/ImportRequestTest.java b/importer/src/test/java/life/catalogue/importer/ImportRequestTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/ImportRequestTest.java rename to importer/src/test/java/life/catalogue/importer/ImportRequestTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/InserterBaseTest.java b/importer/src/test/java/life/catalogue/importer/InserterBaseTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/InserterBaseTest.java rename to importer/src/test/java/life/catalogue/importer/InserterBaseTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/InterpreterBaseTest.java b/importer/src/test/java/life/catalogue/importer/InterpreterBaseTest.java similarity index 77% rename from webservice/src/test/java/life/catalogue/importer/InterpreterBaseTest.java rename to importer/src/test/java/life/catalogue/importer/InterpreterBaseTest.java index a95e0210b5..67d742eacc 100644 --- a/webservice/src/test/java/life/catalogue/importer/InterpreterBaseTest.java +++ b/importer/src/test/java/life/catalogue/importer/InterpreterBaseTest.java @@ -10,6 +10,7 @@ import life.catalogue.importer.neo.NeoDb; import life.catalogue.importer.neo.ReferenceMapStore; import life.catalogue.importer.neo.model.NeoUsage; +import life.catalogue.interpreter.InterpreterUtils; import org.gbif.nameparser.api.Authorship; @@ -29,6 +30,7 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.when; + @RunWith(MockitoJUnitRunner.class) public class InterpreterBaseTest { @@ -50,48 +52,48 @@ public void init() { @Test public void replaceHtml() throws Exception { - assertNull(ib.replaceHtml(null, true)); - assertNull(ib.replaceHtml("", true)); - assertNull(ib.replaceHtml(" ", true)); + assertNull(InterpreterUtils.replaceHtml(null, true)); + assertNull(InterpreterUtils.replaceHtml("", true)); + assertNull(InterpreterUtils.replaceHtml(" ", true)); - assertEquals("x", ib.replaceHtml("x", true)); - assertEquals("x", ib.replaceHtml("x", false)); + assertEquals("x", InterpreterUtils.replaceHtml("x", true)); + assertEquals("x", InterpreterUtils.replaceHtml("x", false)); assertEquals("Hypoclinea humilis [Mayr, 1868b](https://antcat.org/references/127225)[PDF: 164 (w.) ARGENTINA (Buenos Aires). Neotropic. Primary type information: Primary type material: holotype (?) worker. Primary type locality: Argentina: Buenos Aires, 1866 (Strobel).](https://antcat.org/documents/2148/4369.pdf)", - ib.replaceHtml("
Hypoclinea humilis Mayr, 1868b PDF: 164 (w.) ARGENTINA (Buenos Aires). Neotropic. Primary type information: Primary type material: holotype (?) worker. Primary type locality: Argentina: Buenos Aires, 1866 (Strobel).", true)); + InterpreterUtils.replaceHtml("
Hypoclinea humilis Mayr, 1868b PDF: 164 (w.) ARGENTINA (Buenos Aires). Neotropic. Primary type information: Primary type material: holotype (?) worker. Primary type locality: Argentina: Buenos Aires, 1866 (Strobel).", true)); assertEquals("Hypoclinea humilis Mayr, 1868b PDF: 164 (w.) ARGENTINA (Buenos Aires). Neotropic. Primary type information: Primary type material: holotype (?) worker. Primary type locality: Argentina: Buenos Aires, 1866 (Strobel).", - ib.replaceHtml("
Hypoclinea humilis Mayr, 1868b PDF: 164 (w.) ARGENTINA (Buenos Aires). Neotropic. Primary type information: Primary type material: holotype (?) worker. Primary type locality: Argentina: Buenos Aires, 1866 (Strobel).", false)); - assertEquals("tsn:2134\\,COL:GHS", ib.replaceHtml(" tsn:2134\\,COL:GHS", true)); - assertEquals("tsn:2134\\,COL:GHS", ib.replaceHtml(" tsn:2134\\,COL:GHS", false)); - assertEquals("https://species.wikimedia.org/wiki/Poa_annua", ib.replaceHtml("https://species.wikimedia.org/wiki/Poa_annua", true)); + InterpreterUtils.replaceHtml("
Hypoclinea humilis Mayr, 1868b PDF: 164 (w.) ARGENTINA (Buenos Aires). Neotropic. Primary type information: Primary type material: holotype (?) worker. Primary type locality: Argentina: Buenos Aires, 1866 (Strobel).", false)); + assertEquals("tsn:2134\\,COL:GHS", InterpreterUtils.replaceHtml(" tsn:2134\\,COL:GHS", true)); + assertEquals("tsn:2134\\,COL:GHS", InterpreterUtils.replaceHtml(" tsn:2134\\,COL:GHS", false)); + assertEquals("https://species.wikimedia.org/wiki/Poa_annua", InterpreterUtils.replaceHtml("https://species.wikimedia.org/wiki/Poa_annua", true)); assertEquals("Hypoclinea humilis [Mayr, 1868b](https://antcat.org/references/127225)[PDF: 164 (w.) ARGENTINA (Buenos Aires). Neotropic. Primary type information: Primary type material: holotype (?) worker. Primary type locality: Argentina: Buenos Aires, 1866 (Strobel).](https://antcat.org/documents/2148/4369.pdf)", - ib.replaceHtml("Hypoclinea humilis [Mayr, 1868b](https://antcat.org/references/127225)[PDF: 164 (w.) ARGENTINA (Buenos Aires). Neotropic. Primary type information: Primary type material: holotype (?) worker. Primary type locality: Argentina: Buenos Aires, 1866 (Strobel).](https://antcat.org/documents/2148/4369.pdf)", true)); + InterpreterUtils.replaceHtml("Hypoclinea humilis [Mayr, 1868b](https://antcat.org/references/127225)[PDF: 164 (w.) ARGENTINA (Buenos Aires). Neotropic. Primary type information: Primary type material: holotype (?) worker. Primary type locality: Argentina: Buenos Aires, 1866 (Strobel).](https://antcat.org/documents/2148/4369.pdf)", true)); } @Test public void identifier() throws Exception { IssueContainer issues = IssueContainer.simple(); - var resp = InterpreterBase.interpretIdentifiers("tsn:2134,col:GHS", null, issues); + var resp = InterpreterUtils.interpretIdentifiers("tsn:2134,col:GHS", null, issues); assertEquals(List.of(new Identifier("tsn","2134"), new Identifier("col","GHS")), resp); - resp = InterpreterBase.interpretIdentifiers(" tsn:2134, COL:GHS", null, issues); + resp = InterpreterUtils.interpretIdentifiers(" tsn:2134, COL:GHS", null, issues); assertEquals(List.of(new Identifier("tsn","2134"), new Identifier("col","GHS")), resp); - resp = InterpreterBase.interpretIdentifiers(" tsn:2134\\,COL:GHS", null, issues); + resp = InterpreterUtils.interpretIdentifiers(" tsn:2134\\,COL:GHS", null, issues); assertEquals(List.of(new Identifier("tsn", "2134\\,COL:GHS")), resp); - resp = InterpreterBase.interpretIdentifiers("https://species.wikimedia.org/wiki/Poa_annua", null, issues); + resp = InterpreterUtils.interpretIdentifiers("https://species.wikimedia.org/wiki/Poa_annua", null, issues); assertEquals(List.of(new Identifier("https", "//species.wikimedia.org/wiki/Poa_annua")), resp); assertFalse(issues.hasIssues()); - resp = InterpreterBase.interpretIdentifiers("Poa_annua", null, issues); + resp = InterpreterUtils.interpretIdentifiers("Poa_annua", null, issues); assertEquals(List.of(new Identifier(Identifier.Scope.LOCAL, "Poa_annua")), resp); assertTrue(issues.hasIssues()); assertTrue(issues.hasIssue(Issue.IDENTIFIER_WITHOUT_SCOPE)); issues.clear(); - resp = InterpreterBase.interpretIdentifiers("wfo-0001057524", Identifier.Scope.WFO, issues); + resp = InterpreterUtils.interpretIdentifiers("wfo-0001057524", Identifier.Scope.WFO, issues); assertEquals(List.of(new Identifier(Identifier.Scope.WFO, "wfo-0001057524")), resp); assertFalse(issues.hasIssues()); } @@ -202,7 +204,7 @@ public void yearParser() throws Exception { "2100" }) { issues.getIssues().clear(); - assertNull(x, InterpreterBase.parseNomenYear(x, issues)); + assertNull(x, InterpreterUtils.parseNomenYear(x, issues)); assertTrue(x, issues.hasIssue(Issue.UNLIKELY_YEAR)); } @@ -215,7 +217,7 @@ public void yearParser() throws Exception { "1761 D", 1761 ).entrySet()) { issues.getIssues().clear(); - assertEquals(x.getKey(), x.getValue(), InterpreterBase.parseNomenYear(x.getKey(), issues)); + assertEquals(x.getKey(), x.getValue(), InterpreterUtils.parseNomenYear(x.getKey(), issues)); assertFalse(x.getKey(), issues.hasIssues()); } @@ -227,7 +229,7 @@ public void yearParser() throws Exception { "january" }) { issues.getIssues().clear(); - assertNull(x, InterpreterBase.parseNomenYear(x, issues)); + assertNull(x, InterpreterUtils.parseNomenYear(x, issues)); assertTrue(x, issues.hasIssue(Issue.UNPARSABLE_YEAR)); } } diff --git a/webservice/src/test/java/life/catalogue/importer/InterpreterTestAbstractBase.java b/importer/src/test/java/life/catalogue/importer/InterpreterTestAbstractBase.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/InterpreterTestAbstractBase.java rename to importer/src/test/java/life/catalogue/importer/InterpreterTestAbstractBase.java diff --git a/webservice/src/test/java/life/catalogue/importer/MediaInterpreterTest.java b/importer/src/test/java/life/catalogue/importer/MediaInterpreterTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/MediaInterpreterTest.java rename to importer/src/test/java/life/catalogue/importer/MediaInterpreterTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/NeoCsvInserterTest.java b/importer/src/test/java/life/catalogue/importer/NeoCsvInserterTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/NeoCsvInserterTest.java rename to importer/src/test/java/life/catalogue/importer/NeoCsvInserterTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/NormalizerACEFIT.java b/importer/src/test/java/life/catalogue/importer/NormalizerACEFIT.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/NormalizerACEFIT.java rename to importer/src/test/java/life/catalogue/importer/NormalizerACEFIT.java diff --git a/webservice/src/test/java/life/catalogue/importer/NormalizerColdpIT.java b/importer/src/test/java/life/catalogue/importer/NormalizerColdpIT.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/NormalizerColdpIT.java rename to importer/src/test/java/life/catalogue/importer/NormalizerColdpIT.java diff --git a/webservice/src/test/java/life/catalogue/importer/NormalizerDwcaIT.java b/importer/src/test/java/life/catalogue/importer/NormalizerDwcaIT.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/NormalizerDwcaIT.java rename to importer/src/test/java/life/catalogue/importer/NormalizerDwcaIT.java diff --git a/webservice/src/test/java/life/catalogue/importer/NormalizerFullIT.java b/importer/src/test/java/life/catalogue/importer/NormalizerFullIT.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/NormalizerFullIT.java rename to importer/src/test/java/life/catalogue/importer/NormalizerFullIT.java diff --git a/webservice/src/test/java/life/catalogue/importer/NormalizerITBase.java b/importer/src/test/java/life/catalogue/importer/NormalizerITBase.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/NormalizerITBase.java rename to importer/src/test/java/life/catalogue/importer/NormalizerITBase.java diff --git a/webservice/src/test/java/life/catalogue/importer/NormalizerTreeIT.java b/importer/src/test/java/life/catalogue/importer/NormalizerTreeIT.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/NormalizerTreeIT.java rename to importer/src/test/java/life/catalogue/importer/NormalizerTreeIT.java diff --git a/webservice/src/test/java/life/catalogue/importer/NormalizerTxtTreeIT.java b/importer/src/test/java/life/catalogue/importer/NormalizerTxtTreeIT.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/NormalizerTxtTreeIT.java rename to importer/src/test/java/life/catalogue/importer/NormalizerTxtTreeIT.java diff --git a/webservice/src/test/java/life/catalogue/importer/PgImportESIT.java b/importer/src/test/java/life/catalogue/importer/PgImportESIT.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/PgImportESIT.java rename to importer/src/test/java/life/catalogue/importer/PgImportESIT.java diff --git a/webservice/src/test/java/life/catalogue/importer/PgImportIT.java b/importer/src/test/java/life/catalogue/importer/PgImportIT.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/PgImportIT.java rename to importer/src/test/java/life/catalogue/importer/PgImportIT.java diff --git a/webservice/src/test/java/life/catalogue/importer/PgImportITBase.java b/importer/src/test/java/life/catalogue/importer/PgImportITBase.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/PgImportITBase.java rename to importer/src/test/java/life/catalogue/importer/PgImportITBase.java diff --git a/webservice/src/test/java/life/catalogue/importer/PgImportRule.java b/importer/src/test/java/life/catalogue/importer/PgImportRule.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/PgImportRule.java rename to importer/src/test/java/life/catalogue/importer/PgImportRule.java diff --git a/webservice/src/test/java/life/catalogue/importer/PgImportTest.java b/importer/src/test/java/life/catalogue/importer/PgImportTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/PgImportTest.java rename to importer/src/test/java/life/catalogue/importer/PgImportTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/acef/AcefInserterTest.java b/importer/src/test/java/life/catalogue/importer/acef/AcefInserterTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/acef/AcefInserterTest.java rename to importer/src/test/java/life/catalogue/importer/acef/AcefInserterTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/acef/AcefInterpreterTest.java b/importer/src/test/java/life/catalogue/importer/acef/AcefInterpreterTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/acef/AcefInterpreterTest.java rename to importer/src/test/java/life/catalogue/importer/acef/AcefInterpreterTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/coldp/ColdpInserterTest.java b/importer/src/test/java/life/catalogue/importer/coldp/ColdpInserterTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/coldp/ColdpInserterTest.java rename to importer/src/test/java/life/catalogue/importer/coldp/ColdpInserterTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/dwca/DwcaInserterTest.java b/importer/src/test/java/life/catalogue/importer/dwca/DwcaInserterTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/dwca/DwcaInserterTest.java rename to importer/src/test/java/life/catalogue/importer/dwca/DwcaInserterTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/neo/NeoDbTest.java b/importer/src/test/java/life/catalogue/importer/neo/NeoDbTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/neo/NeoDbTest.java rename to importer/src/test/java/life/catalogue/importer/neo/NeoDbTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/neo/kryo/NeoKryoPoolTest.java b/importer/src/test/java/life/catalogue/importer/neo/kryo/NeoKryoPoolTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/neo/kryo/NeoKryoPoolTest.java rename to importer/src/test/java/life/catalogue/importer/neo/kryo/NeoKryoPoolTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/neo/model/RelTypeTest.java b/importer/src/test/java/life/catalogue/importer/neo/model/RelTypeTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/neo/model/RelTypeTest.java rename to importer/src/test/java/life/catalogue/importer/neo/model/RelTypeTest.java diff --git a/webservice/src/test/java/life/catalogue/importer/proxy/DistributedArchiveServiceTest.java b/importer/src/test/java/life/catalogue/importer/proxy/DistributedArchiveServiceTest.java similarity index 78% rename from webservice/src/test/java/life/catalogue/importer/proxy/DistributedArchiveServiceTest.java rename to importer/src/test/java/life/catalogue/importer/proxy/DistributedArchiveServiceTest.java index 44a857a661..0a7c9633af 100644 --- a/webservice/src/test/java/life/catalogue/importer/proxy/DistributedArchiveServiceTest.java +++ b/importer/src/test/java/life/catalogue/importer/proxy/DistributedArchiveServiceTest.java @@ -1,22 +1,17 @@ package life.catalogue.importer.proxy; -import life.catalogue.WsServerConfig; -import life.catalogue.WsServerConfigTest; import life.catalogue.common.io.Resources; import java.io.File; import java.net.URI; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClients; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; -import com.codahale.metrics.MetricRegistry; - -import io.dropwizard.client.HttpClientBuilder; - @Ignore("require github raw to always work. Currently down") public class DistributedArchiveServiceTest { @@ -26,10 +21,7 @@ public class DistributedArchiveServiceTest { @BeforeClass public static void init() throws Exception { - final WsServerConfig cfg = WsServerConfigTest.readTestConfig(); - client = new HttpClientBuilder(new MetricRegistry()) - .using(cfg.client) - .build("local"); + client = HttpClients.createDefault(); das = new DistributedArchiveService(client); } diff --git a/webservice/src/test/java/life/catalogue/importer/txttree/TxtTreeInserterTest.java b/importer/src/test/java/life/catalogue/importer/txttree/TxtTreeInserterTest.java similarity index 100% rename from webservice/src/test/java/life/catalogue/importer/txttree/TxtTreeInserterTest.java rename to importer/src/test/java/life/catalogue/importer/txttree/TxtTreeInserterTest.java diff --git a/webservice/src/test/resources/acef/0/AcceptedInfraspecificTaxa.txt b/importer/src/test/resources/acef/0/AcceptedInfraspecificTaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/0/AcceptedInfraspecificTaxa.txt rename to importer/src/test/resources/acef/0/AcceptedInfraspecificTaxa.txt diff --git a/webservice/src/test/resources/acef/0/AcceptedSpecies.txt b/importer/src/test/resources/acef/0/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/0/AcceptedSpecies.txt rename to importer/src/test/resources/acef/0/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/0/CommonNames.txt b/importer/src/test/resources/acef/0/CommonNames.txt similarity index 100% rename from webservice/src/test/resources/acef/0/CommonNames.txt rename to importer/src/test/resources/acef/0/CommonNames.txt diff --git a/webservice/src/test/resources/acef/0/Distribution.txt b/importer/src/test/resources/acef/0/Distribution.txt similarity index 100% rename from webservice/src/test/resources/acef/0/Distribution.txt rename to importer/src/test/resources/acef/0/Distribution.txt diff --git a/webservice/src/test/resources/acef/0/NameReferencesLinks.txt b/importer/src/test/resources/acef/0/NameReferencesLinks.txt similarity index 100% rename from webservice/src/test/resources/acef/0/NameReferencesLinks.txt rename to importer/src/test/resources/acef/0/NameReferencesLinks.txt diff --git a/webservice/src/test/resources/acef/0/README.md b/importer/src/test/resources/acef/0/README.md similarity index 100% rename from webservice/src/test/resources/acef/0/README.md rename to importer/src/test/resources/acef/0/README.md diff --git a/webservice/src/test/resources/acef/0/References.txt b/importer/src/test/resources/acef/0/References.txt similarity index 100% rename from webservice/src/test/resources/acef/0/References.txt rename to importer/src/test/resources/acef/0/References.txt diff --git a/webservice/src/test/resources/acef/0/SourceDatabase.csv b/importer/src/test/resources/acef/0/SourceDatabase.csv similarity index 100% rename from webservice/src/test/resources/acef/0/SourceDatabase.csv rename to importer/src/test/resources/acef/0/SourceDatabase.csv diff --git a/webservice/src/test/resources/acef/0/Synonyms.txt b/importer/src/test/resources/acef/0/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/0/Synonyms.txt rename to importer/src/test/resources/acef/0/Synonyms.txt diff --git a/webservice/src/test/resources/acef/0/expected-barenames.txt b/importer/src/test/resources/acef/0/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/acef/0/expected-barenames.txt rename to importer/src/test/resources/acef/0/expected-barenames.txt diff --git a/webservice/src/test/resources/acef/0/expected.tree b/importer/src/test/resources/acef/0/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/0/expected.tree rename to importer/src/test/resources/acef/0/expected.tree diff --git a/webservice/src/test/resources/acef/0/metadata.yaml b/importer/src/test/resources/acef/0/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/0/metadata.yaml rename to importer/src/test/resources/acef/0/metadata.yaml diff --git a/webservice/src/test/resources/acef/0data/README.md b/importer/src/test/resources/acef/0data/README.md similarity index 100% rename from webservice/src/test/resources/acef/0data/README.md rename to importer/src/test/resources/acef/0data/README.md diff --git a/webservice/src/test/resources/acef/0data/data/AcceptedInfraspecificTaxa.txt b/importer/src/test/resources/acef/0data/data/AcceptedInfraspecificTaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/0data/data/AcceptedInfraspecificTaxa.txt rename to importer/src/test/resources/acef/0data/data/AcceptedInfraspecificTaxa.txt diff --git a/webservice/src/test/resources/acef/0data/data/AcceptedSpecies.txt b/importer/src/test/resources/acef/0data/data/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/0data/data/AcceptedSpecies.txt rename to importer/src/test/resources/acef/0data/data/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/0data/data/CommonNames.txt b/importer/src/test/resources/acef/0data/data/CommonNames.txt similarity index 100% rename from webservice/src/test/resources/acef/0data/data/CommonNames.txt rename to importer/src/test/resources/acef/0data/data/CommonNames.txt diff --git a/webservice/src/test/resources/acef/0data/data/Distribution.txt b/importer/src/test/resources/acef/0data/data/Distribution.txt similarity index 100% rename from webservice/src/test/resources/acef/0data/data/Distribution.txt rename to importer/src/test/resources/acef/0data/data/Distribution.txt diff --git a/webservice/src/test/resources/acef/0data/data/NameReferencesLinks.txt b/importer/src/test/resources/acef/0data/data/NameReferencesLinks.txt similarity index 100% rename from webservice/src/test/resources/acef/0data/data/NameReferencesLinks.txt rename to importer/src/test/resources/acef/0data/data/NameReferencesLinks.txt diff --git a/webservice/src/test/resources/acef/0data/data/References.txt b/importer/src/test/resources/acef/0data/data/References.txt similarity index 100% rename from webservice/src/test/resources/acef/0data/data/References.txt rename to importer/src/test/resources/acef/0data/data/References.txt diff --git a/webservice/src/test/resources/acef/0data/data/SourceDatabase.csv b/importer/src/test/resources/acef/0data/data/SourceDatabase.csv similarity index 100% rename from webservice/src/test/resources/acef/0data/data/SourceDatabase.csv rename to importer/src/test/resources/acef/0data/data/SourceDatabase.csv diff --git a/webservice/src/test/resources/acef/0data/data/Synonyms.txt b/importer/src/test/resources/acef/0data/data/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/0data/data/Synonyms.txt rename to importer/src/test/resources/acef/0data/data/Synonyms.txt diff --git a/webservice/src/test/resources/acef/0data/expected-barenames.txt b/importer/src/test/resources/acef/0data/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/acef/0data/expected-barenames.txt rename to importer/src/test/resources/acef/0data/expected-barenames.txt diff --git a/webservice/src/test/resources/acef/0data/expected.tree b/importer/src/test/resources/acef/0data/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/0data/expected.tree rename to importer/src/test/resources/acef/0data/expected.tree diff --git a/webservice/src/test/resources/acef/0data/readme.txt b/importer/src/test/resources/acef/0data/readme.txt similarity index 100% rename from webservice/src/test/resources/acef/0data/readme.txt rename to importer/src/test/resources/acef/0data/readme.txt diff --git a/webservice/src/test/resources/acef/1/AcceptedInfraspecificTaxa.txt b/importer/src/test/resources/acef/1/AcceptedInfraspecificTaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/1/AcceptedInfraspecificTaxa.txt rename to importer/src/test/resources/acef/1/AcceptedInfraspecificTaxa.txt diff --git a/webservice/src/test/resources/acef/1/AcceptedSpecies.txt b/importer/src/test/resources/acef/1/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/1/AcceptedSpecies.txt rename to importer/src/test/resources/acef/1/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/1/CommonNames.txt b/importer/src/test/resources/acef/1/CommonNames.txt similarity index 100% rename from webservice/src/test/resources/acef/1/CommonNames.txt rename to importer/src/test/resources/acef/1/CommonNames.txt diff --git a/webservice/src/test/resources/acef/1/Distribution.txt b/importer/src/test/resources/acef/1/Distribution.txt similarity index 100% rename from webservice/src/test/resources/acef/1/Distribution.txt rename to importer/src/test/resources/acef/1/Distribution.txt diff --git a/webservice/src/test/resources/acef/1/NameReferencesLinks.txt b/importer/src/test/resources/acef/1/NameReferencesLinks.txt similarity index 100% rename from webservice/src/test/resources/acef/1/NameReferencesLinks.txt rename to importer/src/test/resources/acef/1/NameReferencesLinks.txt diff --git a/webservice/src/test/resources/acef/1/README.md b/importer/src/test/resources/acef/1/README.md similarity index 100% rename from webservice/src/test/resources/acef/1/README.md rename to importer/src/test/resources/acef/1/README.md diff --git a/webservice/src/test/resources/acef/1/References.txt b/importer/src/test/resources/acef/1/References.txt similarity index 100% rename from webservice/src/test/resources/acef/1/References.txt rename to importer/src/test/resources/acef/1/References.txt diff --git a/webservice/src/test/resources/acef/1/SourceDatabase.txt b/importer/src/test/resources/acef/1/SourceDatabase.txt similarity index 100% rename from webservice/src/test/resources/acef/1/SourceDatabase.txt rename to importer/src/test/resources/acef/1/SourceDatabase.txt diff --git a/webservice/src/test/resources/acef/1/Synonyms.txt b/importer/src/test/resources/acef/1/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/1/Synonyms.txt rename to importer/src/test/resources/acef/1/Synonyms.txt diff --git a/webservice/src/test/resources/acef/1/expected-barenames.txt b/importer/src/test/resources/acef/1/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/acef/1/expected-barenames.txt rename to importer/src/test/resources/acef/1/expected-barenames.txt diff --git a/webservice/src/test/resources/acef/1/expected.tree b/importer/src/test/resources/acef/1/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/1/expected.tree rename to importer/src/test/resources/acef/1/expected.tree diff --git a/webservice/src/test/resources/acef/1/metadata.yaml b/importer/src/test/resources/acef/1/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/1/metadata.yaml rename to importer/src/test/resources/acef/1/metadata.yaml diff --git a/webservice/src/test/resources/acef/10/AcceptedInfraspecificTaxa.csv b/importer/src/test/resources/acef/10/AcceptedInfraspecificTaxa.csv similarity index 100% rename from webservice/src/test/resources/acef/10/AcceptedInfraspecificTaxa.csv rename to importer/src/test/resources/acef/10/AcceptedInfraspecificTaxa.csv diff --git a/webservice/src/test/resources/acef/10/AcceptedSpecies.csv b/importer/src/test/resources/acef/10/AcceptedSpecies.csv similarity index 100% rename from webservice/src/test/resources/acef/10/AcceptedSpecies.csv rename to importer/src/test/resources/acef/10/AcceptedSpecies.csv diff --git a/webservice/src/test/resources/acef/10/README.md b/importer/src/test/resources/acef/10/README.md similarity index 100% rename from webservice/src/test/resources/acef/10/README.md rename to importer/src/test/resources/acef/10/README.md diff --git a/webservice/src/test/resources/acef/10/expected.tree b/importer/src/test/resources/acef/10/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/10/expected.tree rename to importer/src/test/resources/acef/10/expected.tree diff --git a/webservice/src/test/resources/acef/10/metadata.yaml b/importer/src/test/resources/acef/10/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/10/metadata.yaml rename to importer/src/test/resources/acef/10/metadata.yaml diff --git a/webservice/src/test/resources/acef/101/AcceptedInfraspecificTaxa.txt b/importer/src/test/resources/acef/101/AcceptedInfraspecificTaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/101/AcceptedInfraspecificTaxa.txt rename to importer/src/test/resources/acef/101/AcceptedInfraspecificTaxa.txt diff --git a/webservice/src/test/resources/acef/101/AcceptedSpecies.txt b/importer/src/test/resources/acef/101/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/101/AcceptedSpecies.txt rename to importer/src/test/resources/acef/101/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/101/CommonNames.txt b/importer/src/test/resources/acef/101/CommonNames.txt similarity index 100% rename from webservice/src/test/resources/acef/101/CommonNames.txt rename to importer/src/test/resources/acef/101/CommonNames.txt diff --git a/webservice/src/test/resources/acef/101/Distribution.txt b/importer/src/test/resources/acef/101/Distribution.txt similarity index 100% rename from webservice/src/test/resources/acef/101/Distribution.txt rename to importer/src/test/resources/acef/101/Distribution.txt diff --git a/webservice/src/test/resources/acef/101/NameReferences.txt b/importer/src/test/resources/acef/101/NameReferences.txt similarity index 100% rename from webservice/src/test/resources/acef/101/NameReferences.txt rename to importer/src/test/resources/acef/101/NameReferences.txt diff --git a/webservice/src/test/resources/acef/101/References.txt b/importer/src/test/resources/acef/101/References.txt similarity index 100% rename from webservice/src/test/resources/acef/101/References.txt rename to importer/src/test/resources/acef/101/References.txt diff --git a/webservice/src/test/resources/acef/101/Synonyms.txt b/importer/src/test/resources/acef/101/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/101/Synonyms.txt rename to importer/src/test/resources/acef/101/Synonyms.txt diff --git a/webservice/src/test/resources/acef/101/metadata.yaml b/importer/src/test/resources/acef/101/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/101/metadata.yaml rename to importer/src/test/resources/acef/101/metadata.yaml diff --git a/webservice/src/test/resources/acef/1011/AcceptedInfraSpecificTaxa.csv b/importer/src/test/resources/acef/1011/AcceptedInfraSpecificTaxa.csv similarity index 100% rename from webservice/src/test/resources/acef/1011/AcceptedInfraSpecificTaxa.csv rename to importer/src/test/resources/acef/1011/AcceptedInfraSpecificTaxa.csv diff --git a/webservice/src/test/resources/acef/1011/AcceptedSpecies.csv b/importer/src/test/resources/acef/1011/AcceptedSpecies.csv similarity index 100% rename from webservice/src/test/resources/acef/1011/AcceptedSpecies.csv rename to importer/src/test/resources/acef/1011/AcceptedSpecies.csv diff --git a/webservice/src/test/resources/acef/1011/CommonNames.csv b/importer/src/test/resources/acef/1011/CommonNames.csv similarity index 100% rename from webservice/src/test/resources/acef/1011/CommonNames.csv rename to importer/src/test/resources/acef/1011/CommonNames.csv diff --git a/webservice/src/test/resources/acef/1011/Distribution.csv b/importer/src/test/resources/acef/1011/Distribution.csv similarity index 100% rename from webservice/src/test/resources/acef/1011/Distribution.csv rename to importer/src/test/resources/acef/1011/Distribution.csv diff --git a/webservice/src/test/resources/acef/1011/NameReferencesLinks.csv b/importer/src/test/resources/acef/1011/NameReferencesLinks.csv similarity index 100% rename from webservice/src/test/resources/acef/1011/NameReferencesLinks.csv rename to importer/src/test/resources/acef/1011/NameReferencesLinks.csv diff --git a/webservice/src/test/resources/acef/1011/SourceDatabase.csv b/importer/src/test/resources/acef/1011/SourceDatabase.csv similarity index 100% rename from webservice/src/test/resources/acef/1011/SourceDatabase.csv rename to importer/src/test/resources/acef/1011/SourceDatabase.csv diff --git a/webservice/src/test/resources/acef/1011/Synonyms.csv b/importer/src/test/resources/acef/1011/Synonyms.csv similarity index 100% rename from webservice/src/test/resources/acef/1011/Synonyms.csv rename to importer/src/test/resources/acef/1011/Synonyms.csv diff --git a/webservice/src/test/resources/acef/11/AcceptedSpecies.txt b/importer/src/test/resources/acef/11/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/11/AcceptedSpecies.txt rename to importer/src/test/resources/acef/11/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/11/NameReferences.txt b/importer/src/test/resources/acef/11/NameReferences.txt similarity index 100% rename from webservice/src/test/resources/acef/11/NameReferences.txt rename to importer/src/test/resources/acef/11/NameReferences.txt diff --git a/webservice/src/test/resources/acef/11/README.md b/importer/src/test/resources/acef/11/README.md similarity index 100% rename from webservice/src/test/resources/acef/11/README.md rename to importer/src/test/resources/acef/11/README.md diff --git a/webservice/src/test/resources/acef/11/References.txt b/importer/src/test/resources/acef/11/References.txt similarity index 100% rename from webservice/src/test/resources/acef/11/References.txt rename to importer/src/test/resources/acef/11/References.txt diff --git a/webservice/src/test/resources/acef/11/Synonyms.txt b/importer/src/test/resources/acef/11/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/11/Synonyms.txt rename to importer/src/test/resources/acef/11/Synonyms.txt diff --git a/webservice/src/test/resources/acef/11/expected.tree b/importer/src/test/resources/acef/11/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/11/expected.tree rename to importer/src/test/resources/acef/11/expected.tree diff --git a/webservice/src/test/resources/acef/11/metadata.yaml b/importer/src/test/resources/acef/11/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/11/metadata.yaml rename to importer/src/test/resources/acef/11/metadata.yaml diff --git a/webservice/src/test/resources/acef/14/AcceptedInfraspecificTaxa.txt b/importer/src/test/resources/acef/14/AcceptedInfraspecificTaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/14/AcceptedInfraspecificTaxa.txt rename to importer/src/test/resources/acef/14/AcceptedInfraspecificTaxa.txt diff --git a/webservice/src/test/resources/acef/14/AcceptedSpecies.txt b/importer/src/test/resources/acef/14/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/14/AcceptedSpecies.txt rename to importer/src/test/resources/acef/14/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/14/CommonNames.txt b/importer/src/test/resources/acef/14/CommonNames.txt similarity index 100% rename from webservice/src/test/resources/acef/14/CommonNames.txt rename to importer/src/test/resources/acef/14/CommonNames.txt diff --git a/webservice/src/test/resources/acef/14/Distribution.txt b/importer/src/test/resources/acef/14/Distribution.txt similarity index 100% rename from webservice/src/test/resources/acef/14/Distribution.txt rename to importer/src/test/resources/acef/14/Distribution.txt diff --git a/webservice/src/test/resources/acef/14/NameReferences.txt b/importer/src/test/resources/acef/14/NameReferences.txt similarity index 100% rename from webservice/src/test/resources/acef/14/NameReferences.txt rename to importer/src/test/resources/acef/14/NameReferences.txt diff --git a/webservice/src/test/resources/acef/14/References.txt b/importer/src/test/resources/acef/14/References.txt similarity index 100% rename from webservice/src/test/resources/acef/14/References.txt rename to importer/src/test/resources/acef/14/References.txt diff --git a/webservice/src/test/resources/acef/14/SourceDatabase.txt b/importer/src/test/resources/acef/14/SourceDatabase.txt similarity index 100% rename from webservice/src/test/resources/acef/14/SourceDatabase.txt rename to importer/src/test/resources/acef/14/SourceDatabase.txt diff --git a/webservice/src/test/resources/acef/14/Synonyms.txt b/importer/src/test/resources/acef/14/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/14/Synonyms.txt rename to importer/src/test/resources/acef/14/Synonyms.txt diff --git a/webservice/src/test/resources/acef/14/metadata.yaml b/importer/src/test/resources/acef/14/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/14/metadata.yaml rename to importer/src/test/resources/acef/14/metadata.yaml diff --git a/webservice/src/test/resources/acef/15/AcceptedInfraspecificTaxa.txt b/importer/src/test/resources/acef/15/AcceptedInfraspecificTaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/15/AcceptedInfraspecificTaxa.txt rename to importer/src/test/resources/acef/15/AcceptedInfraspecificTaxa.txt diff --git a/webservice/src/test/resources/acef/15/AcceptedSpecies.txt b/importer/src/test/resources/acef/15/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/15/AcceptedSpecies.txt rename to importer/src/test/resources/acef/15/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/15/NameReferences.txt b/importer/src/test/resources/acef/15/NameReferences.txt similarity index 100% rename from webservice/src/test/resources/acef/15/NameReferences.txt rename to importer/src/test/resources/acef/15/NameReferences.txt diff --git a/webservice/src/test/resources/acef/15/References.txt b/importer/src/test/resources/acef/15/References.txt similarity index 100% rename from webservice/src/test/resources/acef/15/References.txt rename to importer/src/test/resources/acef/15/References.txt diff --git a/webservice/src/test/resources/acef/15/metadata.yaml b/importer/src/test/resources/acef/15/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/15/metadata.yaml rename to importer/src/test/resources/acef/15/metadata.yaml diff --git a/webservice/src/test/resources/acef/16/AcceptedSpecies.txt b/importer/src/test/resources/acef/16/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/16/AcceptedSpecies.txt rename to importer/src/test/resources/acef/16/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/16/SourceDatabase.txt b/importer/src/test/resources/acef/16/SourceDatabase.txt similarity index 100% rename from webservice/src/test/resources/acef/16/SourceDatabase.txt rename to importer/src/test/resources/acef/16/SourceDatabase.txt diff --git a/webservice/src/test/resources/acef/16/metadata.yaml b/importer/src/test/resources/acef/16/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/16/metadata.yaml rename to importer/src/test/resources/acef/16/metadata.yaml diff --git a/webservice/src/test/resources/acef/17/README.md b/importer/src/test/resources/acef/17/README.md similarity index 100% rename from webservice/src/test/resources/acef/17/README.md rename to importer/src/test/resources/acef/17/README.md diff --git a/webservice/src/test/resources/acef/18/AcceptedSpecies.tsv b/importer/src/test/resources/acef/18/AcceptedSpecies.tsv similarity index 100% rename from webservice/src/test/resources/acef/18/AcceptedSpecies.tsv rename to importer/src/test/resources/acef/18/AcceptedSpecies.tsv diff --git a/webservice/src/test/resources/acef/18/CommonNames.tsv b/importer/src/test/resources/acef/18/CommonNames.tsv similarity index 100% rename from webservice/src/test/resources/acef/18/CommonNames.tsv rename to importer/src/test/resources/acef/18/CommonNames.tsv diff --git a/webservice/src/test/resources/acef/18/Distribution.tsv b/importer/src/test/resources/acef/18/Distribution.tsv similarity index 100% rename from webservice/src/test/resources/acef/18/Distribution.tsv rename to importer/src/test/resources/acef/18/Distribution.tsv diff --git a/webservice/src/test/resources/acef/18/NameReferences.tsv b/importer/src/test/resources/acef/18/NameReferences.tsv similarity index 100% rename from webservice/src/test/resources/acef/18/NameReferences.tsv rename to importer/src/test/resources/acef/18/NameReferences.tsv diff --git a/webservice/src/test/resources/acef/18/References.tsv b/importer/src/test/resources/acef/18/References.tsv similarity index 100% rename from webservice/src/test/resources/acef/18/References.tsv rename to importer/src/test/resources/acef/18/References.tsv diff --git a/webservice/src/test/resources/acef/18/SourceDatabase.tsv b/importer/src/test/resources/acef/18/SourceDatabase.tsv similarity index 100% rename from webservice/src/test/resources/acef/18/SourceDatabase.tsv rename to importer/src/test/resources/acef/18/SourceDatabase.tsv diff --git a/webservice/src/test/resources/acef/18/Synonyms.tsv b/importer/src/test/resources/acef/18/Synonyms.tsv similarity index 100% rename from webservice/src/test/resources/acef/18/Synonyms.tsv rename to importer/src/test/resources/acef/18/Synonyms.tsv diff --git a/webservice/src/test/resources/acef/18/metadata.yaml b/importer/src/test/resources/acef/18/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/18/metadata.yaml rename to importer/src/test/resources/acef/18/metadata.yaml diff --git a/webservice/src/test/resources/acef/19/AcceptedInfraspecificTaxa.tsv b/importer/src/test/resources/acef/19/AcceptedInfraspecificTaxa.tsv similarity index 100% rename from webservice/src/test/resources/acef/19/AcceptedInfraspecificTaxa.tsv rename to importer/src/test/resources/acef/19/AcceptedInfraspecificTaxa.tsv diff --git a/webservice/src/test/resources/acef/19/AcceptedSpecies.tsv b/importer/src/test/resources/acef/19/AcceptedSpecies.tsv similarity index 100% rename from webservice/src/test/resources/acef/19/AcceptedSpecies.tsv rename to importer/src/test/resources/acef/19/AcceptedSpecies.tsv diff --git a/webservice/src/test/resources/acef/19/CommonNames.tsv b/importer/src/test/resources/acef/19/CommonNames.tsv similarity index 100% rename from webservice/src/test/resources/acef/19/CommonNames.tsv rename to importer/src/test/resources/acef/19/CommonNames.tsv diff --git a/webservice/src/test/resources/acef/19/NameReferences.tsv b/importer/src/test/resources/acef/19/NameReferences.tsv similarity index 100% rename from webservice/src/test/resources/acef/19/NameReferences.tsv rename to importer/src/test/resources/acef/19/NameReferences.tsv diff --git a/webservice/src/test/resources/acef/19/References.tsv b/importer/src/test/resources/acef/19/References.tsv similarity index 100% rename from webservice/src/test/resources/acef/19/References.tsv rename to importer/src/test/resources/acef/19/References.tsv diff --git a/webservice/src/test/resources/acef/19/SourceDatabase.tsv b/importer/src/test/resources/acef/19/SourceDatabase.tsv similarity index 100% rename from webservice/src/test/resources/acef/19/SourceDatabase.tsv rename to importer/src/test/resources/acef/19/SourceDatabase.tsv diff --git a/webservice/src/test/resources/acef/19/Synonyms.tsv b/importer/src/test/resources/acef/19/Synonyms.tsv similarity index 100% rename from webservice/src/test/resources/acef/19/Synonyms.tsv rename to importer/src/test/resources/acef/19/Synonyms.tsv diff --git a/webservice/src/test/resources/acef/19/metadata.yaml b/importer/src/test/resources/acef/19/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/19/metadata.yaml rename to importer/src/test/resources/acef/19/metadata.yaml diff --git a/webservice/src/test/resources/acef/2/README.md b/importer/src/test/resources/acef/2/README.md similarity index 100% rename from webservice/src/test/resources/acef/2/README.md rename to importer/src/test/resources/acef/2/README.md diff --git a/webservice/src/test/resources/acef/2/accepted_species.txt b/importer/src/test/resources/acef/2/accepted_species.txt similarity index 100% rename from webservice/src/test/resources/acef/2/accepted_species.txt rename to importer/src/test/resources/acef/2/accepted_species.txt diff --git a/webservice/src/test/resources/acef/2/common_name.txt b/importer/src/test/resources/acef/2/common_name.txt similarity index 100% rename from webservice/src/test/resources/acef/2/common_name.txt rename to importer/src/test/resources/acef/2/common_name.txt diff --git a/webservice/src/test/resources/acef/2/expected-barenames.txt b/importer/src/test/resources/acef/2/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/acef/2/expected-barenames.txt rename to importer/src/test/resources/acef/2/expected-barenames.txt diff --git a/webservice/src/test/resources/acef/2/expected.tree b/importer/src/test/resources/acef/2/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/2/expected.tree rename to importer/src/test/resources/acef/2/expected.tree diff --git a/webservice/src/test/resources/acef/2/metadata.yaml b/importer/src/test/resources/acef/2/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/2/metadata.yaml rename to importer/src/test/resources/acef/2/metadata.yaml diff --git a/webservice/src/test/resources/acef/20/AcceptedSpecies.tsv b/importer/src/test/resources/acef/20/AcceptedSpecies.tsv similarity index 100% rename from webservice/src/test/resources/acef/20/AcceptedSpecies.tsv rename to importer/src/test/resources/acef/20/AcceptedSpecies.tsv diff --git a/webservice/src/test/resources/acef/20/Synonyms.tsv b/importer/src/test/resources/acef/20/Synonyms.tsv similarity index 100% rename from webservice/src/test/resources/acef/20/Synonyms.tsv rename to importer/src/test/resources/acef/20/Synonyms.tsv diff --git a/webservice/src/test/resources/acef/20/metadata.yaml b/importer/src/test/resources/acef/20/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/20/metadata.yaml rename to importer/src/test/resources/acef/20/metadata.yaml diff --git a/webservice/src/test/resources/acef/21/AcceptedSpecies.tsv b/importer/src/test/resources/acef/21/AcceptedSpecies.tsv similarity index 100% rename from webservice/src/test/resources/acef/21/AcceptedSpecies.tsv rename to importer/src/test/resources/acef/21/AcceptedSpecies.tsv diff --git a/webservice/src/test/resources/acef/21/metadata.yaml b/importer/src/test/resources/acef/21/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/21/metadata.yaml rename to importer/src/test/resources/acef/21/metadata.yaml diff --git a/webservice/src/test/resources/acef/22/AcceptedSpecies.tsv b/importer/src/test/resources/acef/22/AcceptedSpecies.tsv similarity index 100% rename from webservice/src/test/resources/acef/22/AcceptedSpecies.tsv rename to importer/src/test/resources/acef/22/AcceptedSpecies.tsv diff --git a/webservice/src/test/resources/acef/22/README.md b/importer/src/test/resources/acef/22/README.md similarity index 100% rename from webservice/src/test/resources/acef/22/README.md rename to importer/src/test/resources/acef/22/README.md diff --git a/webservice/src/test/resources/acef/22/metadata.yaml b/importer/src/test/resources/acef/22/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/22/metadata.yaml rename to importer/src/test/resources/acef/22/metadata.yaml diff --git a/webservice/src/test/resources/acef/23/AcceptedSpecies.tsv b/importer/src/test/resources/acef/23/AcceptedSpecies.tsv similarity index 100% rename from webservice/src/test/resources/acef/23/AcceptedSpecies.tsv rename to importer/src/test/resources/acef/23/AcceptedSpecies.tsv diff --git a/webservice/src/test/resources/acef/23/README.md b/importer/src/test/resources/acef/23/README.md similarity index 100% rename from webservice/src/test/resources/acef/23/README.md rename to importer/src/test/resources/acef/23/README.md diff --git a/webservice/src/test/resources/acef/23/metadata.yaml b/importer/src/test/resources/acef/23/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/23/metadata.yaml rename to importer/src/test/resources/acef/23/metadata.yaml diff --git a/webservice/src/test/resources/acef/3/README.md b/importer/src/test/resources/acef/3/README.md similarity index 100% rename from webservice/src/test/resources/acef/3/README.md rename to importer/src/test/resources/acef/3/README.md diff --git a/webservice/src/test/resources/acef/3/acceptedinfraspecifictaxa.txt b/importer/src/test/resources/acef/3/acceptedinfraspecifictaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/3/acceptedinfraspecifictaxa.txt rename to importer/src/test/resources/acef/3/acceptedinfraspecifictaxa.txt diff --git a/webservice/src/test/resources/acef/3/acceptedspecies.txt b/importer/src/test/resources/acef/3/acceptedspecies.txt similarity index 100% rename from webservice/src/test/resources/acef/3/acceptedspecies.txt rename to importer/src/test/resources/acef/3/acceptedspecies.txt diff --git a/webservice/src/test/resources/acef/3/commonname.txt b/importer/src/test/resources/acef/3/commonname.txt similarity index 100% rename from webservice/src/test/resources/acef/3/commonname.txt rename to importer/src/test/resources/acef/3/commonname.txt diff --git a/webservice/src/test/resources/acef/3/expected.tree b/importer/src/test/resources/acef/3/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/3/expected.tree rename to importer/src/test/resources/acef/3/expected.tree diff --git a/webservice/src/test/resources/acef/3/metadata.yaml b/importer/src/test/resources/acef/3/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/3/metadata.yaml rename to importer/src/test/resources/acef/3/metadata.yaml diff --git a/webservice/src/test/resources/acef/3/synonyms.txt b/importer/src/test/resources/acef/3/synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/3/synonyms.txt rename to importer/src/test/resources/acef/3/synonyms.txt diff --git a/webservice/src/test/resources/acef/4/AcceptedSpecies.txt b/importer/src/test/resources/acef/4/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/4/AcceptedSpecies.txt rename to importer/src/test/resources/acef/4/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/4/CommonNames.txt b/importer/src/test/resources/acef/4/CommonNames.txt similarity index 100% rename from webservice/src/test/resources/acef/4/CommonNames.txt rename to importer/src/test/resources/acef/4/CommonNames.txt diff --git a/webservice/src/test/resources/acef/4/README.md b/importer/src/test/resources/acef/4/README.md similarity index 100% rename from webservice/src/test/resources/acef/4/README.md rename to importer/src/test/resources/acef/4/README.md diff --git a/webservice/src/test/resources/acef/4/expected-barenames.txt b/importer/src/test/resources/acef/4/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/acef/4/expected-barenames.txt rename to importer/src/test/resources/acef/4/expected-barenames.txt diff --git a/webservice/src/test/resources/acef/4/expected.tree b/importer/src/test/resources/acef/4/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/4/expected.tree rename to importer/src/test/resources/acef/4/expected.tree diff --git a/webservice/src/test/resources/acef/4/metadata.yaml b/importer/src/test/resources/acef/4/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/4/metadata.yaml rename to importer/src/test/resources/acef/4/metadata.yaml diff --git a/webservice/src/test/resources/acef/5/AcceptedSpecies.txt b/importer/src/test/resources/acef/5/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/5/AcceptedSpecies.txt rename to importer/src/test/resources/acef/5/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/5/README.md b/importer/src/test/resources/acef/5/README.md similarity index 100% rename from webservice/src/test/resources/acef/5/README.md rename to importer/src/test/resources/acef/5/README.md diff --git a/webservice/src/test/resources/acef/5/SourceDatabase.txt b/importer/src/test/resources/acef/5/SourceDatabase.txt similarity index 100% rename from webservice/src/test/resources/acef/5/SourceDatabase.txt rename to importer/src/test/resources/acef/5/SourceDatabase.txt diff --git a/webservice/src/test/resources/acef/5/expected-barenames.txt b/importer/src/test/resources/acef/5/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/acef/5/expected-barenames.txt rename to importer/src/test/resources/acef/5/expected-barenames.txt diff --git a/webservice/src/test/resources/acef/5/expected.tree b/importer/src/test/resources/acef/5/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/5/expected.tree rename to importer/src/test/resources/acef/5/expected.tree diff --git a/webservice/src/test/resources/acef/5/metadata.yaml b/importer/src/test/resources/acef/5/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/5/metadata.yaml rename to importer/src/test/resources/acef/5/metadata.yaml diff --git a/webservice/src/test/resources/acef/6/AcceptedSpecies.txt b/importer/src/test/resources/acef/6/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/6/AcceptedSpecies.txt rename to importer/src/test/resources/acef/6/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/6/NameReferences.txt b/importer/src/test/resources/acef/6/NameReferences.txt similarity index 100% rename from webservice/src/test/resources/acef/6/NameReferences.txt rename to importer/src/test/resources/acef/6/NameReferences.txt diff --git a/webservice/src/test/resources/acef/6/README.md b/importer/src/test/resources/acef/6/README.md similarity index 100% rename from webservice/src/test/resources/acef/6/README.md rename to importer/src/test/resources/acef/6/README.md diff --git a/webservice/src/test/resources/acef/6/References.txt b/importer/src/test/resources/acef/6/References.txt similarity index 100% rename from webservice/src/test/resources/acef/6/References.txt rename to importer/src/test/resources/acef/6/References.txt diff --git a/webservice/src/test/resources/acef/6/Synonyms.txt b/importer/src/test/resources/acef/6/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/6/Synonyms.txt rename to importer/src/test/resources/acef/6/Synonyms.txt diff --git a/webservice/src/test/resources/acef/6/expected.tree b/importer/src/test/resources/acef/6/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/6/expected.tree rename to importer/src/test/resources/acef/6/expected.tree diff --git a/webservice/src/test/resources/acef/6/metadata.yaml b/importer/src/test/resources/acef/6/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/6/metadata.yaml rename to importer/src/test/resources/acef/6/metadata.yaml diff --git a/webservice/src/test/resources/acef/69/AcceptedInfraspecificTaxa.txt b/importer/src/test/resources/acef/69/AcceptedInfraspecificTaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/69/AcceptedInfraspecificTaxa.txt rename to importer/src/test/resources/acef/69/AcceptedInfraspecificTaxa.txt diff --git a/webservice/src/test/resources/acef/69/AcceptedSpecies.txt b/importer/src/test/resources/acef/69/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/69/AcceptedSpecies.txt rename to importer/src/test/resources/acef/69/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/69/CommonNames.txt b/importer/src/test/resources/acef/69/CommonNames.txt similarity index 100% rename from webservice/src/test/resources/acef/69/CommonNames.txt rename to importer/src/test/resources/acef/69/CommonNames.txt diff --git a/webservice/src/test/resources/acef/69/Distribution.txt b/importer/src/test/resources/acef/69/Distribution.txt similarity index 100% rename from webservice/src/test/resources/acef/69/Distribution.txt rename to importer/src/test/resources/acef/69/Distribution.txt diff --git a/webservice/src/test/resources/acef/69/NameReferences.txt b/importer/src/test/resources/acef/69/NameReferences.txt similarity index 100% rename from webservice/src/test/resources/acef/69/NameReferences.txt rename to importer/src/test/resources/acef/69/NameReferences.txt diff --git a/webservice/src/test/resources/acef/69/References.txt b/importer/src/test/resources/acef/69/References.txt similarity index 100% rename from webservice/src/test/resources/acef/69/References.txt rename to importer/src/test/resources/acef/69/References.txt diff --git a/webservice/src/test/resources/acef/69/SourceDatabase.txt b/importer/src/test/resources/acef/69/SourceDatabase.txt similarity index 100% rename from webservice/src/test/resources/acef/69/SourceDatabase.txt rename to importer/src/test/resources/acef/69/SourceDatabase.txt diff --git a/webservice/src/test/resources/acef/69/Synonyms.txt b/importer/src/test/resources/acef/69/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/69/Synonyms.txt rename to importer/src/test/resources/acef/69/Synonyms.txt diff --git a/webservice/src/test/resources/acef/69/metadata.yaml b/importer/src/test/resources/acef/69/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/69/metadata.yaml rename to importer/src/test/resources/acef/69/metadata.yaml diff --git a/webservice/src/test/resources/acef/7/AcceptedInfraspecificTaxa.txt b/importer/src/test/resources/acef/7/AcceptedInfraspecificTaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/7/AcceptedInfraspecificTaxa.txt rename to importer/src/test/resources/acef/7/AcceptedInfraspecificTaxa.txt diff --git a/webservice/src/test/resources/acef/7/AcceptedSpecies.txt b/importer/src/test/resources/acef/7/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/7/AcceptedSpecies.txt rename to importer/src/test/resources/acef/7/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/7/README.md b/importer/src/test/resources/acef/7/README.md similarity index 100% rename from webservice/src/test/resources/acef/7/README.md rename to importer/src/test/resources/acef/7/README.md diff --git a/webservice/src/test/resources/acef/7/Synonyms.txt b/importer/src/test/resources/acef/7/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/7/Synonyms.txt rename to importer/src/test/resources/acef/7/Synonyms.txt diff --git a/webservice/src/test/resources/acef/7/expected.tree b/importer/src/test/resources/acef/7/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/7/expected.tree rename to importer/src/test/resources/acef/7/expected.tree diff --git a/webservice/src/test/resources/acef/7/metadata.yaml b/importer/src/test/resources/acef/7/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/7/metadata.yaml rename to importer/src/test/resources/acef/7/metadata.yaml diff --git a/webservice/src/test/resources/acef/73/AcceptedInfraspecificTaxa.txt b/importer/src/test/resources/acef/73/AcceptedInfraspecificTaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/73/AcceptedInfraspecificTaxa.txt rename to importer/src/test/resources/acef/73/AcceptedInfraspecificTaxa.txt diff --git a/webservice/src/test/resources/acef/73/AcceptedSpecies.txt b/importer/src/test/resources/acef/73/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/73/AcceptedSpecies.txt rename to importer/src/test/resources/acef/73/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/73/CommonNames.txt b/importer/src/test/resources/acef/73/CommonNames.txt similarity index 100% rename from webservice/src/test/resources/acef/73/CommonNames.txt rename to importer/src/test/resources/acef/73/CommonNames.txt diff --git a/webservice/src/test/resources/acef/73/Distribution.txt b/importer/src/test/resources/acef/73/Distribution.txt similarity index 100% rename from webservice/src/test/resources/acef/73/Distribution.txt rename to importer/src/test/resources/acef/73/Distribution.txt diff --git a/webservice/src/test/resources/acef/73/NameReferences.txt b/importer/src/test/resources/acef/73/NameReferences.txt similarity index 100% rename from webservice/src/test/resources/acef/73/NameReferences.txt rename to importer/src/test/resources/acef/73/NameReferences.txt diff --git a/webservice/src/test/resources/acef/73/References.txt b/importer/src/test/resources/acef/73/References.txt similarity index 100% rename from webservice/src/test/resources/acef/73/References.txt rename to importer/src/test/resources/acef/73/References.txt diff --git a/webservice/src/test/resources/acef/73/SourceDatabase.txt b/importer/src/test/resources/acef/73/SourceDatabase.txt similarity index 100% rename from webservice/src/test/resources/acef/73/SourceDatabase.txt rename to importer/src/test/resources/acef/73/SourceDatabase.txt diff --git a/webservice/src/test/resources/acef/73/Synonyms.txt b/importer/src/test/resources/acef/73/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/73/Synonyms.txt rename to importer/src/test/resources/acef/73/Synonyms.txt diff --git a/webservice/src/test/resources/acef/73/metadata.yaml b/importer/src/test/resources/acef/73/metadata.yaml similarity index 100% rename from webservice/src/test/resources/acef/73/metadata.yaml rename to importer/src/test/resources/acef/73/metadata.yaml diff --git a/webservice/src/test/resources/acef/8/AcceptedSpecies.txt b/importer/src/test/resources/acef/8/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/8/AcceptedSpecies.txt rename to importer/src/test/resources/acef/8/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/8/README.md b/importer/src/test/resources/acef/8/README.md similarity index 100% rename from webservice/src/test/resources/acef/8/README.md rename to importer/src/test/resources/acef/8/README.md diff --git a/webservice/src/test/resources/acef/8/Synonyms.txt b/importer/src/test/resources/acef/8/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/8/Synonyms.txt rename to importer/src/test/resources/acef/8/Synonyms.txt diff --git a/webservice/src/test/resources/acef/8/expected.tree b/importer/src/test/resources/acef/8/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/8/expected.tree rename to importer/src/test/resources/acef/8/expected.tree diff --git a/webservice/src/test/resources/acef/9/AcceptedInfraspecificTaxa.txt b/importer/src/test/resources/acef/9/AcceptedInfraspecificTaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/9/AcceptedInfraspecificTaxa.txt rename to importer/src/test/resources/acef/9/AcceptedInfraspecificTaxa.txt diff --git a/webservice/src/test/resources/acef/9/AcceptedSpecies.txt b/importer/src/test/resources/acef/9/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/9/AcceptedSpecies.txt rename to importer/src/test/resources/acef/9/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/9/README.md b/importer/src/test/resources/acef/9/README.md similarity index 100% rename from webservice/src/test/resources/acef/9/README.md rename to importer/src/test/resources/acef/9/README.md diff --git a/webservice/src/test/resources/acef/9/expected.tree b/importer/src/test/resources/acef/9/expected.tree similarity index 100% rename from webservice/src/test/resources/acef/9/expected.tree rename to importer/src/test/resources/acef/9/expected.tree diff --git a/webservice/src/test/resources/acef/corrupt/AcceptedSpecies.txt b/importer/src/test/resources/acef/corrupt/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/corrupt/AcceptedSpecies.txt rename to importer/src/test/resources/acef/corrupt/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/corrupt/CommonNames.txt b/importer/src/test/resources/acef/corrupt/CommonNames.txt similarity index 100% rename from webservice/src/test/resources/acef/corrupt/CommonNames.txt rename to importer/src/test/resources/acef/corrupt/CommonNames.txt diff --git a/webservice/src/test/resources/acef/corrupt/Distribution.txt b/importer/src/test/resources/acef/corrupt/Distribution.txt similarity index 100% rename from webservice/src/test/resources/acef/corrupt/Distribution.txt rename to importer/src/test/resources/acef/corrupt/Distribution.txt diff --git a/webservice/src/test/resources/acef/corrupt/NameReferencesLinks.txt b/importer/src/test/resources/acef/corrupt/NameReferencesLinks.txt similarity index 100% rename from webservice/src/test/resources/acef/corrupt/NameReferencesLinks.txt rename to importer/src/test/resources/acef/corrupt/NameReferencesLinks.txt diff --git a/webservice/src/test/resources/acef/corrupt/README.md b/importer/src/test/resources/acef/corrupt/README.md similarity index 100% rename from webservice/src/test/resources/acef/corrupt/README.md rename to importer/src/test/resources/acef/corrupt/README.md diff --git a/webservice/src/test/resources/acef/corrupt/References.txt b/importer/src/test/resources/acef/corrupt/References.txt similarity index 100% rename from webservice/src/test/resources/acef/corrupt/References.txt rename to importer/src/test/resources/acef/corrupt/References.txt diff --git a/webservice/src/test/resources/acef/corrupt/SourceDatabase.txt b/importer/src/test/resources/acef/corrupt/SourceDatabase.txt similarity index 100% rename from webservice/src/test/resources/acef/corrupt/SourceDatabase.txt rename to importer/src/test/resources/acef/corrupt/SourceDatabase.txt diff --git a/webservice/src/test/resources/acef/encodings/AcceptedInfraspecificTaxa.txt b/importer/src/test/resources/acef/encodings/AcceptedInfraspecificTaxa.txt similarity index 100% rename from webservice/src/test/resources/acef/encodings/AcceptedInfraspecificTaxa.txt rename to importer/src/test/resources/acef/encodings/AcceptedInfraspecificTaxa.txt diff --git a/webservice/src/test/resources/acef/encodings/AcceptedSpecies.txt b/importer/src/test/resources/acef/encodings/AcceptedSpecies.txt similarity index 100% rename from webservice/src/test/resources/acef/encodings/AcceptedSpecies.txt rename to importer/src/test/resources/acef/encodings/AcceptedSpecies.txt diff --git a/webservice/src/test/resources/acef/encodings/CommonNames.txt b/importer/src/test/resources/acef/encodings/CommonNames.txt similarity index 100% rename from webservice/src/test/resources/acef/encodings/CommonNames.txt rename to importer/src/test/resources/acef/encodings/CommonNames.txt diff --git a/webservice/src/test/resources/acef/encodings/Distribution.txt b/importer/src/test/resources/acef/encodings/Distribution.txt similarity index 100% rename from webservice/src/test/resources/acef/encodings/Distribution.txt rename to importer/src/test/resources/acef/encodings/Distribution.txt diff --git a/webservice/src/test/resources/acef/encodings/README.md b/importer/src/test/resources/acef/encodings/README.md similarity index 100% rename from webservice/src/test/resources/acef/encodings/README.md rename to importer/src/test/resources/acef/encodings/README.md diff --git a/webservice/src/test/resources/acef/encodings/SourceDatabase.txt b/importer/src/test/resources/acef/encodings/SourceDatabase.txt similarity index 100% rename from webservice/src/test/resources/acef/encodings/SourceDatabase.txt rename to importer/src/test/resources/acef/encodings/SourceDatabase.txt diff --git a/webservice/src/test/resources/acef/encodings/Synonyms.txt b/importer/src/test/resources/acef/encodings/Synonyms.txt similarity index 100% rename from webservice/src/test/resources/acef/encodings/Synonyms.txt rename to importer/src/test/resources/acef/encodings/Synonyms.txt diff --git a/webservice/src/test/resources/coldp/0/README.md b/importer/src/test/resources/coldp/0/README.md similarity index 100% rename from webservice/src/test/resources/coldp/0/README.md rename to importer/src/test/resources/coldp/0/README.md diff --git a/webservice/src/test/resources/coldp/0/data/distribution.tsv b/importer/src/test/resources/coldp/0/data/distribution.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/distribution.tsv rename to importer/src/test/resources/coldp/0/data/distribution.tsv diff --git a/webservice/src/test/resources/coldp/0/data/media.tsv b/importer/src/test/resources/coldp/0/data/media.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/media.tsv rename to importer/src/test/resources/coldp/0/data/media.tsv diff --git a/webservice/src/test/resources/coldp/0/data/name-relation.tsv b/importer/src/test/resources/coldp/0/data/name-relation.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/name-relation.tsv rename to importer/src/test/resources/coldp/0/data/name-relation.tsv diff --git a/webservice/src/test/resources/coldp/0/data/name.tsv b/importer/src/test/resources/coldp/0/data/name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/name.tsv rename to importer/src/test/resources/coldp/0/data/name.tsv diff --git a/webservice/src/test/resources/coldp/0/data/reference.tsv b/importer/src/test/resources/coldp/0/data/reference.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/reference.tsv rename to importer/src/test/resources/coldp/0/data/reference.tsv diff --git a/webservice/src/test/resources/coldp/0/data/species-estimate.tsv b/importer/src/test/resources/coldp/0/data/species-estimate.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/species-estimate.tsv rename to importer/src/test/resources/coldp/0/data/species-estimate.tsv diff --git a/webservice/src/test/resources/coldp/0/data/species-interaction.tsv b/importer/src/test/resources/coldp/0/data/species-interaction.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/species-interaction.tsv rename to importer/src/test/resources/coldp/0/data/species-interaction.tsv diff --git a/webservice/src/test/resources/coldp/0/data/synonym.tsv b/importer/src/test/resources/coldp/0/data/synonym.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/synonym.tsv rename to importer/src/test/resources/coldp/0/data/synonym.tsv diff --git a/webservice/src/test/resources/coldp/0/data/taxon-concept-relation.tsv b/importer/src/test/resources/coldp/0/data/taxon-concept-relation.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/taxon-concept-relation.tsv rename to importer/src/test/resources/coldp/0/data/taxon-concept-relation.tsv diff --git a/webservice/src/test/resources/coldp/0/data/taxon.tsv b/importer/src/test/resources/coldp/0/data/taxon.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/taxon.tsv rename to importer/src/test/resources/coldp/0/data/taxon.tsv diff --git a/webservice/src/test/resources/coldp/0/data/treatments/Hind2013.txt b/importer/src/test/resources/coldp/0/data/treatments/Hind2013.txt similarity index 100% rename from webservice/src/test/resources/coldp/0/data/treatments/Hind2013.txt rename to importer/src/test/resources/coldp/0/data/treatments/Hind2013.txt diff --git a/webservice/src/test/resources/coldp/0/data/treatments/Jarvis2007.html b/importer/src/test/resources/coldp/0/data/treatments/Jarvis2007.html similarity index 100% rename from webservice/src/test/resources/coldp/0/data/treatments/Jarvis2007.html rename to importer/src/test/resources/coldp/0/data/treatments/Jarvis2007.html diff --git a/webservice/src/test/resources/coldp/0/data/type-material.tsv b/importer/src/test/resources/coldp/0/data/type-material.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/type-material.tsv rename to importer/src/test/resources/coldp/0/data/type-material.tsv diff --git a/webservice/src/test/resources/coldp/0/data/vernacular-name.tsv b/importer/src/test/resources/coldp/0/data/vernacular-name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/0/data/vernacular-name.tsv rename to importer/src/test/resources/coldp/0/data/vernacular-name.tsv diff --git a/webservice/src/test/resources/coldp/0/expected-barenames.txt b/importer/src/test/resources/coldp/0/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/coldp/0/expected-barenames.txt rename to importer/src/test/resources/coldp/0/expected-barenames.txt diff --git a/webservice/src/test/resources/coldp/0/expected.tree b/importer/src/test/resources/coldp/0/expected.tree similarity index 100% rename from webservice/src/test/resources/coldp/0/expected.tree rename to importer/src/test/resources/coldp/0/expected.tree diff --git a/webservice/src/test/resources/coldp/0/metadata.yaml b/importer/src/test/resources/coldp/0/metadata.yaml similarity index 100% rename from webservice/src/test/resources/coldp/0/metadata.yaml rename to importer/src/test/resources/coldp/0/metadata.yaml diff --git a/webservice/src/test/resources/coldp/1/MEDIA.tsv b/importer/src/test/resources/coldp/1/MEDIA.tsv similarity index 100% rename from webservice/src/test/resources/coldp/1/MEDIA.tsv rename to importer/src/test/resources/coldp/1/MEDIA.tsv diff --git a/webservice/src/test/resources/coldp/1/README.md b/importer/src/test/resources/coldp/1/README.md similarity index 100% rename from webservice/src/test/resources/coldp/1/README.md rename to importer/src/test/resources/coldp/1/README.md diff --git a/webservice/src/test/resources/coldp/1/distributions.tsv b/importer/src/test/resources/coldp/1/distributions.tsv similarity index 100% rename from webservice/src/test/resources/coldp/1/distributions.tsv rename to importer/src/test/resources/coldp/1/distributions.tsv diff --git a/webservice/src/test/resources/coldp/1/namerels.tsv b/importer/src/test/resources/coldp/1/namerels.tsv similarity index 100% rename from webservice/src/test/resources/coldp/1/namerels.tsv rename to importer/src/test/resources/coldp/1/namerels.tsv diff --git a/webservice/src/test/resources/coldp/1/names.tsv b/importer/src/test/resources/coldp/1/names.tsv similarity index 100% rename from webservice/src/test/resources/coldp/1/names.tsv rename to importer/src/test/resources/coldp/1/names.tsv diff --git a/webservice/src/test/resources/coldp/1/references.tsv b/importer/src/test/resources/coldp/1/references.tsv similarity index 100% rename from webservice/src/test/resources/coldp/1/references.tsv rename to importer/src/test/resources/coldp/1/references.tsv diff --git a/webservice/src/test/resources/coldp/1/synonyms.tsv b/importer/src/test/resources/coldp/1/synonyms.tsv similarity index 100% rename from webservice/src/test/resources/coldp/1/synonyms.tsv rename to importer/src/test/resources/coldp/1/synonyms.tsv diff --git a/webservice/src/test/resources/coldp/1/taxa.tsv b/importer/src/test/resources/coldp/1/taxa.tsv similarity index 100% rename from webservice/src/test/resources/coldp/1/taxa.tsv rename to importer/src/test/resources/coldp/1/taxa.tsv diff --git a/webservice/src/test/resources/coldp/1/vernacularnames.tsv b/importer/src/test/resources/coldp/1/vernacularnames.tsv similarity index 100% rename from webservice/src/test/resources/coldp/1/vernacularnames.tsv rename to importer/src/test/resources/coldp/1/vernacularnames.tsv diff --git a/webservice/src/test/resources/coldp/10/NameUsage.csv b/importer/src/test/resources/coldp/10/NameUsage.csv similarity index 100% rename from webservice/src/test/resources/coldp/10/NameUsage.csv rename to importer/src/test/resources/coldp/10/NameUsage.csv diff --git a/webservice/src/test/resources/coldp/11/NameUsage.csv b/importer/src/test/resources/coldp/11/NameUsage.csv similarity index 100% rename from webservice/src/test/resources/coldp/11/NameUsage.csv rename to importer/src/test/resources/coldp/11/NameUsage.csv diff --git a/webservice/src/test/resources/coldp/11/README.md b/importer/src/test/resources/coldp/11/README.md similarity index 100% rename from webservice/src/test/resources/coldp/11/README.md rename to importer/src/test/resources/coldp/11/README.md diff --git a/webservice/src/test/resources/coldp/12/NameUsage.csv b/importer/src/test/resources/coldp/12/NameUsage.csv similarity index 100% rename from webservice/src/test/resources/coldp/12/NameUsage.csv rename to importer/src/test/resources/coldp/12/NameUsage.csv diff --git a/webservice/src/test/resources/coldp/12/README.md b/importer/src/test/resources/coldp/12/README.md similarity index 100% rename from webservice/src/test/resources/coldp/12/README.md rename to importer/src/test/resources/coldp/12/README.md diff --git a/webservice/src/test/resources/coldp/13/Name.csv b/importer/src/test/resources/coldp/13/Name.csv similarity index 100% rename from webservice/src/test/resources/coldp/13/Name.csv rename to importer/src/test/resources/coldp/13/Name.csv diff --git a/webservice/src/test/resources/coldp/13/README.md b/importer/src/test/resources/coldp/13/README.md similarity index 100% rename from webservice/src/test/resources/coldp/13/README.md rename to importer/src/test/resources/coldp/13/README.md diff --git a/webservice/src/test/resources/coldp/14/Name.tsv b/importer/src/test/resources/coldp/14/Name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/14/Name.tsv rename to importer/src/test/resources/coldp/14/Name.tsv diff --git a/webservice/src/test/resources/coldp/14/README.md b/importer/src/test/resources/coldp/14/README.md similarity index 100% rename from webservice/src/test/resources/coldp/14/README.md rename to importer/src/test/resources/coldp/14/README.md diff --git a/webservice/src/test/resources/coldp/14/Taxon.tsv b/importer/src/test/resources/coldp/14/Taxon.tsv similarity index 100% rename from webservice/src/test/resources/coldp/14/Taxon.tsv rename to importer/src/test/resources/coldp/14/Taxon.tsv diff --git a/webservice/src/test/resources/coldp/15/NameUsage.tsv b/importer/src/test/resources/coldp/15/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/15/NameUsage.tsv rename to importer/src/test/resources/coldp/15/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/15/README.md b/importer/src/test/resources/coldp/15/README.md similarity index 100% rename from webservice/src/test/resources/coldp/15/README.md rename to importer/src/test/resources/coldp/15/README.md diff --git a/webservice/src/test/resources/coldp/15/Reference.tsv b/importer/src/test/resources/coldp/15/Reference.tsv similarity index 100% rename from webservice/src/test/resources/coldp/15/Reference.tsv rename to importer/src/test/resources/coldp/15/Reference.tsv diff --git a/webservice/src/test/resources/coldp/16/README.md b/importer/src/test/resources/coldp/16/README.md similarity index 100% rename from webservice/src/test/resources/coldp/16/README.md rename to importer/src/test/resources/coldp/16/README.md diff --git a/webservice/src/test/resources/coldp/16/name.tsv b/importer/src/test/resources/coldp/16/name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/16/name.tsv rename to importer/src/test/resources/coldp/16/name.tsv diff --git a/webservice/src/test/resources/coldp/16/species-interaction.tsv b/importer/src/test/resources/coldp/16/species-interaction.tsv similarity index 100% rename from webservice/src/test/resources/coldp/16/species-interaction.tsv rename to importer/src/test/resources/coldp/16/species-interaction.tsv diff --git a/webservice/src/test/resources/coldp/16/taxon.tsv b/importer/src/test/resources/coldp/16/taxon.tsv similarity index 100% rename from webservice/src/test/resources/coldp/16/taxon.tsv rename to importer/src/test/resources/coldp/16/taxon.tsv diff --git a/webservice/src/test/resources/coldp/17/README.md b/importer/src/test/resources/coldp/17/README.md similarity index 100% rename from webservice/src/test/resources/coldp/17/README.md rename to importer/src/test/resources/coldp/17/README.md diff --git a/webservice/src/test/resources/coldp/17/name.tsv b/importer/src/test/resources/coldp/17/name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/17/name.tsv rename to importer/src/test/resources/coldp/17/name.tsv diff --git a/webservice/src/test/resources/coldp/17/speciesinteraction.csv b/importer/src/test/resources/coldp/17/speciesinteraction.csv similarity index 100% rename from webservice/src/test/resources/coldp/17/speciesinteraction.csv rename to importer/src/test/resources/coldp/17/speciesinteraction.csv diff --git a/webservice/src/test/resources/coldp/17/synonym.tsv b/importer/src/test/resources/coldp/17/synonym.tsv similarity index 100% rename from webservice/src/test/resources/coldp/17/synonym.tsv rename to importer/src/test/resources/coldp/17/synonym.tsv diff --git a/webservice/src/test/resources/coldp/17/taxon.tsv b/importer/src/test/resources/coldp/17/taxon.tsv similarity index 100% rename from webservice/src/test/resources/coldp/17/taxon.tsv rename to importer/src/test/resources/coldp/17/taxon.tsv diff --git a/webservice/src/test/resources/coldp/18/NameUsage.tsv b/importer/src/test/resources/coldp/18/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/18/NameUsage.tsv rename to importer/src/test/resources/coldp/18/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/18/README.md b/importer/src/test/resources/coldp/18/README.md similarity index 100% rename from webservice/src/test/resources/coldp/18/README.md rename to importer/src/test/resources/coldp/18/README.md diff --git a/webservice/src/test/resources/coldp/18/expected-barenames.txt b/importer/src/test/resources/coldp/18/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/coldp/18/expected-barenames.txt rename to importer/src/test/resources/coldp/18/expected-barenames.txt diff --git a/webservice/src/test/resources/coldp/18/expected.tree b/importer/src/test/resources/coldp/18/expected.tree similarity index 100% rename from webservice/src/test/resources/coldp/18/expected.tree rename to importer/src/test/resources/coldp/18/expected.tree diff --git a/webservice/src/test/resources/coldp/19/NameUsage.tsv b/importer/src/test/resources/coldp/19/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/19/NameUsage.tsv rename to importer/src/test/resources/coldp/19/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/19/README.md b/importer/src/test/resources/coldp/19/README.md similarity index 100% rename from webservice/src/test/resources/coldp/19/README.md rename to importer/src/test/resources/coldp/19/README.md diff --git a/webservice/src/test/resources/coldp/19/metadata.yaml b/importer/src/test/resources/coldp/19/metadata.yaml similarity index 100% rename from webservice/src/test/resources/coldp/19/metadata.yaml rename to importer/src/test/resources/coldp/19/metadata.yaml diff --git a/webservice/src/test/resources/coldp/2/README.md b/importer/src/test/resources/coldp/2/README.md similarity index 100% rename from webservice/src/test/resources/coldp/2/README.md rename to importer/src/test/resources/coldp/2/README.md diff --git a/webservice/src/test/resources/coldp/2/metadata.yaml b/importer/src/test/resources/coldp/2/metadata.yaml similarity index 100% rename from webservice/src/test/resources/coldp/2/metadata.yaml rename to importer/src/test/resources/coldp/2/metadata.yaml diff --git a/webservice/src/test/resources/coldp/2/name-rel.tsv b/importer/src/test/resources/coldp/2/name-rel.tsv similarity index 100% rename from webservice/src/test/resources/coldp/2/name-rel.tsv rename to importer/src/test/resources/coldp/2/name-rel.tsv diff --git a/webservice/src/test/resources/coldp/2/name.tsv b/importer/src/test/resources/coldp/2/name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/2/name.tsv rename to importer/src/test/resources/coldp/2/name.tsv diff --git a/webservice/src/test/resources/coldp/2/synonym.tsv b/importer/src/test/resources/coldp/2/synonym.tsv similarity index 100% rename from webservice/src/test/resources/coldp/2/synonym.tsv rename to importer/src/test/resources/coldp/2/synonym.tsv diff --git a/webservice/src/test/resources/coldp/2/taxon.tsv b/importer/src/test/resources/coldp/2/taxon.tsv similarity index 100% rename from webservice/src/test/resources/coldp/2/taxon.tsv rename to importer/src/test/resources/coldp/2/taxon.tsv diff --git a/webservice/src/test/resources/coldp/20/NameUsage.tsv b/importer/src/test/resources/coldp/20/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/20/NameUsage.tsv rename to importer/src/test/resources/coldp/20/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/20/README.md b/importer/src/test/resources/coldp/20/README.md similarity index 100% rename from webservice/src/test/resources/coldp/20/README.md rename to importer/src/test/resources/coldp/20/README.md diff --git a/webservice/src/test/resources/coldp/21/NameUsage.tsv b/importer/src/test/resources/coldp/21/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/21/NameUsage.tsv rename to importer/src/test/resources/coldp/21/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/21/README.md b/importer/src/test/resources/coldp/21/README.md similarity index 100% rename from webservice/src/test/resources/coldp/21/README.md rename to importer/src/test/resources/coldp/21/README.md diff --git a/webservice/src/test/resources/coldp/22/NameUsage.tsv b/importer/src/test/resources/coldp/22/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/22/NameUsage.tsv rename to importer/src/test/resources/coldp/22/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/22/README.md b/importer/src/test/resources/coldp/22/README.md similarity index 100% rename from webservice/src/test/resources/coldp/22/README.md rename to importer/src/test/resources/coldp/22/README.md diff --git a/webservice/src/test/resources/coldp/23/NameUsage.tsv b/importer/src/test/resources/coldp/23/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/23/NameUsage.tsv rename to importer/src/test/resources/coldp/23/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/23/README.md b/importer/src/test/resources/coldp/23/README.md similarity index 100% rename from webservice/src/test/resources/coldp/23/README.md rename to importer/src/test/resources/coldp/23/README.md diff --git a/webservice/src/test/resources/coldp/23/Reference.tsv b/importer/src/test/resources/coldp/23/Reference.tsv similarity index 100% rename from webservice/src/test/resources/coldp/23/Reference.tsv rename to importer/src/test/resources/coldp/23/Reference.tsv diff --git a/webservice/src/test/resources/coldp/24/NameUsage.tsv b/importer/src/test/resources/coldp/24/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/24/NameUsage.tsv rename to importer/src/test/resources/coldp/24/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/24/README.md b/importer/src/test/resources/coldp/24/README.md similarity index 100% rename from webservice/src/test/resources/coldp/24/README.md rename to importer/src/test/resources/coldp/24/README.md diff --git a/webservice/src/test/resources/coldp/25/NameUsage.tsv b/importer/src/test/resources/coldp/25/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/25/NameUsage.tsv rename to importer/src/test/resources/coldp/25/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/25/README.md b/importer/src/test/resources/coldp/25/README.md similarity index 100% rename from webservice/src/test/resources/coldp/25/README.md rename to importer/src/test/resources/coldp/25/README.md diff --git a/webservice/src/test/resources/coldp/26/NameUsage.tsv b/importer/src/test/resources/coldp/26/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/26/NameUsage.tsv rename to importer/src/test/resources/coldp/26/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/26/README.md b/importer/src/test/resources/coldp/26/README.md similarity index 100% rename from webservice/src/test/resources/coldp/26/README.md rename to importer/src/test/resources/coldp/26/README.md diff --git a/webservice/src/test/resources/coldp/26/Reference.csv b/importer/src/test/resources/coldp/26/Reference.csv similarity index 100% rename from webservice/src/test/resources/coldp/26/Reference.csv rename to importer/src/test/resources/coldp/26/Reference.csv diff --git a/webservice/src/test/resources/coldp/27/NameUsage.tsv b/importer/src/test/resources/coldp/27/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/27/NameUsage.tsv rename to importer/src/test/resources/coldp/27/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/27/README.md b/importer/src/test/resources/coldp/27/README.md similarity index 100% rename from webservice/src/test/resources/coldp/27/README.md rename to importer/src/test/resources/coldp/27/README.md diff --git a/webservice/src/test/resources/coldp/28/NameUsage.tsv b/importer/src/test/resources/coldp/28/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/28/NameUsage.tsv rename to importer/src/test/resources/coldp/28/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/28/README.md b/importer/src/test/resources/coldp/28/README.md similarity index 100% rename from webservice/src/test/resources/coldp/28/README.md rename to importer/src/test/resources/coldp/28/README.md diff --git a/webservice/src/test/resources/coldp/28/Reference.csv b/importer/src/test/resources/coldp/28/Reference.csv similarity index 100% rename from webservice/src/test/resources/coldp/28/Reference.csv rename to importer/src/test/resources/coldp/28/Reference.csv diff --git a/webservice/src/test/resources/coldp/29/NameUsage.tsv b/importer/src/test/resources/coldp/29/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/29/NameUsage.tsv rename to importer/src/test/resources/coldp/29/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/29/README.md b/importer/src/test/resources/coldp/29/README.md similarity index 100% rename from webservice/src/test/resources/coldp/29/README.md rename to importer/src/test/resources/coldp/29/README.md diff --git a/webservice/src/test/resources/coldp/29/metadata.yaml b/importer/src/test/resources/coldp/29/metadata.yaml similarity index 100% rename from webservice/src/test/resources/coldp/29/metadata.yaml rename to importer/src/test/resources/coldp/29/metadata.yaml diff --git a/webservice/src/test/resources/coldp/3/README.md b/importer/src/test/resources/coldp/3/README.md similarity index 100% rename from webservice/src/test/resources/coldp/3/README.md rename to importer/src/test/resources/coldp/3/README.md diff --git a/webservice/src/test/resources/coldp/3/metadata.yaml b/importer/src/test/resources/coldp/3/metadata.yaml similarity index 100% rename from webservice/src/test/resources/coldp/3/metadata.yaml rename to importer/src/test/resources/coldp/3/metadata.yaml diff --git a/webservice/src/test/resources/coldp/3/name-rel.tsv b/importer/src/test/resources/coldp/3/name-rel.tsv similarity index 100% rename from webservice/src/test/resources/coldp/3/name-rel.tsv rename to importer/src/test/resources/coldp/3/name-rel.tsv diff --git a/webservice/src/test/resources/coldp/3/name.tsv b/importer/src/test/resources/coldp/3/name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/3/name.tsv rename to importer/src/test/resources/coldp/3/name.tsv diff --git a/webservice/src/test/resources/coldp/3/taxon.tsv b/importer/src/test/resources/coldp/3/taxon.tsv similarity index 100% rename from webservice/src/test/resources/coldp/3/taxon.tsv rename to importer/src/test/resources/coldp/3/taxon.tsv diff --git a/webservice/src/test/resources/coldp/30/NameRel.tsv b/importer/src/test/resources/coldp/30/NameRel.tsv similarity index 100% rename from webservice/src/test/resources/coldp/30/NameRel.tsv rename to importer/src/test/resources/coldp/30/NameRel.tsv diff --git a/webservice/src/test/resources/coldp/30/NameUsage.tsv b/importer/src/test/resources/coldp/30/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/30/NameUsage.tsv rename to importer/src/test/resources/coldp/30/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/30/README.md b/importer/src/test/resources/coldp/30/README.md similarity index 100% rename from webservice/src/test/resources/coldp/30/README.md rename to importer/src/test/resources/coldp/30/README.md diff --git a/webservice/src/test/resources/coldp/31/NameUsage.tsv b/importer/src/test/resources/coldp/31/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/31/NameUsage.tsv rename to importer/src/test/resources/coldp/31/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/31/README.md b/importer/src/test/resources/coldp/31/README.md similarity index 100% rename from webservice/src/test/resources/coldp/31/README.md rename to importer/src/test/resources/coldp/31/README.md diff --git a/webservice/src/test/resources/coldp/32/README.md b/importer/src/test/resources/coldp/32/README.md similarity index 100% rename from webservice/src/test/resources/coldp/32/README.md rename to importer/src/test/resources/coldp/32/README.md diff --git a/webservice/src/test/resources/coldp/32/reference.tsv b/importer/src/test/resources/coldp/32/reference.tsv similarity index 100% rename from webservice/src/test/resources/coldp/32/reference.tsv rename to importer/src/test/resources/coldp/32/reference.tsv diff --git a/webservice/src/test/resources/coldp/33/README.md b/importer/src/test/resources/coldp/33/README.md similarity index 100% rename from webservice/src/test/resources/coldp/33/README.md rename to importer/src/test/resources/coldp/33/README.md diff --git a/webservice/src/test/resources/coldp/33/nameusage.csv b/importer/src/test/resources/coldp/33/nameusage.csv similarity index 100% rename from webservice/src/test/resources/coldp/33/nameusage.csv rename to importer/src/test/resources/coldp/33/nameusage.csv diff --git a/webservice/src/test/resources/coldp/33/typematerial.csv b/importer/src/test/resources/coldp/33/typematerial.csv similarity index 100% rename from webservice/src/test/resources/coldp/33/typematerial.csv rename to importer/src/test/resources/coldp/33/typematerial.csv diff --git a/webservice/src/test/resources/coldp/34/NameUsage.tsv b/importer/src/test/resources/coldp/34/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/34/NameUsage.tsv rename to importer/src/test/resources/coldp/34/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/34/README.md b/importer/src/test/resources/coldp/34/README.md similarity index 100% rename from webservice/src/test/resources/coldp/34/README.md rename to importer/src/test/resources/coldp/34/README.md diff --git a/webservice/src/test/resources/coldp/35/NameUsage.tsv b/importer/src/test/resources/coldp/35/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/35/NameUsage.tsv rename to importer/src/test/resources/coldp/35/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/35/README.md b/importer/src/test/resources/coldp/35/README.md similarity index 100% rename from webservice/src/test/resources/coldp/35/README.md rename to importer/src/test/resources/coldp/35/README.md diff --git a/webservice/src/test/resources/coldp/36/NameUsage.tsv b/importer/src/test/resources/coldp/36/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/36/NameUsage.tsv rename to importer/src/test/resources/coldp/36/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/36/README.md b/importer/src/test/resources/coldp/36/README.md similarity index 100% rename from webservice/src/test/resources/coldp/36/README.md rename to importer/src/test/resources/coldp/36/README.md diff --git a/webservice/src/test/resources/coldp/37/NameUsage.tsv b/importer/src/test/resources/coldp/37/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/37/NameUsage.tsv rename to importer/src/test/resources/coldp/37/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/37/README.md b/importer/src/test/resources/coldp/37/README.md similarity index 100% rename from webservice/src/test/resources/coldp/37/README.md rename to importer/src/test/resources/coldp/37/README.md diff --git a/webservice/src/test/resources/coldp/38/NameUsage.tsv b/importer/src/test/resources/coldp/38/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/38/NameUsage.tsv rename to importer/src/test/resources/coldp/38/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/38/README.md b/importer/src/test/resources/coldp/38/README.md similarity index 100% rename from webservice/src/test/resources/coldp/38/README.md rename to importer/src/test/resources/coldp/38/README.md diff --git a/webservice/src/test/resources/coldp/39/NameUsage.tsv b/importer/src/test/resources/coldp/39/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/39/NameUsage.tsv rename to importer/src/test/resources/coldp/39/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/39/README.md b/importer/src/test/resources/coldp/39/README.md similarity index 100% rename from webservice/src/test/resources/coldp/39/README.md rename to importer/src/test/resources/coldp/39/README.md diff --git a/webservice/src/test/resources/coldp/4/README.md b/importer/src/test/resources/coldp/4/README.md similarity index 100% rename from webservice/src/test/resources/coldp/4/README.md rename to importer/src/test/resources/coldp/4/README.md diff --git a/webservice/src/test/resources/coldp/4/metadata.yaml b/importer/src/test/resources/coldp/4/metadata.yaml similarity index 100% rename from webservice/src/test/resources/coldp/4/metadata.yaml rename to importer/src/test/resources/coldp/4/metadata.yaml diff --git a/webservice/src/test/resources/coldp/4/name.tsv b/importer/src/test/resources/coldp/4/name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/4/name.tsv rename to importer/src/test/resources/coldp/4/name.tsv diff --git a/webservice/src/test/resources/coldp/4/taxon.tsv b/importer/src/test/resources/coldp/4/taxon.tsv similarity index 100% rename from webservice/src/test/resources/coldp/4/taxon.tsv rename to importer/src/test/resources/coldp/4/taxon.tsv diff --git a/webservice/src/test/resources/coldp/40/NameUsage.tsv b/importer/src/test/resources/coldp/40/NameUsage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/40/NameUsage.tsv rename to importer/src/test/resources/coldp/40/NameUsage.tsv diff --git a/webservice/src/test/resources/coldp/40/README.md b/importer/src/test/resources/coldp/40/README.md similarity index 100% rename from webservice/src/test/resources/coldp/40/README.md rename to importer/src/test/resources/coldp/40/README.md diff --git a/webservice/src/test/resources/coldp/40/Reference.tsv b/importer/src/test/resources/coldp/40/Reference.tsv similarity index 100% rename from webservice/src/test/resources/coldp/40/Reference.tsv rename to importer/src/test/resources/coldp/40/Reference.tsv diff --git a/webservice/src/test/resources/coldp/40/TaxonProperty.tsv b/importer/src/test/resources/coldp/40/TaxonProperty.tsv similarity index 100% rename from webservice/src/test/resources/coldp/40/TaxonProperty.tsv rename to importer/src/test/resources/coldp/40/TaxonProperty.tsv diff --git a/webservice/src/test/resources/coldp/5/README.md b/importer/src/test/resources/coldp/5/README.md similarity index 100% rename from webservice/src/test/resources/coldp/5/README.md rename to importer/src/test/resources/coldp/5/README.md diff --git a/webservice/src/test/resources/coldp/5/metadata.yaml b/importer/src/test/resources/coldp/5/metadata.yaml similarity index 100% rename from webservice/src/test/resources/coldp/5/metadata.yaml rename to importer/src/test/resources/coldp/5/metadata.yaml diff --git a/webservice/src/test/resources/coldp/5/name.tsv b/importer/src/test/resources/coldp/5/name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/5/name.tsv rename to importer/src/test/resources/coldp/5/name.tsv diff --git a/webservice/src/test/resources/coldp/5/taxon.tsv b/importer/src/test/resources/coldp/5/taxon.tsv similarity index 100% rename from webservice/src/test/resources/coldp/5/taxon.tsv rename to importer/src/test/resources/coldp/5/taxon.tsv diff --git a/webservice/src/test/resources/coldp/6/README.md b/importer/src/test/resources/coldp/6/README.md similarity index 100% rename from webservice/src/test/resources/coldp/6/README.md rename to importer/src/test/resources/coldp/6/README.md diff --git a/webservice/src/test/resources/coldp/6/name.tsv b/importer/src/test/resources/coldp/6/name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/6/name.tsv rename to importer/src/test/resources/coldp/6/name.tsv diff --git a/webservice/src/test/resources/coldp/6/taxon.tsv b/importer/src/test/resources/coldp/6/taxon.tsv similarity index 100% rename from webservice/src/test/resources/coldp/6/taxon.tsv rename to importer/src/test/resources/coldp/6/taxon.tsv diff --git a/webservice/src/test/resources/coldp/7/README.md b/importer/src/test/resources/coldp/7/README.md similarity index 100% rename from webservice/src/test/resources/coldp/7/README.md rename to importer/src/test/resources/coldp/7/README.md diff --git a/webservice/src/test/resources/coldp/7/data/distribution.tsv b/importer/src/test/resources/coldp/7/data/distribution.tsv similarity index 100% rename from webservice/src/test/resources/coldp/7/data/distribution.tsv rename to importer/src/test/resources/coldp/7/data/distribution.tsv diff --git a/webservice/src/test/resources/coldp/7/data/media.tsv b/importer/src/test/resources/coldp/7/data/media.tsv similarity index 100% rename from webservice/src/test/resources/coldp/7/data/media.tsv rename to importer/src/test/resources/coldp/7/data/media.tsv diff --git a/webservice/src/test/resources/coldp/7/data/name-relation.tsv b/importer/src/test/resources/coldp/7/data/name-relation.tsv similarity index 100% rename from webservice/src/test/resources/coldp/7/data/name-relation.tsv rename to importer/src/test/resources/coldp/7/data/name-relation.tsv diff --git a/webservice/src/test/resources/coldp/7/data/name-usage.tsv b/importer/src/test/resources/coldp/7/data/name-usage.tsv similarity index 100% rename from webservice/src/test/resources/coldp/7/data/name-usage.tsv rename to importer/src/test/resources/coldp/7/data/name-usage.tsv diff --git a/webservice/src/test/resources/coldp/7/data/reference.tsv b/importer/src/test/resources/coldp/7/data/reference.tsv similarity index 100% rename from webservice/src/test/resources/coldp/7/data/reference.tsv rename to importer/src/test/resources/coldp/7/data/reference.tsv diff --git a/webservice/src/test/resources/coldp/7/data/taxon-rel.tsv b/importer/src/test/resources/coldp/7/data/taxon-rel.tsv similarity index 100% rename from webservice/src/test/resources/coldp/7/data/taxon-rel.tsv rename to importer/src/test/resources/coldp/7/data/taxon-rel.tsv diff --git a/webservice/src/test/resources/coldp/7/data/treatments/Hind2013.txt b/importer/src/test/resources/coldp/7/data/treatments/Hind2013.txt similarity index 100% rename from webservice/src/test/resources/coldp/7/data/treatments/Hind2013.txt rename to importer/src/test/resources/coldp/7/data/treatments/Hind2013.txt diff --git a/webservice/src/test/resources/coldp/7/data/treatments/Jarvis2007.html b/importer/src/test/resources/coldp/7/data/treatments/Jarvis2007.html similarity index 100% rename from webservice/src/test/resources/coldp/7/data/treatments/Jarvis2007.html rename to importer/src/test/resources/coldp/7/data/treatments/Jarvis2007.html diff --git a/webservice/src/test/resources/coldp/7/data/type-material.tsv b/importer/src/test/resources/coldp/7/data/type-material.tsv similarity index 100% rename from webservice/src/test/resources/coldp/7/data/type-material.tsv rename to importer/src/test/resources/coldp/7/data/type-material.tsv diff --git a/webservice/src/test/resources/coldp/7/data/vernacular-name.tsv b/importer/src/test/resources/coldp/7/data/vernacular-name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/7/data/vernacular-name.tsv rename to importer/src/test/resources/coldp/7/data/vernacular-name.tsv diff --git a/webservice/src/test/resources/coldp/7/expected-barenames.txt b/importer/src/test/resources/coldp/7/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/coldp/7/expected-barenames.txt rename to importer/src/test/resources/coldp/7/expected-barenames.txt diff --git a/webservice/src/test/resources/coldp/7/expected.tree b/importer/src/test/resources/coldp/7/expected.tree similarity index 100% rename from webservice/src/test/resources/coldp/7/expected.tree rename to importer/src/test/resources/coldp/7/expected.tree diff --git a/webservice/src/test/resources/coldp/7/metadata.yaml b/importer/src/test/resources/coldp/7/metadata.yaml similarity index 100% rename from webservice/src/test/resources/coldp/7/metadata.yaml rename to importer/src/test/resources/coldp/7/metadata.yaml diff --git a/webservice/src/test/resources/coldp/8/Name.csv b/importer/src/test/resources/coldp/8/Name.csv similarity index 100% rename from webservice/src/test/resources/coldp/8/Name.csv rename to importer/src/test/resources/coldp/8/Name.csv diff --git a/webservice/src/test/resources/coldp/8/README.md b/importer/src/test/resources/coldp/8/README.md similarity index 100% rename from webservice/src/test/resources/coldp/8/README.md rename to importer/src/test/resources/coldp/8/README.md diff --git a/webservice/src/test/resources/coldp/8/Reference.csv b/importer/src/test/resources/coldp/8/Reference.csv similarity index 100% rename from webservice/src/test/resources/coldp/8/Reference.csv rename to importer/src/test/resources/coldp/8/Reference.csv diff --git a/webservice/src/test/resources/coldp/8/Synonym.csv b/importer/src/test/resources/coldp/8/Synonym.csv similarity index 100% rename from webservice/src/test/resources/coldp/8/Synonym.csv rename to importer/src/test/resources/coldp/8/Synonym.csv diff --git a/webservice/src/test/resources/coldp/8/Taxon.csv b/importer/src/test/resources/coldp/8/Taxon.csv similarity index 100% rename from webservice/src/test/resources/coldp/8/Taxon.csv rename to importer/src/test/resources/coldp/8/Taxon.csv diff --git a/webservice/src/test/resources/coldp/9/Name.csv b/importer/src/test/resources/coldp/9/Name.csv similarity index 100% rename from webservice/src/test/resources/coldp/9/Name.csv rename to importer/src/test/resources/coldp/9/Name.csv diff --git a/webservice/src/test/resources/coldp/9/NameRelation.csv b/importer/src/test/resources/coldp/9/NameRelation.csv similarity index 100% rename from webservice/src/test/resources/coldp/9/NameRelation.csv rename to importer/src/test/resources/coldp/9/NameRelation.csv diff --git a/webservice/src/test/resources/coldp/9/README.md b/importer/src/test/resources/coldp/9/README.md similarity index 100% rename from webservice/src/test/resources/coldp/9/README.md rename to importer/src/test/resources/coldp/9/README.md diff --git a/webservice/src/test/resources/coldp/9/Synonym.csv b/importer/src/test/resources/coldp/9/Synonym.csv similarity index 100% rename from webservice/src/test/resources/coldp/9/Synonym.csv rename to importer/src/test/resources/coldp/9/Synonym.csv diff --git a/webservice/src/test/resources/coldp/9/Taxon.csv b/importer/src/test/resources/coldp/9/Taxon.csv similarity index 100% rename from webservice/src/test/resources/coldp/9/Taxon.csv rename to importer/src/test/resources/coldp/9/Taxon.csv diff --git a/webservice/src/test/resources/coldp/bibtex/README.md b/importer/src/test/resources/coldp/bibtex/README.md similarity index 100% rename from webservice/src/test/resources/coldp/bibtex/README.md rename to importer/src/test/resources/coldp/bibtex/README.md diff --git a/webservice/src/test/resources/coldp/bibtex/name.tsv b/importer/src/test/resources/coldp/bibtex/name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/bibtex/name.tsv rename to importer/src/test/resources/coldp/bibtex/name.tsv diff --git a/webservice/src/test/resources/coldp/bibtex/reference.bib b/importer/src/test/resources/coldp/bibtex/reference.bib similarity index 100% rename from webservice/src/test/resources/coldp/bibtex/reference.bib rename to importer/src/test/resources/coldp/bibtex/reference.bib diff --git a/webservice/src/test/resources/coldp/bibtex/reference.json b/importer/src/test/resources/coldp/bibtex/reference.json similarity index 100% rename from webservice/src/test/resources/coldp/bibtex/reference.json rename to importer/src/test/resources/coldp/bibtex/reference.json diff --git a/webservice/src/test/resources/coldp/bibtex/reference.tsv b/importer/src/test/resources/coldp/bibtex/reference.tsv similarity index 100% rename from webservice/src/test/resources/coldp/bibtex/reference.tsv rename to importer/src/test/resources/coldp/bibtex/reference.tsv diff --git a/webservice/src/test/resources/coldp/csl-lines/name.tsv b/importer/src/test/resources/coldp/csl-lines/name.tsv similarity index 100% rename from webservice/src/test/resources/coldp/csl-lines/name.tsv rename to importer/src/test/resources/coldp/csl-lines/name.tsv diff --git a/webservice/src/test/resources/coldp/csl-lines/reference.jsonl b/importer/src/test/resources/coldp/csl-lines/reference.jsonl similarity index 100% rename from webservice/src/test/resources/coldp/csl-lines/reference.jsonl rename to importer/src/test/resources/coldp/csl-lines/reference.jsonl diff --git a/webservice/src/test/resources/coldp/test.zip b/importer/src/test/resources/coldp/test.zip similarity index 100% rename from webservice/src/test/resources/coldp/test.zip rename to importer/src/test/resources/coldp/test.zip diff --git a/webservice/src/test/resources/csv/15-CommonNames.txt b/importer/src/test/resources/csv/15-CommonNames.txt similarity index 100% rename from webservice/src/test/resources/csv/15-CommonNames.txt rename to importer/src/test/resources/csv/15-CommonNames.txt diff --git a/webservice/src/test/resources/csv/15-References.txt b/importer/src/test/resources/csv/15-References.txt similarity index 100% rename from webservice/src/test/resources/csv/15-References.txt rename to importer/src/test/resources/csv/15-References.txt diff --git a/webservice/src/test/resources/csv/15-Synonyms.txt b/importer/src/test/resources/csv/15-Synonyms.txt similarity index 100% rename from webservice/src/test/resources/csv/15-Synonyms.txt rename to importer/src/test/resources/csv/15-Synonyms.txt diff --git a/webservice/src/test/resources/csv/Media-pipe.txt b/importer/src/test/resources/csv/Media-pipe.txt similarity index 100% rename from webservice/src/test/resources/csv/Media-pipe.txt rename to importer/src/test/resources/csv/Media-pipe.txt diff --git a/webservice/src/test/resources/csv/Media.csv b/importer/src/test/resources/csv/Media.csv similarity index 100% rename from webservice/src/test/resources/csv/Media.csv rename to importer/src/test/resources/csv/Media.csv diff --git a/webservice/src/test/resources/csv/doctype.html b/importer/src/test/resources/csv/doctype.html similarity index 100% rename from webservice/src/test/resources/csv/doctype.html rename to importer/src/test/resources/csv/doctype.html diff --git a/webservice/src/test/resources/dwca/0/README.md b/importer/src/test/resources/dwca/0/README.md similarity index 100% rename from webservice/src/test/resources/dwca/0/README.md rename to importer/src/test/resources/dwca/0/README.md diff --git a/webservice/src/test/resources/dwca/0/expected-barenames.txt b/importer/src/test/resources/dwca/0/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/0/expected-barenames.txt rename to importer/src/test/resources/dwca/0/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/0/expected.tree b/importer/src/test/resources/dwca/0/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/0/expected.tree rename to importer/src/test/resources/dwca/0/expected.tree diff --git a/webservice/src/test/resources/dwca/0/if.txt b/importer/src/test/resources/dwca/0/if.txt similarity index 100% rename from webservice/src/test/resources/dwca/0/if.txt rename to importer/src/test/resources/dwca/0/if.txt diff --git a/webservice/src/test/resources/dwca/0/meta.xml b/importer/src/test/resources/dwca/0/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/0/meta.xml rename to importer/src/test/resources/dwca/0/meta.xml diff --git a/webservice/src/test/resources/dwca/1/README.md b/importer/src/test/resources/dwca/1/README.md similarity index 100% rename from webservice/src/test/resources/dwca/1/README.md rename to importer/src/test/resources/dwca/1/README.md diff --git a/webservice/src/test/resources/dwca/1/expected-barenames.txt b/importer/src/test/resources/dwca/1/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/1/expected-barenames.txt rename to importer/src/test/resources/dwca/1/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/1/expected.tree b/importer/src/test/resources/dwca/1/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/1/expected.tree rename to importer/src/test/resources/dwca/1/expected.tree diff --git a/webservice/src/test/resources/dwca/1/taxa.txt b/importer/src/test/resources/dwca/1/taxa.txt similarity index 100% rename from webservice/src/test/resources/dwca/1/taxa.txt rename to importer/src/test/resources/dwca/1/taxa.txt diff --git a/webservice/src/test/resources/dwca/10/README.md b/importer/src/test/resources/dwca/10/README.md similarity index 100% rename from webservice/src/test/resources/dwca/10/README.md rename to importer/src/test/resources/dwca/10/README.md diff --git a/webservice/src/test/resources/dwca/10/expected-barenames.txt b/importer/src/test/resources/dwca/10/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/10/expected-barenames.txt rename to importer/src/test/resources/dwca/10/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/10/expected.tree b/importer/src/test/resources/dwca/10/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/10/expected.tree rename to importer/src/test/resources/dwca/10/expected.tree diff --git a/webservice/src/test/resources/dwca/10/meta.xml b/importer/src/test/resources/dwca/10/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/10/meta.xml rename to importer/src/test/resources/dwca/10/meta.xml diff --git a/webservice/src/test/resources/dwca/10/worms.txt b/importer/src/test/resources/dwca/10/worms.txt similarity index 100% rename from webservice/src/test/resources/dwca/10/worms.txt rename to importer/src/test/resources/dwca/10/worms.txt diff --git a/webservice/src/test/resources/dwca/11/README.md b/importer/src/test/resources/dwca/11/README.md similarity index 100% rename from webservice/src/test/resources/dwca/11/README.md rename to importer/src/test/resources/dwca/11/README.md diff --git a/webservice/src/test/resources/dwca/11/expected.tree b/importer/src/test/resources/dwca/11/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/11/expected.tree rename to importer/src/test/resources/dwca/11/expected.tree diff --git a/webservice/src/test/resources/dwca/11/metadata.yaml b/importer/src/test/resources/dwca/11/metadata.yaml similarity index 100% rename from webservice/src/test/resources/dwca/11/metadata.yaml rename to importer/src/test/resources/dwca/11/metadata.yaml diff --git a/webservice/src/test/resources/dwca/11/taxa.txt b/importer/src/test/resources/dwca/11/taxa.txt similarity index 100% rename from webservice/src/test/resources/dwca/11/taxa.txt rename to importer/src/test/resources/dwca/11/taxa.txt diff --git a/webservice/src/test/resources/dwca/12/README.md b/importer/src/test/resources/dwca/12/README.md similarity index 100% rename from webservice/src/test/resources/dwca/12/README.md rename to importer/src/test/resources/dwca/12/README.md diff --git a/webservice/src/test/resources/dwca/12/denormed.txt b/importer/src/test/resources/dwca/12/denormed.txt similarity index 100% rename from webservice/src/test/resources/dwca/12/denormed.txt rename to importer/src/test/resources/dwca/12/denormed.txt diff --git a/webservice/src/test/resources/dwca/12/expected.tree b/importer/src/test/resources/dwca/12/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/12/expected.tree rename to importer/src/test/resources/dwca/12/expected.tree diff --git a/webservice/src/test/resources/dwca/13/README.md b/importer/src/test/resources/dwca/13/README.md similarity index 100% rename from webservice/src/test/resources/dwca/13/README.md rename to importer/src/test/resources/dwca/13/README.md diff --git a/webservice/src/test/resources/dwca/13/denormed_mixed.txt b/importer/src/test/resources/dwca/13/denormed_mixed.txt similarity index 100% rename from webservice/src/test/resources/dwca/13/denormed_mixed.txt rename to importer/src/test/resources/dwca/13/denormed_mixed.txt diff --git a/webservice/src/test/resources/dwca/13/expected.tree b/importer/src/test/resources/dwca/13/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/13/expected.tree rename to importer/src/test/resources/dwca/13/expected.tree diff --git a/webservice/src/test/resources/dwca/13/meta.xml b/importer/src/test/resources/dwca/13/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/13/meta.xml rename to importer/src/test/resources/dwca/13/meta.xml diff --git a/webservice/src/test/resources/dwca/14/README.md b/importer/src/test/resources/dwca/14/README.md similarity index 100% rename from webservice/src/test/resources/dwca/14/README.md rename to importer/src/test/resources/dwca/14/README.md diff --git a/webservice/src/test/resources/dwca/14/expected.tree b/importer/src/test/resources/dwca/14/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/14/expected.tree rename to importer/src/test/resources/dwca/14/expected.tree diff --git a/webservice/src/test/resources/dwca/14/measurementorfact.txt b/importer/src/test/resources/dwca/14/measurementorfact.txt similarity index 100% rename from webservice/src/test/resources/dwca/14/measurementorfact.txt rename to importer/src/test/resources/dwca/14/measurementorfact.txt diff --git a/webservice/src/test/resources/dwca/14/meta.xml b/importer/src/test/resources/dwca/14/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/14/meta.xml rename to importer/src/test/resources/dwca/14/meta.xml diff --git a/webservice/src/test/resources/dwca/14/taxon.txt b/importer/src/test/resources/dwca/14/taxon.txt similarity index 100% rename from webservice/src/test/resources/dwca/14/taxon.txt rename to importer/src/test/resources/dwca/14/taxon.txt diff --git a/webservice/src/test/resources/dwca/15/README.md b/importer/src/test/resources/dwca/15/README.md similarity index 100% rename from webservice/src/test/resources/dwca/15/README.md rename to importer/src/test/resources/dwca/15/README.md diff --git a/webservice/src/test/resources/dwca/15/distribution.txt b/importer/src/test/resources/dwca/15/distribution.txt similarity index 100% rename from webservice/src/test/resources/dwca/15/distribution.txt rename to importer/src/test/resources/dwca/15/distribution.txt diff --git a/webservice/src/test/resources/dwca/15/expected.tree b/importer/src/test/resources/dwca/15/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/15/expected.tree rename to importer/src/test/resources/dwca/15/expected.tree diff --git a/webservice/src/test/resources/dwca/15/habit.txt b/importer/src/test/resources/dwca/15/habit.txt similarity index 100% rename from webservice/src/test/resources/dwca/15/habit.txt rename to importer/src/test/resources/dwca/15/habit.txt diff --git a/webservice/src/test/resources/dwca/15/identifier.txt b/importer/src/test/resources/dwca/15/identifier.txt similarity index 100% rename from webservice/src/test/resources/dwca/15/identifier.txt rename to importer/src/test/resources/dwca/15/identifier.txt diff --git a/webservice/src/test/resources/dwca/15/media.txt b/importer/src/test/resources/dwca/15/media.txt similarity index 100% rename from webservice/src/test/resources/dwca/15/media.txt rename to importer/src/test/resources/dwca/15/media.txt diff --git a/webservice/src/test/resources/dwca/15/meta.xml b/importer/src/test/resources/dwca/15/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/15/meta.xml rename to importer/src/test/resources/dwca/15/meta.xml diff --git a/webservice/src/test/resources/dwca/15/references.txt b/importer/src/test/resources/dwca/15/references.txt similarity index 100% rename from webservice/src/test/resources/dwca/15/references.txt rename to importer/src/test/resources/dwca/15/references.txt diff --git a/webservice/src/test/resources/dwca/15/specprof.txt b/importer/src/test/resources/dwca/15/specprof.txt similarity index 100% rename from webservice/src/test/resources/dwca/15/specprof.txt rename to importer/src/test/resources/dwca/15/specprof.txt diff --git a/webservice/src/test/resources/dwca/15/taxon.txt b/importer/src/test/resources/dwca/15/taxon.txt similarity index 100% rename from webservice/src/test/resources/dwca/15/taxon.txt rename to importer/src/test/resources/dwca/15/taxon.txt diff --git a/webservice/src/test/resources/dwca/15/types.txt b/importer/src/test/resources/dwca/15/types.txt similarity index 100% rename from webservice/src/test/resources/dwca/15/types.txt rename to importer/src/test/resources/dwca/15/types.txt diff --git a/webservice/src/test/resources/dwca/15/vernacularnames.txt b/importer/src/test/resources/dwca/15/vernacularnames.txt similarity index 100% rename from webservice/src/test/resources/dwca/15/vernacularnames.txt rename to importer/src/test/resources/dwca/15/vernacularnames.txt diff --git a/webservice/src/test/resources/dwca/16/README.md b/importer/src/test/resources/dwca/16/README.md similarity index 100% rename from webservice/src/test/resources/dwca/16/README.md rename to importer/src/test/resources/dwca/16/README.md diff --git a/webservice/src/test/resources/dwca/16/expected.tree b/importer/src/test/resources/dwca/16/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/16/expected.tree rename to importer/src/test/resources/dwca/16/expected.tree diff --git a/webservice/src/test/resources/dwca/16/taxa.txt b/importer/src/test/resources/dwca/16/taxa.txt similarity index 100% rename from webservice/src/test/resources/dwca/16/taxa.txt rename to importer/src/test/resources/dwca/16/taxa.txt diff --git a/webservice/src/test/resources/dwca/17/README.md b/importer/src/test/resources/dwca/17/README.md similarity index 100% rename from webservice/src/test/resources/dwca/17/README.md rename to importer/src/test/resources/dwca/17/README.md diff --git a/webservice/src/test/resources/dwca/17/eml.xml b/importer/src/test/resources/dwca/17/eml.xml similarity index 100% rename from webservice/src/test/resources/dwca/17/eml.xml rename to importer/src/test/resources/dwca/17/eml.xml diff --git a/webservice/src/test/resources/dwca/17/expected.tree b/importer/src/test/resources/dwca/17/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/17/expected.tree rename to importer/src/test/resources/dwca/17/expected.tree diff --git a/webservice/src/test/resources/dwca/17/media.csv b/importer/src/test/resources/dwca/17/media.csv similarity index 100% rename from webservice/src/test/resources/dwca/17/media.csv rename to importer/src/test/resources/dwca/17/media.csv diff --git a/webservice/src/test/resources/dwca/17/meta.xml b/importer/src/test/resources/dwca/17/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/17/meta.xml rename to importer/src/test/resources/dwca/17/meta.xml diff --git a/webservice/src/test/resources/dwca/17/metadata.yaml b/importer/src/test/resources/dwca/17/metadata.yaml similarity index 100% rename from webservice/src/test/resources/dwca/17/metadata.yaml rename to importer/src/test/resources/dwca/17/metadata.yaml diff --git a/webservice/src/test/resources/dwca/17/occurrences.csv b/importer/src/test/resources/dwca/17/occurrences.csv similarity index 100% rename from webservice/src/test/resources/dwca/17/occurrences.csv rename to importer/src/test/resources/dwca/17/occurrences.csv diff --git a/webservice/src/test/resources/dwca/17/references.csv b/importer/src/test/resources/dwca/17/references.csv similarity index 100% rename from webservice/src/test/resources/dwca/17/references.csv rename to importer/src/test/resources/dwca/17/references.csv diff --git a/webservice/src/test/resources/dwca/17/taxa.csv b/importer/src/test/resources/dwca/17/taxa.csv similarity index 100% rename from webservice/src/test/resources/dwca/17/taxa.csv rename to importer/src/test/resources/dwca/17/taxa.csv diff --git a/webservice/src/test/resources/dwca/18/README.md b/importer/src/test/resources/dwca/18/README.md similarity index 100% rename from webservice/src/test/resources/dwca/18/README.md rename to importer/src/test/resources/dwca/18/README.md diff --git a/webservice/src/test/resources/dwca/18/eml.xml b/importer/src/test/resources/dwca/18/eml.xml similarity index 100% rename from webservice/src/test/resources/dwca/18/eml.xml rename to importer/src/test/resources/dwca/18/eml.xml diff --git a/webservice/src/test/resources/dwca/18/expected-barenames.txt b/importer/src/test/resources/dwca/18/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/18/expected-barenames.txt rename to importer/src/test/resources/dwca/18/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/18/expected.tree b/importer/src/test/resources/dwca/18/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/18/expected.tree rename to importer/src/test/resources/dwca/18/expected.tree diff --git a/webservice/src/test/resources/dwca/18/meta.xml b/importer/src/test/resources/dwca/18/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/18/meta.xml rename to importer/src/test/resources/dwca/18/meta.xml diff --git a/webservice/src/test/resources/dwca/18/metadata.yaml b/importer/src/test/resources/dwca/18/metadata.yaml similarity index 100% rename from webservice/src/test/resources/dwca/18/metadata.yaml rename to importer/src/test/resources/dwca/18/metadata.yaml diff --git a/webservice/src/test/resources/dwca/18/taxon.txt b/importer/src/test/resources/dwca/18/taxon.txt similarity index 100% rename from webservice/src/test/resources/dwca/18/taxon.txt rename to importer/src/test/resources/dwca/18/taxon.txt diff --git a/webservice/src/test/resources/dwca/19/README.md b/importer/src/test/resources/dwca/19/README.md similarity index 100% rename from webservice/src/test/resources/dwca/19/README.md rename to importer/src/test/resources/dwca/19/README.md diff --git a/webservice/src/test/resources/dwca/19/expected-barenames.txt b/importer/src/test/resources/dwca/19/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/19/expected-barenames.txt rename to importer/src/test/resources/dwca/19/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/19/expected.tree b/importer/src/test/resources/dwca/19/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/19/expected.tree rename to importer/src/test/resources/dwca/19/expected.tree diff --git a/webservice/src/test/resources/dwca/19/metadata.yaml b/importer/src/test/resources/dwca/19/metadata.yaml similarity index 100% rename from webservice/src/test/resources/dwca/19/metadata.yaml rename to importer/src/test/resources/dwca/19/metadata.yaml diff --git a/webservice/src/test/resources/dwca/19/trimezia.txt b/importer/src/test/resources/dwca/19/trimezia.txt similarity index 100% rename from webservice/src/test/resources/dwca/19/trimezia.txt rename to importer/src/test/resources/dwca/19/trimezia.txt diff --git a/webservice/src/test/resources/dwca/2/README.md b/importer/src/test/resources/dwca/2/README.md similarity index 100% rename from webservice/src/test/resources/dwca/2/README.md rename to importer/src/test/resources/dwca/2/README.md diff --git a/webservice/src/test/resources/dwca/2/expected-barenames.txt b/importer/src/test/resources/dwca/2/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/2/expected-barenames.txt rename to importer/src/test/resources/dwca/2/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/2/expected.tree b/importer/src/test/resources/dwca/2/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/2/expected.tree rename to importer/src/test/resources/dwca/2/expected.tree diff --git a/webservice/src/test/resources/dwca/2/implicitspecies.txt b/importer/src/test/resources/dwca/2/implicitspecies.txt similarity index 100% rename from webservice/src/test/resources/dwca/2/implicitspecies.txt rename to importer/src/test/resources/dwca/2/implicitspecies.txt diff --git a/webservice/src/test/resources/dwca/20/README.md b/importer/src/test/resources/dwca/20/README.md similarity index 100% rename from webservice/src/test/resources/dwca/20/README.md rename to importer/src/test/resources/dwca/20/README.md diff --git a/webservice/src/test/resources/dwca/20/expected.tree b/importer/src/test/resources/dwca/20/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/20/expected.tree rename to importer/src/test/resources/dwca/20/expected.tree diff --git a/webservice/src/test/resources/dwca/20/taxa.csv b/importer/src/test/resources/dwca/20/taxa.csv similarity index 100% rename from webservice/src/test/resources/dwca/20/taxa.csv rename to importer/src/test/resources/dwca/20/taxa.csv diff --git a/webservice/src/test/resources/dwca/21/README.md b/importer/src/test/resources/dwca/21/README.md similarity index 100% rename from webservice/src/test/resources/dwca/21/README.md rename to importer/src/test/resources/dwca/21/README.md diff --git a/webservice/src/test/resources/dwca/21/expected.tree b/importer/src/test/resources/dwca/21/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/21/expected.tree rename to importer/src/test/resources/dwca/21/expected.tree diff --git a/webservice/src/test/resources/dwca/21/meta.xml b/importer/src/test/resources/dwca/21/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/21/meta.xml rename to importer/src/test/resources/dwca/21/meta.xml diff --git a/webservice/src/test/resources/dwca/21/taxa.txt b/importer/src/test/resources/dwca/21/taxa.txt similarity index 100% rename from webservice/src/test/resources/dwca/21/taxa.txt rename to importer/src/test/resources/dwca/21/taxa.txt diff --git a/webservice/src/test/resources/dwca/22/README.md b/importer/src/test/resources/dwca/22/README.md similarity index 100% rename from webservice/src/test/resources/dwca/22/README.md rename to importer/src/test/resources/dwca/22/README.md diff --git a/webservice/src/test/resources/dwca/22/denormed_mixed.txt b/importer/src/test/resources/dwca/22/denormed_mixed.txt similarity index 100% rename from webservice/src/test/resources/dwca/22/denormed_mixed.txt rename to importer/src/test/resources/dwca/22/denormed_mixed.txt diff --git a/webservice/src/test/resources/dwca/22/expected.tree b/importer/src/test/resources/dwca/22/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/22/expected.tree rename to importer/src/test/resources/dwca/22/expected.tree diff --git a/webservice/src/test/resources/dwca/22/meta.xml b/importer/src/test/resources/dwca/22/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/22/meta.xml rename to importer/src/test/resources/dwca/22/meta.xml diff --git a/webservice/src/test/resources/dwca/23/README.md b/importer/src/test/resources/dwca/23/README.md similarity index 100% rename from webservice/src/test/resources/dwca/23/README.md rename to importer/src/test/resources/dwca/23/README.md diff --git a/webservice/src/test/resources/dwca/23/expected.tree b/importer/src/test/resources/dwca/23/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/23/expected.tree rename to importer/src/test/resources/dwca/23/expected.tree diff --git a/webservice/src/test/resources/dwca/23/worms.txt b/importer/src/test/resources/dwca/23/worms.txt similarity index 100% rename from webservice/src/test/resources/dwca/23/worms.txt rename to importer/src/test/resources/dwca/23/worms.txt diff --git a/webservice/src/test/resources/dwca/24/README.md b/importer/src/test/resources/dwca/24/README.md similarity index 100% rename from webservice/src/test/resources/dwca/24/README.md rename to importer/src/test/resources/dwca/24/README.md diff --git a/webservice/src/test/resources/dwca/24/description.txt b/importer/src/test/resources/dwca/24/description.txt similarity index 100% rename from webservice/src/test/resources/dwca/24/description.txt rename to importer/src/test/resources/dwca/24/description.txt diff --git a/webservice/src/test/resources/dwca/24/distribution.txt b/importer/src/test/resources/dwca/24/distribution.txt similarity index 100% rename from webservice/src/test/resources/dwca/24/distribution.txt rename to importer/src/test/resources/dwca/24/distribution.txt diff --git a/webservice/src/test/resources/dwca/24/expected.tree b/importer/src/test/resources/dwca/24/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/24/expected.tree rename to importer/src/test/resources/dwca/24/expected.tree diff --git a/webservice/src/test/resources/dwca/24/media.txt b/importer/src/test/resources/dwca/24/media.txt similarity index 100% rename from webservice/src/test/resources/dwca/24/media.txt rename to importer/src/test/resources/dwca/24/media.txt diff --git a/webservice/src/test/resources/dwca/24/meta.xml b/importer/src/test/resources/dwca/24/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/24/meta.xml rename to importer/src/test/resources/dwca/24/meta.xml diff --git a/webservice/src/test/resources/dwca/24/taxa.txt b/importer/src/test/resources/dwca/24/taxa.txt similarity index 100% rename from webservice/src/test/resources/dwca/24/taxa.txt rename to importer/src/test/resources/dwca/24/taxa.txt diff --git a/webservice/src/test/resources/dwca/24/vernacular.txt b/importer/src/test/resources/dwca/24/vernacular.txt similarity index 100% rename from webservice/src/test/resources/dwca/24/vernacular.txt rename to importer/src/test/resources/dwca/24/vernacular.txt diff --git a/webservice/src/test/resources/dwca/25/eml.xml b/importer/src/test/resources/dwca/25/eml.xml similarity index 100% rename from webservice/src/test/resources/dwca/25/eml.xml rename to importer/src/test/resources/dwca/25/eml.xml diff --git a/webservice/src/test/resources/dwca/25/expected.tree b/importer/src/test/resources/dwca/25/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/25/expected.tree rename to importer/src/test/resources/dwca/25/expected.tree diff --git a/webservice/src/test/resources/dwca/25/meta.xml b/importer/src/test/resources/dwca/25/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/25/meta.xml rename to importer/src/test/resources/dwca/25/meta.xml diff --git a/webservice/src/test/resources/dwca/25/taxon.txt b/importer/src/test/resources/dwca/25/taxon.txt similarity index 100% rename from webservice/src/test/resources/dwca/25/taxon.txt rename to importer/src/test/resources/dwca/25/taxon.txt diff --git a/webservice/src/test/resources/dwca/26/expected.tree b/importer/src/test/resources/dwca/26/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/26/expected.tree rename to importer/src/test/resources/dwca/26/expected.tree diff --git a/webservice/src/test/resources/dwca/26/meta.xml b/importer/src/test/resources/dwca/26/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/26/meta.xml rename to importer/src/test/resources/dwca/26/meta.xml diff --git a/webservice/src/test/resources/dwca/26/names.txt b/importer/src/test/resources/dwca/26/names.txt similarity index 100% rename from webservice/src/test/resources/dwca/26/names.txt rename to importer/src/test/resources/dwca/26/names.txt diff --git a/webservice/src/test/resources/dwca/27/README.md b/importer/src/test/resources/dwca/27/README.md similarity index 100% rename from webservice/src/test/resources/dwca/27/README.md rename to importer/src/test/resources/dwca/27/README.md diff --git a/webservice/src/test/resources/dwca/27/eml.xml b/importer/src/test/resources/dwca/27/eml.xml similarity index 100% rename from webservice/src/test/resources/dwca/27/eml.xml rename to importer/src/test/resources/dwca/27/eml.xml diff --git a/webservice/src/test/resources/dwca/27/expected.tree b/importer/src/test/resources/dwca/27/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/27/expected.tree rename to importer/src/test/resources/dwca/27/expected.tree diff --git a/webservice/src/test/resources/dwca/27/ipni.txt b/importer/src/test/resources/dwca/27/ipni.txt similarity index 100% rename from webservice/src/test/resources/dwca/27/ipni.txt rename to importer/src/test/resources/dwca/27/ipni.txt diff --git a/webservice/src/test/resources/dwca/27/meta.xml b/importer/src/test/resources/dwca/27/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/27/meta.xml rename to importer/src/test/resources/dwca/27/meta.xml diff --git a/webservice/src/test/resources/dwca/28/README.md b/importer/src/test/resources/dwca/28/README.md similarity index 100% rename from webservice/src/test/resources/dwca/28/README.md rename to importer/src/test/resources/dwca/28/README.md diff --git a/webservice/src/test/resources/dwca/28/expected.tree b/importer/src/test/resources/dwca/28/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/28/expected.tree rename to importer/src/test/resources/dwca/28/expected.tree diff --git a/webservice/src/test/resources/dwca/28/ipni.txt b/importer/src/test/resources/dwca/28/ipni.txt similarity index 100% rename from webservice/src/test/resources/dwca/28/ipni.txt rename to importer/src/test/resources/dwca/28/ipni.txt diff --git a/webservice/src/test/resources/dwca/28/meta.xml b/importer/src/test/resources/dwca/28/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/28/meta.xml rename to importer/src/test/resources/dwca/28/meta.xml diff --git a/webservice/src/test/resources/dwca/29/README.md b/importer/src/test/resources/dwca/29/README.md similarity index 100% rename from webservice/src/test/resources/dwca/29/README.md rename to importer/src/test/resources/dwca/29/README.md diff --git a/webservice/src/test/resources/dwca/29/expected.tree b/importer/src/test/resources/dwca/29/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/29/expected.tree rename to importer/src/test/resources/dwca/29/expected.tree diff --git a/webservice/src/test/resources/dwca/29/taxa.txt b/importer/src/test/resources/dwca/29/taxa.txt similarity index 100% rename from webservice/src/test/resources/dwca/29/taxa.txt rename to importer/src/test/resources/dwca/29/taxa.txt diff --git a/webservice/src/test/resources/dwca/3/README.md b/importer/src/test/resources/dwca/3/README.md similarity index 100% rename from webservice/src/test/resources/dwca/3/README.md rename to importer/src/test/resources/dwca/3/README.md diff --git a/webservice/src/test/resources/dwca/3/expected-barenames.txt b/importer/src/test/resources/dwca/3/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/3/expected-barenames.txt rename to importer/src/test/resources/dwca/3/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/3/expected.tree b/importer/src/test/resources/dwca/3/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/3/expected.tree rename to importer/src/test/resources/dwca/3/expected.tree diff --git a/webservice/src/test/resources/dwca/3/incertaesedis.txt b/importer/src/test/resources/dwca/3/incertaesedis.txt similarity index 100% rename from webservice/src/test/resources/dwca/3/incertaesedis.txt rename to importer/src/test/resources/dwca/3/incertaesedis.txt diff --git a/webservice/src/test/resources/dwca/30/README.md b/importer/src/test/resources/dwca/30/README.md similarity index 100% rename from webservice/src/test/resources/dwca/30/README.md rename to importer/src/test/resources/dwca/30/README.md diff --git a/webservice/src/test/resources/dwca/30/expected-barenames.txt b/importer/src/test/resources/dwca/30/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/30/expected-barenames.txt rename to importer/src/test/resources/dwca/30/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/30/expected.tree b/importer/src/test/resources/dwca/30/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/30/expected.tree rename to importer/src/test/resources/dwca/30/expected.tree diff --git a/webservice/src/test/resources/dwca/30/meta.xml b/importer/src/test/resources/dwca/30/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/30/meta.xml rename to importer/src/test/resources/dwca/30/meta.xml diff --git a/webservice/src/test/resources/dwca/30/names.txt b/importer/src/test/resources/dwca/30/names.txt similarity index 100% rename from webservice/src/test/resources/dwca/30/names.txt rename to importer/src/test/resources/dwca/30/names.txt diff --git a/webservice/src/test/resources/dwca/30/rels.txt b/importer/src/test/resources/dwca/30/rels.txt similarity index 100% rename from webservice/src/test/resources/dwca/30/rels.txt rename to importer/src/test/resources/dwca/30/rels.txt diff --git a/webservice/src/test/resources/dwca/31/README.md b/importer/src/test/resources/dwca/31/README.md similarity index 100% rename from webservice/src/test/resources/dwca/31/README.md rename to importer/src/test/resources/dwca/31/README.md diff --git a/webservice/src/test/resources/dwca/31/expected-barenames.txt b/importer/src/test/resources/dwca/31/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/31/expected-barenames.txt rename to importer/src/test/resources/dwca/31/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/31/expected.tree b/importer/src/test/resources/dwca/31/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/31/expected.tree rename to importer/src/test/resources/dwca/31/expected.tree diff --git a/webservice/src/test/resources/dwca/31/metadata.yaml b/importer/src/test/resources/dwca/31/metadata.yaml similarity index 100% rename from webservice/src/test/resources/dwca/31/metadata.yaml rename to importer/src/test/resources/dwca/31/metadata.yaml diff --git a/webservice/src/test/resources/dwca/31/names.txt b/importer/src/test/resources/dwca/31/names.txt similarity index 100% rename from webservice/src/test/resources/dwca/31/names.txt rename to importer/src/test/resources/dwca/31/names.txt diff --git a/webservice/src/test/resources/dwca/32/expected.tree b/importer/src/test/resources/dwca/32/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/32/expected.tree rename to importer/src/test/resources/dwca/32/expected.tree diff --git a/webservice/src/test/resources/dwca/32/meta.xml b/importer/src/test/resources/dwca/32/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/32/meta.xml rename to importer/src/test/resources/dwca/32/meta.xml diff --git a/webservice/src/test/resources/dwca/32/worms.txt b/importer/src/test/resources/dwca/32/worms.txt similarity index 100% rename from webservice/src/test/resources/dwca/32/worms.txt rename to importer/src/test/resources/dwca/32/worms.txt diff --git a/webservice/src/test/resources/dwca/33/expected.tree b/importer/src/test/resources/dwca/33/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/33/expected.tree rename to importer/src/test/resources/dwca/33/expected.tree diff --git a/webservice/src/test/resources/dwca/33/meta.xml b/importer/src/test/resources/dwca/33/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/33/meta.xml rename to importer/src/test/resources/dwca/33/meta.xml diff --git a/webservice/src/test/resources/dwca/33/taxon.txt b/importer/src/test/resources/dwca/33/taxon.txt similarity index 100% rename from webservice/src/test/resources/dwca/33/taxon.txt rename to importer/src/test/resources/dwca/33/taxon.txt diff --git a/webservice/src/test/resources/dwca/34/README.md b/importer/src/test/resources/dwca/34/README.md similarity index 100% rename from webservice/src/test/resources/dwca/34/README.md rename to importer/src/test/resources/dwca/34/README.md diff --git a/webservice/src/test/resources/dwca/34/Taxon.txt b/importer/src/test/resources/dwca/34/Taxon.txt similarity index 100% rename from webservice/src/test/resources/dwca/34/Taxon.txt rename to importer/src/test/resources/dwca/34/Taxon.txt diff --git a/webservice/src/test/resources/dwca/34/expected.tree b/importer/src/test/resources/dwca/34/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/34/expected.tree rename to importer/src/test/resources/dwca/34/expected.tree diff --git a/webservice/src/test/resources/dwca/35/README.md b/importer/src/test/resources/dwca/35/README.md similarity index 100% rename from webservice/src/test/resources/dwca/35/README.md rename to importer/src/test/resources/dwca/35/README.md diff --git a/webservice/src/test/resources/dwca/35/Taxon.txt b/importer/src/test/resources/dwca/35/Taxon.txt similarity index 100% rename from webservice/src/test/resources/dwca/35/Taxon.txt rename to importer/src/test/resources/dwca/35/Taxon.txt diff --git a/webservice/src/test/resources/dwca/35/expected.tree b/importer/src/test/resources/dwca/35/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/35/expected.tree rename to importer/src/test/resources/dwca/35/expected.tree diff --git a/webservice/src/test/resources/dwca/36/README.md b/importer/src/test/resources/dwca/36/README.md similarity index 100% rename from webservice/src/test/resources/dwca/36/README.md rename to importer/src/test/resources/dwca/36/README.md diff --git a/webservice/src/test/resources/dwca/36/Taxon.txt b/importer/src/test/resources/dwca/36/Taxon.txt similarity index 100% rename from webservice/src/test/resources/dwca/36/Taxon.txt rename to importer/src/test/resources/dwca/36/Taxon.txt diff --git a/webservice/src/test/resources/dwca/36/expected.tree b/importer/src/test/resources/dwca/36/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/36/expected.tree rename to importer/src/test/resources/dwca/36/expected.tree diff --git a/webservice/src/test/resources/dwca/37/README.md b/importer/src/test/resources/dwca/37/README.md similarity index 100% rename from webservice/src/test/resources/dwca/37/README.md rename to importer/src/test/resources/dwca/37/README.md diff --git a/webservice/src/test/resources/dwca/37/expected.tree b/importer/src/test/resources/dwca/37/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/37/expected.tree rename to importer/src/test/resources/dwca/37/expected.tree diff --git a/webservice/src/test/resources/dwca/37/redlist.csv b/importer/src/test/resources/dwca/37/redlist.csv similarity index 100% rename from webservice/src/test/resources/dwca/37/redlist.csv rename to importer/src/test/resources/dwca/37/redlist.csv diff --git a/webservice/src/test/resources/dwca/38/README.md b/importer/src/test/resources/dwca/38/README.md similarity index 100% rename from webservice/src/test/resources/dwca/38/README.md rename to importer/src/test/resources/dwca/38/README.md diff --git a/webservice/src/test/resources/dwca/38/famous.xml b/importer/src/test/resources/dwca/38/famous.xml similarity index 100% rename from webservice/src/test/resources/dwca/38/famous.xml rename to importer/src/test/resources/dwca/38/famous.xml diff --git a/webservice/src/test/resources/dwca/38/meta.xml b/importer/src/test/resources/dwca/38/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/38/meta.xml rename to importer/src/test/resources/dwca/38/meta.xml diff --git a/webservice/src/test/resources/dwca/38/redlist.csv b/importer/src/test/resources/dwca/38/redlist.csv similarity index 100% rename from webservice/src/test/resources/dwca/38/redlist.csv rename to importer/src/test/resources/dwca/38/redlist.csv diff --git a/webservice/src/test/resources/dwca/39/README.md b/importer/src/test/resources/dwca/39/README.md similarity index 100% rename from webservice/src/test/resources/dwca/39/README.md rename to importer/src/test/resources/dwca/39/README.md diff --git a/webservice/src/test/resources/dwca/39/meta.xml b/importer/src/test/resources/dwca/39/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/39/meta.xml rename to importer/src/test/resources/dwca/39/meta.xml diff --git a/webservice/src/test/resources/dwca/39/metadata.yaml b/importer/src/test/resources/dwca/39/metadata.yaml similarity index 100% rename from webservice/src/test/resources/dwca/39/metadata.yaml rename to importer/src/test/resources/dwca/39/metadata.yaml diff --git a/webservice/src/test/resources/dwca/39/redlist.csv b/importer/src/test/resources/dwca/39/redlist.csv similarity index 100% rename from webservice/src/test/resources/dwca/39/redlist.csv rename to importer/src/test/resources/dwca/39/redlist.csv diff --git a/webservice/src/test/resources/dwca/4/README.md b/importer/src/test/resources/dwca/4/README.md similarity index 100% rename from webservice/src/test/resources/dwca/4/README.md rename to importer/src/test/resources/dwca/4/README.md diff --git a/webservice/src/test/resources/dwca/4/col_style_synonyms.txt b/importer/src/test/resources/dwca/4/col_style_synonyms.txt similarity index 100% rename from webservice/src/test/resources/dwca/4/col_style_synonyms.txt rename to importer/src/test/resources/dwca/4/col_style_synonyms.txt diff --git a/webservice/src/test/resources/dwca/4/expected-barenames.txt b/importer/src/test/resources/dwca/4/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/4/expected-barenames.txt rename to importer/src/test/resources/dwca/4/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/4/expected.tree b/importer/src/test/resources/dwca/4/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/4/expected.tree rename to importer/src/test/resources/dwca/4/expected.tree diff --git a/webservice/src/test/resources/dwca/40/README.md b/importer/src/test/resources/dwca/40/README.md similarity index 100% rename from webservice/src/test/resources/dwca/40/README.md rename to importer/src/test/resources/dwca/40/README.md diff --git a/webservice/src/test/resources/dwca/40/description.txt b/importer/src/test/resources/dwca/40/description.txt similarity index 100% rename from webservice/src/test/resources/dwca/40/description.txt rename to importer/src/test/resources/dwca/40/description.txt diff --git a/webservice/src/test/resources/dwca/40/distribution.txt b/importer/src/test/resources/dwca/40/distribution.txt similarity index 100% rename from webservice/src/test/resources/dwca/40/distribution.txt rename to importer/src/test/resources/dwca/40/distribution.txt diff --git a/webservice/src/test/resources/dwca/40/eml.xml b/importer/src/test/resources/dwca/40/eml.xml similarity index 100% rename from webservice/src/test/resources/dwca/40/eml.xml rename to importer/src/test/resources/dwca/40/eml.xml diff --git a/webservice/src/test/resources/dwca/40/media.txt b/importer/src/test/resources/dwca/40/media.txt similarity index 100% rename from webservice/src/test/resources/dwca/40/media.txt rename to importer/src/test/resources/dwca/40/media.txt diff --git a/webservice/src/test/resources/dwca/40/meta.xml b/importer/src/test/resources/dwca/40/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/40/meta.xml rename to importer/src/test/resources/dwca/40/meta.xml diff --git a/webservice/src/test/resources/dwca/40/metadata.json b/importer/src/test/resources/dwca/40/metadata.json similarity index 100% rename from webservice/src/test/resources/dwca/40/metadata.json rename to importer/src/test/resources/dwca/40/metadata.json diff --git a/webservice/src/test/resources/dwca/40/multimedia.txt b/importer/src/test/resources/dwca/40/multimedia.txt similarity index 100% rename from webservice/src/test/resources/dwca/40/multimedia.txt rename to importer/src/test/resources/dwca/40/multimedia.txt diff --git a/webservice/src/test/resources/dwca/40/occurrences.txt b/importer/src/test/resources/dwca/40/occurrences.txt similarity index 100% rename from webservice/src/test/resources/dwca/40/occurrences.txt rename to importer/src/test/resources/dwca/40/occurrences.txt diff --git a/webservice/src/test/resources/dwca/40/references.txt b/importer/src/test/resources/dwca/40/references.txt similarity index 100% rename from webservice/src/test/resources/dwca/40/references.txt rename to importer/src/test/resources/dwca/40/references.txt diff --git a/webservice/src/test/resources/dwca/40/taxa.txt b/importer/src/test/resources/dwca/40/taxa.txt similarity index 100% rename from webservice/src/test/resources/dwca/40/taxa.txt rename to importer/src/test/resources/dwca/40/taxa.txt diff --git a/webservice/src/test/resources/dwca/40/vernaculars.txt b/importer/src/test/resources/dwca/40/vernaculars.txt similarity index 100% rename from webservice/src/test/resources/dwca/40/vernaculars.txt rename to importer/src/test/resources/dwca/40/vernaculars.txt diff --git a/webservice/src/test/resources/dwca/41/README.md b/importer/src/test/resources/dwca/41/README.md similarity index 100% rename from webservice/src/test/resources/dwca/41/README.md rename to importer/src/test/resources/dwca/41/README.md diff --git a/webservice/src/test/resources/dwca/41/meta.xml b/importer/src/test/resources/dwca/41/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/41/meta.xml rename to importer/src/test/resources/dwca/41/meta.xml diff --git a/webservice/src/test/resources/dwca/41/taxa.txt b/importer/src/test/resources/dwca/41/taxa.txt similarity index 100% rename from webservice/src/test/resources/dwca/41/taxa.txt rename to importer/src/test/resources/dwca/41/taxa.txt diff --git a/webservice/src/test/resources/dwca/42/README.md b/importer/src/test/resources/dwca/42/README.md similarity index 100% rename from webservice/src/test/resources/dwca/42/README.md rename to importer/src/test/resources/dwca/42/README.md diff --git a/webservice/src/test/resources/dwca/42/meta.xml b/importer/src/test/resources/dwca/42/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/42/meta.xml rename to importer/src/test/resources/dwca/42/meta.xml diff --git a/webservice/src/test/resources/dwca/42/taxa.txt b/importer/src/test/resources/dwca/42/taxa.txt similarity index 100% rename from webservice/src/test/resources/dwca/42/taxa.txt rename to importer/src/test/resources/dwca/42/taxa.txt diff --git a/webservice/src/test/resources/dwca/43/README.md b/importer/src/test/resources/dwca/43/README.md similarity index 100% rename from webservice/src/test/resources/dwca/43/README.md rename to importer/src/test/resources/dwca/43/README.md diff --git a/webservice/src/test/resources/dwca/43/meta.xml b/importer/src/test/resources/dwca/43/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/43/meta.xml rename to importer/src/test/resources/dwca/43/meta.xml diff --git a/webservice/src/test/resources/dwca/43/name_rel.txt b/importer/src/test/resources/dwca/43/name_rel.txt similarity index 100% rename from webservice/src/test/resources/dwca/43/name_rel.txt rename to importer/src/test/resources/dwca/43/name_rel.txt diff --git a/webservice/src/test/resources/dwca/43/occurrence.txt b/importer/src/test/resources/dwca/43/occurrence.txt similarity index 100% rename from webservice/src/test/resources/dwca/43/occurrence.txt rename to importer/src/test/resources/dwca/43/occurrence.txt diff --git a/webservice/src/test/resources/dwca/43/taxa.txt b/importer/src/test/resources/dwca/43/taxa.txt similarity index 100% rename from webservice/src/test/resources/dwca/43/taxa.txt rename to importer/src/test/resources/dwca/43/taxa.txt diff --git a/webservice/src/test/resources/dwca/43/vernacular.txt b/importer/src/test/resources/dwca/43/vernacular.txt similarity index 100% rename from webservice/src/test/resources/dwca/43/vernacular.txt rename to importer/src/test/resources/dwca/43/vernacular.txt diff --git a/webservice/src/test/resources/dwca/44/README.md b/importer/src/test/resources/dwca/44/README.md similarity index 100% rename from webservice/src/test/resources/dwca/44/README.md rename to importer/src/test/resources/dwca/44/README.md diff --git a/webservice/src/test/resources/dwca/44/eml.xml b/importer/src/test/resources/dwca/44/eml.xml similarity index 100% rename from webservice/src/test/resources/dwca/44/eml.xml rename to importer/src/test/resources/dwca/44/eml.xml diff --git a/webservice/src/test/resources/dwca/44/meta.xml b/importer/src/test/resources/dwca/44/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/44/meta.xml rename to importer/src/test/resources/dwca/44/meta.xml diff --git a/webservice/src/test/resources/dwca/44/wcvp_distribution.csv b/importer/src/test/resources/dwca/44/wcvp_distribution.csv similarity index 100% rename from webservice/src/test/resources/dwca/44/wcvp_distribution.csv rename to importer/src/test/resources/dwca/44/wcvp_distribution.csv diff --git a/webservice/src/test/resources/dwca/44/wcvp_replacementNames.csv b/importer/src/test/resources/dwca/44/wcvp_replacementNames.csv similarity index 100% rename from webservice/src/test/resources/dwca/44/wcvp_replacementNames.csv rename to importer/src/test/resources/dwca/44/wcvp_replacementNames.csv diff --git a/webservice/src/test/resources/dwca/44/wcvp_taxon.csv b/importer/src/test/resources/dwca/44/wcvp_taxon.csv similarity index 100% rename from webservice/src/test/resources/dwca/44/wcvp_taxon.csv rename to importer/src/test/resources/dwca/44/wcvp_taxon.csv diff --git a/webservice/src/test/resources/dwca/45/meta.xml b/importer/src/test/resources/dwca/45/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/45/meta.xml rename to importer/src/test/resources/dwca/45/meta.xml diff --git a/webservice/src/test/resources/dwca/45/taxon.txt b/importer/src/test/resources/dwca/45/taxon.txt similarity index 100% rename from webservice/src/test/resources/dwca/45/taxon.txt rename to importer/src/test/resources/dwca/45/taxon.txt diff --git a/webservice/src/test/resources/dwca/46/README.md b/importer/src/test/resources/dwca/46/README.md similarity index 100% rename from webservice/src/test/resources/dwca/46/README.md rename to importer/src/test/resources/dwca/46/README.md diff --git a/webservice/src/test/resources/dwca/46/meta.xml b/importer/src/test/resources/dwca/46/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/46/meta.xml rename to importer/src/test/resources/dwca/46/meta.xml diff --git a/webservice/src/test/resources/dwca/46/taxon.txt b/importer/src/test/resources/dwca/46/taxon.txt similarity index 100% rename from webservice/src/test/resources/dwca/46/taxon.txt rename to importer/src/test/resources/dwca/46/taxon.txt diff --git a/webservice/src/test/resources/dwca/47/README.md b/importer/src/test/resources/dwca/47/README.md similarity index 100% rename from webservice/src/test/resources/dwca/47/README.md rename to importer/src/test/resources/dwca/47/README.md diff --git a/webservice/src/test/resources/dwca/47/itis.tsv b/importer/src/test/resources/dwca/47/itis.tsv similarity index 100% rename from webservice/src/test/resources/dwca/47/itis.tsv rename to importer/src/test/resources/dwca/47/itis.tsv diff --git a/webservice/src/test/resources/dwca/48/README.md b/importer/src/test/resources/dwca/48/README.md similarity index 100% rename from webservice/src/test/resources/dwca/48/README.md rename to importer/src/test/resources/dwca/48/README.md diff --git a/webservice/src/test/resources/dwca/48/taxon.tsv b/importer/src/test/resources/dwca/48/taxon.tsv similarity index 100% rename from webservice/src/test/resources/dwca/48/taxon.tsv rename to importer/src/test/resources/dwca/48/taxon.tsv diff --git a/webservice/src/test/resources/dwca/49/README.md b/importer/src/test/resources/dwca/49/README.md similarity index 100% rename from webservice/src/test/resources/dwca/49/README.md rename to importer/src/test/resources/dwca/49/README.md diff --git a/webservice/src/test/resources/dwca/49/meta.xml b/importer/src/test/resources/dwca/49/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/49/meta.xml rename to importer/src/test/resources/dwca/49/meta.xml diff --git a/webservice/src/test/resources/dwca/49/reference.txt b/importer/src/test/resources/dwca/49/reference.txt similarity index 100% rename from webservice/src/test/resources/dwca/49/reference.txt rename to importer/src/test/resources/dwca/49/reference.txt diff --git a/webservice/src/test/resources/dwca/49/taxon.txt b/importer/src/test/resources/dwca/49/taxon.txt similarity index 100% rename from webservice/src/test/resources/dwca/49/taxon.txt rename to importer/src/test/resources/dwca/49/taxon.txt diff --git a/webservice/src/test/resources/dwca/5/README.md b/importer/src/test/resources/dwca/5/README.md similarity index 100% rename from webservice/src/test/resources/dwca/5/README.md rename to importer/src/test/resources/dwca/5/README.md diff --git a/webservice/src/test/resources/dwca/5/expected-barenames.txt b/importer/src/test/resources/dwca/5/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/5/expected-barenames.txt rename to importer/src/test/resources/dwca/5/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/5/expected.tree b/importer/src/test/resources/dwca/5/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/5/expected.tree rename to importer/src/test/resources/dwca/5/expected.tree diff --git a/webservice/src/test/resources/dwca/5/homonyms.txt b/importer/src/test/resources/dwca/5/homonyms.txt similarity index 100% rename from webservice/src/test/resources/dwca/5/homonyms.txt rename to importer/src/test/resources/dwca/5/homonyms.txt diff --git a/webservice/src/test/resources/dwca/50/meta.xml b/importer/src/test/resources/dwca/50/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/50/meta.xml rename to importer/src/test/resources/dwca/50/meta.xml diff --git a/webservice/src/test/resources/dwca/50/profile.csv b/importer/src/test/resources/dwca/50/profile.csv similarity index 100% rename from webservice/src/test/resources/dwca/50/profile.csv rename to importer/src/test/resources/dwca/50/profile.csv diff --git a/webservice/src/test/resources/dwca/50/taxon.csv b/importer/src/test/resources/dwca/50/taxon.csv similarity index 100% rename from webservice/src/test/resources/dwca/50/taxon.csv rename to importer/src/test/resources/dwca/50/taxon.csv diff --git a/webservice/src/test/resources/dwca/51/README.md b/importer/src/test/resources/dwca/51/README.md similarity index 100% rename from webservice/src/test/resources/dwca/51/README.md rename to importer/src/test/resources/dwca/51/README.md diff --git a/webservice/src/test/resources/dwca/51/taxon.tsv b/importer/src/test/resources/dwca/51/taxon.tsv similarity index 100% rename from webservice/src/test/resources/dwca/51/taxon.tsv rename to importer/src/test/resources/dwca/51/taxon.tsv diff --git a/webservice/src/test/resources/dwca/52/README.md b/importer/src/test/resources/dwca/52/README.md similarity index 100% rename from webservice/src/test/resources/dwca/52/README.md rename to importer/src/test/resources/dwca/52/README.md diff --git a/webservice/src/test/resources/dwca/52/meta.xml b/importer/src/test/resources/dwca/52/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/52/meta.xml rename to importer/src/test/resources/dwca/52/meta.xml diff --git a/webservice/src/test/resources/dwca/52/taxon.csv b/importer/src/test/resources/dwca/52/taxon.csv similarity index 100% rename from webservice/src/test/resources/dwca/52/taxon.csv rename to importer/src/test/resources/dwca/52/taxon.csv diff --git a/webservice/src/test/resources/dwca/6/README.md b/importer/src/test/resources/dwca/6/README.md similarity index 100% rename from webservice/src/test/resources/dwca/6/README.md rename to importer/src/test/resources/dwca/6/README.md diff --git a/webservice/src/test/resources/dwca/6/expected-barenames.txt b/importer/src/test/resources/dwca/6/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/6/expected-barenames.txt rename to importer/src/test/resources/dwca/6/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/6/expected.tree b/importer/src/test/resources/dwca/6/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/6/expected.tree rename to importer/src/test/resources/dwca/6/expected.tree diff --git a/webservice/src/test/resources/dwca/6/if.txt b/importer/src/test/resources/dwca/6/if.txt similarity index 100% rename from webservice/src/test/resources/dwca/6/if.txt rename to importer/src/test/resources/dwca/6/if.txt diff --git a/webservice/src/test/resources/dwca/6/meta.xml b/importer/src/test/resources/dwca/6/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/6/meta.xml rename to importer/src/test/resources/dwca/6/meta.xml diff --git a/webservice/src/test/resources/dwca/7/README.md b/importer/src/test/resources/dwca/7/README.md similarity index 100% rename from webservice/src/test/resources/dwca/7/README.md rename to importer/src/test/resources/dwca/7/README.md diff --git a/webservice/src/test/resources/dwca/7/expected-barenames.txt b/importer/src/test/resources/dwca/7/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/7/expected-barenames.txt rename to importer/src/test/resources/dwca/7/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/7/expected.tree b/importer/src/test/resources/dwca/7/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/7/expected.tree rename to importer/src/test/resources/dwca/7/expected.tree diff --git a/webservice/src/test/resources/dwca/7/materialize_verbatim_parents.txt b/importer/src/test/resources/dwca/7/materialize_verbatim_parents.txt similarity index 100% rename from webservice/src/test/resources/dwca/7/materialize_verbatim_parents.txt rename to importer/src/test/resources/dwca/7/materialize_verbatim_parents.txt diff --git a/webservice/src/test/resources/dwca/7/metadata.yaml b/importer/src/test/resources/dwca/7/metadata.yaml similarity index 100% rename from webservice/src/test/resources/dwca/7/metadata.yaml rename to importer/src/test/resources/dwca/7/metadata.yaml diff --git a/webservice/src/test/resources/dwca/8/DarwinCore.txt b/importer/src/test/resources/dwca/8/DarwinCore.txt similarity index 100% rename from webservice/src/test/resources/dwca/8/DarwinCore.txt rename to importer/src/test/resources/dwca/8/DarwinCore.txt diff --git a/webservice/src/test/resources/dwca/8/README.md b/importer/src/test/resources/dwca/8/README.md similarity index 100% rename from webservice/src/test/resources/dwca/8/README.md rename to importer/src/test/resources/dwca/8/README.md diff --git a/webservice/src/test/resources/dwca/8/expected-barenames.txt b/importer/src/test/resources/dwca/8/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/8/expected-barenames.txt rename to importer/src/test/resources/dwca/8/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/8/expected.tree b/importer/src/test/resources/dwca/8/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/8/expected.tree rename to importer/src/test/resources/dwca/8/expected.tree diff --git a/webservice/src/test/resources/dwca/8/metadata.yaml b/importer/src/test/resources/dwca/8/metadata.yaml similarity index 100% rename from webservice/src/test/resources/dwca/8/metadata.yaml rename to importer/src/test/resources/dwca/8/metadata.yaml diff --git a/webservice/src/test/resources/dwca/9/DarwinCore.txt b/importer/src/test/resources/dwca/9/DarwinCore.txt similarity index 100% rename from webservice/src/test/resources/dwca/9/DarwinCore.txt rename to importer/src/test/resources/dwca/9/DarwinCore.txt diff --git a/webservice/src/test/resources/dwca/9/README.md b/importer/src/test/resources/dwca/9/README.md similarity index 100% rename from webservice/src/test/resources/dwca/9/README.md rename to importer/src/test/resources/dwca/9/README.md diff --git a/webservice/src/test/resources/dwca/9/expected-barenames.txt b/importer/src/test/resources/dwca/9/expected-barenames.txt similarity index 100% rename from webservice/src/test/resources/dwca/9/expected-barenames.txt rename to importer/src/test/resources/dwca/9/expected-barenames.txt diff --git a/webservice/src/test/resources/dwca/9/expected.tree b/importer/src/test/resources/dwca/9/expected.tree similarity index 100% rename from webservice/src/test/resources/dwca/9/expected.tree rename to importer/src/test/resources/dwca/9/expected.tree diff --git a/webservice/src/test/resources/dwca/9/metadata.yaml b/importer/src/test/resources/dwca/9/metadata.yaml similarity index 100% rename from webservice/src/test/resources/dwca/9/metadata.yaml rename to importer/src/test/resources/dwca/9/metadata.yaml diff --git a/webservice/src/test/resources/dwca/plazi1/description.txt b/importer/src/test/resources/dwca/plazi1/description.txt similarity index 100% rename from webservice/src/test/resources/dwca/plazi1/description.txt rename to importer/src/test/resources/dwca/plazi1/description.txt diff --git a/webservice/src/test/resources/dwca/plazi1/distribution.txt b/importer/src/test/resources/dwca/plazi1/distribution.txt similarity index 100% rename from webservice/src/test/resources/dwca/plazi1/distribution.txt rename to importer/src/test/resources/dwca/plazi1/distribution.txt diff --git a/webservice/src/test/resources/dwca/plazi1/eml.xml b/importer/src/test/resources/dwca/plazi1/eml.xml similarity index 100% rename from webservice/src/test/resources/dwca/plazi1/eml.xml rename to importer/src/test/resources/dwca/plazi1/eml.xml diff --git a/webservice/src/test/resources/dwca/plazi1/media.txt b/importer/src/test/resources/dwca/plazi1/media.txt similarity index 100% rename from webservice/src/test/resources/dwca/plazi1/media.txt rename to importer/src/test/resources/dwca/plazi1/media.txt diff --git a/webservice/src/test/resources/dwca/plazi1/meta.xml b/importer/src/test/resources/dwca/plazi1/meta.xml similarity index 100% rename from webservice/src/test/resources/dwca/plazi1/meta.xml rename to importer/src/test/resources/dwca/plazi1/meta.xml diff --git a/webservice/src/test/resources/dwca/plazi1/metadata.json b/importer/src/test/resources/dwca/plazi1/metadata.json similarity index 100% rename from webservice/src/test/resources/dwca/plazi1/metadata.json rename to importer/src/test/resources/dwca/plazi1/metadata.json diff --git a/webservice/src/test/resources/dwca/plazi1/multimedia.txt b/importer/src/test/resources/dwca/plazi1/multimedia.txt similarity index 100% rename from webservice/src/test/resources/dwca/plazi1/multimedia.txt rename to importer/src/test/resources/dwca/plazi1/multimedia.txt diff --git a/webservice/src/test/resources/dwca/plazi1/occurrences.txt b/importer/src/test/resources/dwca/plazi1/occurrences.txt similarity index 100% rename from webservice/src/test/resources/dwca/plazi1/occurrences.txt rename to importer/src/test/resources/dwca/plazi1/occurrences.txt diff --git a/webservice/src/test/resources/dwca/plazi1/references.txt b/importer/src/test/resources/dwca/plazi1/references.txt similarity index 100% rename from webservice/src/test/resources/dwca/plazi1/references.txt rename to importer/src/test/resources/dwca/plazi1/references.txt diff --git a/webservice/src/test/resources/dwca/plazi1/taxa.txt b/importer/src/test/resources/dwca/plazi1/taxa.txt similarity index 100% rename from webservice/src/test/resources/dwca/plazi1/taxa.txt rename to importer/src/test/resources/dwca/plazi1/taxa.txt diff --git a/webservice/src/test/resources/dwca/plazi1/vernaculars.txt b/importer/src/test/resources/dwca/plazi1/vernaculars.txt similarity index 100% rename from webservice/src/test/resources/dwca/plazi1/vernaculars.txt rename to importer/src/test/resources/dwca/plazi1/vernaculars.txt diff --git a/webservice/src/test/resources/proxy/1011.yaml b/importer/src/test/resources/proxy/1011.yaml similarity index 100% rename from webservice/src/test/resources/proxy/1011.yaml rename to importer/src/test/resources/proxy/1011.yaml diff --git a/webservice/src/test/resources/txtree/0/mammalia.tree b/importer/src/test/resources/txtree/0/mammalia.tree similarity index 100% rename from webservice/src/test/resources/txtree/0/mammalia.tree rename to importer/src/test/resources/txtree/0/mammalia.tree diff --git a/webservice/src/test/resources/txtree/0/metadata.yaml b/importer/src/test/resources/txtree/0/metadata.yaml similarity index 100% rename from webservice/src/test/resources/txtree/0/metadata.yaml rename to importer/src/test/resources/txtree/0/metadata.yaml diff --git a/webservice/src/test/resources/txtree/1/metadata.yaml b/importer/src/test/resources/txtree/1/metadata.yaml similarity index 100% rename from webservice/src/test/resources/txtree/1/metadata.yaml rename to importer/src/test/resources/txtree/1/metadata.yaml diff --git a/webservice/src/test/resources/txtree/1/trilobita.tree b/importer/src/test/resources/txtree/1/trilobita.tree similarity index 100% rename from webservice/src/test/resources/txtree/1/trilobita.tree rename to importer/src/test/resources/txtree/1/trilobita.tree diff --git a/webservice/src/test/resources/txtree/2/metadata.yaml b/importer/src/test/resources/txtree/2/metadata.yaml similarity index 100% rename from webservice/src/test/resources/txtree/2/metadata.yaml rename to importer/src/test/resources/txtree/2/metadata.yaml diff --git a/webservice/src/test/resources/txtree/2/test2.txt b/importer/src/test/resources/txtree/2/test2.txt similarity index 100% rename from webservice/src/test/resources/txtree/2/test2.txt rename to importer/src/test/resources/txtree/2/test2.txt diff --git a/webservice/src/test/resources/txtree/3/aspilota.tree b/importer/src/test/resources/txtree/3/aspilota.tree similarity index 100% rename from webservice/src/test/resources/txtree/3/aspilota.tree rename to importer/src/test/resources/txtree/3/aspilota.tree diff --git a/webservice/src/test/resources/txtree/3/metadata.yaml b/importer/src/test/resources/txtree/3/metadata.yaml similarity index 100% rename from webservice/src/test/resources/txtree/3/metadata.yaml rename to importer/src/test/resources/txtree/3/metadata.yaml diff --git a/webservice/src/test/resources/txtree/4/metadata.yaml b/importer/src/test/resources/txtree/4/metadata.yaml similarity index 100% rename from webservice/src/test/resources/txtree/4/metadata.yaml rename to importer/src/test/resources/txtree/4/metadata.yaml diff --git a/webservice/src/test/resources/txtree/4/taxonomy.txtree b/importer/src/test/resources/txtree/4/taxonomy.txtree similarity index 100% rename from webservice/src/test/resources/txtree/4/taxonomy.txtree rename to importer/src/test/resources/txtree/4/taxonomy.txtree diff --git a/webservice/src/test/resources/txtree/5/metadata.yaml b/importer/src/test/resources/txtree/5/metadata.yaml similarity index 100% rename from webservice/src/test/resources/txtree/5/metadata.yaml rename to importer/src/test/resources/txtree/5/metadata.yaml diff --git a/webservice/src/test/resources/txtree/5/taxonomy.txtree b/importer/src/test/resources/txtree/5/taxonomy.txtree similarity index 100% rename from webservice/src/test/resources/txtree/5/taxonomy.txtree rename to importer/src/test/resources/txtree/5/taxonomy.txtree diff --git a/webservice/src/test/resources/txtree/6/metadata.yaml b/importer/src/test/resources/txtree/6/metadata.yaml similarity index 100% rename from webservice/src/test/resources/txtree/6/metadata.yaml rename to importer/src/test/resources/txtree/6/metadata.yaml diff --git a/webservice/src/test/resources/txtree/6/remarks.csv b/importer/src/test/resources/txtree/6/remarks.csv similarity index 100% rename from webservice/src/test/resources/txtree/6/remarks.csv rename to importer/src/test/resources/txtree/6/remarks.csv diff --git a/webservice/src/test/resources/txtree/6/taxonomy.txtree b/importer/src/test/resources/txtree/6/taxonomy.txtree similarity index 100% rename from webservice/src/test/resources/txtree/6/taxonomy.txtree rename to importer/src/test/resources/txtree/6/taxonomy.txtree diff --git a/webservice/src/test/resources/xls/Pterophoroidea.xlsx b/importer/src/test/resources/xls/Pterophoroidea.xlsx similarity index 100% rename from webservice/src/test/resources/xls/Pterophoroidea.xlsx rename to importer/src/test/resources/xls/Pterophoroidea.xlsx diff --git a/webservice/src/test/resources/xls/Torotrogla_villosa.xlsx b/importer/src/test/resources/xls/Torotrogla_villosa.xlsx similarity index 100% rename from webservice/src/test/resources/xls/Torotrogla_villosa.xlsx rename to importer/src/test/resources/xls/Torotrogla_villosa.xlsx diff --git a/webservice/src/test/resources/xls/Torotrogla_villosa_NU.xlsx b/importer/src/test/resources/xls/Torotrogla_villosa_NU.xlsx similarity index 100% rename from webservice/src/test/resources/xls/Torotrogla_villosa_NU.xlsx rename to importer/src/test/resources/xls/Torotrogla_villosa_NU.xlsx diff --git a/matching-ws/pom.xml b/matching-ws/pom.xml index 53ea8dbb49..2dfb4e68fe 100644 --- a/matching-ws/pom.xml +++ b/matching-ws/pom.xml @@ -7,10 +7,9 @@ 1.0-SNAPSHOT matching-ws - Matching index generation and web services - - Matching index generation and web services for datasets stored in ChecklistBank. - + GBIF matching-ws + GBIF occurrence matching index generation and web services for datasets stored in ChecklistBank. + 11 9.10.0 diff --git a/metadata/pom.xml b/metadata/pom.xml index f7f86d944b..394bf34092 100644 --- a/metadata/pom.xml +++ b/metadata/pom.xml @@ -9,7 +9,7 @@ metadata - COL metadata + CLB metadata Metadata module mapping various formats like ColDP and EML to the COL API diff --git a/parser/pom.xml b/parser/pom.xml index 92137f8a9b..9d9596d60e 100644 --- a/parser/pom.xml +++ b/parser/pom.xml @@ -9,7 +9,7 @@ parser - COL parsers + CLB parsers Parsers for enumerations and other controlled vocabularies diff --git a/pom.xml b/pom.xml index 43b2fbe302..1db354f810 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ 1.0-SNAPSHOT pom - COL motherpom + CLB motherpom https://github.org/Sp2000/${project.artifactId} @@ -174,8 +174,10 @@ api coldp + core dao doi + importer metadata matching-ws parser @@ -200,6 +202,16 @@ + + org.catalogueoflife + core + ${project.version} + + + org.catalogueoflife + importer + ${project.version} + org.catalogueoflife coldp @@ -264,6 +276,20 @@ newick-io ${newick-io.version} + + org.catalogueoflife + core + ${project.version} + tests + test + + + org.catalogueoflife + importer + ${project.version} + tests + test + org.catalogueoflife apianalytics @@ -335,7 +361,7 @@ import - + io.dropwizard dropwizard-dependencies ${dropwizard.version} diff --git a/reader-xls/pom.xml b/reader-xls/pom.xml index 7f78ffabe5..e20e04587f 100644 --- a/reader-xls/pom.xml +++ b/reader-xls/pom.xml @@ -9,7 +9,7 @@ reader-xls - COL reader Excel extension + CLB reader Excel extension Support for Excel DwCA/ColDP/ACEF spreadsheets diff --git a/reader/pom.xml b/reader/pom.xml index 5ad60073f6..d5f05a6194 100644 --- a/reader/pom.xml +++ b/reader/pom.xml @@ -9,7 +9,7 @@ reader - COL reader + CLB reader Various CSV readers for DwC, ColDP and ACEF diff --git a/webservice/pom.xml b/webservice/pom.xml index 4f3ff65a3f..72820d6efe 100644 --- a/webservice/pom.xml +++ b/webservice/pom.xml @@ -8,7 +8,7 @@ 1.0-SNAPSHOT webservice - COL WS + CLB WS life.catalogue.WsServer @@ -89,6 +89,14 @@ + + org.catalogueoflife + core + + + org.catalogueoflife + importer + org.catalogueoflife coldp @@ -352,6 +360,12 @@ tests test + + org.catalogueoflife + core + tests + test + org.javers javers-core diff --git a/webservice/src/main/java/life/catalogue/WsServer.java b/webservice/src/main/java/life/catalogue/WsServer.java index 2b173d1a07..4458f25ed1 100644 --- a/webservice/src/main/java/life/catalogue/WsServer.java +++ b/webservice/src/main/java/life/catalogue/WsServer.java @@ -1,8 +1,5 @@ package life.catalogue; -import life.catalogue.admin.jobs.cron.CronExecutor; -import life.catalogue.admin.jobs.cron.ProjectCounterUpdate; -import life.catalogue.admin.jobs.cron.TempDatasetCleanup; import life.catalogue.api.jackson.ApiModule; import life.catalogue.api.model.JobResult; import life.catalogue.api.util.ObjectUtils; @@ -47,6 +44,9 @@ import life.catalogue.img.ImageServiceFS; import life.catalogue.importer.ContinuousImporter; import life.catalogue.importer.ImportManager; +import life.catalogue.jobs.cron.CronExecutor; +import life.catalogue.jobs.cron.ProjectCounterUpdate; +import life.catalogue.jobs.cron.TempDatasetCleanup; import life.catalogue.matching.UsageMatcherGlobal; import life.catalogue.matching.nidx.NameIndex; import life.catalogue.matching.nidx.NameIndexFactory; @@ -254,7 +254,7 @@ public void run(WsServerConfig cfg, Environment env) throws Exception { new TempDatasetCleanup(), new ProjectCounterUpdate(getSqlSessionFactory()) ); - env.lifecycle().manage(cron); + managedService.manage(Component.CronExecutor, cron); // name parser NameParser.PARSER.register(env.metrics()); @@ -370,10 +370,13 @@ public void run(WsServerConfig cfg, Environment env) throws Exception { // syncs and releases final var syncFactory = new SyncFactory(getSqlSessionFactory(), ni, matcher, secdao, siDao, edao, indexService, bus); - final var copyFactory = new ProjectCopyFactory(httpClient, matcher, syncFactory, diDao, ddao, siDao, rdao, ndao, secdao, exportManager, indexService, imgService, doiService, doiUpdater, getSqlSessionFactory(), validator, cfg); + final var copyFactory = new ProjectCopyFactory(httpClient, matcher, syncFactory, diDao, ddao, siDao, rdao, ndao, secdao, + exportManager, indexService, imgService, doiService, doiUpdater, getSqlSessionFactory(), validator, + cfg.release, cfg.doi, cfg.apiURI, cfg.clbURI + ); // importer - importManager = new ImportManager(cfg, + importManager = new ImportManager(cfg.importer, cfg.normalizer, env.metrics(), httpClient, bus, @@ -401,7 +404,6 @@ public void run(WsServerConfig cfg, Environment env) throws Exception { // link assembly and import manager so they are aware of each other importManager.setAssemblyCoordinator(syncManager); - syncManager.setImportManager(importManager); // legacy ID map IdMap idMap = IdMap.fromURI(cfg.legacyIdMapFile, cfg.legacyIdMapURI); @@ -473,7 +475,7 @@ public void run(WsServerConfig cfg, Environment env) throws Exception { if (cfg.apiURI != null) { bus.register(new CacheFlush(httpClient, cfg.apiURI)); } - bus.register(new PublicReleaseListener(cfg, getSqlSessionFactory(), httpClient, exdao, doiService, converter)); + bus.register(new PublicReleaseListener(cfg.release, cfg.job, getSqlSessionFactory(), httpClient, exdao, doiService, converter)); bus.register(doiUpdater); bus.register(uCache); bus.register(exportManager); diff --git a/webservice/src/main/java/life/catalogue/WsServerConfig.java b/webservice/src/main/java/life/catalogue/WsServerConfig.java index 4d4f76cbac..5906230026 100644 --- a/webservice/src/main/java/life/catalogue/WsServerConfig.java +++ b/webservice/src/main/java/life/catalogue/WsServerConfig.java @@ -15,6 +15,7 @@ import life.catalogue.dw.metrics.GangliaBundleConfiguration; import life.catalogue.dw.metrics.GangliaConfiguration; import life.catalogue.es.EsConfig; +import life.catalogue.exporter.ExporterConfig; import life.catalogue.img.ImgConfig; import java.io.File; @@ -39,7 +40,7 @@ import io.dropwizard.client.JerseyClientConfiguration; -public class WsServerConfig extends Configuration implements CorsBundleConfiguration, GangliaBundleConfiguration, MailBundleConfig { +public class WsServerConfig extends Configuration implements ExporterConfig, CorsBundleConfiguration, GangliaBundleConfiguration, MailBundleConfig { private static final Logger LOG = LoggerFactory.getLogger(WsServerConfig.class); public Properties version; @@ -261,4 +262,23 @@ public String versionString() { return null; } + @Override + public URI getApiUri() { + return apiURI; + } + + @Override + public JobConfig getJob() { + return job; + } + + @Override + public ImgConfig getImgConfig() { + return img; + } + + @Override + public NormalizerConfig getNormalizerConfig() { + return normalizer; + } } diff --git a/webservice/src/main/java/life/catalogue/command/ExportCmd.java b/webservice/src/main/java/life/catalogue/command/ExportCmd.java index 7924371f0b..9ae8fcbdb9 100644 --- a/webservice/src/main/java/life/catalogue/command/ExportCmd.java +++ b/webservice/src/main/java/life/catalogue/command/ExportCmd.java @@ -27,13 +27,12 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import jakarta.validation.Validation; -import jakarta.validation.Validator; - import org.apache.ibatis.session.SqlSession; import com.google.common.eventbus.EventBus; +import jakarta.validation.Validation; +import jakarta.validation.Validator; import net.sourceforge.argparse4j.inf.Subparser; /** @@ -121,7 +120,7 @@ private void init() throws Exception { manager = new ExportManager(cfg, factory, exec, imageService, exportDao, new DatasetImportDao(factory, cfg.metricsRepo)); DoiService doiService = new DataCiteService(cfg.doi, jerseyClient); DatasetConverter converter = new DatasetConverter(cfg.portalURI, cfg.clbURI, udao::get); - copy = new PublicReleaseListener(cfg, factory, httpClient, exportDao, doiService, converter); + copy = new PublicReleaseListener(cfg.release, cfg.job, factory, httpClient, exportDao, doiService, converter); } @Override diff --git a/webservice/src/main/java/life/catalogue/command/TaxonMetricsCmd.java b/webservice/src/main/java/life/catalogue/command/TaxonMetricsCmd.java index 905d6d4f0a..8f866a3805 100644 --- a/webservice/src/main/java/life/catalogue/command/TaxonMetricsCmd.java +++ b/webservice/src/main/java/life/catalogue/command/TaxonMetricsCmd.java @@ -1,12 +1,12 @@ package life.catalogue.command; -import life.catalogue.admin.jobs.RebuildMetricsJob; import life.catalogue.api.search.DatasetSearchRequest; import life.catalogue.api.vocab.DatasetOrigin; import life.catalogue.api.vocab.Users; import life.catalogue.concurrent.ExecutorUtils; import life.catalogue.concurrent.NamedThreadFactory; import life.catalogue.db.mapper.DatasetMapper; +import life.catalogue.jobs.RebuildMetricsJob; import java.util.List; import java.util.concurrent.ExecutorService; diff --git a/webservice/src/main/java/life/catalogue/dw/managed/Component.java b/webservice/src/main/java/life/catalogue/dw/managed/Component.java index 37c7dda083..3f679394ea 100644 --- a/webservice/src/main/java/life/catalogue/dw/managed/Component.java +++ b/webservice/src/main/java/life/catalogue/dw/managed/Component.java @@ -8,6 +8,7 @@ public enum Component { UsageCache, LegacyIdMap, JobExecutor, + CronExecutor, DatasetImporter, SectorSynchronizer, ImportScheduler, diff --git a/webservice/src/main/java/life/catalogue/resources/AdminResource.java b/webservice/src/main/java/life/catalogue/resources/AdminResource.java index 828bc0a31f..f537fa7df0 100644 --- a/webservice/src/main/java/life/catalogue/resources/AdminResource.java +++ b/webservice/src/main/java/life/catalogue/resources/AdminResource.java @@ -1,9 +1,7 @@ package life.catalogue.resources; import life.catalogue.WsServerConfig; -import life.catalogue.admin.jobs.*; import life.catalogue.api.model.DSID; -import life.catalogue.api.model.DatasetGBIF; import life.catalogue.api.model.RequestScope; import life.catalogue.api.model.User; import life.catalogue.assembly.SyncManager; @@ -29,19 +27,20 @@ import life.catalogue.img.ImageService; import life.catalogue.img.LogoUpdateJob; import life.catalogue.importer.ImportManager; +import life.catalogue.jobs.*; import life.catalogue.matching.GlobalMatcherJob; -import life.catalogue.matching.nidx.NameIndex; import life.catalogue.matching.RematchJob; -import life.catalogue.printer.PrinterFactory; +import life.catalogue.matching.nidx.NameIndex; import life.catalogue.resources.legacy.IdMap; import java.io.*; -import java.util.*; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import java.util.stream.Collectors; import java.util.stream.Stream; -import jakarta.validation.Validator; - import org.apache.ibatis.session.SqlSessionFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,6 +52,7 @@ import io.swagger.v3.oas.annotations.Hidden; import jakarta.annotation.security.PermitAll; import jakarta.annotation.security.RolesAllowed; +import jakarta.validation.Validator; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; @@ -326,13 +326,13 @@ public boolean clearCaches(@Auth User user) { @POST @Path("/reimport") public BackgroundJob reimport(@Auth User user) { - return runJob(new ReimportJob(user, factory, importManager, cfg)); + return runJob(new ReimportJob(user, factory, importManager, cfg.importer, cfg.normalizer)); } @POST @Path("/importArticles") public BackgroundJob scheduleArticleImports(@Auth User user) { - return runJob(new ImportArticleJob(user, factory, importManager, cfg)); + return runJob(new ImportArticleJob(user, factory, importManager, cfg.importer)); } @POST diff --git a/webservice/src/main/java/life/catalogue/resources/DatasetResource.java b/webservice/src/main/java/life/catalogue/resources/DatasetResource.java index 392290c451..39a0a1f306 100644 --- a/webservice/src/main/java/life/catalogue/resources/DatasetResource.java +++ b/webservice/src/main/java/life/catalogue/resources/DatasetResource.java @@ -1,6 +1,6 @@ package life.catalogue.resources; -import life.catalogue.admin.jobs.ValidationJob; +import life.catalogue.jobs.ValidationJob; import life.catalogue.api.exception.NotFoundException; import life.catalogue.api.model.*; import life.catalogue.api.search.DatasetSearchRequest; diff --git a/webservice/src/main/java/life/catalogue/resources/NameUsageMatchingResource.java b/webservice/src/main/java/life/catalogue/resources/NameUsageMatchingResource.java index 5f59e085e6..40def31c30 100644 --- a/webservice/src/main/java/life/catalogue/resources/NameUsageMatchingResource.java +++ b/webservice/src/main/java/life/catalogue/resources/NameUsageMatchingResource.java @@ -8,9 +8,8 @@ import life.catalogue.cache.UsageCache; import life.catalogue.common.ws.MoreMediaTypes; import life.catalogue.concurrent.JobExecutor; -import life.catalogue.importer.NameInterpreter; +import life.catalogue.interpreter.NameInterpreter; import life.catalogue.matching.*; - import life.catalogue.parser.*; import org.gbif.nameparser.api.NomCode; @@ -22,18 +21,17 @@ import java.nio.file.Files; import java.nio.file.StandardCopyOption; -import jakarta.validation.Valid; -import jakarta.ws.rs.*; -import jakarta.ws.rs.core.Context; -import jakarta.ws.rs.core.HttpHeaders; -import jakarta.ws.rs.core.MediaType; - import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.session.SqlSessionFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.dropwizard.auth.Auth; +import jakarta.validation.Valid; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; @Path("/dataset/{key}/match/nameusage") @Produces(MediaType.APPLICATION_JSON) @@ -134,7 +132,7 @@ public UsageMatchWithOriginal match(@PathParam("key") int datasetKey, } private MatchingJob submit(MatchingRequest req, User user) { - MatchingJob job = new MatchingJob(req, user.getKey(), factory, matcher, cfg); + MatchingJob job = new MatchingJob(req, user.getKey(), factory, matcher, cfg.getNormalizerConfig()); exec.submit(job); return job; } diff --git a/webservice/src/main/java/life/catalogue/resources/NamesIndexResource.java b/webservice/src/main/java/life/catalogue/resources/NamesIndexResource.java index 4f24cceca0..00618c69ec 100644 --- a/webservice/src/main/java/life/catalogue/resources/NamesIndexResource.java +++ b/webservice/src/main/java/life/catalogue/resources/NamesIndexResource.java @@ -8,10 +8,9 @@ import life.catalogue.concurrent.JobExecutor; import life.catalogue.db.mapper.NamesIndexMapper; import life.catalogue.dw.auth.Roles; -import life.catalogue.importer.NameInterpreter; -import life.catalogue.matching.nidx.NameIndex; +import life.catalogue.interpreter.NameInterpreter; import life.catalogue.matching.NidxExportJob; - +import life.catalogue.matching.nidx.NameIndex; import life.catalogue.matching.nidx.NameIndexStore; import org.gbif.nameparser.api.NomCode; @@ -21,12 +20,6 @@ import java.util.Collection; import java.util.List; -import jakarta.annotation.security.RolesAllowed; -import jakarta.validation.Valid; -import jakarta.ws.rs.*; -import jakarta.ws.rs.core.Context; -import jakarta.ws.rs.core.MediaType; - import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.slf4j.Logger; @@ -34,6 +27,11 @@ import io.dropwizard.auth.Auth; import io.swagger.v3.oas.annotations.Hidden; +import jakarta.annotation.security.RolesAllowed; +import jakarta.validation.Valid; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; @Path("/nidx") @Produces(MediaType.APPLICATION_JSON) @@ -126,7 +124,7 @@ public List searchByRegex(@QueryParam("q") String regex, @POST @Path("export") public NidxExportJob export(@QueryParam("datasetKey") List keys, @QueryParam("min") int minDatasets, @Auth User user) { - NidxExportJob job = new NidxExportJob(keys, minDatasets, user.getKey(), factory, cfg); + NidxExportJob job = new NidxExportJob(keys, minDatasets, user.getKey(), factory, cfg.normalizer); exec.submit(job); return job; } diff --git a/webservice/src/test/java/life/catalogue/doi/DataCiteServiceIT2.java b/webservice/src/test/java/life/catalogue/doi/DataCiteServiceIT2.java index cda28d3c03..1298db3e2d 100644 --- a/webservice/src/test/java/life/catalogue/doi/DataCiteServiceIT2.java +++ b/webservice/src/test/java/life/catalogue/doi/DataCiteServiceIT2.java @@ -18,10 +18,10 @@ import java.util.UUID; import java.util.logging.Logger; -import jakarta.ws.rs.client.Client; - import org.junit.*; +import jakarta.ws.rs.client.Client; + import static org.junit.Assert.*; /** diff --git a/webservice/src/test/java/life/catalogue/exporter/ColdpExportSpecsTest.java b/webservice/src/test/java/life/catalogue/exporter/ColdpExportSpecsTest.java deleted file mode 100644 index 39d7a86bf4..0000000000 --- a/webservice/src/test/java/life/catalogue/exporter/ColdpExportSpecsTest.java +++ /dev/null @@ -1,58 +0,0 @@ -package life.catalogue.exporter; - -import life.catalogue.ApiUtils; -import life.catalogue.WsServerConfig; -import life.catalogue.api.model.ExportRequest; -import life.catalogue.api.vocab.DataFormat; -import life.catalogue.api.vocab.Users; -import life.catalogue.junit.PgSetupRule; -import life.catalogue.junit.SqlSessionFactoryRule; -import life.catalogue.junit.TestDataRule; -import life.catalogue.img.ImageService; -import life.catalogue.importer.PgImportRule; - -import org.gbif.nameparser.api.NomCode; - -import org.junit.ClassRule; -import org.junit.Test; -import org.junit.rules.RuleChain; -import org.junit.rules.TestRule; - -import com.codahale.metrics.MetricRegistry; - -import static org.junit.Assert.assertTrue; - -/** - * ColDP exporter test that uses the ColDP example file from the specs which has rather complete coverage of all entities! - */ -public class ColdpExportSpecsTest { - - static final WsServerConfig cfg = new WsServerConfig(); - static { - cfg.apiURI= ApiUtils.API; - } - - static PgSetupRule pgSetupRule = new PgSetupRule(); - static TestDataRule testDataRule = TestDataRule.empty(); - final static PgImportRule importRule = PgImportRule.create( - NomCode.ZOOLOGICAL, - DataFormat.COLDP, 0 - ); - - @ClassRule - public final static TestRule chain = RuleChain - .outerRule(pgSetupRule) - .around(testDataRule) - .around(importRule); - - @Test - public void coldpSpecsExport() { - MetricRegistry registry = new MetricRegistry(); - ExportRequest req = new ExportRequest(importRule.datasetKey(0, DataFormat.COLDP), DataFormat.COLDP); - ColdpExtendedExport exp = new ColdpExtendedExport(req, Users.TESTER, SqlSessionFactoryRule.getSqlSessionFactory(), cfg, ImageService.passThru()); - exp.run(); - System.out.println(exp.getArchive()); - ExportTest.assertExportExists(exp.getArchive()); - } - -} diff --git a/webservice/src/test/java/life/catalogue/importer/ImportManagerDebugging.java b/webservice/src/test/java/life/catalogue/importer/ImportManagerDebugging.java deleted file mode 100644 index 1ba3dd9249..0000000000 --- a/webservice/src/test/java/life/catalogue/importer/ImportManagerDebugging.java +++ /dev/null @@ -1,177 +0,0 @@ -package life.catalogue.importer; - -import life.catalogue.WsServerConfig; -import life.catalogue.api.TestEntityGenerator; -import life.catalogue.api.model.DatasetWithSettings; -import life.catalogue.api.vocab.DataFormat; -import life.catalogue.api.vocab.DatasetOrigin; -import life.catalogue.api.vocab.DatasetType; -import life.catalogue.api.vocab.Users; -import life.catalogue.common.tax.AuthorshipNormalizer; -import life.catalogue.concurrent.JobExecutor; -import life.catalogue.dao.*; -import life.catalogue.junit.PgSetupRule; -import life.catalogue.junit.SqlSessionFactoryRule; -import life.catalogue.junit.TestDataRule; -import life.catalogue.db.mapper.DatasetMapper; -import life.catalogue.es.NameUsageIndexService; -import life.catalogue.img.ImageServiceFS; -import life.catalogue.junit.TreeRepoRule; -import life.catalogue.matching.nidx.NameIndexFactory; -import life.catalogue.matching.nidx.NamesIndexConfig; - -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.net.URI; - -import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; -import org.apache.ibatis.session.SqlSession; -import org.junit.*; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; - -import com.codahale.metrics.MetricRegistry; -import com.google.common.eventbus.EventBus; -import com.google.common.io.Files; - -import io.dropwizard.client.HttpClientBuilder; -import jakarta.validation.Validator; - -@Ignore("manual import debugging") -@RunWith(MockitoJUnitRunner.class) -public class ImportManagerDebugging { - static final AuthorshipNormalizer aNormalizer = AuthorshipNormalizer.INSTANCE; - - ImportManager importManager; - CloseableHttpClient hc; - @Mock - JobExecutor jobExecutor; - @Mock - Validator validator; - - @ClassRule - public static PgSetupRule pgSetupRule = new PgSetupRule(); - - @Rule - public TestDataRule testDataRule = TestDataRule.empty(); - - @Rule - public final TreeRepoRule treeRepoRule = new TreeRepoRule(); - - private static WsServerConfig provideConfig() { - WsServerConfig cfg = new WsServerConfig(); - cfg.gbif.syncFrequency = 0; - cfg.importer.continuous.polling = 0; - cfg.importer.threads = 3; - cfg.normalizer.archiveDir = Files.createTempDir(); - cfg.normalizer.scratchDir = Files.createTempDir(); - cfg.db.host = "localhost"; - cfg.db.database = "colplus"; - cfg.db.user = "postgres"; - cfg.db.password = "postgres"; - cfg.es.hosts = "localhost"; - cfg.es.ports = "9200"; - - return cfg; - } - - @Before - public void init() throws Exception { - MetricRegistry metrics = new MetricRegistry(); - - final WsServerConfig cfg = provideConfig(); - //new InitDbCmd().execute(cfg); - - NameUsageIndexService indexService = NameUsageIndexService.passThru(); - NameDao nDao = new NameDao(SqlSessionFactoryRule.getSqlSessionFactory(), indexService, NameIndexFactory.passThru(), validator); - TaxonDao tDao = new TaxonDao(SqlSessionFactoryRule.getSqlSessionFactory(), nDao, indexService, validator); - SectorDao sDao = new SectorDao(SqlSessionFactoryRule.getSqlSessionFactory(), indexService, tDao, validator); - DecisionDao dDao = new DecisionDao(SqlSessionFactoryRule.getSqlSessionFactory(), NameUsageIndexService.passThru(), validator); - var diDao = new DatasetImportDao(SqlSessionFactoryRule.getSqlSessionFactory(), treeRepoRule.getRepo()); - DatasetDao datasetDao = new DatasetDao(SqlSessionFactoryRule.getSqlSessionFactory(), null, diDao, validator); - - hc = new HttpClientBuilder(metrics).using(cfg.client).build("local"); - importManager = new ImportManager(cfg, metrics, hc, new EventBus("test-bus"), SqlSessionFactoryRule.getSqlSessionFactory(), - NameIndexFactory.build(NamesIndexConfig.memory(1024), SqlSessionFactoryRule.getSqlSessionFactory(), aNormalizer).started(), - diDao, datasetDao, sDao, dDao, indexService, new ImageServiceFS(cfg.img, null), jobExecutor, validator, null); - importManager.start(); - } - - @After - public void shutdown() throws Exception { - importManager.stop(); - hc.close(); - } - - /** - * Try with 3 small parallel datasets - */ - @Test - public void debugParallel() throws Exception { - importManager.submit(ImportRequest.external(1000, Users.IMPORTER)); - importManager.submit(ImportRequest.external(1006, Users.IMPORTER)); - importManager.submit(ImportRequest.external(1007, Users.IMPORTER)); - - Thread.sleep(1000); - while (importManager.hasRunning()) { - Thread.sleep(1000); - } - } - - @Test - public void debugTaxonworks() throws Exception { - DatasetWithSettings d = create(DataFormat.COLDP, "https://sfg.taxonworks.org/downloads/15/download_file", "TW Test"); - importManager.submit(ImportRequest.external(d.getKey(), Users.IMPORTER)); - Thread.sleep(1000); - while (importManager.hasRunning()) { - Thread.sleep(1000); - } - System.out.println("Done"); - } - - @Test - public void debugDsmz() throws Exception { - DatasetWithSettings d = create(DataFormat.DWCA, "http://rs.gbif.org/datasets/dsmz.zip", "DSMZ"); - importManager.submit(ImportRequest.external(d.getKey(), Users.IMPORTER)); - Thread.sleep(1000); - while (importManager.hasRunning()) { - Thread.sleep(1000); - } - System.out.println("Done"); - } - - @Test - public void debugUpload() throws Exception { - DatasetWithSettings d = create(DataFormat.DWCA, null,"Upload test"); - File f = new File("/Users/markus/Desktop/testUnassigned.txt"); - InputStream data = new FileInputStream(f); - importManager.upload(d.getKey(), data, true, f.getName(), "tsv", TestEntityGenerator.USER_ADMIN); - - Thread.sleep(1000); - while (importManager.hasRunning()) { - Thread.sleep(1000); - } - System.out.println("Done"); - } - - private DatasetWithSettings create(DataFormat format, String url, String title) { - DatasetWithSettings d = new DatasetWithSettings(); - d.setType(DatasetType.OTHER); - d.setTitle(title); - d.setOrigin(DatasetOrigin.EXTERNAL); - d.setDataFormat(format); - if (url != null) { - d.setDataAccess(URI.create(url)); - } - TestEntityGenerator.setUser(d.getDataset()); - - try (SqlSession s = SqlSessionFactoryRule.getSqlSessionFactory().openSession()) { - s.getMapper(DatasetMapper.class).createAll(d); - s.commit(); - } - - return d; - } -} diff --git a/webservice/src/test/java/life/catalogue/importer/ImportManagerLiveTest.java b/webservice/src/test/java/life/catalogue/importer/ImportManagerLiveTest.java deleted file mode 100644 index fbf19fafca..0000000000 --- a/webservice/src/test/java/life/catalogue/importer/ImportManagerLiveTest.java +++ /dev/null @@ -1,220 +0,0 @@ -package life.catalogue.importer; - -import life.catalogue.WsServerConfig; -import life.catalogue.api.model.DatasetImport; -import life.catalogue.api.model.DatasetWithSettings; -import life.catalogue.api.model.Page; -import life.catalogue.api.model.ResultPage; -import life.catalogue.api.vocab.*; -import life.catalogue.concurrent.JobExecutor; -import life.catalogue.dao.*; -import life.catalogue.junit.PgSetupRule; -import life.catalogue.junit.SqlSessionFactoryRule; -import life.catalogue.junit.TestDataRule; -import life.catalogue.db.mapper.DatasetMapper; -import life.catalogue.es.NameUsageIndexService; -import life.catalogue.img.ImageServiceFS; -import life.catalogue.junit.TreeRepoRule; -import life.catalogue.matching.nidx.NameIndexFactory; - -import org.gbif.nameparser.api.NomCode; - -import java.net.URI; -import java.util.List; -import java.util.concurrent.TimeUnit; - -import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; -import org.apache.ibatis.session.SqlSession; -import org.junit.*; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.codahale.metrics.MetricRegistry; -import com.google.common.eventbus.EventBus; -import com.google.common.io.Files; - -import io.dropwizard.client.HttpClientBuilder; -import jakarta.validation.Validator; - -import static junit.framework.TestCase.assertEquals; -import static junit.framework.TestCase.assertTrue; -import static org.junit.Assert.assertFalse; - -/** - * This test needs access to http://rs.gbif.org/datasets/dsmz.zip !!! - */ -@Ignore -@RunWith(MockitoJUnitRunner.class) -public class ImportManagerLiveTest { - private static final Logger LOG = LoggerFactory.getLogger(ImportManagerLiveTest.class); - - ImportManager importManager; - CloseableHttpClient hc; - DatasetImportDao diDao; - @Mock - JobExecutor jobExecutor; - @Mock - Validator validator; - - @ClassRule - public static PgSetupRule pgSetupRule = new PgSetupRule(); - - @Rule - public TestDataRule testDataRule = TestDataRule.empty(); - - @Rule - public final TreeRepoRule treeRepoRule = new TreeRepoRule(); - - private static WsServerConfig provideConfig() { - WsServerConfig cfg = new WsServerConfig(); - cfg.gbif.syncFrequency = 0; - cfg.importer.continuous.polling = 0; - cfg.importer.threads = 2; - // wait for half a minute before completing an import to run assertions - cfg.importer.wait = 30; - cfg.normalizer.archiveDir = Files.createTempDir(); - cfg.normalizer.scratchDir = Files.createTempDir(); - cfg.db.host = "localhost"; - cfg.db.database = "colplus"; - cfg.db.user = "postgres"; - cfg.db.password = "postgres"; - cfg.es = null; - return cfg; - } - - @Before - public void init() throws Exception { - MetricRegistry metrics = new MetricRegistry(); - - final WsServerConfig cfg = provideConfig(); - - NameUsageIndexService indexService = NameUsageIndexService.passThru(); - NameDao nDao = new NameDao(SqlSessionFactoryRule.getSqlSessionFactory(), indexService, NameIndexFactory.passThru(), validator); - TaxonDao tDao = new TaxonDao(SqlSessionFactoryRule.getSqlSessionFactory(), nDao, indexService, validator); - SectorDao sDao = new SectorDao(SqlSessionFactoryRule.getSqlSessionFactory(), indexService, tDao, validator); - DecisionDao dDao = new DecisionDao(SqlSessionFactoryRule.getSqlSessionFactory(), NameUsageIndexService.passThru(), validator); - diDao = new DatasetImportDao(SqlSessionFactoryRule.getSqlSessionFactory(), treeRepoRule.getRepo()); - DatasetDao datasetDao = new DatasetDao(SqlSessionFactoryRule.getSqlSessionFactory(), null,diDao, validator); - - hc = new HttpClientBuilder(metrics).using(cfg.client).build("local"); - importManager = new ImportManager(cfg, metrics, hc, new EventBus("test-bus"), SqlSessionFactoryRule.getSqlSessionFactory(), - NameIndexFactory.passThru(), diDao, datasetDao, sDao, dDao, indexService, new ImageServiceFS(cfg.img, null), jobExecutor, validator, null); - importManager.start(); - - LOG.warn("Test initialized"); - } - - @After - public void shutdown() throws Exception { - LOG.warn("Shutting down test"); - importManager.stop(); - hc.close(); - } - - private DatasetWithSettings createExternal() { - DatasetWithSettings d = new DatasetWithSettings(); - d.setType(DatasetType.TAXONOMIC); - d.setOrigin(DatasetOrigin.EXTERNAL); - d.setTitle("Moss Bug Base"); - d.setCode(NomCode.BACTERIAL); - d.setDataFormat(DataFormat.DWCA); - d.setDataAccess(URI.create("http://rs.gbif.org/datasets/dsmz.zip")); - d.setCreatedBy(TestDataRule.TEST_USER.getKey()); - d.setModifiedBy(TestDataRule.TEST_USER.getKey()); - try (SqlSession session = SqlSessionFactoryRule.getSqlSessionFactory().openSession(true) ) { - session.getMapper(DatasetMapper.class).createAll(d); - session.commit(); - } - return d; - } - - @Test - public void cancel() throws Exception { - final DatasetWithSettings d1 = createExternal(); - - LOG.warn("SUBMIT"); - importManager.submit(ImportRequest.external(d1.getKey(), Users.IMPORTER)); - Thread.sleep(50); - - LOG.warn("CHECK"); - assertTrue(importManager.hasEmptyQueue()); - assertTrue(importManager.hasRunning()); - - // cancel - LOG.warn("CANCEL"); - importManager.cancel(d1.getKey(), -1); - TimeUnit.MILLISECONDS.sleep(500); - LOG.warn("CHECK"); - assertTrue(importManager.hasEmptyQueue()); - assertFalse(importManager.hasRunning()); - } - - @Test - public void submitAndCancel() throws Exception { - final List runningStates = ImportState.runningStates(); - - final DatasetWithSettings d1 = createExternal(); - final DatasetWithSettings d2 = createExternal(); - final DatasetWithSettings d3 = createExternal(); - final DatasetWithSettings d4 = createExternal(); - - importManager.submit(ImportRequest.external(d1.getKey(), Users.IMPORTER)); - Thread.sleep(50); - assertTrue(importManager.hasEmptyQueue()); - assertTrue(importManager.hasRunning()); - ResultPage imports = diDao.list(new Page()); - assertEquals(1, imports.size()); - assertEquals(d1.getKey(), imports.getResult().get(0).getDatasetKey()); - assertEquals(1, imports.getResult().get(0).getAttempt()); - assertEquals(d1.getDataAccess(), imports.getResult().get(0).getDownloadUri()); - - assertTrue(runningStates.contains( imports.getResult().get(0).getState() )); - - importManager.submit(ImportRequest.external(d2.getKey(), Users.IMPORTER)); - importManager.submit(ImportRequest.external(d3.getKey(), Users.IMPORTER)); - importManager.submit(ImportRequest.external(d4.getKey(), Users.IMPORTER, false, true)); - importManager.hasRunning(); - Thread.sleep(100); - imports = diDao.list(new Page()); - assertEquals(2, imports.size()); - assertEquals(d2.getKey(), imports.getResult().get(0).getDatasetKey()); - assertEquals(1, imports.getResult().get(0).getAttempt()); - assertEquals(d2.getDataAccess(), imports.getResult().get(0).getDownloadUri()); - assertEquals(d1.getKey(), imports.getResult().get(1).getDatasetKey()); - - assertFalse(importManager.hasEmptyQueue()); - List queue = importManager.queue(); - // d4 has priority - assertEquals((int)d4.getKey(), queue.get(0).datasetKey); - - // cancel d4 - importManager.cancel(d4.getKey(), -1); - Thread.sleep(100); - queue = importManager.queue(); - assertEquals(1, queue.size()); - assertEquals((int)d3.getKey(), queue.get(0).datasetKey); - - imports = diDao.list(new Page()); - assertEquals(d2.getKey(), imports.getResult().get(0).getDatasetKey()); - assertEquals(d1.getKey(), imports.getResult().get(1).getDatasetKey()); - - // cancel d1 - importManager.cancel(d1.getKey(), -1); - TimeUnit.SECONDS.sleep(1); - assertTrue(importManager.hasEmptyQueue()); - imports = diDao.list(new Page()); - assertEquals(3, imports.size()); - assertEquals(d3.getKey(), imports.getResult().get(0).getDatasetKey()); - assertTrue(runningStates.contains(imports.getResult().get(0).getState())); - - assertEquals(d2.getKey(), imports.getResult().get(1).getDatasetKey()); - assertTrue(runningStates.contains(imports.getResult().get(1).getState())); - - assertEquals(d1.getKey(), imports.getResult().get(2).getDatasetKey()); - assertEquals(ImportState.CANCELED, imports.getResult().get(2).getState()); - } - -} diff --git a/webservice/src/test/java/life/catalogue/release/ProjectDuplicationIT.java b/webservice/src/test/java/life/catalogue/release/ProjectDuplicationIT.java deleted file mode 100644 index b389de27fa..0000000000 --- a/webservice/src/test/java/life/catalogue/release/ProjectDuplicationIT.java +++ /dev/null @@ -1,67 +0,0 @@ -package life.catalogue.release; - -import life.catalogue.api.model.NameUsageBase; -import life.catalogue.api.model.Sector; -import life.catalogue.api.vocab.DataFormat; -import life.catalogue.api.vocab.Datasets; -import life.catalogue.api.vocab.ImportState; -import life.catalogue.api.vocab.Users; -import life.catalogue.assembly.SectorSyncIT; -import life.catalogue.junit.TestDataRule; -import life.catalogue.importer.PgImportRule; - -import org.gbif.nameparser.api.NomCode; -import org.gbif.nameparser.api.Rank; - -import org.junit.ClassRule; -import org.junit.Test; -import org.junit.rules.RuleChain; -import org.junit.rules.TestRule; - -import static org.junit.Assert.assertEquals; - -public class ProjectDuplicationIT extends ProjectBaseIT { - - public final static TestDataRule dataRule = TestDataRule.draft(); - public final static PgImportRule importRule = PgImportRule.create( - NomCode.BOTANICAL, - DataFormat.ACEF, 1, - DataFormat.COLDP, 0, - NomCode.ZOOLOGICAL, - DataFormat.ACEF, 5, 6 - ); - - @ClassRule // this should run AFTER the ProjectBaseIT.classRules - public final static TestRule chain = RuleChain - .outerRule(dataRule) - .around(importRule); - - int datasetKey(int key, DataFormat format) { - return importRule.datasetKey(key, format); - } - - @Test - public void duplicate() { - // prepare a sync - NameUsageBase src = SectorSyncIT.getByName(datasetKey(1, DataFormat.ACEF), Rank.ORDER, "Fabales"); - NameUsageBase trg = SectorSyncIT.getByName(Datasets.COL, Rank.PHYLUM, "Tracheophyta"); - SectorSyncIT.createSector(Sector.Mode.ATTACH, src, trg); - - src = SectorSyncIT.getByName(datasetKey(5, DataFormat.ACEF), Rank.CLASS, "Insecta"); - trg = SectorSyncIT.getByName(Datasets.COL, Rank.CLASS, "Insecta"); - SectorSyncIT.createSector(Sector.Mode.UNION, src, trg); - - src = SectorSyncIT.getByName(datasetKey(6, DataFormat.ACEF), Rank.FAMILY, "Theridiidae"); - trg = SectorSyncIT.getByName(Datasets.COL, Rank.CLASS, "Insecta"); - SectorSyncIT.createSector(Sector.Mode.ATTACH, src, trg); - - // TODO: setup/clear NamesIndex ??? - SectorSyncIT.syncAll(null, null); - - ProjectDuplication dupe = projectCopyFactory.buildDuplication(Datasets.COL, Users.TESTER); - final int datasetKey = dupe.newDatasetKey; - System.out.println(String.format("Copy dataset %s into %s", Datasets.COL, datasetKey)); - dupe.run(); - assertEquals(ImportState.FINISHED, dupe.getMetrics().getState()); - } -} \ No newline at end of file diff --git a/webservice/src/test/resources/txtree/target/lpsn.txtree b/webservice/src/test/resources/txtree/target/lpsn.txtree deleted file mode 100644 index d8e4ab9707..0000000000 --- a/webservice/src/test/resources/txtree/target/lpsn.txtree +++ /dev/null @@ -1,7 +0,0 @@ -Acidihalobacter Cárdenas et al., 2015 [genus] - Acidihalobacter aeolianus Khaleque et al., 2019 [species] - Acidihalobacter ferrooxydans Khaleque et al., 2019 [species] - Acidihalobacter prosperus Cárdenas et al., 2015 [species] -Acidobacterium Kishimoto et al., 1991 [genus] - Acidobacterium ailaaui Myers & King, 2016 [species] - Acidobacterium capsulatum Kishimoto et al., 1991 emend. Pankratov et al. 2012 [species] \ No newline at end of file diff --git a/webservice/src/test/resources/txtree/target/lpsn.yaml b/webservice/src/test/resources/txtree/target/lpsn.yaml deleted file mode 100644 index 1a9dc7ba03..0000000000 --- a/webservice/src/test/resources/txtree/target/lpsn.yaml +++ /dev/null @@ -1,3 +0,0 @@ -target: - rank: kingdom - name: Bacteria \ No newline at end of file diff --git a/webservice/src/test/resources/txtree/target/project.txtree b/webservice/src/test/resources/txtree/target/project.txtree deleted file mode 100644 index 30f613e7d2..0000000000 --- a/webservice/src/test/resources/txtree/target/project.txtree +++ /dev/null @@ -1,9 +0,0 @@ -Biota [unranked] - Archeae [kingdom] - Bacteria Cavalier-Smith, 2002 [kingdom] - Negibacteria Cavalier-Smith, 2002 [subkingdom] - Acidobacteria Thrash & Coates, 2012 [phylum] - Acidobacterium [genus] - Bacteroidetes Krieg et al., 2012 [phylum] - Posibacteria Cavalier-Smith, 2002 [subkingdom] - Plantae [kingdom] diff --git a/webservice/src/test/resources/txtree/target/xrelease.txtree b/webservice/src/test/resources/txtree/target/xrelease.txtree deleted file mode 100644 index f2d1e96d48..0000000000 --- a/webservice/src/test/resources/txtree/target/xrelease.txtree +++ /dev/null @@ -1,16 +0,0 @@ -Biota [unranked] - Archeae [kingdom] - Bacteria Cavalier-Smith, 2002 [kingdom] - Acidihalobacter Cárdenas et al., 2015 [genus] - Acidihalobacter aeolianus Khaleque et al., 2019 [species] - Acidihalobacter ferrooxydans Khaleque et al., 2019 [species] - Acidihalobacter prosperus Cárdenas et al., 2015 [species] - Negibacteria Cavalier-Smith, 2002 [subkingdom] - Acidobacteria Thrash & Coates, 2012 [phylum] - Acidobacterium Kishimoto et al., 1991 [genus] - Acidobacterium ailaaui Myers & King, 2016 [species] - Acidobacterium capsulatum Kishimoto et al., 1991 [species] - Bacteroidetes Krieg et al., 2012 [phylum] - Posibacteria Cavalier-Smith, 2002 [subkingdom] - Plantae [kingdom] -