Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 2a6325b

Browse files
author
Thomas Broyer
committed
Merge DocumentFacade and DocumentStorageFacade
Keep separate DocumentService and DocumentStorageService. Change-Id: Iea3f3e278522affd99e6473fafc408a0284bb2ec
1 parent db2f006 commit 2a6325b

9 files changed

Lines changed: 51 additions & 112 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/FacadeProvider.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import de.symeda.sormas.api.disease.DiseaseFacade;
3636
import de.symeda.sormas.api.docgeneneration.QuarantineOrderFacade;
3737
import de.symeda.sormas.api.document.DocumentFacade;
38-
import de.symeda.sormas.api.document.DocumentStorageFacade;
3938
import de.symeda.sormas.api.epidata.EpiDataFacade;
4039
import de.symeda.sormas.api.event.EventFacade;
4140
import de.symeda.sormas.api.event.EventParticipantFacade;
@@ -317,10 +316,6 @@ public static DocumentFacade getDocumentFacade() {
317316
return get().lookupEjbRemote(DocumentFacade.class);
318317
}
319318

320-
public static DocumentStorageFacade getDocumentStorageFacade() {
321-
return get().lookupEjbRemote(DocumentStorageFacade.class);
322-
}
323-
324319
@SuppressWarnings("unchecked")
325320
public <P> P lookupEjbRemote(Class<P> clazz) {
326321
try {

sormas-api/src/main/java/de/symeda/sormas/api/document/DocumentFacade.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
*/
1515
package de.symeda.sormas.api.document;
1616

17+
import java.io.IOException;
1718
import java.util.List;
1819

1920
import javax.ejb.Remote;
@@ -23,11 +24,15 @@ public interface DocumentFacade {
2324

2425
DocumentDto getDocumentByUuid(String uuid);
2526

26-
DocumentDto saveDocument(DocumentDto dto);
27+
DocumentDto saveDocument(DocumentDto dto, byte[] bytes) throws IOException;
2728

2829
void deleteDocument(String uuid);
2930

3031
List<DocumentDto> getDocumentsRelatedToEntity(DocumentRelatedEntityType type, String uuid);
3132

3233
String isExistingDocument(DocumentRelatedEntityType type, String uuid, String name);
34+
35+
byte[] read(String uuid) throws IOException;
36+
37+
void cleanupDeletedDocuments();
3338
}

sormas-api/src/main/java/de/symeda/sormas/api/document/DocumentStorageFacade.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

sormas-backend/src/main/java/de/symeda/sormas/backend/common/CronService.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
import de.symeda.sormas.backend.caze.CaseFacadeEjb.CaseFacadeEjbLocal;
3535
import de.symeda.sormas.backend.common.ConfigFacadeEjb.ConfigFacadeEjbLocal;
3636
import de.symeda.sormas.backend.contact.ContactFacadeEjb.ContactFacadeEjbLocal;
37-
import de.symeda.sormas.backend.document.DocumentStorageFacadeEjb.DocumentStorageFacadeEjbLocal;
37+
import de.symeda.sormas.backend.document.DocumentFacadeEjb;
38+
import de.symeda.sormas.backend.document.DocumentFacadeEjb.DocumentFacadeEjbLocal;
3839
import de.symeda.sormas.backend.event.EventFacadeEjb.EventFacadeEjbLocal;
3940
import de.symeda.sormas.backend.feature.FeatureConfigurationFacadeEjb.FeatureConfigurationFacadeEjbLocal;
4041
import de.symeda.sormas.backend.report.WeeklyReportFacadeEjb.WeeklyReportFacadeEjbLocal;
@@ -63,7 +64,7 @@ public class CronService {
6364
@EJB
6465
private EventFacadeEjbLocal eventFacade;
6566
@EJB
66-
private DocumentStorageFacadeEjbLocal documentStorageFacade;
67+
private DocumentFacadeEjbLocal documentFacade;
6768

6869
@Schedule(hour = "*", minute = "*/" + TASK_UPDATE_INTERVAL, second = "0", persistent = false)
6970
public void sendNewAndDueTaskMessages() {
@@ -135,6 +136,6 @@ public void archiveEvents() {
135136

136137
@Schedule(hour = "1", minute = "25", second = "0", persistent = false)
137138
public void cleanupDeletedDocuments() {
138-
documentStorageFacade.cleanupDeletedDocuments();
139+
documentFacade.cleanupDeletedDocuments();
139140
}
140141
}

sormas-backend/src/main/java/de/symeda/sormas/backend/document/DocumentFacadeEjb.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
*/
1515
package de.symeda.sormas.backend.document;
1616

17+
import java.io.IOException;
1718
import java.sql.Timestamp;
1819
import java.util.List;
1920
import java.util.stream.Collectors;
@@ -45,6 +46,8 @@ public class DocumentFacadeEjb implements DocumentFacade {
4546
private UserService userService;
4647
@EJB
4748
private DocumentService documentService;
49+
@EJB
50+
private DocumentStorageService documentStorageService;
4851

4952
@Inject
5053
private Event<DocumentSaved> documentSavedEvent;
@@ -55,7 +58,7 @@ public DocumentDto getDocumentByUuid(String uuid) {
5558
}
5659

5760
@Override
58-
public DocumentDto saveDocument(DocumentDto dto) {
61+
public DocumentDto saveDocument(DocumentDto dto, byte[] content) throws IOException {
5962
Document existingDocument = dto.getUuid() == null ? documentService.getByUuid(dto.getUuid()) : null;
6063
if (existingDocument != null) {
6164
// TODO: add exception message
@@ -66,6 +69,8 @@ public DocumentDto saveDocument(DocumentDto dto) {
6669
documentService.persist(document);
6770
documentService.doFlush();
6871

72+
documentStorageService.save(document, content);
73+
6974
documentSavedEvent.fire(new DocumentSaved(document));
7075

7176
return toDto(document);
@@ -87,6 +92,21 @@ public String isExistingDocument(DocumentRelatedEntityType type, String uuid, St
8792
return documentService.isExisting(type, uuid, name);
8893
}
8994

95+
@Override
96+
public byte[] read(String uuid) throws IOException {
97+
Document document = documentService.getByUuid(uuid);
98+
return documentStorageService.read(document);
99+
}
100+
101+
@Override
102+
public void cleanupDeletedDocuments() {
103+
List<Document> deleted = documentService.getDeletedDocuments();
104+
for (Document document : deleted) {
105+
documentStorageService.delete(document);
106+
documentService.delete(document);
107+
}
108+
}
109+
90110
public Document fromDto(DocumentDto source) {
91111
Document target = documentService.getByUuid(source.getUuid());
92112
if (target == null) {

sormas-backend/src/main/java/de/symeda/sormas/backend/document/DocumentStorageFacadeEjb.java

Lines changed: 0 additions & 59 deletions
This file was deleted.

sormas-ui/src/main/java/de/symeda/sormas/ui/document/DocumentListComponent.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
import de.symeda.sormas.api.ReferenceDto;
3737
import de.symeda.sormas.api.document.DocumentContext;
3838
import de.symeda.sormas.api.document.DocumentDto;
39-
import de.symeda.sormas.api.document.DocumentStorageFacade;
39+
import de.symeda.sormas.api.document.DocumentFacade;
4040
import de.symeda.sormas.api.i18n.Captions;
4141
import de.symeda.sormas.api.i18n.I18nProperties;
4242
import de.symeda.sormas.api.i18n.Strings;
@@ -148,9 +148,9 @@ private Button buildDownloadButton(DocumentDto document) {
148148
Button viewButton = new Button(VaadinIcons.DOWNLOAD);
149149

150150
StreamResource streamResource = new StreamResource((StreamResource.StreamSource) () -> {
151-
DocumentStorageFacade documentStorageFacade = FacadeProvider.getDocumentStorageFacade();
151+
DocumentFacade documentFacade = FacadeProvider.getDocumentFacade();
152152
try {
153-
return new ByteArrayInputStream(documentStorageFacade.read(document.getUuid()));
153+
return new ByteArrayInputStream(documentFacade.read(document.getUuid()));
154154
} catch (IOException | IllegalArgumentException e) {
155155
new Notification(
156156
String.format(I18nProperties.getString(Strings.errorReadingDocument), document),

sormas-ui/src/main/java/de/symeda/sormas/ui/importer/DocumentReceiver.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,7 @@ private void saveDocument(Upload.SucceededEvent succeededEvent) {
126126
document.setRelatedEntityType(relatedEntityType);
127127
document.setRelatedEntityUuid(relatedEntityUuid);
128128

129-
// document metadata must be saved before file can be stored
130-
FacadeProvider.getDocumentFacade().saveDocument(document);
131-
FacadeProvider.getDocumentStorageFacade().store(document.getUuid(), Files.readAllBytes(file.toPath()));
129+
FacadeProvider.getDocumentFacade().saveDocument(document, Files.readAllBytes(file.toPath()));
132130

133131
callback.run();
134132

sormas-ui/src/test/java/de/symeda/sormas/ui/FacadeProviderMock.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
/*
2+
* SORMAS® - Surveillance Outbreak Response Management & Analysis System
3+
* Copyright © 2016-2020 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
4+
* This program is free software: you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation, either version 3 of the License, or
7+
* (at your option) any later version.
8+
* This program is distributed in the hope that it will be useful,
9+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
* GNU General Public License for more details.
12+
* You should have received a copy of the GNU General Public License
13+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
14+
*/
115
package de.symeda.sormas.ui;
216

317
import de.symeda.sormas.api.ConfigFacade;
@@ -7,7 +21,6 @@
721
import de.symeda.sormas.api.caze.classification.CaseClassificationFacade;
822
import de.symeda.sormas.api.contact.ContactFacade;
923
import de.symeda.sormas.api.document.DocumentFacade;
10-
import de.symeda.sormas.api.document.DocumentStorageFacade;
1124
import de.symeda.sormas.api.epidata.EpiDataFacade;
1225
import de.symeda.sormas.api.event.EventFacade;
1326
import de.symeda.sormas.api.event.EventParticipantFacade;
@@ -35,7 +48,7 @@
3548
import de.symeda.sormas.backend.common.ConfigFacadeEjb.ConfigFacadeEjbLocal;
3649
import de.symeda.sormas.backend.contact.ContactFacadeEjb.ContactFacadeEjbLocal;
3750
import de.symeda.sormas.backend.document.DocumentFacadeEjb;
38-
import de.symeda.sormas.backend.document.DocumentStorageFacadeEjb;
51+
import de.symeda.sormas.backend.document.DocumentFacadeEjb.DocumentFacadeEjbLocal;
3952
import de.symeda.sormas.backend.epidata.EpiDataFacadeEjb.EpiDataFacadeEjbLocal;
4053
import de.symeda.sormas.backend.event.EventFacadeEjb.EventFacadeEjbLocal;
4154
import de.symeda.sormas.backend.event.EventParticipantFacadeEjb.EventParticipantFacadeEjbLocal;
@@ -120,10 +133,7 @@ public <P> P lookupEjbRemote(Class<P> clazz) {
120133
return (P) bm.getBean(CaseImportFacadeEjbLocal.class);
121134
}
122135
if (DocumentFacade.class == clazz) {
123-
return (P) bm.getBean(DocumentFacadeEjb.DocumentFacadeEjbLocal.class);
124-
}
125-
if (DocumentStorageFacade.class == clazz) {
126-
return (P) bm.getBean(DocumentStorageFacadeEjb.class);
136+
return (P) bm.getBean(DocumentFacadeEjbLocal.class);
127137
}
128138

129139
return null;

0 commit comments

Comments
 (0)