1
|
package eu.dnetlib.pace.model;
|
2
|
|
3
|
import java.util.List;
|
4
|
import java.util.Map;
|
5
|
|
6
|
import com.google.common.collect.Maps;
|
7
|
import com.google.protobuf.GeneratedMessage;
|
8
|
|
9
|
import eu.dnetlib.data.transform.AbstractProtoMapper;
|
10
|
|
11
|
public class ProtoDocumentBuilder extends AbstractProtoMapper {
|
12
|
|
13
|
public static MapDocument newInstance(final String id, final GeneratedMessage proto, final List<FieldDef> fields) {
|
14
|
final Map<String, Field> fieldMap = new ProtoDocumentBuilder().generateFieldMap(proto, fields);
|
15
|
return new MapDocument(id, fieldMap);
|
16
|
}
|
17
|
|
18
|
private Map<String, Field> generateFieldMap(final GeneratedMessage proto, final List<FieldDef> fields) {
|
19
|
final Map<String, Field> fieldMap = Maps.newHashMap();
|
20
|
|
21
|
for (final FieldDef fd : fields) {
|
22
|
|
23
|
final FieldList fl = new FieldListImpl(fd.getName(), fd.getType());
|
24
|
|
25
|
for (final Object o : processPath(proto, fd.getPathList(), fd.getType())) {
|
26
|
|
27
|
fl.add(new FieldValueImpl(fd.getType(), fd.getName(), o));
|
28
|
}
|
29
|
|
30
|
fieldMap.put(fd.getName(), fl);
|
31
|
}
|
32
|
|
33
|
return fieldMap;
|
34
|
}
|
35
|
|
36
|
}
|