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

Commit 0be4d09

Browse files
1 parent 3fda56a commit 0be4d09

6 files changed

Lines changed: 48 additions & 32 deletions

File tree

sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseEditHospitalizationFragment.java

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
import androidx.databinding.ObservableArrayList;
2323

24+
import de.symeda.sormas.api.epidata.EpiDataDto;
25+
import de.symeda.sormas.api.hospitalization.HospitalizationDto;
2426
import de.symeda.sormas.api.hospitalization.PreviousHospitalizationDto;
2527
import de.symeda.sormas.api.utils.YesNoUnknown;
2628
import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers;
@@ -35,6 +37,7 @@
3537
import de.symeda.sormas.app.component.controls.ValueChangeListener;
3638
import de.symeda.sormas.app.core.IEntryItemOnClickListener;
3739
import de.symeda.sormas.app.databinding.FragmentCaseEditHospitalizationLayoutBinding;
40+
import de.symeda.sormas.app.util.FieldVisibilityAndAccessHelper;
3841
import de.symeda.sormas.app.util.InfrastructureHelper;
3942

4043
public class CaseEditHospitalizationFragment extends BaseEditFragment<FragmentCaseEditHospitalizationLayoutBinding, Hospitalization, Case> {
@@ -62,7 +65,7 @@ private void setUpControlListeners() {
6265
final PreviousHospitalization previousHospitalization = (PreviousHospitalization) item;
6366
final PreviousHospitalization previousHospitalizationClone = (PreviousHospitalization) previousHospitalization.clone();
6467
final PreviousHospitalizationDialog dialog =
65-
new PreviousHospitalizationDialog(CaseEditActivity.getActiveActivity(), previousHospitalizationClone);
68+
new PreviousHospitalizationDialog(CaseEditActivity.getActiveActivity(), previousHospitalizationClone, false);
6669

6770
dialog.setPositiveCallback(() -> {
6871
record.getPreviousHospitalizations()
@@ -78,7 +81,7 @@ private void setUpControlListeners() {
7881
getContentBinding().btnAddPrevHosp.setOnClickListener(v -> {
7982
final PreviousHospitalization previousHospitalization = DatabaseHelper.getPreviousHospitalizationDao().build();
8083
final PreviousHospitalizationDialog dialog =
81-
new PreviousHospitalizationDialog(CaseEditActivity.getActiveActivity(), previousHospitalization);
84+
new PreviousHospitalizationDialog(CaseEditActivity.getActiveActivity(), previousHospitalization, true);
8285

8386
dialog.setPositiveCallback(() -> addPreviousHospitalization(previousHospitalization));
8487

@@ -106,7 +109,6 @@ private void removePreviousHospitalization(PreviousHospitalization item) {
106109

107110
private void updatePreviousHospitalizations() {
108111
getContentBinding().setPreviousHospitalizationList(getPreviousHospitalizations());
109-
getContentBinding().setPreviousHospitalizationBindCallback(this::setFieldVisibilitiesAndAccesses);
110112

111113
verifyPrevHospitalizationStatus();
112114
}
@@ -123,6 +125,8 @@ private void verifyPrevHospitalizationStatus() {
123125
} else {
124126
getContentBinding().caseHospitalizationHospitalizedPreviously.disableWarningState();
125127
}
128+
129+
getContentBinding().caseHospitalizationHospitalizedPreviously.setEnabled(getPreviousHospitalizations().size() == 0);
126130
}
127131

128132
// Overrides
@@ -148,31 +152,29 @@ record = caze.getHospitalization();
148152
public void onLayoutBinding(final FragmentCaseEditHospitalizationLayoutBinding contentBinding) {
149153
setUpControlListeners();
150154

151-
contentBinding.caseHospitalizationHospitalizedPreviously.addValueChangedListener(new ValueChangeListener() {
152-
153-
@Override
154-
public void onChange(ControlPropertyField field) {
155-
YesNoUnknown value = (YesNoUnknown) field.getValue();
156-
contentBinding.prevHospitalizationsLayout.setVisibility(value == YesNoUnknown.YES ? View.VISIBLE : View.GONE);
157-
if (value != YesNoUnknown.YES) {
158-
clearPreviousHospitalizations();
159-
}
160-
161-
verifyPrevHospitalizationStatus();
162-
}
163-
});
164-
165155
CaseValidator.initializeHospitalizationValidation(contentBinding, caze);
166156

167157
contentBinding.setData(record);
168158
contentBinding.setCaze(caze);
169159
contentBinding.setPreviousHospitalizationList(getPreviousHospitalizations());
170160
contentBinding.setPrevHosItemClickCallback(onPrevHosItemClickListener);
171161
getContentBinding().setPreviousHospitalizationBindCallback(this::setFieldVisibilitiesAndAccesses);
162+
163+
contentBinding.caseHospitalizationHospitalizedPreviously.addValueChangedListener(field -> {
164+
YesNoUnknown value = (YesNoUnknown) field.getValue();
165+
contentBinding.prevHospitalizationsLayout.setVisibility(value == YesNoUnknown.YES ? View.VISIBLE : View.GONE);
166+
if (value != YesNoUnknown.YES) {
167+
clearPreviousHospitalizations();
168+
}
169+
170+
verifyPrevHospitalizationStatus();
171+
});
172172
}
173173

174174
@Override
175175
protected void onAfterLayoutBinding(FragmentCaseEditHospitalizationLayoutBinding contentBinding) {
176+
setFieldVisibilitiesAndAccesses(HospitalizationDto.class, contentBinding.mainContent);
177+
176178
InfrastructureHelper
177179
.initializeHealthFacilityDetailsFieldVisibility(contentBinding.caseDataHealthFacility, contentBinding.caseDataHealthFacilityDetails);
178180

@@ -192,6 +194,11 @@ public int getEditLayout() {
192194
}
193195

194196
private void setFieldVisibilitiesAndAccesses(View view) {
195-
setFieldVisibilitiesAndAccesses(PreviousHospitalizationDto.class, (ViewGroup) view);
197+
FieldVisibilityAndAccessHelper.setFieldVisibilitiesAndAccesses(
198+
PreviousHospitalizationDto.class,
199+
(ViewGroup) view,
200+
new FieldVisibilityCheckers(),
201+
getFieldAccessCheckers());
202+
196203
}
197204
}

sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/PreviousHospitalizationDialog.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
package de.symeda.sormas.app.caze.edit;
1717

18+
import static android.view.View.GONE;
1819
import static de.symeda.sormas.app.core.notification.NotificationType.ERROR;
1920

2021
import java.util.List;
@@ -46,10 +47,11 @@ public class PreviousHospitalizationDialog extends FormDialog {
4647

4748
private PreviousHospitalization data;
4849
private DialogPreviousHospitalizationLayoutBinding contentBinding;
50+
private boolean create;
4951

5052
// Constructor
5153

52-
PreviousHospitalizationDialog(final FragmentActivity activity, PreviousHospitalization previousHospitalization) {
54+
PreviousHospitalizationDialog(final FragmentActivity activity, PreviousHospitalization previousHospitalization, boolean create) {
5355
super(
5456
activity,
5557
R.layout.dialog_root_layout,
@@ -60,6 +62,7 @@ public class PreviousHospitalizationDialog extends FormDialog {
6062
UiFieldAccessCheckers.forSensitiveData(previousHospitalization.isPseudonymized()));
6163

6264
this.data = previousHospitalization;
65+
this.create = create;
6366
}
6467

6568
// Overrides
@@ -139,7 +142,7 @@ public void onPositiveClick() {
139142

140143
@Override
141144
public boolean isDeleteButtonVisible() {
142-
return true;
145+
return !create;
143146
}
144147

145148
@Override

sormas-app/app/src/main/java/de/symeda/sormas/app/epidata/EpiDataBurialDialog.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,11 @@ public class EpiDataBurialDialog extends FormDialog {
4444

4545
private EpiDataBurial data;
4646
private DialogEpidBurialEditLayoutBinding contentBinding;
47+
private boolean create;
4748

4849
// Constructor
4950

50-
EpiDataBurialDialog(final FragmentActivity activity, EpiDataBurial epiDataBurial) {
51+
EpiDataBurialDialog(final FragmentActivity activity, EpiDataBurial epiDataBurial, boolean create) {
5152
super(
5253
activity,
5354
R.layout.dialog_root_layout,
@@ -58,6 +59,7 @@ public class EpiDataBurialDialog extends FormDialog {
5859
UiFieldAccessCheckers.forSensitiveData(epiDataBurial.isPseudonymized()));
5960

6061
this.data = epiDataBurial;
62+
this.create = create;
6163
}
6264

6365
// Instance methods
@@ -120,7 +122,7 @@ public void onPositiveClick() {
120122

121123
@Override
122124
public boolean isDeleteButtonVisible() {
123-
return true;
125+
return !create;
124126
}
125127

126128
@Override

sormas-app/app/src/main/java/de/symeda/sormas/app/epidata/EpiDataGatheringDialog.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,11 @@ public class EpiDataGatheringDialog extends FormDialog {
4444

4545
private EpiDataGathering data;
4646
private DialogEpidGatheringEditLayoutBinding contentBinding;
47+
private boolean create;
4748

4849
// Constructor
4950

50-
EpiDataGatheringDialog(final FragmentActivity activity, EpiDataGathering epiDataGathering) {
51+
EpiDataGatheringDialog(final FragmentActivity activity, EpiDataGathering epiDataGathering, boolean create) {
5152
super(
5253
activity,
5354
R.layout.dialog_root_layout,
@@ -58,6 +59,7 @@ public class EpiDataGatheringDialog extends FormDialog {
5859
UiFieldAccessCheckers.forSensitiveData(epiDataGathering.isPseudonymized()));
5960

6061
this.data = epiDataGathering;
62+
this.create = create;
6163
}
6264

6365
// Instance methods
@@ -118,7 +120,7 @@ public void onPositiveClick() {
118120

119121
@Override
120122
public boolean isDeleteButtonVisible() {
121-
return true;
123+
return !create;
122124
}
123125

124126
@Override

sormas-app/app/src/main/java/de/symeda/sormas/app/epidata/EpiDataTravelDialog.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,11 @@ public class EpiDataTravelDialog extends FormDialog {
4343

4444
private EpiDataTravel data;
4545
private DialogEpidTravelEditLayoutBinding contentBinding;
46+
private boolean create;
4647

4748
// Constructor
4849

49-
EpiDataTravelDialog(final FragmentActivity activity, EpiDataTravel epiDataTravel) {
50+
EpiDataTravelDialog(final FragmentActivity activity, EpiDataTravel epiDataTravel, boolean create) {
5051
super(
5152
activity,
5253
R.layout.dialog_root_layout,
@@ -57,6 +58,7 @@ public class EpiDataTravelDialog extends FormDialog {
5758
UiFieldAccessCheckers.forSensitiveData(epiDataTravel.isPseudonymized()));
5859

5960
this.data = epiDataTravel;
61+
this.create = create;
6062
}
6163

6264
// Overrides
@@ -100,7 +102,7 @@ public void onPositiveClick() {
100102

101103
@Override
102104
public boolean isDeleteButtonVisible() {
103-
return true;
105+
return !create;
104106
}
105107

106108
@Override

sormas-app/app/src/main/java/de/symeda/sormas/app/epidata/EpidemiologicalDataEditFragment.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ private void setUpControlListeners(final FragmentEditEpidLayoutBinding contentBi
9292
onGatheringItemClickListener = (v, item) -> {
9393
final EpiDataGathering gathering = (EpiDataGathering) item;
9494
final EpiDataGathering gatheringClone = (EpiDataGathering) gathering.clone();
95-
final EpiDataGatheringDialog dialog = new EpiDataGatheringDialog(getActivity(), gatheringClone);
95+
final EpiDataGatheringDialog dialog = new EpiDataGatheringDialog(getActivity(), gatheringClone, false);
9696

9797
dialog.setPositiveCallback(() -> {
9898
record.getGatherings().set(record.getGatherings().indexOf(gathering), gatheringClone);
@@ -107,7 +107,7 @@ private void setUpControlListeners(final FragmentEditEpidLayoutBinding contentBi
107107
onTravelItemClickListener = (v, item) -> {
108108
final EpiDataTravel travel = (EpiDataTravel) item;
109109
final EpiDataTravel travelClone = (EpiDataTravel) travel.clone();
110-
final EpiDataTravelDialog dialog = new EpiDataTravelDialog(getActivity(), travelClone);
110+
final EpiDataTravelDialog dialog = new EpiDataTravelDialog(getActivity(), travelClone, false);
111111

112112
dialog.setPositiveCallback(() -> {
113113
record.getTravels().set(record.getTravels().indexOf(travel), travelClone);
@@ -122,7 +122,7 @@ private void setUpControlListeners(final FragmentEditEpidLayoutBinding contentBi
122122
onBurialItemClickListener = (v, item) -> {
123123
final EpiDataBurial burial = (EpiDataBurial) item;
124124
final EpiDataBurial burialClone = (EpiDataBurial) burial.clone();
125-
final EpiDataBurialDialog dialog = new EpiDataBurialDialog(getActivity(), burialClone);
125+
final EpiDataBurialDialog dialog = new EpiDataBurialDialog(getActivity(), burialClone, false);
126126

127127
dialog.setPositiveCallback(() -> {
128128
record.getBurials().set(record.getBurials().indexOf(burial), burialClone);
@@ -136,7 +136,7 @@ private void setUpControlListeners(final FragmentEditEpidLayoutBinding contentBi
136136

137137
contentBinding.btnAddGathering.setOnClickListener(v -> {
138138
final EpiDataGathering gathering = DatabaseHelper.getEpiDataGatheringDao().build();
139-
final EpiDataGatheringDialog dialog = new EpiDataGatheringDialog(CaseEditActivity.getActiveActivity(), gathering);
139+
final EpiDataGatheringDialog dialog = new EpiDataGatheringDialog(CaseEditActivity.getActiveActivity(), gathering, true);
140140

141141
dialog.setPositiveCallback(() -> addGathering(gathering));
142142

@@ -147,7 +147,7 @@ private void setUpControlListeners(final FragmentEditEpidLayoutBinding contentBi
147147

148148
contentBinding.btnAddTravel.setOnClickListener(v -> {
149149
final EpiDataTravel travel = DatabaseHelper.getEpiDataTravelDao().build();
150-
final EpiDataTravelDialog dialog = new EpiDataTravelDialog(CaseEditActivity.getActiveActivity(), travel);
150+
final EpiDataTravelDialog dialog = new EpiDataTravelDialog(CaseEditActivity.getActiveActivity(), travel, true);
151151

152152
dialog.setPositiveCallback(() -> addTravel(travel));
153153

@@ -158,7 +158,7 @@ private void setUpControlListeners(final FragmentEditEpidLayoutBinding contentBi
158158

159159
contentBinding.btnAddBurial.setOnClickListener(v -> {
160160
final EpiDataBurial burial = DatabaseHelper.getEpiDataBurialDao().build();
161-
final EpiDataBurialDialog dialog = new EpiDataBurialDialog(CaseEditActivity.getActiveActivity(), burial);
161+
final EpiDataBurialDialog dialog = new EpiDataBurialDialog(CaseEditActivity.getActiveActivity(), burial, true);
162162

163163
dialog.setPositiveCallback(() -> addBurial(burial));
164164

0 commit comments

Comments
 (0)