Project

General

Profile

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
}
    (1-1/1)