38
63
64
//graph
65
GraphModel
graphModel
=
Lookup.getDefault().lookup(GraphController.
class
).getModel()
;
66
67
DynamicController
dc
=
Lookup.getDefault().lookup(DynamicController.
class
)
;
68
PreviewModel
model
=
Lookup.getDefault().lookup(PreviewController.
class
).getModel()
;
69
70 DynamicModel dynamicModel= dc.getModel()
;
71
DynamicGraph
dynGraph
=
dynamicModel.createDynamicGraph(graphModel.getGraph())
;
72 getDynamicInfo(dynamicModel
,
dynGraph)
;
73
74 DateTime startDatum =
new
DateTime(
2004
,
5
,
19
,
0
,
0
)
;
75 DateTime endDatum =
new
DateTime(
2013
,
4
,
9
,
0
,
0
)
;
76 DateTime curDate = startDatum
;
77
78
FilterController
filterController
=
Lookup.getDefault().lookup(FilterController.
class
)
;
79
FilterBuilder[]
builders
=
Lookup.getDefault().lookup(DynamicRangeBuilder.
class
).getBuilders()
;
80 DynamicRangeBuilder.DynamicRangeFilter dynamicRangeFilter =
(DynamicRangeBuilder.DynamicRangeFilter) builders[
0
].getFilter()
;
81 Query dynamicQuery = filterController.createQuery(dynamicRangeFilter)
;
82 filterController.add(dynamicQuery)
;
83
84
85
while
(curDate.isBefore(endDatum)) {
86 dynamicRangeFilter.setRange(
new
Range(startDatum.getMillis()
,
curDate.getMillis()))
;
87 GraphView view = filterController.filter(dynamicQuery)
;
88 Graph filteredGraph = graphModel.getGraph(view)
;
89
System.out.println(
"filter
range:
"
+
startDatum.toString(
"dd.MM.YYYY."
) +
" - "
+ curDate.toString(
"dd.MM.YYYY."
))
;
90 System.out.println(
"filteredgraph info:
\n
EDGE COUNT:"
+
filteredGraph.getEdgeCount()
91 +
"
\n
NODE COUNT:"
+ filteredGraph.getNodeCount())
;
92 layoutGraph(graphModel
,
workspace
,
startDatum
,
curDate)
;
93 curDate = curDate.plusDays(
1
)
;
94 }
95 }
96
97
private void
getDynamicInfo(DynamicModel dynamicmodel
,
DynamicGraph dynGraph) {
98
System.out.println(
"
\t
Da
li
je
dynamic?"
+
dynamicmodel.isDynamicGraph())
;
99 System.out.println(
"
\t
Dynamic edges?"
+ dynamicmodel.hasDynamicNodes())
;
100 System.out.println(
"
\t
MIN: "
+ dynamicmodel.getMin() +
" MAX:"
+
dynamicmodel.getMax())
;
101 System.out.println(
"
\t
HIGH:"
+ dynGraph.getHigh())
;
102 System.out.println(
"
\t
LOW:"
+ dynGraph.getLow())
;
103 System.out.println(
"
\t
INTERVAL:"
+ dynGraph.getInterval())
;
104 System.out.println(
"
\t
NORMAL graph info:
\n\t
EDGE COUNT:"
+
dynGraph.getUnderlyingGraph().getEdgeCount()
105
+
"
\n\t
NODE
COUNT:"
+
dynGraph.getUnderlyingGraph().getNodeCount())
;
106 }
107
108
private void
layoutGraph(GraphModel graphModel
,
Workspace workspace
,
DateTime
startDatum
,
DateTime curDatum) {
39
109
//vrti force atlas
110 System.out.println(
"Running forceAtlas"
)
;
111 ForceAtlas2 atlas2 =
new
ForceAtlas2Builder().buildLayout()
;
112 atlas2.setGraphModel(graphModel)
;
113 atlas2.setOutboundAttractionDistribution(
true
)
;
114 atlas2.setScalingRatio(
2.0
)
;
115 atlas2.setGravity(
1.0
)
;
116 atlas2.setThreadsCount(
3
)
;
117 atlas2.setJitterTolerance(
1.0
)
;
118 atlas2.setBarnesHutOptimize(
false
)
;
119 atlas2.setAdjustSizes(
false
)
;
120 atlas2.setLinLogMode(
true
)
;
121
AutoLayout.DynamicProperty
dissuadeHubsProperty
=
AutoLayout.createDynamicProperty(
"forceAtlas2.distributedAttraction.name"
,
Boolean.TRUE
,
1f
)
;
122 atlas2.initAlgo()
;
123
for
(
int
i =
0
;
i <
50
&& atlas2.canAlgo()
;
i++) {
124 atlas2.goAlgo()
;
125 exportGraph(workspace
,
startDatum
,
curDatum)
;
126 }
127 atlas2.endAlgo()
;
128 }
129
130
private void
exportGraph(Workspace workspace
,
DateTime startDatum
,
DateTime
curDatum) {
131 ExportController ec = Lookup.getDefault().lookup(ExportController.
class
)
;
132 PNGExporter pngExporter = (PNGExporter)ec.getExporter(
"png"
)
;
133 pngExporter.setWorkspace(workspace)
;
134 pngExporter.setWidth(
1920
)
;
135 pngExporter.setHeight(
1080
)
;
136 System.out.print(
"."
)
;
137 File file =
new
File(
"imgs/test"
+ fileCount++ +
".png"
)
;
138
try
{
139 ec.exportFile(file
,
pngExporter)
;
140 }
catch
(IOException e) {
141 e.printStackTrace()
;
142 }
143
144
//cekanje jer ponekad ne stigne pristupit upravo eksportiranom png-u
145
while
(!Files.isReadable(file.toPath())) {
146 System.out.println(
"File could not be read, will wait 100ms and try
again..."
)
;
147
try
{
148 Thread.sleep(
100
)
;
149 }
catch
(InterruptedException e) {
150 e.printStackTrace()
;
151 }
152 }
153
try
{
154 BufferedImage image = ImageIO.read(file.toURI().toURL())
;
155 Graphics g = image.getGraphics()
;
156 g.setFont(consolasFont)
;
157 g.drawString(
"Vizualizacija 1 - Asja Stermsek"
,
10
,
10
)
;
158 g.drawString(startDatum.toString(
"dd.MM.YYYY."
) +
" - "
+
curDatum.toString(
"dd.MM.YYYY."
)
,
10
,
24
)
;
159 g.dispose()
;
160 ImageIO.write(image
,
"png"
,
file)
;
161 }
catch
(IOException e) {
162 e.printStackTrace()
;
163 }
164 }