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 com.google.common.base.Joiner;
28 import org.apache.commons.lang3.StringUtils;
29 import org.nuiton.csv.ValueParserFormatter;
30
31 import java.text.ParseException;
32 import java.util.ArrayList;
33 import java.util.List;
34
35
36
37
38
39
40
41 public abstract class ListParserFormatterSupport<E> implements ValueParserFormatter<List<E>> {
42
43 private final ValueParserFormatter<E> delegateParserFormatter;
44
45 protected ListParserFormatterSupport(ValueParserFormatter<E> delegateParserFormatter) {
46 this.delegateParserFormatter = delegateParserFormatter;
47 }
48
49 @Override
50 public List<E> parse(String value) throws ParseException {
51
52 List<E> list = new ArrayList<>();
53 if (StringUtils.isNoneBlank(value)) {
54
55 String[] ids = value.split("\\|");
56 for (String id : ids) {
57
58 E entity = delegateParserFormatter.parse(id.trim());
59 list.add(entity);
60
61 }
62
63 }
64 return list;
65
66 }
67
68 @Override
69 public String format(List<E> entities) {
70
71 List<String> ids = new ArrayList<>();
72 for (E entity : entities) {
73 String id = delegateParserFormatter.format(entity);
74 ids.add(id);
75 }
76 return Joiner.on('|').join(ids);
77
78 }
79 }