Skip to content

Commit b358443

Browse files
committed
issue #193
1 parent d47325f commit b358443

1 file changed

Lines changed: 51 additions & 30 deletions

File tree

  • curation-api/src/main/java/eu/clarin/cmdi/curation/api/vlo_extension

curation-api/src/main/java/eu/clarin/cmdi/curation/api/vlo_extension/CMDIDataImpl.java

Lines changed: 51 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import eu.clarin.cmdi.vlo.importer.mapping.FacetDefinition;
77
import eu.clarin.cmdi.vlo.importer.mapping.TargetFacet;
88
import eu.clarin.cmdi.vlo.importer.processor.ValueSet;
9+
import lombok.AllArgsConstructor;
10+
import lombok.Data;
911
import org.apache.commons.lang3.tuple.Pair;
1012

1113
import java.util.*;
@@ -35,7 +37,7 @@ public class CMDIDataImpl extends CMDIDataBaseImpl<Map<String, List<ValueSet>>>
3537
*/
3638
public CMDIDataImpl(FieldNameService fieldNameService) {
3739
super(fieldNameService);
38-
facetValuesMap = new HashMap<String, List<ValueSet>>();
40+
facetValuesMap = new HashMap<>();
3941
}
4042

4143
/**
@@ -54,27 +56,21 @@ public void addDocField(ValueSet valueSet, boolean caseInsensitive) {
5456
setId(value.trim());
5557
}
5658
else {
57-
58-
this.facetValuesMap.computeIfAbsent(valueSet.getTargetFacetName(), list -> new ArrayList<ValueSet>())
59-
.add(valueSet);
59+
addValueSet(valueSet, caseInsensitive);
6060
}
6161
}
6262

6363
/**
6464
* Add doc field.
6565
*
66-
* @param fieldName the field name
66+
* @param facetName the field name
6767
* @param value the value
6868
* @param caseInsensitive the case insensitive
6969
*/
7070
@Override
71-
public void addDocField(String fieldName, Object value, boolean caseInsensitive) {
71+
public void addDocField(String facetName, Object value, boolean caseInsensitive) {
7272

73-
this.facetValuesMap.computeIfAbsent(fieldName, list -> new ArrayList<ValueSet>()).add(
74-
75-
new ValueSet(-1, new FacetDefinition(null, "unknown"),
76-
new TargetFacet(new FacetDefinition(null, fieldName), value.toString()),
77-
Pair.of(value.toString(), DEFAULT_LANGUAGE), false, false));
73+
addValueSet(facetName, value, caseInsensitive);
7874
}
7975

8076
/**
@@ -86,22 +82,22 @@ public void addDocField(String fieldName, Object value, boolean caseInsensitive)
8682
@Override
8783
public void addDocFieldIfNull(ValueSet valueSet, boolean caseInsensitive) {
8884

89-
this.facetValuesMap.putIfAbsent(valueSet.getTargetFacetName(), List.of(valueSet));
85+
if(this.facetValuesMap.containsKey(valueSet.getTargetFacetName())){
86+
87+
addDocField(valueSet, caseInsensitive);
88+
}
9089
}
9190

9291
/**
9392
* Gets doc field.
9493
*
95-
* @param name the name
94+
* @param facetName the name of the field/facet
9695
* @return the doc field
9796
*/
9897
@Override
99-
public Collection<Object> getDocField(String name) {
100-
101-
Collection<ValueSet> valueSetList;
98+
public Collection<Object> getDocField(String facetName) {
10299

103-
return (valueSetList = this.facetValuesMap.get(name)) == null ? null
104-
: valueSetList.stream().map(ValueSet::getValue).collect(Collectors.toList());
100+
return (hasField(facetName)? this.facetValuesMap.get(facetName).stream().map(ValueSet::getValue).collect(Collectors.toList()) : null);
105101
}
106102

107103
/**
@@ -122,54 +118,79 @@ public Map<String, List<ValueSet>> getDocument() {
122118
*/
123119
@Override
124120
public void replaceDocField(ValueSet valueSet, boolean caseInsensitive) {
125-
this.facetValuesMap.put(valueSet.getTargetFacetName(), Arrays.asList(valueSet));
126121

122+
removeField(valueSet.getTargetFacetName());
123+
124+
addDocFieldIfNull(valueSet, caseInsensitive);
127125
}
128126

129127
/**
130128
* Replace doc field.
131129
*
132-
* @param name the name
130+
* @param facetName the name
133131
* @param value the value
134132
* @param caseInsensitive the case insensitive
135133
*/
136134
@Override
137-
public void replaceDocField(String name, Object value, boolean caseInsensitive) {
135+
public void replaceDocField(String facetName, Object value, boolean caseInsensitive) {
136+
137+
removeField(facetName);
138138

139+
addValueSet(facetName, value, caseInsensitive);
139140
}
140141

141142
/**
142143
* Remove field.
143144
*
144-
* @param name the name
145+
* @param facetName the name
145146
*/
146147
@Override
147-
public void removeField(String name) {
148-
this.facetValuesMap.remove(name);
148+
public void removeField(String facetName) {
149149

150+
this.facetValuesMap.remove(facetName);
150151
}
151152

152153
/**
153154
* Has field boolean.
154155
*
155-
* @param name the name
156+
* @param facetName the name
156157
* @return the boolean
157158
*/
158159
@Override
159-
public boolean hasField(String name) {
160-
return this.facetValuesMap.containsKey(name);
160+
public boolean hasField(String facetName) {
161+
162+
return this.facetValuesMap.containsKey(facetName);
161163
}
162164

163165
/**
164166
* Gets field values.
165167
*
166-
* @param name the name
168+
* @param facetName the name
167169
* @return the field values
168170
*/
169171
@Override
170-
public Collection<Object> getFieldValues(String name) {
172+
public Collection<Object> getFieldValues(String facetName) {
171173

172-
return this.facetValuesMap.get(name).stream().map(Object.class::cast).collect(Collectors.toList());
174+
return getDocField(facetName);
173175
}
174176

177+
178+
private void addValueSet(ValueSet valueSet, boolean caseInsensitive){
179+
180+
if(caseInsensitive){
181+
182+
valueSet.setValue(valueSet.getValueLanguagePair().getLeft().trim().toLowerCase());
183+
}
184+
this.facetValuesMap.computeIfAbsent(valueSet.getTargetFacetName(), list -> new ArrayList<ValueSet>())
185+
.add(valueSet);
186+
}
187+
188+
private void addValueSet(String facetName, Object value, boolean caseInsensitive){
189+
addValueSet(
190+
new ValueSet(-1, new FacetDefinition(null, "unknown"),
191+
new TargetFacet(new FacetDefinition(null, facetName), value.toString()),
192+
Pair.of(value.toString(), DEFAULT_LANGUAGE), false, false),
193+
caseInsensitive
194+
);
195+
}
175196
}

0 commit comments

Comments
 (0)