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

Commit e498bb7

Browse files
SORMAS-Foundation#3171 - Added feature configuration for outbreaks
1 parent 22f3f4f commit e498bb7

6 files changed

Lines changed: 44 additions & 18 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/feature/FeatureType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ public enum FeatureType {
3636
CASE_FOLLOWUP(true, false, null),
3737
TASK_NOTIFICATIONS(true, true, null),
3838
OTHER_NOTIFICATIONS(true, true, null),
39-
DOCUMENTS(true, false, null);
39+
DOCUMENTS(true, false, null),
40+
OUTBREAKS(true, true, null);
4041

4142
/**
4243
* Server feature means that the feature only needs to be configured once per server since they define the way the system

sormas-backend/src/main/java/de/symeda/sormas/backend/disease/DiseaseFacadeEjb.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package de.symeda.sormas.backend.disease;
1919

2020
import java.util.Date;
21+
import java.util.HashMap;
2122
import java.util.List;
2223
import java.util.Map;
2324
import java.util.stream.Collectors;
@@ -31,12 +32,14 @@
3132
import de.symeda.sormas.api.disease.DiseaseBurdenDto;
3233
import de.symeda.sormas.api.disease.DiseaseFacade;
3334
import de.symeda.sormas.api.event.EventCriteria;
35+
import de.symeda.sormas.api.feature.FeatureType;
3436
import de.symeda.sormas.api.outbreak.OutbreakCriteria;
3537
import de.symeda.sormas.api.region.DistrictReferenceDto;
3638
import de.symeda.sormas.api.region.RegionReferenceDto;
3739
import de.symeda.sormas.backend.caze.CaseFacadeEjb.CaseFacadeEjbLocal;
3840
import de.symeda.sormas.backend.disease.DiseaseConfigurationFacadeEjb.DiseaseConfigurationFacadeEjbLocal;
3941
import de.symeda.sormas.backend.event.EventFacadeEjb.EventFacadeEjbLocal;
42+
import de.symeda.sormas.backend.feature.FeatureConfigurationFacadeEjb.FeatureConfigurationFacadeEjbLocal;
4043
import de.symeda.sormas.backend.outbreak.OutbreakFacadeEjb.OutbreakFacadeEjbLocal;
4144
import de.symeda.sormas.backend.person.PersonFacadeEjb.PersonFacadeEjbLocal;
4245
import de.symeda.sormas.backend.region.District;
@@ -57,6 +60,8 @@ public class DiseaseFacadeEjb implements DiseaseFacade {
5760
private PersonFacadeEjbLocal personFacade;
5861
@EJB
5962
private DiseaseConfigurationFacadeEjbLocal diseaseConfigurationFacade;
63+
@EJB
64+
private FeatureConfigurationFacadeEjbLocal featureConfigurationFacade;
6065

6166
@Override
6267
public List<DiseaseBurdenDto> getDiseaseBurdenForDashboard(
@@ -80,8 +85,13 @@ public List<DiseaseBurdenDto> getDiseaseBurdenForDashboard(
8085
eventFacade.getEventCountByDisease(new EventCriteria().region(regionRef).district(districtRef).reportedBetween(from, to));
8186

8287
//outbreaks
83-
Map<Disease, Long> outbreakDistrictsCount = outbreakFacade
84-
.getOutbreakDistrictCountByDisease(new OutbreakCriteria().region(regionRef).district(districtRef).reportedBetween(from, to));
88+
Map<Disease, Long> outbreakDistrictsCount;
89+
if (featureConfigurationFacade.isFeatureEnabled(FeatureType.OUTBREAKS)) {
90+
outbreakDistrictsCount = outbreakFacade
91+
.getOutbreakDistrictCountByDisease(new OutbreakCriteria().region(regionRef).district(districtRef).reportedBetween(from, to));
92+
} else {
93+
outbreakDistrictsCount = new HashMap<>();
94+
}
8595

8696
//last report district
8797
Map<Disease, District> lastReportedDistricts = caseFacade.getLastReportedDistrictByDisease(caseCriteria, true, true);

sormas-ui/src/main/java/de/symeda/sormas/ui/MainScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ public View getView(String viewName) {
230230
if (permitted(UserRight.CONFIGURATION_ACCESS)) {
231231
AbstractConfigurationView.registerViews(navigator);
232232
menu.addView(
233-
OutbreaksView.class,
233+
FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.OUTBREAKS) ? OutbreaksView.class : CountriesView.class,
234234
AbstractConfigurationView.ROOT_VIEW_NAME,
235235
I18nProperties.getCaption(Captions.mainMenuConfiguration),
236236
VaadinIcons.COGS);

sormas-ui/src/main/java/de/symeda/sormas/ui/caze/AbstractCaseView.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@ public void refreshMenu(SubMenu menu, Label infoLabel, Label infoLabelSub, Strin
115115
CaseDataDto caze = FacadeProvider.getCaseFacade().getCaseDataByUuid(getReference().getUuid());
116116

117117
// Handle outbreaks for the disease and district of the case
118-
if (FacadeProvider.getOutbreakFacade().hasOutbreak(caze.getDistrict(), caze.getDisease()) && caze.getDisease().usesSimpleViewForOutbreaks()) {
118+
if (FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.OUTBREAKS)
119+
&& FacadeProvider.getOutbreakFacade().hasOutbreak(caze.getDistrict(), caze.getDisease())
120+
&& caze.getDisease().usesSimpleViewForOutbreaks()) {
119121
hasOutbreak = true;
120122

121123
// viewConfiguration.setViewMode(ViewMode.SIMPLE);
@@ -141,8 +143,10 @@ public void refreshMenu(SubMenu menu, Label infoLabel, Label infoLabelSub, Strin
141143
menu.addView(CasesView.VIEW_NAME, I18nProperties.getPrefixCaption(CaseDataDto.I18N_PREFIX, Captions.caseCasesList));
142144
menu.addView(CaseDataView.VIEW_NAME, I18nProperties.getCaption(CaseDataDto.I18N_PREFIX), params);
143145

144-
boolean showExtraMenuEntries =
145-
!hasOutbreak || !caze.getDisease().usesSimpleViewForOutbreaks() || viewConfiguration.getViewMode() != ViewMode.SIMPLE;
146+
boolean showExtraMenuEntries = FacadeProvider.getFeatureConfigurationFacade().isFeatureDisabled(FeatureType.OUTBREAKS)
147+
|| !hasOutbreak
148+
|| !caze.getDisease().usesSimpleViewForOutbreaks()
149+
|| viewConfiguration.getViewMode() != ViewMode.SIMPLE;
146150
if (showExtraMenuEntries) {
147151
menu.addView(CasePersonView.VIEW_NAME, I18nProperties.getPrefixCaption(CaseDataDto.I18N_PREFIX, CaseDataDto.PERSON), params);
148152
if (caze.getDisease() == Disease.CONGENITAL_RUBELLA) {

sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/AbstractConfigurationView.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,19 @@ protected AbstractConfigurationView(String viewName) {
5959
public void refreshMenu(SubMenu menu, Label infoLabel, Label infoLabelSub, String params) {
6060
menu.removeAllViews();
6161

62-
menu.addView(
63-
OutbreaksView.VIEW_NAME,
64-
I18nProperties.getPrefixCaption("View", OutbreaksView.VIEW_NAME.replaceAll("/", ".") + ".short", ""),
65-
params);
62+
if (FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.OUTBREAKS)) {
63+
menu.addView(
64+
OutbreaksView.VIEW_NAME,
65+
I18nProperties.getPrefixCaption("View", OutbreaksView.VIEW_NAME.replaceAll("/", ".") + ".short", ""),
66+
params);
67+
}
6668

6769
if (UserProvider.getCurrent().hasUserRight(UserRight.INFRASTRUCTURE_VIEW)) {
6870
menu.addView(
69-
CountriesView.VIEW_NAME,
70-
I18nProperties.getPrefixCaption("View", CountriesView.VIEW_NAME.replaceAll("/", ".") + ".short", ""),
71-
null,
72-
false);
71+
CountriesView.VIEW_NAME,
72+
I18nProperties.getPrefixCaption("View", CountriesView.VIEW_NAME.replaceAll("/", ".") + ".short", ""),
73+
null,
74+
false);
7375
if (FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.INFRASTRUCTURE_TYPE_AREA)) {
7476
menu.addView(
7577
AreasView.VIEW_NAME,
@@ -143,7 +145,10 @@ public void refreshMenu(SubMenu menu, Label infoLabel, Label infoLabelSub, Strin
143145
}
144146

145147
public static void registerViews(Navigator navigator) {
146-
navigator.addView(OutbreaksView.VIEW_NAME, OutbreaksView.class);
148+
149+
if (FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.OUTBREAKS)) {
150+
navigator.addView(OutbreaksView.VIEW_NAME, OutbreaksView.class);
151+
}
147152

148153
if (UserProvider.getCurrent().hasUserRight(UserRight.INFRASTRUCTURE_VIEW)) {
149154
if (FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.INFRASTRUCTURE_TYPE_AREA)) {

sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/surveillance/DiseaseStatisticsComponent.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,11 @@
3131
import com.vaadin.ui.Layout;
3232

3333
import de.symeda.sormas.api.Disease;
34+
import de.symeda.sormas.api.FacadeProvider;
3435
import de.symeda.sormas.api.caze.CaseClassification;
3536
import de.symeda.sormas.api.caze.DashboardCaseDto;
3637
import de.symeda.sormas.api.event.EventStatus;
38+
import de.symeda.sormas.api.feature.FeatureType;
3739
import de.symeda.sormas.api.i18n.Captions;
3840
import de.symeda.sormas.api.i18n.Descriptions;
3941
import de.symeda.sormas.api.i18n.I18nProperties;
@@ -165,7 +167,9 @@ private DashboardStatisticsSubComponent createOutbreakDistrictAndCaseFatalityLay
165167

166168
layout.addComponent(this.createLastReportedDistrictComponent());
167169

168-
layout.addComponent(createOutbreakDistrictComponent());
170+
if (FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.OUTBREAKS)) {
171+
layout.addComponent(createOutbreakDistrictComponent());
172+
}
169173

170174
layout.addComponent(createCasesInQuarantineLayout());
171175

@@ -447,7 +451,9 @@ public void refresh() {
447451
updateCaseComponent(disease);
448452
updateCaseFatalityComponent(disease);
449453
updateLastReportedDistrictComponent(disease);
450-
updateOutbreakDistrictComponent(disease);
454+
if (FacadeProvider.getFeatureConfigurationFacade().isFeatureEnabled(FeatureType.OUTBREAKS)) {
455+
updateOutbreakDistrictComponent(disease);
456+
}
451457
updateEventComponent(disease);
452458
updateTestResultComponent(disease);
453459
updateCasesInQuarantineData();

0 commit comments

Comments
 (0)