1 package fr.ifremer.tutti.service.csv;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import fr.ifremer.tutti.persistence.entities.TuttiEntity;
28 import org.apache.commons.lang3.StringUtils;
29 import org.nuiton.csv.ImportRuntimeException;
30 import org.nuiton.csv.ValueParserFormatter;
31
32 import java.text.ParseException;
33 import java.util.Map;
34
35 import static org.nuiton.i18n.I18n.t;
36
37
38
39
40
41
42 public class ForeignKeyParserFormatter<E extends TuttiEntity> implements ValueParserFormatter<E> {
43
44 protected final String propertyName;
45
46 protected final Class<E> entityType;
47
48 protected final Map<String, E> universe;
49
50 public ForeignKeyParserFormatter(Class<E> entityType, String propertyName, Map<String, E> universe) {
51 this.entityType = entityType;
52 this.propertyName = propertyName;
53 this.universe = universe;
54 }
55
56 @Override
57 public E parse(String value) throws ParseException {
58 E result = null;
59 if (StringUtils.isNotBlank(value)) {
60
61
62 result = universe.get(value);
63
64 if (result == null) {
65
66
67 throw new ImportRuntimeException(t("tutti.service.csv.parse.entityNotFound", entityType.getSimpleName(), propertyName, value));
68 }
69 }
70 return result;
71 }
72
73 @Override
74 public String format(E e) {
75 String value = "";
76 if (e != null) {
77 value = e.getId();
78 }
79 return value;
80 }
81 }