SlideShare una empresa de Scribd logo
1 de 33
Make a plugin of Random Clustering


               2012. 4




        http://www.mongkie.org


                                     1/33
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 Run

http://www.mongkie.org                                             2/33
Objectives

     Objectives
          • make a plugin of random clustering (add random algorithm)




                         Add Random Algorithm




http://www.mongkie.org                                                  3/33
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 Files



http://www.mongkie.org                                                                                                                        4/33
Make a plugin - Package

     [New] –[Java Package]




http://www.mongkie.org        5/33
Make a plugin - Package

     Create a random pacakge
          • org.mongkie.clustering.plugins.random




http://www.mongkie.org                              6/33
Make a plugin - Package

     Create a random pacakge
          • org.mongkie.clustering.plugins.random




http://www.mongkie.org                              7/33
Make a plugin - Random

     Create a random class
          • Random.java




http://www.mongkie.org        8/33
Make a plugin - Random

     Create a random class
          • Random.java




http://www.mongkie.org        9/33
Make a plugin - Random

     Create a random class
          • Random.java




http://www.mongkie.org        10/33
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
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
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
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
Make a plugin - RandomBuilder

     RandomBuilder.java




http://www.mongkie.org            15/33
Make a plugin - RandomBuilder

     RandomBuilder




http://www.mongkie.org            16/33
Make a plugin - RandomBuilder

     RandomBuilder




http://www.mongkie.org            17/33
Make a plugin - RandomBuilder

     RandomBuilder




http://www.mongkie.org            18/33
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
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
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
Make a plugin - RandomSettingUI

     RandomSettingUI




http://www.mongkie.org              22/33
Make a plugin - RandomSettingUI

     RandomSettingUI




http://www.mongkie.org              23/33
Make a plugin - RandomSettingUI

     RandomSettingUI




http://www.mongkie.org              24/33
Make a plugin - RandomSettingUI

     RandomSettingUI




http://www.mongkie.org              25/33
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
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
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
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
Build and Run

     Clean and Build




http://www.mongkie.org   30/33
Build and Run

     Run




http://www.mongkie.org   31/33
Build and Run

     Run




http://www.mongkie.org   32/33
Q&A
Homepage : http://www.mongkie.org
  Forum : http://forum.mongkie.org
    wiki : http://wiki.mongkie.org




                                     33/33

Más contenido relacionado

La actualidad más candente

Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014
Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014
Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014Puppet
 
JavaScript APIs - The Web is the Platform - .toster conference, Moscow
JavaScript APIs - The Web is the Platform - .toster conference, MoscowJavaScript APIs - The Web is the Platform - .toster conference, Moscow
JavaScript APIs - The Web is the Platform - .toster conference, MoscowRobert Nyman
 
Node.js in action
Node.js in actionNode.js in action
Node.js in actionSimon Su
 
Spring 3.0 dependancy injection
Spring 3.0 dependancy injectionSpring 3.0 dependancy injection
Spring 3.0 dependancy injectionRajiv Gupta
 
Ejemplo radio
Ejemplo radioEjemplo radio
Ejemplo radiolupe ga
 
Aligning Continuous Integration Deployment: Automated Validation of OpenStack...
Aligning Continuous Integration Deployment: Automated Validation of OpenStack...Aligning Continuous Integration Deployment: Automated Validation of OpenStack...
Aligning Continuous Integration Deployment: Automated Validation of OpenStack...Atlassian
 
Real Time Web with Node
Real Time Web with NodeReal Time Web with Node
Real Time Web with NodeTim Caswell
 
Node Powered Mobile
Node Powered MobileNode Powered Mobile
Node Powered MobileTim Caswell
 
Deep Dive into Zone.JS
Deep Dive into Zone.JSDeep Dive into Zone.JS
Deep Dive into Zone.JSIlia Idakiev
 
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN][Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]崇之 清水
 
Mythbusting: Understanding How We Measure the Performance of MongoDB
Mythbusting: Understanding How We Measure the Performance of MongoDBMythbusting: Understanding How We Measure the Performance of MongoDB
Mythbusting: Understanding How We Measure the Performance of MongoDBMongoDB
 
groovy databases
groovy databasesgroovy databases
groovy databasesPaul King
 
JavaScript & HTML5 - Brave New World
JavaScript & HTML5 - Brave New WorldJavaScript & HTML5 - Brave New World
JavaScript & HTML5 - Brave New WorldRobert Nyman
 
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015Jeongkyu Shin
 
Advanced GORM - Performance, Customization and Monitoring
Advanced GORM - Performance, Customization and MonitoringAdvanced GORM - Performance, Customization and Monitoring
Advanced GORM - Performance, Customization and MonitoringBurt Beckwith
 

La actualidad más candente (20)

Backbone intro
Backbone introBackbone intro
Backbone intro
 
Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014
Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014
Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014
 
JavaScript APIs - The Web is the Platform - .toster conference, Moscow
JavaScript APIs - The Web is the Platform - .toster conference, MoscowJavaScript APIs - The Web is the Platform - .toster conference, Moscow
JavaScript APIs - The Web is the Platform - .toster conference, Moscow
 
Node.js in action
Node.js in actionNode.js in action
Node.js in action
 
Sequelize
SequelizeSequelize
Sequelize
 
Spock and Geb in Action
Spock and Geb in ActionSpock and Geb in Action
Spock and Geb in Action
 
Spring 3.0 dependancy injection
Spring 3.0 dependancy injectionSpring 3.0 dependancy injection
Spring 3.0 dependancy injection
 
java
javajava
java
 
Ejemplo radio
Ejemplo radioEjemplo radio
Ejemplo radio
 
Aligning Continuous Integration Deployment: Automated Validation of OpenStack...
Aligning Continuous Integration Deployment: Automated Validation of OpenStack...Aligning Continuous Integration Deployment: Automated Validation of OpenStack...
Aligning Continuous Integration Deployment: Automated Validation of OpenStack...
 
Real Time Web with Node
Real Time Web with NodeReal Time Web with Node
Real Time Web with Node
 
Node Powered Mobile
Node Powered MobileNode Powered Mobile
Node Powered Mobile
 
Elastic search 검색
Elastic search 검색Elastic search 검색
Elastic search 검색
 
Deep Dive into Zone.JS
Deep Dive into Zone.JSDeep Dive into Zone.JS
Deep Dive into Zone.JS
 
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN][Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]
[Hatsune Miku] Shoot Frieza with Amazon Kinesis ! [EN]
 
Mythbusting: Understanding How We Measure the Performance of MongoDB
Mythbusting: Understanding How We Measure the Performance of MongoDBMythbusting: Understanding How We Measure the Performance of MongoDB
Mythbusting: Understanding How We Measure the Performance of MongoDB
 
groovy databases
groovy databasesgroovy databases
groovy databases
 
JavaScript & HTML5 - Brave New World
JavaScript & HTML5 - Brave New WorldJavaScript & HTML5 - Brave New World
JavaScript & HTML5 - Brave New World
 
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
 
Advanced GORM - Performance, Customization and Monitoring
Advanced GORM - Performance, Customization and MonitoringAdvanced GORM - Performance, Customization and Monitoring
Advanced GORM - Performance, Customization and Monitoring
 

Destacado

Farw
FarwFarw
Farwfarw
 
netbeansplatform overview
netbeansplatform overviewnetbeansplatform overview
netbeansplatform overviewpluskjw
 
20120315 netbeansplatform overview
20120315 netbeansplatform overview20120315 netbeansplatform overview
20120315 netbeansplatform overviewpluskjw
 
201204 cloning a repository from github
201204 cloning a repository from github201204 cloning a repository from github
201204 cloning a repository from githubpluskjw
 
201204 create a project and module
201204 create a project and module201204 create a project and module
201204 create a project and modulepluskjw
 
201204quickstartguide
201204quickstartguide201204quickstartguide
201204quickstartguidepluskjw
 
201204 cloning a repository from github
201204 cloning a repository from github201204 cloning a repository from github
201204 cloning a repository from githubpluskjw
 
ATS Overview For Linked In
ATS Overview For Linked InATS Overview For Linked In
ATS Overview For Linked Inpaltenbe
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerLuminary Labs
 

Destacado (10)

Farw
FarwFarw
Farw
 
Available paintings 2012
Available paintings 2012Available paintings 2012
Available paintings 2012
 
netbeansplatform overview
netbeansplatform overviewnetbeansplatform overview
netbeansplatform overview
 
20120315 netbeansplatform overview
20120315 netbeansplatform overview20120315 netbeansplatform overview
20120315 netbeansplatform overview
 
201204 cloning a repository from github
201204 cloning a repository from github201204 cloning a repository from github
201204 cloning a repository from github
 
201204 create a project and module
201204 create a project and module201204 create a project and module
201204 create a project and module
 
201204quickstartguide
201204quickstartguide201204quickstartguide
201204quickstartguide
 
201204 cloning a repository from github
201204 cloning a repository from github201204 cloning a repository from github
201204 cloning a repository from github
 
ATS Overview For Linked In
ATS Overview For Linked InATS Overview For Linked In
ATS Overview For Linked In
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 

Similar a 201204 random clustering

In the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: GradleIn the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: GradleSkills Matter
 
An introduction to maven gradle and sbt
An introduction to maven gradle and sbtAn introduction to maven gradle and sbt
An introduction to maven gradle and sbtFabio Fumarola
 
Mastering Grails 3 Plugins - G3 Summit 2016
Mastering Grails 3 Plugins - G3 Summit 2016Mastering Grails 3 Plugins - G3 Summit 2016
Mastering Grails 3 Plugins - G3 Summit 2016Alvaro Sanchez-Mariscal
 
Construire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleConstruire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleThierry Wasylczenko
 
Code Splitting in Practice - Shanghai JS Meetup May 2016
Code Splitting in Practice - Shanghai JS Meetup May 2016Code Splitting in Practice - Shanghai JS Meetup May 2016
Code Splitting in Practice - Shanghai JS Meetup May 2016Wiredcraft
 
Pragmatische Plone Projekte
Pragmatische Plone ProjektePragmatische Plone Projekte
Pragmatische Plone ProjekteAndreas Jung
 
Pragmatic plone projects
Pragmatic plone projectsPragmatic plone projects
Pragmatic plone projectsAndreas Jung
 
Java EE 6 CDI Integrates with Spring & JSF
Java EE 6 CDI Integrates with Spring & JSFJava EE 6 CDI Integrates with Spring & JSF
Java EE 6 CDI Integrates with Spring & JSFJiayun Zhou
 
Everything as a Code / Александр Тарасов (Одноклассники)
Everything as a Code / Александр Тарасов (Одноклассники)Everything as a Code / Александр Тарасов (Одноклассники)
Everything as a Code / Александр Тарасов (Одноклассники)Ontico
 
Atlassian Groovy Plugins
Atlassian Groovy PluginsAtlassian Groovy Plugins
Atlassian Groovy PluginsPaul King
 
The Naked Bundle - Tryout
The Naked Bundle - TryoutThe Naked Bundle - Tryout
The Naked Bundle - TryoutMatthias Noback
 
Introduction to OSGGi
Introduction to OSGGiIntroduction to OSGGi
Introduction to OSGGiMarek Koniew
 
Singletons in PHP - Why they are bad and how you can eliminate them from your...
Singletons in PHP - Why they are bad and how you can eliminate them from your...Singletons in PHP - Why they are bad and how you can eliminate them from your...
Singletons in PHP - Why they are bad and how you can eliminate them from your...go_oh
 
Implementing Quality on Java projects
Implementing Quality on Java projectsImplementing Quality on Java projects
Implementing Quality on Java projectsVincent Massol
 
10 Cool Facts about Gradle
10 Cool Facts about Gradle10 Cool Facts about Gradle
10 Cool Facts about GradleEvgeny Goldin
 
Design patterns - Common Solutions to Common Problems - Brad Wood
Design patterns -  Common Solutions to Common Problems - Brad WoodDesign patterns -  Common Solutions to Common Problems - Brad Wood
Design patterns - Common Solutions to Common Problems - Brad WoodOrtus Solutions, Corp
 
BizSpark SF Lightning Talk: "Automated Testing (Unit, Integration and Systems...
BizSpark SF Lightning Talk: "Automated Testing (Unit, Integration and Systems...BizSpark SF Lightning Talk: "Automated Testing (Unit, Integration and Systems...
BizSpark SF Lightning Talk: "Automated Testing (Unit, Integration and Systems...Mark A
 

Similar a 201204 random clustering (20)

In the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: GradleIn the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: Gradle
 
An introduction to maven gradle and sbt
An introduction to maven gradle and sbtAn introduction to maven gradle and sbt
An introduction to maven gradle and sbt
 
Mastering Grails 3 Plugins - G3 Summit 2016
Mastering Grails 3 Plugins - G3 Summit 2016Mastering Grails 3 Plugins - G3 Summit 2016
Mastering Grails 3 Plugins - G3 Summit 2016
 
Construire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradleConstruire une application JavaFX 8 avec gradle
Construire une application JavaFX 8 avec gradle
 
Code Splitting in Practice - Shanghai JS Meetup May 2016
Code Splitting in Practice - Shanghai JS Meetup May 2016Code Splitting in Practice - Shanghai JS Meetup May 2016
Code Splitting in Practice - Shanghai JS Meetup May 2016
 
Js tacktalk team dev js testing performance
Js tacktalk team dev js testing performanceJs tacktalk team dev js testing performance
Js tacktalk team dev js testing performance
 
Pragmatische Plone Projekte
Pragmatische Plone ProjektePragmatische Plone Projekte
Pragmatische Plone Projekte
 
Pragmatic plone projects
Pragmatic plone projectsPragmatic plone projects
Pragmatic plone projects
 
Java EE 6 CDI Integrates with Spring & JSF
Java EE 6 CDI Integrates with Spring & JSFJava EE 6 CDI Integrates with Spring & JSF
Java EE 6 CDI Integrates with Spring & JSF
 
Gradle
GradleGradle
Gradle
 
Everything as a Code / Александр Тарасов (Одноклассники)
Everything as a Code / Александр Тарасов (Одноклассники)Everything as a Code / Александр Тарасов (Одноклассники)
Everything as a Code / Александр Тарасов (Одноклассники)
 
Everything as a code
Everything as a codeEverything as a code
Everything as a code
 
Atlassian Groovy Plugins
Atlassian Groovy PluginsAtlassian Groovy Plugins
Atlassian Groovy Plugins
 
The Naked Bundle - Tryout
The Naked Bundle - TryoutThe Naked Bundle - Tryout
The Naked Bundle - Tryout
 
Introduction to OSGGi
Introduction to OSGGiIntroduction to OSGGi
Introduction to OSGGi
 
Singletons in PHP - Why they are bad and how you can eliminate them from your...
Singletons in PHP - Why they are bad and how you can eliminate them from your...Singletons in PHP - Why they are bad and how you can eliminate them from your...
Singletons in PHP - Why they are bad and how you can eliminate them from your...
 
Implementing Quality on Java projects
Implementing Quality on Java projectsImplementing Quality on Java projects
Implementing Quality on Java projects
 
10 Cool Facts about Gradle
10 Cool Facts about Gradle10 Cool Facts about Gradle
10 Cool Facts about Gradle
 
Design patterns - Common Solutions to Common Problems - Brad Wood
Design patterns -  Common Solutions to Common Problems - Brad WoodDesign patterns -  Common Solutions to Common Problems - Brad Wood
Design patterns - Common Solutions to Common Problems - Brad Wood
 
BizSpark SF Lightning Talk: "Automated Testing (Unit, Integration and Systems...
BizSpark SF Lightning Talk: "Automated Testing (Unit, Integration and Systems...BizSpark SF Lightning Talk: "Automated Testing (Unit, Integration and Systems...
BizSpark SF Lightning Talk: "Automated Testing (Unit, Integration and Systems...
 

Último

A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Celine George
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesFatimaKhan178732
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docxPoojaSen20
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docxPoojaSen20
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppCeline George
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application ) Sakshi Ghasle
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 

Último (20)

A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docx
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docx
 
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website App
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application )
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 

201204 random clustering

  • 1. Make a plugin of Random Clustering 2012. 4 http://www.mongkie.org 1/33
  • 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 Run http://www.mongkie.org 2/33
  • 3. Objectives  Objectives • make a plugin of random clustering (add random algorithm) Add Random Algorithm http://www.mongkie.org 3/33
  • 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 Files http://www.mongkie.org 4/33
  • 5. Make a plugin - Package  [New] –[Java Package] http://www.mongkie.org 5/33
  • 6. Make a plugin - Package  Create a random pacakge • org.mongkie.clustering.plugins.random http://www.mongkie.org 6/33
  • 7. Make a plugin - Package  Create a random pacakge • org.mongkie.clustering.plugins.random http://www.mongkie.org 7/33
  • 8. Make a plugin - Random  Create a random class • Random.java http://www.mongkie.org 8/33
  • 9. Make a plugin - Random  Create a random class • Random.java http://www.mongkie.org 9/33
  • 10. Make a plugin - Random  Create a random class • Random.java http://www.mongkie.org 10/33
  • 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. 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
  • 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. 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. Make a plugin - RandomSettingUI  RandomSettingUI http://www.mongkie.org 22/33
  • 23. Make a plugin - RandomSettingUI  RandomSettingUI http://www.mongkie.org 23/33
  • 24. Make a plugin - RandomSettingUI  RandomSettingUI http://www.mongkie.org 24/33
  • 25. Make a plugin - RandomSettingUI  RandomSettingUI http://www.mongkie.org 25/33
  • 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. 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. 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. 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
  • 31. Build and Run  Run http://www.mongkie.org 31/33
  • 32. Build and Run  Run http://www.mongkie.org 32/33
  • 33. Q&A Homepage : http://www.mongkie.org Forum : http://forum.mongkie.org wiki : http://wiki.mongkie.org 33/33