Project

General

Profile

1
package eu.dnetlib.iis.export.actionmanager.module;
2

    
3
import java.util.List;
4

    
5
import org.apache.hadoop.conf.Configuration;
6

    
7
import eu.dnetlib.actionmanager.actions.AtomicAction;
8
import eu.dnetlib.actionmanager.common.Agent;
9
import eu.dnetlib.data.proto.FieldTypeProtos.ExtraInfo;
10
import eu.dnetlib.data.proto.OafProtos.Oaf;
11
import eu.dnetlib.data.proto.OafProtos.OafEntity;
12
import eu.dnetlib.data.proto.TypeProtos.Type;
13
import eu.dnetlib.iis.common.model.extrainfo.ExtraInfoConstants;
14
import eu.dnetlib.iis.export.actionmanager.module.toxml.CommonCoreStatisticsXmlConverter;
15
import eu.dnetlib.iis.statistics.schemas.ProjectToProjectStatistics;
16

    
17
/**
18
 * {@link ProjectToProjectStatistics} based action builder module.
19
 * @author mhorst
20
 *
21
 */
22
public class ProjectToProjectStatisticsActionBuilderModuleFactory 
23
	implements ActionBuilderFactory<ProjectToProjectStatistics> {
24

    
25
	private static final String EXTRA_INFO_NAME = ExtraInfoConstants.NAME_PROJECT_STATISTICS;
26
	private static final String EXTRA_INFO_TYPOLOGY = ExtraInfoConstants.TYPOLOGY_STATISTICS;
27

    
28
	private static final AlgorithmName algorithmName = AlgorithmName.project_statistics;
29
	
30
	class ProjectToProjectStatisticsActionBuilderModule extends AbstractBuilderModule 
31
	implements ActionBuilderModule<ProjectToProjectStatistics> {
32
		
33
		CommonCoreStatisticsXmlConverter converter = new CommonCoreStatisticsXmlConverter();
34
		
35
		/**
36
		 * Default constructor.
37
		 * @param predefinedTrust
38
		 */
39
		public ProjectToProjectStatisticsActionBuilderModule(
40
				String predefinedTrust) {
41
			super(predefinedTrust, algorithmName);
42
		}
43
		
44
		@Override
45
		public List<AtomicAction> build(ProjectToProjectStatistics object, 
46
				Agent agent, String actionSetId) {
47
			Oaf oafObject = buildOAF(object);
48
			if (oafObject!=null) {
49
				return actionFactory.createUpdateActions(actionSetId,
50
								agent, object.getProjectId().toString(), 
51
								Type.project, oafObject.toByteArray());
52
			} else {
53
				return null;
54
			}
55
		}
56
		
57
		/**
58
		 * Builds OAF object.
59
		 * @param source
60
		 * @return OAF object
61
		 */
62
		protected Oaf buildOAF(ProjectToProjectStatistics source) {
63
			if (source.getStatistics()!=null) {
64
				OafEntity.Builder entityBuilder = OafEntity.newBuilder();
65
				if (source.getProjectId()!=null) {
66
					entityBuilder.setId(source.getProjectId().toString());	
67
				}
68
				ExtraInfo.Builder extraInfoBuilder = ExtraInfo.newBuilder();
69
				extraInfoBuilder.setValue(converter.serialize(source.getStatistics()));
70
				extraInfoBuilder.setName(EXTRA_INFO_NAME);
71
				extraInfoBuilder.setTypology(EXTRA_INFO_TYPOLOGY);
72
				extraInfoBuilder.setProvenance(this.inferenceProvenance);
73
				extraInfoBuilder.setTrust(getPredefinedTrust());
74
				entityBuilder.addExtraInfo(extraInfoBuilder.build());
75
				entityBuilder.setType(Type.project);
76
				return buildOaf(entityBuilder.build());
77
			}
78
	//		fallback
79
			return null;	
80
		}
81
		
82
		@Override
83
		public AlgorithmName getAlgorithName() {
84
			return algorithmName;
85
		}
86
	}
87

    
88

    
89
	@Override
90
	public ActionBuilderModule<ProjectToProjectStatistics> instantiate(
91
			String predefinedTrust, Configuration config) {
92
		return new ProjectToProjectStatisticsActionBuilderModule(
93
				predefinedTrust);
94
	}
95

    
96
}
(22-22/22)