1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
package org.singinst.uf.model;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.singinst.uf.presenter.LineBounds;
class NodeMetadataBuilder {
private final Node node;
private UiText uiText;
private final List<ScalarSchema> scalarSchemata = new ArrayList<ScalarSchema>();
private final List<ScalarSchema> simpleScalars = new ArrayList<ScalarSchema>();
private final List<ScalarRelation> scalarRelations = new ArrayList<ScalarRelation>();
public NodeMetadataBuilder(String name) {
this(name, Collections.<NodeMetadata>emptyList());
}
public NodeMetadataBuilder(String name, List<NodeMetadata> dependencies) {
this(new Node(name, dependencies));
}
public NodeMetadataBuilder(Node node) {
this.node = node;
}
public NodeMetadataBuilder setBuilderUserText(UiText uiText) {
this.uiText = uiText;
return this;
}
public NodeMetadataBuilder buildNodeTypeAsProbability(ConclusionReportGenerator... generators) {
LineBounds bounds = new LineBounds(0, 100);
ScalarSchema scalarSchema = new ScalarSchema(node, ScalarSubIDString.PROBABILITY, bounds, "%", "Probability: ", "", bounds, true);
scalarSchema.getConclusionGenerators().addAll(Arrays.asList(generators));
scalarSchemata.add(scalarSchema);
simpleScalars.add(scalarSchema);
return this;
}
public NodeMetadata build() {
return new NodeMetadata(node, uiText, scalarSchemata, simpleScalars, scalarRelations);
}
public NodeMetadataBuilder buildNodeTypeAsMooresLaw() {
MooresLawNodeMetadataContentsFactory mooresLawNodeMetadataContentsFactory = new MooresLawNodeMetadataContentsFactory(node);
scalarSchemata.addAll(mooresLawNodeMetadataContentsFactory.getScalars());
scalarRelations.add(mooresLawNodeMetadataContentsFactory.getRelation());
return this;
}
public NodeMetadataBuilder buildNodeTypeAsHazardRate() {
HazardRateNodeMetadataContentsFactory hazardRateNodeMetadataContentsFactory = new HazardRateNodeMetadataContentsFactory(node);
scalarSchemata.addAll(hazardRateNodeMetadataContentsFactory.getScalars());
scalarRelations.add(hazardRateNodeMetadataContentsFactory.getRelation());
return this;
}
public NodeMetadataBuilder buildNodeTypeAsGeneLearning() {
GeneLearningNodeMetadataContentsFactory geneLearningNodeMetadataContentsFactory = new GeneLearningNodeMetadataContentsFactory(node);
scalarSchemata.addAll(geneLearningNodeMetadataContentsFactory.getScalarSchemata());
scalarRelations.add(geneLearningNodeMetadataContentsFactory.getRelation());
return this;
}
public NodeMetadataBuilder buildNodeTypeAsOtherIa() {
OtherIaNodeMetadataContentsFactory otherIaNodeMetadataPartialPrototype = new OtherIaNodeMetadataContentsFactory(node);
scalarSchemata.addAll(otherIaNodeMetadataPartialPrototype.getScalars());
scalarRelations.add(otherIaNodeMetadataPartialPrototype.getRelation());
return this;
}
public NodeMetadataBuilder buildNodeTypeAsResearcher() {
ResearchersNodeMetadataContentsFactory researchersNodeMetadataContentsFactory = new ResearchersNodeMetadataContentsFactory(node);
scalarSchemata.addAll(researchersNodeMetadataContentsFactory.getScalars());
scalarRelations.add(researchersNodeMetadataContentsFactory.getRelation());
return this;
}
public NodeMetadataBuilder buildNodeTypeAsLogNormal(String units, double lowerBound, double upperBound) {
NormalNodeMetadataContentsFactory logNormal = new NormalNodeMetadataContentsFactory(node, units, new LineBounds(lowerBound, upperBound, true), "");
scalarSchemata.addAll(logNormal.getScalars());
scalarRelations.add(logNormal.getRelation());
return this;
}
public NodeMetadataBuilder buildNodeTypeAsYearLogNormal(int firstMajorTick, int boundaryYear, int lowerYear, int upperYear) {
double lowerBound = Math.log10(lowerYear - boundaryYear);
double upperBound = Math.log10(upperYear - boundaryYear);
int majorTickSpace = upperYear == ModelUtil.LATEST_IA_YEAR ? 5 : 50;
LineBounds bounds = new LogBounds(firstMajorTick, boundaryYear, lowerBound, upperBound, majorTickSpace, 10);
//NormalNodeMetadataContentsFactory yearNormal = new NormalNodeMetadataContentsFactory(node, "(log) years after " + boundaryYear, bounds) {
NormalNodeMetadataContentsFactory yearNormal = new NormalNodeMetadataContentsFactory(node, "years after " + boundaryYear, bounds, "10 to the") {
@Override
protected String meanUnits() {
return "year";
}
};
scalarSchemata.addAll(yearNormal.getScalars());
scalarRelations.add(yearNormal.getRelation());
return this;
}
public NodeMetadataBuilder addScalarRelation(ScalarRelation relation) {
scalarRelations.add(relation);
return this;
}
}
|