201204 random clustering

1,033 views

Published on

make a plugin of random clustering

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,033
On SlideShare
0
From Embeds
0
Number of Embeds
72
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

201204 random clustering

  1. 1. Make a plugin of Random Clustering 2012. 4 http://www.mongkie.org 1/33
  2. 2. CONTENTS  CONTENTS • Objectives • Structure of Random Clustering Plugin • make a plugin  Package – org.mongkie.clustering.plugins.random  Classes – Random.java – RandomBuilder.java – RandomSettingUI.java  Others – Bundle.properties • Build and Runhttp://www.mongkie.org 2/33
  3. 3. Objectives  Objectives • make a plugin of random clustering (add random algorithm) Add Random Algorithmhttp://www.mongkie.org 3/33
  4. 4. Clutering Plugins  Structure of Random Clustering • org.mongkie.clustering.plugins.random  Bundle.properties  Random.java  RandomBuilder.java  RandomSettingUI.java Clustering API Clustering Plugins Clustering Plugins org.mongkie.clustering org.mongkie.clustering.plugins org.mongkie.ui.clustering -ClusteringController -ClusteringTopComponent -CluteringModel org.mongkie.clustering.plugins.clustermaker -ClusteringModelListener org.mongkie.ui.clustering.explorer -DefaultClusterImpl org.mongkie.clustering.plugins.clustermaker.converters -ClusterChildFactory -ClusterNode org.mongkie.clustering.impl org.mongkie.clustering.plugins.clustermaker.mcl -ClusteringResultView -ClusteringControllerImpl -ClusteringModelImpl org.mongkie.clustering.plugins.mcl org.mongkie.ui.clustering.explorer.actions -GroupAction org.mongkie.clustering.spi org.mongkie.clustering.plugins.mcode -UngroupAction -Cluster -Clustering org.mongkie.ui.clustering.resources -CluteringBuilder - Image Fileshttp://www.mongkie.org 4/33
  5. 5. Make a plugin - Package  [New] –[Java Package]http://www.mongkie.org 5/33
  6. 6. Make a plugin - Package  Create a random pacakge • org.mongkie.clustering.plugins.randomhttp://www.mongkie.org 6/33
  7. 7. Make a plugin - Package  Create a random pacakge • org.mongkie.clustering.plugins.randomhttp://www.mongkie.org 7/33
  8. 8. Make a plugin - Random  Create a random class • Random.javahttp://www.mongkie.org 8/33
  9. 9. Make a plugin - Random  Create a random class • Random.javahttp://www.mongkie.org 9/33
  10. 10. Make a plugin - Random  Create a random class • Random.javahttp://www.mongkie.org 10/33
  11. 11. Make a plugin - Random  Random.java • Source Code package org.mongkie.clustering.plugins.random; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.mongkie.clustering.spi.Cluster; import org.mongkie.clustering.DefaultClusterImpl; import org.mongkie.clustering.spi.Clustering; import org.mongkie.clustering.spi.ClusteringBuilder; import org.openide.util.Exceptions; import prefuse.data.Graph; import prefuse.data.Node;http://www.mongkie.org 11/33
  12. 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. 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. 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. 15. Make a plugin - RandomBuilder  RandomBuilder.javahttp://www.mongkie.org 15/33
  16. 16. Make a plugin - RandomBuilder  RandomBuilderhttp://www.mongkie.org 16/33
  17. 17. Make a plugin - RandomBuilder  RandomBuilderhttp://www.mongkie.org 17/33
  18. 18. Make a plugin - RandomBuilder  RandomBuilderhttp://www.mongkie.org 18/33
  19. 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
  20. 20. Make a plugin - RandomBuilder  RandomBuilder • source code package org.mongkie.clustering.plugins.random; import org.mongkie.clustering.spi.Clustering; import org.mongkie.clustering.spi.ClusteringBuilder; import org.mongkie.clustering.spi.ClusteringBuilder.SettingUI; import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider;http://www.mongkie.org 20/33
  21. 21. Make a plugin - RandomBuilder  RandomBuilder • source code @ServiceProvider(service = ClusteringBuilder.class) public class RandomBuilder implements ClusteringBuilder { private final Random random = new Random(this); private final SettingUI settings = new RandomSettingUI(); @Override public Clustering getClustering() { return random; } @Override public String getName() { return NbBundle.getMessage(RandomBuilder.class, "name"); } @Override public String getDescription() { return NbBundle.getMessage(RandomBuilder.class, "description"); } @Override public SettingUI getSettingUI() { return settings; } @Override public String toString() { return getName(); } }http://www.mongkie.org 21/33
  22. 22. Make a plugin - RandomSettingUI  RandomSettingUIhttp://www.mongkie.org 22/33
  23. 23. Make a plugin - RandomSettingUI  RandomSettingUIhttp://www.mongkie.org 23/33
  24. 24. Make a plugin - RandomSettingUI  RandomSettingUIhttp://www.mongkie.org 24/33
  25. 25. Make a plugin - RandomSettingUI  RandomSettingUIhttp://www.mongkie.org 25/33
  26. 26. Make a plugin - RandomSettingUI  RandomSettingUI • extends  javax.swing.JPanel • implements  ClusteringBuilder.SettingUI<Random> • variable(Global)  private SpinnerModel clusterSizeSpinnerModel; • Constructor RandomSettingUI() { clusterSizeSpinnerModel = new SpinnerNumberModel( Integer.valueOf(Random.MIN_CLUSTER_SIZE), Integer.valueOf(Random.MIN_CLUSTER_SIZE), null, Integer.valueOf(1)); initComponents(); }http://www.mongkie.org 26/33
  27. 27. Make a plugin - RandomSettingUI  RandomSettingUI • source code package org.mongkie.clustering.plugins.random; import javax.swing.JPanel; import javax.swing.SpinnerModel; import javax.swing.SpinnerNumberModel; import org.mongkie.clustering.spi.ClusteringBuilder; public class RandomSettingUI extends javax.swing.JPanel implements ClusteringBuilder.SettingUI<Random> { private SpinnerModel clusterSizeSpinnerModel; /** Creates new form RandomSettingUI */ RandomSettingUI() { clusterSizeSpinnerModel = new SpinnerNumberModel( Integer.valueOf(Random.MIN_CLUSTER_SIZE), Integer.valueOf(Random.MIN_CLUSTER_SIZE), null, Integer.valueOf(1)); initComponents(); } @Override public JPanel getPanel() { return this; } @Override public void setup(Random random) { clusterSizeSpinner.setValue(random.getClusterSize()); } @Override public void apply(Random random) { random.setClusterSize((Integer) clusterSizeSpinner.getValue()); } // Variables declaration - do not modify private javax.swing.JLabel clusterSizeLabel; private javax.swing.JSpinner clusterSizeSpinner; // End of variables declaration }http://www.mongkie.org 27/33
  28. 28. Make a plugin - RandomSettingUI  RandomSettingUI • source code private void initComponents() { clusterSizeLabel = new javax.swing.JLabel(); clusterSizeSpinner = new javax.swing.JSpinner(); clusterSizeLabel.setText(org.openide.util.NbBundle.getMessage(RandomSettingUI.class, "RandomSettingUI.clusterSizeLabel.text")); // NOI18N clusterSizeSpinner.setModel(clusterSizeSpinnerModel); clusterSizeSpinner.setPreferredSize(new java.awt.Dimension(50, 26)); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(clusterSizeLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(clusterSizeSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFER RED_SIZE) .addContainerGap(16, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(clusterSizeLabel) .addComponent(clusterSizeSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFE RRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); }http://www.mongkie.org 28/33
  29. 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. 30. Build and Run  Clean and Buildhttp://www.mongkie.org 30/33
  31. 31. Build and Run  Runhttp://www.mongkie.org 31/33
  32. 32. Build and Run  Runhttp://www.mongkie.org 32/33
  33. 33. Q&AHomepage : http://www.mongkie.org Forum : http://forum.mongkie.org wiki : http://wiki.mongkie.org 33/33

×