SlideShare uma empresa 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

Mais conteúdo relacionado

Mais procurados

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
Robert Nyman
 
Real Time Web with Node
Real Time Web with NodeReal Time Web with Node
Real Time Web with Node
Tim Caswell
 
Node Powered Mobile
Node Powered MobileNode Powered Mobile
Node Powered Mobile
Tim Caswell
 
[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]
崇之 清水
 
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Jeongkyu Shin
 

Mais procurados (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
 

Destaque (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
 

Semelhante a 201204 random clustering

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
Jiayun Zhou
 
10 Cool Facts about Gradle
10 Cool Facts about Gradle10 Cool Facts about Gradle
10 Cool Facts about Gradle
Evgeny Goldin
 

Semelhante 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

The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
heathfieldcps1
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
ciinovamais
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
QucHHunhnh
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
kauryashika82
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
QucHHunhnh
 

Último (20)

microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
 
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
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Energy Resources. ( B. Pharmacy, 1st Year, Sem-II) Natural Resources
Energy Resources. ( B. Pharmacy, 1st Year, Sem-II) Natural ResourcesEnergy Resources. ( B. Pharmacy, 1st Year, Sem-II) Natural Resources
Energy Resources. ( B. Pharmacy, 1st Year, Sem-II) Natural Resources
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Role Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptxRole Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptx
 
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
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 

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