1 package net.sumaris.core.extraction.vo;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import lombok.AccessLevel;
26 import lombok.Data;
27 import lombok.experimental.FieldDefaults;
28 import lombok.experimental.FieldNameConstants;
29 import org.apache.commons.collections4.CollectionUtils;
30 import org.apache.commons.collections4.MapUtils;
31 import org.apache.commons.collections4.SetUtils;
32
33 import java.util.LinkedHashMap;
34 import java.util.List;
35 import java.util.Map;
36 import java.util.Set;
37
38
39
40
41 @Data
42 @FieldDefaults(level = AccessLevel.PRIVATE)
43 public abstract class AggregationContextVO extends ExtractionContextVO {
44
45 boolean enableAnalyze = true;
46
47 @FieldNameConstants.Exclude
48 Map<String, Map<String, List<String>>> columnValues = new LinkedHashMap<>();
49
50 @FieldNameConstants.Exclude
51 Map<String, Set<String>> spatialColumnNames = new LinkedHashMap<>();
52
53 public void addTableName(String tableName, String sheetName,
54 Set<String> hiddenColumnNames,
55 Set<String> spatialColumnNames,
56 Map<String,List<String>> availableValuesByColumn) {
57 super.addTableName(tableName, sheetName, hiddenColumnNames, false);
58
59 if (CollectionUtils.isNotEmpty(spatialColumnNames)) {
60 this.spatialColumnNames.put(tableName, spatialColumnNames);
61 }
62 if (MapUtils.isNotEmpty(availableValuesByColumn)) {
63 columnValues.put(tableName, availableValuesByColumn);
64 }
65 }
66
67
68
69
70
71
72 public boolean hasSpatialColumn(String tableName) {
73 return CollectionUtils.isNotEmpty(spatialColumnNames.get(tableName));
74 }
75
76 public boolean isSpatial() {
77 return SetUtils.emptyIfNull(getTableNames())
78 .stream()
79 .anyMatch(this::hasSpatialColumn);
80 }
81
82 public Map<String, List<String>> getColumnValues(String tableName) {
83 return columnValues.get(tableName);
84 }
85 }