Skip to content

Commit 45e5309

Browse files
committed
💡cleanup and minor enhancements
1 parent c5738fd commit 45e5309

16 files changed

Lines changed: 231 additions & 347 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/survey/SurveyTokenIndexDto.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ public class SurveyTokenIndexDto extends PseudonymizableIndexDto {
2323

2424
public static final String I18N_PREFIX = "SurveyToken";
2525
private static final long serialVersionUID = 4358173798026207265L;
26-
2726
public static final String TOKEN = "token";
2827
public static final String ASSIGNED_CASE_UUID = "assignedCaseUuid";
2928
public static final String ASSIGNEMENT_DATE = "assignmentDate";
@@ -41,6 +40,7 @@ public class SurveyTokenIndexDto extends PseudonymizableIndexDto {
4140
private final String generatedDocumentUuid;
4241
private final String generatedDocumentName;
4342
private final String generatedDocumentMimeType;
43+
private final String externalRespondentId;
4444

4545
public SurveyTokenIndexDto(
4646
String uuid,
@@ -54,7 +54,8 @@ public SurveyTokenIndexDto(
5454
String generatedDocumentUuid,
5555
String generatedDocumentName,
5656
String generatedDocumentMimeType,
57-
Date generatedDocumentDate) {
57+
Date generatedDocumentDate,
58+
String externalRespondentId) {
5859
super(uuid);
5960
this.surveyUuid = surveyUuid;
6061
this.surveyName = surveyName;
@@ -67,6 +68,7 @@ public SurveyTokenIndexDto(
6768
this.generatedDocumentName = generatedDocumentName;
6869
this.generatedDocumentMimeType = generatedDocumentMimeType;
6970
this.responseReceivedDate = generatedDocumentDate;
71+
this.externalRespondentId = externalRespondentId;
7072
}
7173

7274
public String getSurveyUuid() {
@@ -116,4 +118,8 @@ public String getGeneratedDocumentMimeType() {
116118
public Date getResponseReceivedDate() {
117119
return responseReceivedDate;
118120
}
121+
122+
public String getExternalRespondentId() {
123+
return externalRespondentId;
124+
}
119125
}

sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.Date;
2323
import java.util.List;
2424
import java.util.Objects;
25+
import java.util.Optional;
2526
import java.util.Set;
2627
import java.util.concurrent.ExecutionException;
2728
import java.util.stream.Collectors;
@@ -136,6 +137,8 @@
136137
UserRight._EXTERNAL_MESSAGE_DOCTOR_DECLARATION_VIEW })
137138
public class ExternalMessageFacadeEjb implements ExternalMessageFacade {
138139

140+
public static final String SURVEY_PERIOD_INTERVAL_HOURS = "SURVEY_PERIOD_INTERVAL_HOURS";
141+
139142
private final Logger logger = LoggerFactory.getLogger(getClass());
140143

141144
@PersistenceContext(unitName = ModelConstants.PERSISTENCE_UNIT_NAME)
@@ -327,9 +330,10 @@ public ExternalMessageDto saveAndProcessLabmessage(@Valid ExternalMessageDto lab
327330
public List<ExternalMessageDto> saveAndProcessSurveyResponses(Date since) {
328331

329332
if (since == null) {
330-
// TODO: configurable date value.
331-
logger.error("Since date should be configurable");
332-
since = DateHelper.addDays(new Date(), -7);
333+
int hoursRange =
334+
Integer.parseInt(Optional.ofNullable(systemConfigurationValueFacade.getValue(SURVEY_PERIOD_INTERVAL_HOURS)).orElse("168"));
335+
336+
since = DateHelper.addSeconds(new Date(), -(hoursRange * 3600));
333337
}
334338

335339
ExternalMessageAdapterFacade externalLabResultsFacade = getSurveyExternalMessageFacade();

sormas-backend/src/main/java/de/symeda/sormas/backend/json/ObjectMapperProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
import com.fasterxml.jackson.databind.SerializationFeature;
2525
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
2626

27+
/**
28+
* Permits unified access to a pre-configured {@link ObjectMapper} instance.
29+
*/
2730
public final class ObjectMapperProvider {
2831

2932
private static final Logger logger = LoggerFactory.getLogger(ObjectMapperProvider.class);

sormas-backend/src/main/java/de/symeda/sormas/backend/patch/BusinessDtoFacade.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
import de.symeda.sormas.backend.immunization.ImmunizationFacadeEjb;
2525
import de.symeda.sormas.backend.person.PersonFacadeEjb;
2626

27+
/**
28+
* Meant as single entry point for usages were multiple Business DTOs must be fetched or saved.
29+
*/
2730
@ApplicationScoped
2831
public class BusinessDtoFacade {
2932

@@ -99,24 +102,58 @@ public CaseDataDto getCaseDataDto(String caseUuid) {
99102
.orElseThrow(() -> new IllegalStateException(String.format("No CaseDataDto found for [%s]", caseUuid)));
100103
}
101104

105+
/**
106+
* Meant for creational purposes.
107+
*
108+
* @param entityClass
109+
* target class
110+
* @param caseDataDto
111+
* linked case
112+
* @return DTO if found.
113+
* @param <T>
114+
* types
115+
*/
102116
@Nullable
103117
public <T extends EntityDto> T fetch(@NotNull Class<T> entityClass, CaseDataDto caseDataDto) {
104118
return Optional.ofNullable((Function<CaseDataDto, T>) dtoRetrieverDictionary.get(entityClass))
105119
.orElseThrow(() -> new IllegalStateException(String.format("No fetch function defined for: [%s]", entityClass)))
106120
.apply(caseDataDto);
107121
}
108122

123+
/**
124+
* Meant for display purposes.
125+
*
126+
* @param i18nName
127+
* DtoPrefix per example {@link PersonDto#I18N_PREFIX}.
128+
* @param caseDataDto
129+
* linked case.
130+
* @return entity dto if found.
131+
*/
109132
@Nullable
110133
public List<? extends EntityDto> fetchByI18nName(@NotNull String i18nName, CaseDataDto caseDataDto) {
111134
return Optional.ofNullable(dtoRetrieverByI18nDictionary.get(i18nName))
112135
.orElseThrow(() -> new IllegalStateException(String.format("No fetch function defined for: [%s]", i18nName)))
113136
.apply(caseDataDto);
114137
}
115138

139+
/**
140+
* For displaying purposes what purposes can be retrieved.
141+
*
142+
* @return prefixes that can be fetched through their I18n Prefix.
143+
*/
116144
public Set<String> fetchablePrefixes() {
117145
return dtoRetrieverByI18nDictionary.keySet();
118146
}
119147

148+
/**
149+
* Single entry for saving a business DTO.
150+
*
151+
* @param entityDto
152+
* business DTO
153+
* @return saved DTO.
154+
* @param <T>
155+
* type
156+
*/
120157
public <T extends EntityDto> T save(@NotNull EntityDto entityDto) {
121158
Class<? extends EntityDto> entityDtoClass = entityDto.getClass();
122159

sormas-backend/src/main/java/de/symeda/sormas/backend/patch/DataPatcherImpl.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,6 @@ private boolean anyFieldPatchedWithPrefix(Map<String, Object> validPatchDictiona
237237
.collect(CollectorUtils.toNullSafeMap(de.symeda.sormas.api.patch.SinglePatchResult::getFieldName, fct));
238238
}
239239

240-
// TODO: make usable for external use
241240
private @NotNull de.symeda.sormas.api.patch.SinglePatchResult valueMappingResult(
242241
Tuple<String, Tuple<DataPatchFailureCause, Object>> entry,
243242
Disease disease,
@@ -314,7 +313,6 @@ private DataPatchFailureCause extractFailureCause(Tuple<String, Tuple<DataPatchF
314313
return entry.getSecond().getFirst();
315314
}
316315

317-
// TODO: make usable for external use
318316
private Optional<de.symeda.sormas.api.patch.SinglePatchResult> fieldMappingResult(
319317
Tuple<String, Tuple<DataPatchFailureCause, Object>> entry,
320318
Disease disease,

sormas-backend/src/main/java/de/symeda/sormas/backend/patch/PathFailureCause.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
import de.symeda.sormas.api.patch.DataPatchFailureCause;
66
import de.symeda.sormas.api.patch.partial_retrieval.PartialRetrievalFailureCause;
77

8+
/**
9+
* Occurs when trying to access path.
10+
*/
811
public enum PathFailureCause {
912

1013
INVALID_PATH_FORMAT(DataPatchFailureCause.INVALID_PATH_FORMAT, PartialRetrievalFailureCause.INVALID_PATH_FORMAT),

sormas-backend/src/main/java/de/symeda/sormas/backend/patch/alias/PathAliasHelper.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ public class PathAliasHelper {
3232

3333
private final static Logger logger = LoggerFactory.getLogger(PathAliasHelper.class);
3434

35-
// TODO: define configurable additional aliases ?
36-
3735
public static final Map<String, String> DEFAULT_ALIAS_DICTIONARY = buildDefaultAliasDictionary();
3836

3937
public static final Map<String, Set<String>> DEFAULT_FORBIDDEN_ALIASES_DICTIONARY =
@@ -78,7 +76,6 @@ public Tuple<String, PathFailureCause> resolveAlias(String pathWithPotentialAlia
7876
return tupleWithFailure(PathFailureCause.FORBIDDEN_NON_UNIQUE_ALIAS);
7977
}
8078

81-
// TODO: refactor this
8279
String pathWithFixedRootObjectReferences = REFERENCE_TO_ROOT_DICTIONARY.values()
8380
.stream()
8481
.reduce(

sormas-backend/src/main/java/de/symeda/sormas/backend/patch/mapping/impl/fieldmapper/PersonBirthDateFieldMapper.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,9 @@ public Optional<DataPatchFailure> map(FieldPatchRequest request) {
4747

4848
Date birthDate = result.getData();
4949

50-
// TODO: remove duplication.
5150
Calendar calendar = Calendar.getInstance();
5251
calendar.setTime(birthDate);
5352
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
54-
// In calendar API months are indexed from 0 @see https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#MONTH
5553
int birthdateMonth = calendar.get(Calendar.MONTH) + 1;
5654
int year = calendar.get(Calendar.YEAR);
5755

sormas-backend/src/main/java/de/symeda/sormas/backend/patch/mapping/impl/fieldmapper/PersonContactDetailsFieldMapper.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
import de.symeda.sormas.api.person.PhoneNumberType;
2626
import de.symeda.sormas.api.utils.DataHelper;
2727

28+
/**
29+
* Allows to set the phone number or email contact info of a person with within a single mapper.
30+
*/
2831
@ApplicationScoped
2932
public class PersonContactDetailsFieldMapper implements FieldCustomMapper {
3033

0 commit comments

Comments
 (0)