1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package p3j.pppm;
17
18 import java.util.ArrayList;
19 import java.util.Calendar;
20 import java.util.List;
21
22 import org.jamesii.core.model.IModel;
23 import org.jamesii.core.model.formalism.Formalism;
24 import org.jamesii.core.model.plugintype.ModelFactory;
25 import org.jamesii.core.model.symbolic.ISymbolicModel;
26
27
28
29
30
31
32
33
34 public class PPPModelFactory extends ModelFactory {
35
36
37 private static final long serialVersionUID = -8959309833233820296L;
38
39
40 public static final int DEFAULT_GENERATIONS = 2;
41
42
43 public static final int DEFAULT_YEARS = 10;
44
45
46 public static final int DEFAULT_MAX_AGE = 100;
47
48
49 public static final int DEFAULT_JUMP_OFF_YEAR = Calendar.getInstance().get(
50 Calendar.YEAR);
51
52
53 public static final SubPopulationModel DEFAULT_SUBPOPULATION_MODEL = createDefaultSubPopulationModel();
54
55 @Override
56 public ISymbolicModel<?> create() {
57 return new SymbolicProjectionModel(createDefaultModel());
58 }
59
60 @Override
61 public Formalism getFormalism() {
62 return new PPPMFormalism();
63 }
64
65 @Override
66 public List<Class<? extends IModel>> getSupportedInterfaces() {
67 ArrayList<Class<? extends IModel>> suppInterfaces = new ArrayList<Class<? extends IModel>>();
68 suppInterfaces.add(IProjectionModel.class);
69 return suppInterfaces;
70 }
71
72
73
74
75
76
77 public static ProjectionModel createDefaultModel() {
78 return createModel("New Projection", "No description entered.",
79 DEFAULT_GENERATIONS, DEFAULT_YEARS, DEFAULT_MAX_AGE,
80 DEFAULT_JUMP_OFF_YEAR, DEFAULT_SUBPOPULATION_MODEL);
81 }
82
83
84
85
86
87
88
89 public static SubPopulationModel createDefaultSubPopulationModel() {
90 SubPopulationModel defaultModel = new SubPopulationModel();
91 defaultModel.getSubPopulations().add(
92 new SubPopulation("Natives", true, true, false));
93 defaultModel.getSubPopulations().add(
94 new SubPopulation("Immigrants", false, true, true));
95 defaultModel.getSubPopulations().add(
96 new SubPopulation("Emigrants", false, false, true));
97 return defaultModel;
98 }
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119 public static ProjectionModel createModel(String name, String description,
120 int generations, int years, int maxAge, int jumpOffYear,
121 SubPopulationModel subPopModel) {
122 return new ProjectionModel(name, description, generations, years, maxAge,
123 jumpOffYear, subPopModel);
124 }
125
126 }