Skip to content

Commit 3e8297a

Browse files
authored
Import Survey Tokens #13191 (#13272)
* Import Survey Tokens #13191
1 parent 043df68 commit 3e8297a

File tree

17 files changed

+332
-10
lines changed

17 files changed

+332
-10
lines changed

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ public interface Captions {
8585
String actionImportAllContinents = "actionImportAllContinents";
8686
String actionImportAllCountries = "actionImportAllCountries";
8787
String actionImportAllSubcontinents = "actionImportAllSubcontinents";
88+
String actionImportSurveyTokens = "actionImportSurveyTokens";
8889
String actionLastModifiedByLabel = "actionLastModifiedByLabel";
8990
String actionLeaveBulkEditMode = "actionLeaveBulkEditMode";
9091
String actionLogout = "actionLogout";

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Strings.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,7 @@ public interface Strings {
706706
String headingImportRegions = "headingImportRegions";
707707
String headingImportSelfReports = "headingImportSelfReports";
708708
String headingImportSubcontinents = "headingImportSubcontinents";
709+
String headingImportSurveyTokens = "headingImportSurveyTokens";
709710
String headingImportTravelEntries = "headingImportTravelEntries";
710711
String headingIncorrectDateRange = "headingIncorrectDateRange";
711712
String headingInformationSource = "headingInformationSource";

sormas-api/src/main/java/de/symeda/sormas/api/importexport/ImportFacade.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ public interface ImportFacade {
7373

7474
void generateSelfReportImportTemplateFile(List<FeatureConfigurationDto> featureConfigurations) throws IOException, NoSuchFieldException;
7575

76+
void generateSurveyTokenImportTemplateFile(List<FeatureConfigurationDto> featureConfigurations) throws IOException, NoSuchFieldException;
77+
7678
String getCaseImportTemplateFileName();
7779

7880
String getCaseImportTemplateFilePath();
@@ -154,4 +156,6 @@ public interface ImportFacade {
154156
String getSelfReportImportTemplateFilePath();
155157

156158
String getSelfReportImportTemplateFileName();
159+
160+
String getSurveyTokenImportTemplateFilePath();
157161
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ public static SurveyTokenDto build() {
6363
return token;
6464
}
6565

66+
public static SurveyTokenDto build(SurveyDto survey) {
67+
SurveyTokenDto token = new SurveyTokenDto();
68+
token.setUuid(DataHelper.createUuid());
69+
token.setSurvey(new SurveyReferenceDto(survey.getUuid(), survey.getName()));
70+
71+
return token;
72+
}
73+
6674
public SurveyReferenceDto getSurvey() {
6775
return survey;
6876
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,9 @@ public interface SurveyTokenFacade {
3434
List<SurveyTokenIndexDto> getIndexList(SurveyTokenCriteria criteria, Integer first, Integer max, List<SortProperty> sortProperties);
3535

3636
void deletePermanent(String uuid);
37+
38+
String getSurveyTokensImportTemplateFilePath();
39+
40+
String getSurveyTokensImportTemplateFileName();
41+
3742
}

sormas-api/src/main/resources/captions.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ actionDone = Done
198198
actionConfirmAction = Confirm action
199199
actionAefiSelectPrimarySuspectVaccination = Select Suspect Vaccination
200200
actionAefiAssignNewReportingIdNumber = "Assign New AEFI ID"
201+
actionImportSurveyTokens = Import survey tokens
201202
activityAsCaseFlightNumber=Flight number
202203
ActivityAsCase=Activity as case
203204
ActivityAsCase.startDate=Start of activity

sormas-api/src/main/resources/strings.properties

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,6 @@ entityContactVisits = Contact visits
290290
entityContacts=Contacts
291291
entityContinents=Continents
292292
entityCountries = Countries
293-
entityCustomizableEnumValues = Customizable enum values
294293
entityDataDictionary= Data dictionary
295294
entityDataProtectionDictionary= Data protection dictionary
296295
entityDiseaseClassifications = Disease classifications
@@ -344,10 +343,7 @@ entityUsers = Users
344343
entityVaccinations = Vaccinations
345344
entityVisits = Visits
346345
entityWeeklyReports = Weekly reports
347-
entityOutbreaks = Outbreaks
348346
entityCustomizableEnumValues = Customizable enum values
349-
entityCampaignFormMeta = Campaign form meta
350-
entityCampaignFormData = Campaign form data
351347
entityAdverseEvent = Adverse event
352348
entityAdverseEvents = Adverse events
353349
entityAdverseEventInvestigation = Adverse event investigation
@@ -913,6 +909,7 @@ headingAefiInvestigationSelectConcernedVaccine=Select concerned vaccine
913909
headingAefiInvestigationFormSubHeading=(Only for Serious Adverse Events Following Immunization ? Death / Disability / Hospitalization / Cluster)
914910
headingSurveySideComponent=Surveys
915911
headingCaseSurveyDetails=Survey details
912+
headingImportSurveyTokens = Import Survey Tokens
916913

917914
# Info texts
918915
infoActivityAsCaseInvestigation = <i>Please document ALL relevant activities after infection:</i>

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,6 +1018,12 @@ private void createImportTemplateFiles(List<FeatureConfigurationDto> featureConf
10181018
} catch (IOException | NoSuchFieldException e) {
10191019
logger.error("Could not create self report import template .csv file.");
10201020
}
1021+
1022+
try {
1023+
importFacade.generateSurveyTokenImportTemplateFile(featureConfigurations);
1024+
} catch (IOException | NoSuchFieldException e) {
1025+
logger.error("Could not create survey token import template .csv file.");
1026+
}
10211027
}
10221028

10231029
private void createMissingDiseaseConfigurations() {

sormas-backend/src/main/java/de/symeda/sormas/backend/importexport/ImportFacadeEjb.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
import javax.validation.Validator;
7575
import javax.validation.ValidatorFactory;
7676

77+
import de.symeda.sormas.api.survey.SurveyTokenDto;
7778
import org.apache.commons.lang3.StringUtils;
7879
import org.apache.commons.lang3.text.WordUtils;
7980
import org.slf4j.Logger;
@@ -220,6 +221,7 @@ public class ImportFacadeEjb implements ImportFacade {
220221
private static final String TRAVEL_ENTRY_IMPORT_TEMPLATE_FILE_NAME = "import_travel_entry_template.csv";
221222
private static final String ENVIRONMENT_IMPORT_TEMPLATE_FILE_NAME = "import_environment_template.csv";
222223
private static final String SELF_REPORT_IMPORT_TEMPLATE_FILE_NAME = "import_self_report_template.csv";
224+
private static final String SURVEY_TOKENS_IMPORT_TEMPLATE_FILE_NAME = "import_survey_tokens_template.csv";
223225

224226
private static final String ALL_COUNTRIES_IMPORT_FILE_NAME = "sormas_import_all_countries.csv";
225227
private static final String ALL_SUBCONTINENTS_IMPORT_FILE_NAME = "sormas_import_all_subcontinents.csv";
@@ -546,6 +548,30 @@ public void generateSelfReportImportTemplateFile(List<FeatureConfigurationDto> f
546548
writeTemplate(Paths.get(getSelfReportImportTemplateFilePath()), importColumns, true);
547549
}
548550

551+
@Override
552+
public void generateSurveyTokenImportTemplateFile(List<FeatureConfigurationDto> featureConfigurations) throws IOException, NoSuchFieldException {
553+
554+
createExportDirectoryIfNecessary();
555+
556+
char separator = configFacade.getCsvSeparator();
557+
List<ImportColumn> importColumns = new ArrayList<>();
558+
559+
appendListOfFields(
560+
importColumns,
561+
SurveyTokenDto.class,
562+
"",
563+
separator,
564+
featureConfigurations,
565+
SurveyTokenDto.SURVEY,
566+
SurveyTokenDto.ASSIGNMENT_DATE,
567+
SurveyTokenDto.CASE_ASSIGNED_TO,
568+
SurveyTokenDto.GENERATED_DOCUMENT,
569+
SurveyTokenDto.RECIPIENT_EMAIL,
570+
SurveyTokenDto.RESPONSE_RECEIVED);
571+
572+
writeTemplate(Paths.get(getSurveyTokenImportTemplateFilePath()), importColumns, false);
573+
}
574+
549575
@Override
550576
public String getCaseImportTemplateFileName() {
551577
return getImportTemplateFileName(CASE_IMPORT_TEMPLATE_FILE_NAME);
@@ -913,6 +939,11 @@ public String getSelfReportImportTemplateFilePath() {
913939
return getImportTemplateFilePath(SELF_REPORT_IMPORT_TEMPLATE_FILE_NAME);
914940
}
915941

942+
@Override
943+
public String getSurveyTokenImportTemplateFilePath() {
944+
return getImportTemplateFilePath(SURVEY_TOKENS_IMPORT_TEMPLATE_FILE_NAME);
945+
}
946+
916947
@Override
917948
public String getSelfReportImportTemplateFileName() {
918949
return getImportTemplateFileName(SELF_REPORT_IMPORT_TEMPLATE_FILE_NAME);

sormas-backend/src/main/java/de/symeda/sormas/backend/survey/SurveyTokenFacadeEjb.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import static org.apache.commons.collections4.CollectionUtils.isNotEmpty;
1919

20+
import java.nio.file.Paths;
2021
import java.util.ArrayList;
2122
import java.util.List;
2223
import java.util.stream.Collectors;
@@ -42,11 +43,13 @@
4243
import de.symeda.sormas.api.survey.SurveyTokenFacade;
4344
import de.symeda.sormas.api.survey.SurveyTokenIndexDto;
4445
import de.symeda.sormas.api.user.UserRight;
46+
import de.symeda.sormas.api.utils.DataHelper;
4547
import de.symeda.sormas.api.utils.SortProperty;
4648
import de.symeda.sormas.backend.FacadeHelper;
4749
import de.symeda.sormas.backend.caze.Case;
4850
import de.symeda.sormas.backend.caze.CaseFacadeEjb.CaseFacadeEjbLocal;
4951
import de.symeda.sormas.backend.caze.CaseService;
52+
import de.symeda.sormas.backend.common.ConfigFacadeEjb;
5053
import de.symeda.sormas.backend.common.CriteriaBuilderHelper;
5154
import de.symeda.sormas.backend.document.DocumentFacadeEjb;
5255
import de.symeda.sormas.backend.document.DocumentFacadeEjb.DocumentFacadeEjbLocal;
@@ -79,6 +82,10 @@ public class SurveyTokenFacadeEjb implements SurveyTokenFacade {
7982
private CaseService caseService;
8083
@EJB
8184
private DocumentFacadeEjbLocal documentFacade;
85+
@EJB
86+
private ConfigFacadeEjb.ConfigFacadeEjbLocal configFacade;
87+
88+
private static final String SURVEY_TOKEN_IMPORT_TEMPLATE_FILE_NAME = "import_survey_tokens_template.csv";
8289

8390
@Override
8491
@RightsAllowed({
@@ -156,6 +163,27 @@ public void deletePermanent(String uuid) {
156163
surveyTokenService.deletePermanent(surveyTokenService.getByUuid(uuid));
157164
}
158165

166+
@Override
167+
public String getSurveyTokensImportTemplateFilePath() {
168+
return getImportTemplateFilePath(SURVEY_TOKEN_IMPORT_TEMPLATE_FILE_NAME);
169+
}
170+
171+
@Override
172+
public String getSurveyTokensImportTemplateFileName() {
173+
return getImportTemplateFileName(SURVEY_TOKEN_IMPORT_TEMPLATE_FILE_NAME);
174+
}
175+
176+
177+
private String getImportTemplateFilePath(String baseFilename) {
178+
java.nio.file.Path exportDirectory = Paths.get(configFacade.getGeneratedFilesPath());
179+
return exportDirectory.resolve(getImportTemplateFileName(baseFilename)).toString();
180+
}
181+
182+
private String getImportTemplateFileName(String baseFilename) {
183+
String instanceName = DataHelper.cleanStringForFileName(configFacade.getSormasInstanceName().toLowerCase());
184+
return instanceName + "_" + baseFilename;
185+
}
186+
159187
private List<Selection<?>> sortBy(List<SortProperty> sortProperties, Root<SurveyToken> root, CriteriaBuilder cb, CriteriaQuery<?> cq) {
160188

161189
List<Selection<?>> selections = new ArrayList<>();

0 commit comments

Comments
 (0)