1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package p3j.simulation;
17
18 import james.SimSystem;
19 import james.core.distributed.partition.Partition;
20 import james.core.experiments.tasks.IComputationTask;
21 import james.core.model.IModel;
22 import james.core.parameters.ParameterBlock;
23 import james.core.processor.IProcessor;
24 import james.core.processor.ProcessorInformation;
25 import james.core.processor.plugintype.ProcessorFactory;
26
27 import java.util.ArrayList;
28 import java.util.List;
29 import java.util.logging.Level;
30
31 import p3j.pppm.IProjectionModel;
32 import p3j.pppm.ProjectionModel;
33 import p3j.simulation.assignments.plugintype.AbstractParamAssignmentGenFactory;
34 import p3j.simulation.assignments.plugintype.ParamAssignmentGenFactory;
35
36
37
38
39
40
41
42
43 public class PPPMProcessorFactory extends ProcessorFactory {
44
45
46 private static final long serialVersionUID = -7552093170636960651L;
47
48 @Override
49 public IProcessor create(IModel model, IComputationTask computationTask,
50 Partition partition, ParameterBlock params) {
51 if (!(model instanceof ProjectionModel)) {
52 return null;
53 }
54 ParameterBlock pagfp = params.getSubBlock(ParamAssignmentGenFactory.class
55 .getName());
56 ParamAssignmentGenFactory pagf = SimSystem.getRegistry().getFactory(
57 AbstractParamAssignmentGenFactory.class, pagfp);
58 SimSystem.report(Level.INFO,
59 "Using parameter assignment generator:" + pagf.getClass());
60 PPPMProcessor processor = new PPPMProcessor((ProjectionModel) model,
61 pagf.create(pagfp));
62 processor.setComputationTask(computationTask);
63 ProcessorInformation pi = new ProcessorInformation();
64 pi.setLocal(processor);
65 computationTask.setProcessorInfo(pi);
66 return processor;
67 }
68
69
70
71
72
73
74 @Override
75 public double getEfficencyIndex() {
76 return 1;
77 }
78
79
80
81
82
83
84
85 @Override
86 public List<Class<?>> getSupportedInterfaces() {
87 ArrayList<Class<?>> suppInterfaces = new ArrayList<Class<?>>();
88 suppInterfaces.add(IProjectionModel.class);
89 return suppInterfaces;
90 }
91
92
93
94
95
96
97
98 @Override
99 public boolean supportsSubPartitions() {
100 return false;
101 }
102
103 }