Skip to content

Commit ba535f7

Browse files
committed
added support for value maps
1 parent 8ccba1f commit ba535f7

23 files changed

+397
-231
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Custom
2-
extern/data/*
2+
data/*
33
gradlew
44
gradlew.bat
55

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations.xml

Lines changed: 0 additions & 10 deletions
This file was deleted.

.idea/runConfigurations/Run.xml

Lines changed: 5 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ application {
3232
javafx {
3333
version = "15"
3434
modules = [ 'javafx.controls', 'javafx.fxml' ]
35-
3635
}
3736

3837
apply plugin: 'java'

extern/config.json

Lines changed: 42 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,40 @@
11
{
22
"legacyMode": false,
33
"legacyProfile": "WS",
4-
"windowWidth" : 680,
5-
"windowHeight" : 960,
4+
"windowWidth": 680,
5+
"windowHeight": 960,
66
"keyColumnWidth": 150,
77
"profiles": {
88
"WS": {
99
"target": "data/teilnehmer.xls",
1010
"mapping": {
11-
"Kundennummer": null,
12-
"Name": 1,
13-
"Vorname": 2,
14-
"Anrede": 3,
15-
"Geburtsdatum": 4,
11+
"Kundennummer": null,
12+
"Name": 1,
13+
"Vorname": 2,
14+
"Anrede": 3,
15+
"Geburtsdatum": 4,
1616
"Strasse": 5,
1717
"Hausnummer": 6,
18-
"PLZ": 7,
19-
"Ort": 8,
20-
"Telefon1": null,
21-
"Telefon2": null,
22-
"Fax": null,
23-
"eMail": null,
24-
"Mobil": 9,
25-
"UserName": null,
26-
"Passwort": null,
27-
"CH1": 10,
28-
"CH2": null,
29-
"CH3": null,
30-
"CH4": null,
31-
"CH5": null,
32-
"CH6": null,
33-
"eMail-Privat": 11,
34-
"Versand zugestimmt": 12,
35-
"Aufmerksam über": 13,
36-
"Vorname Erziehungsb.": 14,
37-
"Nachname Erziehungsb.": 15
18+
"PLZ": 7,
19+
"Ort": 8,
20+
"Telefon1": null,
21+
"Telefon2": null,
22+
"Fax": null,
23+
"eMail": null,
24+
"Mobil": 9,
25+
"UserName": null,
26+
"Passwort": null,
27+
"CH1": 10,
28+
"CH2": null,
29+
"CH3": null,
30+
"CH4": null,
31+
"CH5": null,
32+
"CH6": null,
33+
"eMail-Privat": 11,
34+
"Versand zugestimmt": 12,
35+
"Aufmerksam über": 13,
36+
"Vorname Erziehungsb.": 14,
37+
"Nachname Erziehungsb.": 15
3838
}
3939
},
4040
"FB": {
@@ -44,13 +44,17 @@
4444
"ID1": null,
4545
"WorkshopID": {
4646
"sourceColumnIndex": 1,
47-
"isRequired": true
47+
"isRequired": true,
48+
"valueMapName": "numeric-map"
4849
},
4950
"Geschlecht": null,
5051
"Alter": 2,
5152
"Freiwilligkeit": 3,
5253
"Gefallen": 4,
53-
"Stimmung": 5,
54+
"Stimmung": {
55+
"sourceColumnIndex": 5,
56+
"valueMapName": "schlecht-gut"
57+
},
5458
"Arbeitstempo": 6,
5559
"Inhalte_ausprobieren": 7,
5660
"Inhalte_mehr_wissen": 8,
@@ -82,5 +86,14 @@
8286
"Ich bin erstmals auf die Angebote der Stiftung aufmerksam geworden": 10
8387
}
8488
}
89+
},
90+
"valueMaps": {
91+
"schlecht-gut": {
92+
"sehr schlecht": "1",
93+
"schlecht": "2",
94+
"neutral": "3",
95+
"gut": "4",
96+
"sehr gut": "5"
97+
}
8598
}
8699
}

src/main/java/com/damgem/DataImporter/Connector/AccessConnector.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.damgem.DataImporter.Connector;
22

33
import com.damgem.DataImporter.DataImporterError;
4-
import com.damgem.DataImporter.Field.Field;
4+
import com.damgem.DataImporter.Field.NamedValue;
55
import com.healthmarketscience.jackcess.*;
66

77
import java.io.File;
@@ -12,7 +12,7 @@
1212

1313
public class AccessConnector implements DataConnector {
1414

15-
private String target, subTarget;
15+
private final String target, subTarget;
1616

1717
public AccessConnector(String target, String subTarget) throws DataImporterError {
1818
if(target == null) {
@@ -50,7 +50,7 @@ private Table openTable() throws DataImporterError {
5050
}
5151

5252
@Override
53-
public void write(String target, String subTarget, List<Field> data) throws DataImporterError {
53+
public void write(String target, String subTarget, List<NamedValue> data) throws DataImporterError {
5454

5555
Table table = this.openTable();
5656

@@ -66,10 +66,10 @@ public void write(String target, String subTarget, List<Field> data) throws Data
6666

6767
// make sure there are no empty numerical values
6868
data.forEach(f -> {
69-
if(table.getColumn(f.name).getType() == DataType.LONG && f.value.isEmpty().get()) {
69+
if(table.getColumn(f.name).getType() == DataType.LONG && f.value.isEmpty()) {
7070
map.put(f.name, 0);
7171
} else {
72-
map.put(f.name, f.value.getValue());
72+
map.put(f.name, f.value);
7373
}
7474
});
7575

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.damgem.DataImporter.Connector;
22

33
import com.damgem.DataImporter.DataImporterError;
4-
import com.damgem.DataImporter.Field.Field;
4+
import com.damgem.DataImporter.Field.NamedValue;
55

66
import java.util.List;
77

88
public interface DataConnector {
9-
void write(String target, String subTarget, List<Field> data) throws DataImporterError;
9+
void write(String target, String subTarget, List<NamedValue> data) throws DataImporterError;
1010
}

src/main/java/com/damgem/DataImporter/Connector/ExcelConnector.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.damgem.DataImporter.Connector;
22

33
import com.damgem.DataImporter.DataImporterError;
4-
import com.damgem.DataImporter.Field.Field;
4+
import com.damgem.DataImporter.Field.NamedValue;
55
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
66
import org.apache.poi.ss.usermodel.*;
77

@@ -13,7 +13,7 @@
1313

1414
public class ExcelConnector implements DataConnector {
1515

16-
private String target, subTarget;
16+
private final String target, subTarget;
1717

1818
private String cellToString(Cell cell) {
1919
return switch (cell.getCellType()) {
@@ -55,7 +55,7 @@ private Workbook openWorkbook() throws DataImporterError {
5555
}
5656
}
5757

58-
private Sheet openSheet(Workbook workbook) throws DataImporterError {
58+
private Sheet openSheet(Workbook workbook) {
5959
if(this.subTarget != null && !this.subTarget.isEmpty()) {
6060
Sheet sheet = workbook.getSheet(subTarget);
6161
return (sheet == null) ? workbook.createSheet(subTarget) : sheet;
@@ -75,7 +75,7 @@ public ExcelConnector(String target, String subTarget) throws DataImporterError
7575
}
7676

7777
@Override
78-
public void write(String target, String subTarget, List<Field> data) throws DataImporterError {
78+
public void write(String target, String subTarget, List<NamedValue> data) throws DataImporterError {
7979

8080
Workbook workbook = this.openWorkbook();
8181
Sheet sheet = this.openSheet(workbook);
@@ -93,7 +93,7 @@ public void write(String target, String subTarget, List<Field> data) throws Data
9393
}
9494

9595
// insert data
96-
List<String> dataFieldValues = data.stream().map(kv -> kv.value.getValue()).collect(Collectors.toList());
96+
List<String> dataFieldValues = data.stream().map(kv -> kv.value).collect(Collectors.toList());
9797
this.addRowToSheet(sheet, dataFieldValues);
9898

9999
// write to file

src/main/java/com/damgem/DataImporter/Controller/MainController.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.damgem.DataImporter.Connector.ExcelConnector;
66
import com.damgem.DataImporter.DataImporterError;
77
import com.damgem.DataImporter.Field.Field;
8+
import com.damgem.DataImporter.Field.NamedValue;
89
import javafx.animation.KeyFrame;
910
import javafx.animation.KeyValue;
1011
import javafx.animation.PauseTransition;
@@ -35,6 +36,7 @@
3536
import java.io.IOException;
3637
import java.net.URL;
3738
import java.util.*;
39+
import java.util.stream.Collectors;
3840

3941
public class MainController implements Initializable {
4042
// FXML Stuff
@@ -62,6 +64,7 @@ public void setFields(List<Field> fields) {
6264
this.grid.add(new FieldName(f), 0, fi);
6365
FieldValue fv = new FieldValue(f, fi);
6466
this.grid.add(fv, 1, fi);
67+
6568
if(!customSelection && f.value.getValue().isEmpty()){
6669
customSelection = true;
6770
fv.requestFocus();
@@ -104,25 +107,35 @@ public void importData() {
104107
this.disabled.setValue(true);
105108

106109
boolean successful = false;
107-
try {
108-
dataConnector.write(this.target, this.subTarget, this.fields);
110+
try
111+
{
112+
// extract namedValues from fields
113+
List<NamedValue> namedValues = new ArrayList<>(fields.size());
114+
for (Field field : fields)
115+
namedValues.add(field.extractData());
116+
117+
// write data
118+
dataConnector.write(target, subTarget, namedValues);
119+
120+
// mark operation as successful
109121
successful = true;
110-
} catch (DataImporterError error) {
111-
this.errorDialog(error.errorTitle, error.errorDescription);
122+
}
123+
catch (DataImporterError error) {
124+
errorDialog(error.errorTitle, error.errorDescription);
112125
} catch (Throwable error) {
113-
this.errorDialog("Internal Error", error.getMessage());
126+
errorDialog("Internal Error", error.getMessage());
114127
}
115128

116129
if(!successful) {
117130
PauseTransition pause = new PauseTransition(Duration.millis(250));
118-
pause.setOnFinished(event -> this.disabled.setValue(false));
131+
pause.setOnFinished(event -> disabled.setValue(false));
119132
pause.play();
120133
} else {
121134
ColorInput effect = new ColorInput(0, 0, 1000, 1000, Color.rgb(0,0,0, 0));
122135
Timeline fade = new Timeline(
123136
new KeyFrame(Duration.millis(100), new KeyValue(effect.paintProperty(), Paint.valueOf("green")))
124137
);
125-
this.grid.getScene().getRoot().setEffect(effect);
138+
grid.getScene().getRoot().setEffect(effect);
126139
fade.setOnFinished(e -> this.closeWindow());
127140
fade.play();
128141
}
@@ -160,10 +173,10 @@ public void setDimensions(Integer width, Integer height, Integer keyColumnWidth)
160173

161174
private class FieldName extends Label {
162175
FieldName(Field field) {
163-
super(field.name);
164-
if(field.isRequired) this.setStyle("-fx-font-weight: bold");
176+
super(field.blueprint.name);
177+
if(field.blueprint.isRequired) this.setStyle("-fx-font-weight: bold");
165178
this.disableProperty().bind(disabled);
166-
this.setTooltip(new Tooltip(field.name));
179+
this.setTooltip(new Tooltip(field.blueprint.name));
167180
}
168181
}
169182

0 commit comments

Comments
 (0)