12. Make a plugin - Random
Random.java
• implements
Clustering
• variables (global)
private final RandomBuilder builder;
private int clusterSize;
static final int MIN_CLUSTER_SIZE = 3;
private List<Cluster> clusters = new ArrayList<Cluster>();
• Constructor
Random(RandomBuilder builder) {
this.builder = builder;
this.clusterSize = MIN_CLUSTER_SIZE;
}
http://www.mongkie.org 12/33
13. Make a plugin - Random
Random.java
• source code
public void execute(Graph g) {
clearClusters();
List<Node> nodes = new ArrayList<Node>(g.getNodeCount());
Iterator<Node> nodesIter = g.nodes();
while (nodesIter.hasNext()) {
Node n = nodesIter.next();
nodes.add(n);
}
Collections.shuffle(nodes);
int i = 1, j = 1;
DefaultClusterImpl c = new DefaultClusterImpl(g, "Random " + j);
c.setRank(j - 1);
for (Node n : nodes) {
c.addNode(n);
if (i >= clusterSize) {
clusters.add(c);
c = new DefaultClusterImpl(g, "Random " + ++j);
c.setRank(j - 1);
i = 1;
} else {
i++;
}
}
if (c.getNodesCount() > 0) {
clusters.add(c);
}
try {
synchronized (this) {
wait(1000);
}
} catch (InterruptedException ex) {
Exceptions.printStackTrace(ex);
}
}
http://www.mongkie.org 13/33
14. Make a plugin - Random
Random.java
• source code
int getClusterSize() {
return clusterSize;
}
void setClusterSize(int clusterSize) {
this.clusterSize = clusterSize < MIN_CLUSTER_SIZE ? MIN_CLUSTER_SIZE : clusterSize;
}
public boolean cancel() {
synchronized (this) {
clearClusters();
notifyAll();
}
return true;
}
@Override
public Collection<Cluster> getClusters() {
return clusters;
}
@Override
public void clearClusters() {
clusters.clear();
}
@Override
public ClusteringBuilder getBuilder() {
return builder;
}
http://www.mongkie.org 14/33
15. Make a plugin - RandomBuilder
RandomBuilder.java
http://www.mongkie.org 15/33
16. Make a plugin - RandomBuilder
RandomBuilder
http://www.mongkie.org 16/33
17. Make a plugin - RandomBuilder
RandomBuilder
http://www.mongkie.org 17/33
18. Make a plugin - RandomBuilder
RandomBuilder
http://www.mongkie.org 18/33
19. Make a plugin - RandomBuilder
RandomBuilder
• implements
ClusteringBuilder
• variable(Global)
private final Random random = new Random(this);
private final SettingUI settings = new RandomSettingUI();
http://www.mongkie.org 19/33
29. Make a plugin - Bundle.properties
Bundle.properties
name=Random
description=Clusterize nodes randomly according to given size of a cluster
RandomSettingUI.clusterSizeLabel.text=Size of a cluster :
http://www.mongkie.org 29/33
30. Build and Run
Clean and Build
http://www.mongkie.org 30/33