1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package pl.edu.agh.cast.model;
19
20 import java.util.ArrayList;
21 import java.util.List;
22
23 import org.eclipse.core.runtime.IProgressMonitor;
24
25 import pl.edu.agh.cast.model.base.IDataProvider;
26 import pl.edu.agh.cast.model.base.IDataSet;
27 import pl.edu.agh.cast.model.base.IEntity;
28 import pl.edu.agh.cast.model.visual.backward.IDiagram;
29 import pl.edu.agh.cast.model.visual.backward.Node;
30 import pl.edu.agh.cast.model.visual.backward.Statistic;
31 import pl.edu.agh.cast.util.Messages;
32
33
34
35
36
37
38
39 public class DefaultStatisticsProvider implements IStatisticsProvider {
40
41 private List<Statistic> statistics(IDiagram dataProvider, IProgressMonitor monitor) {
42 monitor.beginTask(Messages.Diagram_3, dataProvider.getNodes().size());
43 ArrayList<Statistic> result = new ArrayList<Statistic>();
44 for (Node node : dataProvider.getNodes()) {
45 String label = node.getLabel();
46 result.add(new Statistic(label, node.getTotalSourceConnectionsCount(), node
47 .getTotalTargetConnectionsCount()));
48 monitor.worked(1);
49 }
50 monitor.done();
51 return result;
52 }
53
54 private List<Statistic> statistics(IDataSet dataProvider, IProgressMonitor monitor) {
55 monitor.beginTask(Messages.DefaultStatisticsProvider_0, 2 * dataProvider.getRelations().size()
56 + dataProvider.getEntities().size());
57 ArrayList<Statistic> result = new ArrayList<Statistic>();
58 for (IEntity e : dataProvider.getEntities()) {
59 result.add(new Statistic(e.getId(), e.getSourceRelations().size(), e.getTargetRelations().size()));
60 monitor.worked(1);
61 }
62 monitor.done();
63 return result;
64 }
65
66
67
68
69
70
71
72 public List<Statistic> statistics(IDataProvider dataProvider, IProgressMonitor monitor) {
73 if (dataProvider instanceof IDiagram) {
74 return statistics((IDiagram)dataProvider, monitor);
75 } else if (dataProvider instanceof IDataSet) {
76 return statistics((IDataSet)dataProvider, monitor);
77 }
78 return null;
79 }
80
81 }