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

Commit 13788ea

Browse files
committed
Add data type to CSV import templates
1 parent d183f17 commit 13788ea

77 files changed

Lines changed: 281 additions & 50 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,8 +442,8 @@ public interface Captions {
442442
String Contact_reportDateTime = "Contact.reportDateTime";
443443
String Contact_reportingUser = "Contact.reportingUser";
444444
String Contact_reportLat = "Contact.reportLat";
445-
String Contact_reportLon = "Contact.reportLon";
446445
String Contact_reportLatLonAccuracy = "Contact.reportLatLonAccuracy";
446+
String Contact_reportLon = "Contact.reportLon";
447447
String Contact_resultingCase = "Contact.resultingCase";
448448
String Contact_resultingCaseUser = "Contact.resultingCaseUser";
449449
String Contact_tracingApp = "Contact.tracingApp";

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ public interface Strings {
104104
String confirmationPickCaseAndDeleteOther = "confirmationPickCaseAndDeleteOther";
105105
String confirmationRemoveUserAsOfficer = "confirmationRemoveUserAsOfficer";
106106
String confirmationUpdateCompleteness = "confirmationUpdateCompleteness";
107+
String date = "date";
107108
String day = "day";
108109
String DiseaseNetworkDiagram_Classification_HEALTHY = "DiseaseNetworkDiagram.Classification.HEALTHY";
109110
String DiseaseNetworkDiagram_heading = "DiseaseNetworkDiagram.heading";
@@ -642,6 +643,7 @@ public interface Strings {
642643
String min = "min";
643644
String mmhg = "mmhg";
644645
String month = "month";
646+
String nameOf = "nameOf";
645647
String no = "no";
646648
String none = "none";
647649
String notAnswered = "notAnswered";
@@ -678,6 +680,7 @@ public interface Strings {
678680
String notificationVisitCompleted = "notificationVisitCompleted";
679681
String notificationVisitCompletedSubject = "notificationVisitCompletedSubject";
680682
String notSpecified = "notSpecified";
683+
String number = "number";
681684
String numberEight = "numberEight";
682685
String numberEleven = "numberEleven";
683686
String numberFive = "numberFive";
@@ -739,6 +742,7 @@ public interface Strings {
739742
String reportedBy = "reportedBy";
740743
String reportedOn = "reportedOn";
741744
String step = "step";
745+
String text = "text";
742746
String toCase = "toCase";
743747
String total = "total";
744748
String until = "until";

sormas-backend/src/main/java/de/symeda/sormas/backend/importexport/ImportColumn.java renamed to sormas-api/src/main/java/de/symeda/sormas/api/importexport/ImportColumn.java

Lines changed: 49 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,19 @@
1616
* along with this program. If not, see <https://www.gnu.org/licenses/>.
1717
*/
1818

19-
package de.symeda.sormas.backend.importexport;
19+
package de.symeda.sormas.api.importexport;
2020

21+
import de.symeda.sormas.api.Disease;
22+
import de.symeda.sormas.api.ReferenceDto;
2123
import de.symeda.sormas.api.i18n.I18nProperties;
24+
import de.symeda.sormas.api.i18n.Strings;
2225
import de.symeda.sormas.api.utils.DataHelper;
2326
import org.apache.commons.lang3.StringUtils;
2427

28+
import java.util.ArrayList;
29+
import java.util.Date;
30+
import java.util.List;
31+
2532
/**
2633
* Detailed import template column entity with information like entity name, column name, caption and data type.
2734
*
@@ -36,10 +43,13 @@ public class ImportColumn {
3643

3744
private String caption;
3845

39-
private ImportColumn(String entityName, String columnName, String caption) {
46+
private String dataDescription;
47+
48+
private ImportColumn(String entityName, String columnName, String caption, String dataDescription) {
4049
this.entityName = entityName;
4150
this.columnName = columnName;
4251
this.caption = caption;
52+
this.dataDescription = dataDescription;
4353
}
4454

4555
public String getEntityName() {
@@ -54,10 +64,15 @@ public String getCaption() {
5464
return caption;
5565
}
5666

57-
public static ImportColumn from(Class<?> entityType, String columnName) {
67+
public String getDataDescription() {
68+
return dataDescription;
69+
}
70+
71+
public static ImportColumn from(Class<?> entityType, String columnName, Class<?> fieldType) {
5872
String entityName = DataHelper.getHumanClassName(entityType);
59-
String caption = calculateCaption(entityName, columnName);
60-
return new ImportColumn(entityName, columnName, caption);
73+
String caption = computeCaption(entityName, columnName);
74+
String dataType = computeDataType(fieldType);
75+
return new ImportColumn(entityName, columnName, caption, dataType);
6176
}
6277

6378
/**
@@ -75,7 +90,7 @@ public static ImportColumn from(Class<?> entityType, String columnName) {
7590
* @param columnName column name from the CSV
7691
* @return list of captions for each column name.
7792
*/
78-
private static String calculateCaption(String entityName, String columnName) {
93+
private static String computeCaption(String entityName, String columnName) {
7994
if (StringUtils.contains(columnName, ".")) {
8095
String[] parts = columnName.split("\\.");
8196
String fieldName = parts[parts.length - 1];
@@ -84,4 +99,32 @@ private static String calculateCaption(String entityName, String columnName) {
8499
return I18nProperties.getPrefixCaption(entityName, columnName);
85100
}
86101
}
102+
103+
/**
104+
* Computes the data type accepted for a certain field type. For values which cannot be determined at start a placeholder will be used (ex: <code>${activeDiseases}</code>.
105+
*
106+
* @param fieldType type of a CSV field (column)
107+
* @return a data type description, example or placeholder
108+
*/
109+
private static String computeDataType(Class<?> fieldType) {
110+
if (String.class.isAssignableFrom(fieldType)) {
111+
return I18nProperties.getString(Strings.text);
112+
} else if (Date.class.isAssignableFrom(fieldType)) {
113+
return I18nProperties.getString(Strings.date) + ": dd/MM/yyyy";
114+
} else if (ReferenceDto.class.isAssignableFrom(fieldType)) {
115+
return String.format(I18nProperties.getString(Strings.nameOf), DataHelper.getHumanClassName(fieldType));
116+
} else if (Disease.class.isAssignableFrom(fieldType)) {
117+
return "${activeDiseases}";
118+
} else if (fieldType.isEnum()) {
119+
List<String> enumNames = new ArrayList<>();
120+
for (Object enumConstant : fieldType.getEnumConstants()) {
121+
enumNames.add(((Enum<?>) enumConstant).name());
122+
}
123+
return StringUtils.join(enumNames, ",");
124+
} else if (Number.class.isAssignableFrom(fieldType)) {
125+
return I18nProperties.getString(Strings.number);
126+
} else {
127+
return "";
128+
}
129+
}
87130
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -926,6 +926,7 @@ Facility.externalID=External ID
926926
Facility.latitude=Latitude
927927
Facility.longitude=Longitude
928928
Facility.name=Name
929+
Facility.publicOwnership=Public ownership
929930
Facility.region=Region
930931
Facility.type=Facility type
931932
Facility.typeGroup=Facility category

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,7 @@ facilityAllLaboratories = All laboratories
702702
Facility.NO_FACILITY = Home or other place
703703
Facility.OTHER_FACILITY = Other health facility
704704
Facility.OTHER_LABORATORY = Other laboratory
705+
Facility.publicOwnership = Public ownership
705706
Facility.latitude = Latitude
706707
Facility.longitude = Longitude
707708

sormas-api/src/main/resources/captions_de-CH.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -926,6 +926,7 @@ Facility.externalID=Externe ID
926926
Facility.latitude=Breitengrad
927927
Facility.longitude=Längengrad
928928
Facility.name=Name
929+
Facility.publicOwnership=Öffentliches Eigentum
929930
Facility.region=Kanton
930931
Facility.type=Art der Einrichtung
931932
Facility.typeGroup=Kategorie der Einrichtung

sormas-api/src/main/resources/captions_de-DE.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -926,6 +926,7 @@ Facility.externalID=Externe ID
926926
Facility.latitude=Breitengrad
927927
Facility.longitude=Längengrad
928928
Facility.name=Name
929+
Facility.publicOwnership=Öffentliches Eigentum
929930
Facility.region=Bundesland
930931
Facility.type=Art der Einrichtung
931932
Facility.typeGroup=Einrichtungskategorie

sormas-api/src/main/resources/captions_en-AF.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,7 @@ Facility.externalID=External ID
922922
Facility.latitude=Latitude
923923
Facility.longitude=Longitude
924924
Facility.name=Name
925+
Facility.publicOwnership=Public ownership
925926
Facility.region=Province
926927
Facility.type=Facility type
927928
Facility.typeGroup=Facility category

sormas-api/src/main/resources/captions_es-CU.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,7 @@ Facility.externalID=ID externa
922922
Facility.latitude=Latitud
923923
Facility.longitude=Longitud
924924
Facility.name=Nombre
925+
Facility.publicOwnership=Propiedad pública
925926
Facility.region=Provincia
926927
Facility.type=Tipo de instalación
927928
Facility.typeGroup=Categoría de instalación

sormas-api/src/main/resources/captions_es-EC.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,7 @@ Facility.externalID=Id externo
922922
Facility.latitude=Latitud
923923
Facility.longitude=Longitud
924924
Facility.name=Name
925+
Facility.publicOwnership=Propiedad pública
925926
Facility.region=Region
926927
Facility.type=Facility type
927928
Facility.typeGroup=Facility category

0 commit comments

Comments
 (0)