From ab460fe5c45aeec41f15cc70ffc5d1f9835a0651 Mon Sep 17 00:00:00 2001 From: dtziotzios Date: Mon, 4 Feb 2019 11:37:42 +0200 Subject: [PATCH] Fixes bug when ElasticSearch is down. --- .../eudat/logic/managers/DatasetManager.java | 47 ++++++++++++++----- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java index 91e841d4b..824ded24e 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java @@ -49,14 +49,22 @@ public class DatasetManager { public DataTableData getPaged(ApiContext apiContext, DatasetTableRequest datasetTableRequest, Principal principal) throws Exception { DatasetCriteria datasetCriteria = new DatasetCriteria(); datasetCriteria.setTags(datasetTableRequest.getCriteria().getTags()); - List datasets = apiContext.getOperationsContext().getDatasetRepository().exists() ? - apiContext.getOperationsContext().getDatasetRepository().query(datasetCriteria) : new LinkedList<>(); + List datasets; + try { + datasets = datasetCriteria.getTags() != null && datasetCriteria.getTags().size() > 0 && apiContext.getOperationsContext().getDatasetRepository().exists() ? + apiContext.getOperationsContext().getDatasetRepository().query(datasetCriteria) : new LinkedList<>(); + } + catch (Exception ex){ + datasets = null; + } UserInfo userInfo = apiContext.getOperationsContext().getBuilderFactory().getBuilder(UserInfoBuilder.class).id(principal.getId()).build(); QueryableList items = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(datasetTableRequest.getCriteria()).withHint(HintedModelFactory.getHint(DatasetListingModel.class)); - if (datasetTableRequest.getCriteria().getTags() != null && !datasetTableRequest.getCriteria().getTags().isEmpty()) { - if (!datasets.isEmpty()) - items.where((builder, root) -> root.get("id").in(datasets.stream().map(x -> UUID.fromString(x.getId())).collect(Collectors.toList()))); + if (datasets != null && datasetTableRequest.getCriteria().getTags() != null && !datasetTableRequest.getCriteria().getTags().isEmpty()) { + if (!datasets.isEmpty()){ + List finalDatasets = datasets; + items.where((builder, root) -> root.get("id").in(finalDatasets.stream().map(x -> UUID.fromString(x.getId())).collect(Collectors.toList()))); + } else items.where((builder, root) -> root.get("id").in(new UUID[]{UUID.randomUUID()})); } @@ -81,14 +89,21 @@ public class DatasetManager { public DataTableData getPaged(ApiContext apiContext, DatasetPublicTableRequest datasetTableRequest, Principal principal) throws Exception { DatasetCriteria datasetCriteria = new DatasetCriteria(); datasetCriteria.setTags(datasetTableRequest.getCriteria().getTags()); - List datasets = apiContext.getOperationsContext().getDatasetRepository().exists() ? - apiContext.getOperationsContext().getDatasetRepository().query(datasetCriteria) : new LinkedList<>(); - + List datasets; + try{ + datasets = datasetCriteria.getTags() != null && datasetCriteria.getTags().size() > 0 && apiContext.getOperationsContext().getDatasetRepository().exists() ? + apiContext.getOperationsContext().getDatasetRepository().query(datasetCriteria) : new LinkedList<>(); + } + catch (Exception ex){ + datasets = null; + } datasetTableRequest.setQuery(apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().asQueryable().withHint(HintedModelFactory.getHint(DatasetListingModel.class))); QueryableList items = datasetTableRequest.applyCriteria(); - if (datasetTableRequest.getCriteria().getTags() != null && !datasetTableRequest.getCriteria().getTags().isEmpty()) { - if (!datasets.isEmpty()) - items.where((builder, root) -> root.get("id").in(datasets.stream().map(x -> UUID.fromString(x.getId())).collect(Collectors.toList()))); + if (datasets != null && datasetTableRequest.getCriteria().getTags() != null && !datasetTableRequest.getCriteria().getTags().isEmpty()) { + if (!datasets.isEmpty()) { + List finalDatasets = datasets; + items.where((builder, root) -> root.get("id").in(finalDatasets.stream().map(x -> UUID.fromString(x.getId())).collect(Collectors.toList()))); + } else items.where((builder, root) -> root.get("id").in(new UUID[]{UUID.randomUUID()})); } @@ -111,8 +126,14 @@ public class DatasetManager { public DatasetWizardModel getSingle(DatasetDao datatasetRepository, DatasetRepository elasticDatasetRepository, String id) throws InstantiationException, IllegalAccessException, IOException { DatasetWizardModel dataset = new DatasetWizardModel(); eu.eudat.data.entities.Dataset datasetEntity = datatasetRepository.find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class)); - eu.eudat.elastic.entities.Dataset datasetElastic = elasticDatasetRepository.exists() ? - elasticDatasetRepository.findDocument(id) : new eu.eudat.elastic.entities.Dataset(); + eu.eudat.elastic.entities.Dataset datasetElastic; + try{ + datasetElastic = elasticDatasetRepository.exists() ? + elasticDatasetRepository.findDocument(id) : new eu.eudat.elastic.entities.Dataset(); + } + catch (Exception ex){ + datasetElastic = new eu.eudat.elastic.entities.Dataset(); + } dataset.setDatasetProfileDefinition(getPagedProfile(dataset, datasetEntity)); dataset.fromDataModel(datasetEntity); dataset.setTags(datasetElastic.getTags());