gephi.team team mailing list archive
-
gephi.team team
-
Mailing list archive
-
Message #02042
[Merge] lp:~vojtech-bardiovsky/gephi/vna-import into lp:gephi
Mathieu Bastian has proposed merging lp:~vojtech-bardiovsky/gephi/vna-import into lp:gephi.
Requested reviews:
Mathieu Bastian (mathieu.bastian)
For more details, see:
https://code.launchpad.net/~vojtech-bardiovsky/gephi/vna-import/+merge/54940
--
https://code.launchpad.net/~vojtech-bardiovsky/gephi/vna-import/+merge/54940
Your team Gephi Team is subscribed to branch lp:gephi.
=== added directory 'VnaPlugin'
=== added file 'VnaPlugin/build.xml'
--- VnaPlugin/build.xml 1970-01-01 00:00:00 +0000
+++ VnaPlugin/build.xml 2011-03-26 03:04:26 +0000
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
+<!-- for some information on what you could do (e.g. targets to override). -->
+<!-- If you delete this file and reopen the project it will be recreated. -->
+<project name="org.gephi.io.importer.plugin.vnaplugin" default="netbeans" basedir=".">
+ <description>Builds, tests, and runs the project org.gephi.io.importer.plugin.vnaplugin.</description>
+ <import file="nbproject/build-impl.xml"/>
+</project>
=== added file 'VnaPlugin/manifest.mf'
--- VnaPlugin/manifest.mf 1970-01-01 00:00:00 +0000
+++ VnaPlugin/manifest.mf 2011-03-26 03:04:26 +0000
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+OpenIDE-Module: org.gephi.io.importer.plugin.vnaplugin
+OpenIDE-Module-Localizing-Bundle: org/gephi/io/importer/plugin/vnaplugin/Bundle.properties
+OpenIDE-Module-Specification-Version: 1.0
+
=== added directory 'VnaPlugin/nbproject'
=== added file 'VnaPlugin/nbproject/build-impl.xml'
--- VnaPlugin/nbproject/build-impl.xml 1970-01-01 00:00:00 +0000
+++ VnaPlugin/nbproject/build-impl.xml 2011-03-26 03:04:26 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT ***
+*** EDIT ../build.xml INSTEAD ***
+-->
+<project name="org.gephi.io.importer.plugin.vnaplugin-impl" basedir="..">
+ <fail message="Please build using Ant 1.7.1 or higher.">
+ <condition>
+ <not>
+ <antversion atleast="1.7.1"/>
+ </not>
+ </condition>
+ </fail>
+ <property file="nbproject/private/suite-private.properties"/>
+ <property file="nbproject/suite.properties"/>
+ <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
+ <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
+ <property file="${suite.dir}/nbproject/platform.properties"/>
+ <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
+ <attribute name="name"/>
+ <attribute name="value"/>
+ <sequential>
+ <property name="@{name}" value="${@{value}}"/>
+ </sequential>
+ </macrodef>
+ <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
+ <attribute name="property"/>
+ <attribute name="value"/>
+ <sequential>
+ <property name="@{property}" value="@{value}"/>
+ </sequential>
+ </macrodef>
+ <property file="${user.properties.file}"/>
+ <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
+ <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
+ <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
+ <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
+ <condition>
+ <not>
+ <contains string="${cluster.path.evaluated}" substring="platform"/>
+ </not>
+ </condition>
+ </fail>
+ <import file="${harness.dir}/build.xml"/>
+</project>
=== added file 'VnaPlugin/nbproject/genfiles.properties'
--- VnaPlugin/nbproject/genfiles.properties 1970-01-01 00:00:00 +0000
+++ VnaPlugin/nbproject/genfiles.properties 2011-03-26 03:04:26 +0000
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=f458774a
+build.xml.script.CRC32=d4f20b59
+build.xml.stylesheet.CRC32=a56c6a5b@1.42.2
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=f458774a
+nbproject/build-impl.xml.script.CRC32=eafd874e
+nbproject/build-impl.xml.stylesheet.CRC32=238281d1@1.42.2
=== added file 'VnaPlugin/nbproject/project.properties'
--- VnaPlugin/nbproject/project.properties 1970-01-01 00:00:00 +0000
+++ VnaPlugin/nbproject/project.properties 2011-03-26 03:04:26 +0000
@@ -0,0 +1,2 @@
+javac.source=1.6
+javac.compilerargs=-Xlint -Xlint:-serial
=== added file 'VnaPlugin/nbproject/project.xml'
--- VnaPlugin/nbproject/project.xml 1970-01-01 00:00:00 +0000
+++ VnaPlugin/nbproject/project.xml 2011-03-26 03:04:26 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.apisupport.project</type>
+ <configuration>
+ <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
+ <code-name-base>org.gephi.io.importer.plugin.vnaplugin</code-name-base>
+ <suite-component/>
+ <module-dependencies>
+ <dependency>
+ <code-name-base>org.gephi.data.attributes.api</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>0.7.1.3</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.gephi.io.importer.api</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>0.7.1.9</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.gephi.utils.longtask</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>0.7.1.1</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.filesystems</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>7.38.2</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.util</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>8.6.1</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.util.lookup</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>8.3.1</specification-version>
+ </run-dependency>
+ </dependency>
+ </module-dependencies>
+ <public-packages>
+ <package>org.gephi.io.importer.plugin.vnaplugin</package>
+ </public-packages>
+ </data>
+ </configuration>
+</project>
=== added file 'VnaPlugin/nbproject/suite.properties'
--- VnaPlugin/nbproject/suite.properties 1970-01-01 00:00:00 +0000
+++ VnaPlugin/nbproject/suite.properties 2011-03-26 03:04:26 +0000
@@ -0,0 +1,1 @@
+suite.dir=${basedir}/..
=== added directory 'VnaPlugin/src'
=== added directory 'VnaPlugin/src/org'
=== added directory 'VnaPlugin/src/org/gephi'
=== added directory 'VnaPlugin/src/org/gephi/io'
=== added directory 'VnaPlugin/src/org/gephi/io/importer'
=== added directory 'VnaPlugin/src/org/gephi/io/importer/plugin'
=== added directory 'VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin'
=== added file 'VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/Bundle.properties'
--- VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/Bundle.properties 1970-01-01 00:00:00 +0000
+++ VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/Bundle.properties 2011-03-26 03:04:26 +0000
@@ -0,0 +1,12 @@
+OpenIDE-Module-Display-Category=Plugin
+OpenIDE-Module-Long-Description=\
+ Plugin for importing from netdraw .vna files (http://netwiki.amath.unc.edu/DataFormats/NetDrawVna).
+OpenIDE-Module-Name=VnaPlugin
+OpenIDE-Module-Short-Description=Plugin for importing from netdraw .vna files.
+
+fileType_VNA_Name=VNA Files
+
+ImporterVnaUI.displayName=VNA import
+ImporterVnaUI.message.linear=Line width increases linearly with its value.
+ImporterVnaUI.message.square_root=Line width increases with a square root of its value.
+ImporterVnaUI.message.logarithmic=Line width increases logarithmically with its value.
\ No newline at end of file
=== added file 'VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/ImporterBuilderVNA.java'
--- VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/ImporterBuilderVNA.java 1970-01-01 00:00:00 +0000
+++ VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/ImporterBuilderVNA.java 2011-03-26 03:04:26 +0000
@@ -0,0 +1,59 @@
+/*
+Copyright 2008-2010 Gephi
+Authors : Vojtech Bardiovsky <vojtech.bardiovsky@xxxxxxxxx>
+Website : http://www.gephi.org
+
+This file is part of Gephi.
+
+Gephi is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+Gephi is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with Gephi. If not, see <http://www.gnu.org/licenses/>.
+*/
+package org.gephi.io.importer.plugin.vnaplugin;
+
+import org.gephi.io.importer.api.FileType;
+import org.gephi.io.importer.spi.FileImporter;
+import org.gephi.io.importer.spi.FileImporterBuilder;
+import org.openide.filesystems.FileObject;
+import org.openide.util.NbBundle;
+import org.openide.util.lookup.ServiceProvider;
+
+/**
+ * @author Vojtech Bardiovsky
+ */
+@ServiceProvider(service = FileImporterBuilder.class)
+public final class ImporterBuilderVNA implements FileImporterBuilder {
+
+ public static final String IDENTIFER = "vna";
+
+ @Override
+ public FileImporter buildImporter() {
+ return new ImporterVNA();
+ }
+
+ @Override
+ public String getName() {
+ return IDENTIFER;
+ }
+
+ @Override
+ public FileType[] getFileTypes() {
+ FileType ft = new FileType(".vna", NbBundle.getMessage(getClass(), "fileType_VNA_Name"));
+ return new FileType[]{ft};
+ }
+
+ @Override
+ public boolean isMatchingImporter(FileObject fileObject) {
+ return fileObject.getExt().equalsIgnoreCase("vna");
+ }
+}
+
=== added file 'VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/ImporterVNA.java'
--- VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/ImporterVNA.java 1970-01-01 00:00:00 +0000
+++ VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/ImporterVNA.java 2011-03-26 03:04:26 +0000
@@ -0,0 +1,400 @@
+/*
+Copyright 2008-2010 Gephi
+Authors : Vojtech Bardiovsky <vojtech.bardiovsky@xxxxxxxxx>
+Website : http://www.gephi.org
+
+This file is part of Gephi.
+
+Gephi is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+Gephi is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with Gephi. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.gephi.io.importer.plugin.vnaplugin;
+
+import java.io.LineNumberReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.gephi.data.attributes.api.AttributeColumn;
+import org.gephi.data.attributes.api.AttributeType;
+import org.gephi.io.importer.api.ContainerLoader;
+import org.gephi.io.importer.api.EdgeDraft;
+import org.gephi.io.importer.api.ImportUtils;
+import org.gephi.io.importer.api.Issue;
+import org.gephi.io.importer.api.NodeDraft;
+import org.gephi.io.importer.api.Report;
+import org.gephi.io.importer.spi.FileImporter;
+import org.gephi.utils.longtask.spi.LongTask;
+import org.gephi.utils.progress.Progress;
+import org.gephi.utils.progress.ProgressTicket;
+
+/**
+ * Netdraw .vna files importer implemented as a simple state machine due to very
+ * loose specification of .vna format.
+ *
+ * @author Vojtech Bardiovsky
+ */
+public class ImporterVNA implements FileImporter, LongTask {
+
+ //Architecture
+ private Reader reader;
+ private ContainerLoader container;
+ private Report report;
+ private ProgressTicket progressTicket;
+ private boolean cancel = false;
+
+ private EdgeWidthFunction edgeWidthFunction;
+
+ Pattern pattern;
+
+ /**
+ * States for the state machine.
+ */
+ private enum State {DEFAULT, NODE_DATA, NODE_PROPERTIES, TIE_DATA,
+ NODE_DATA_DEF, NODE_PROPERTIES_DEF, TIE_DATA_DEF};
+
+ /**
+ * Attributes defined by the VNA file: VNA files allow some or no properties
+ * to be defined for nodes and edges.
+ */
+ private enum Attributes {OTHER, NODE_X, NODE_Y, NODE_COLOR, NODE_SIZE,
+ NODE_SHAPE, NODE_SHORT_LABEL, EDGE_STRENGTH};
+ /**
+ * Declared column labels for all sections.
+ */
+ private AttributeColumn[] nodeDataColumns, tieDataColumns;
+ private String[] nodePropertiesLabels;
+ /**
+ * Declared attributes for the node properties declaration section.
+ */
+ private Attributes[] nodeDataAttributes;
+ /**
+ * Declared attributes for the edge declaration section.
+ */
+ private Attributes[] tieAttributes;
+
+ @Override
+ public boolean execute(ContainerLoader container) {
+ this.container = container;
+ this.report = new Report();
+ LineNumberReader lineReader = ImportUtils.getTextReader(reader);
+ try {
+ importData(lineReader);
+ } catch (Exception e) {
+ report.logIssue(new Issue(e, Issue.Level.SEVERE));
+ }
+ return !cancel;
+ }
+
+ private void importData(LineNumberReader reader) throws Exception {
+ List<String> lines = new ArrayList<String>();
+ while (reader.ready()) {
+ String line = reader.readLine();
+ if (line != null && !line.isEmpty()) {
+ lines.add(line);
+ }
+ }
+
+ State state = State.DEFAULT;
+ Progress.start(progressTicket, lines.size());
+ String[] split;
+
+ final Pattern nodeDataPattern = Pattern.compile("^\\*node data\\s*", Pattern.CASE_INSENSITIVE);
+ final Pattern nodePropertiesPattern = Pattern.compile("^\\*node properties\\s*", Pattern.CASE_INSENSITIVE);
+ final Pattern tieDataPattern = Pattern.compile("^\\*tie data\\s*", Pattern.CASE_INSENSITIVE);
+
+ for (String line : lines) {
+ if (cancel) {
+ return;
+ }
+ if (nodeDataPattern.matcher(line).matches()) {
+ state = State.NODE_DATA_DEF;
+ continue;
+ } else if (nodePropertiesPattern.matcher(line).matches()) {
+ state = State.NODE_PROPERTIES_DEF;
+ continue;
+ } else if (tieDataPattern.matcher(line).matches()) {
+ state = State.TIE_DATA_DEF;
+ continue;
+ }
+ switch (state) {
+ case NODE_DATA_DEF:
+ String[] nodeDataLabels = line.split("[\\s,]+");
+ nodeDataColumns = new AttributeColumn[nodeDataLabels.length];
+ for (int i = 1; i < nodeDataLabels.length; i++) {
+ nodeDataColumns[i] = container.getAttributeModel().getNodeTable().addColumn(nodeDataLabels[i], AttributeType.STRING);
+ }
+ state = State.NODE_DATA;
+ break;
+ case NODE_PROPERTIES_DEF:
+ // Initialize node properties labels and fill nodeAttributes
+ // if some attributes can be used for NodeDraft
+ nodePropertiesLabels = line.split("[\\s,]+");
+ nodeDataAttributes = new Attributes[nodePropertiesLabels.length];
+ for (int i = 1; i < nodePropertiesLabels.length; i++) {
+ if (nodePropertiesLabels[i].equalsIgnoreCase("x")) {
+ nodeDataAttributes[i] = Attributes.NODE_X;
+ } else if (nodePropertiesLabels[i].equalsIgnoreCase("y")) {
+ nodeDataAttributes[i] = Attributes.NODE_Y;
+ } else if (nodePropertiesLabels[i].equalsIgnoreCase("color")) {
+ nodeDataAttributes[i] = Attributes.NODE_COLOR;
+ } else if (nodePropertiesLabels[i].equalsIgnoreCase("size")) {
+ nodeDataAttributes[i] = Attributes.NODE_SIZE;
+ } else if (nodePropertiesLabels[i].equalsIgnoreCase("shortlabel")) {
+ nodeDataAttributes[i] = Attributes.NODE_SHORT_LABEL;
+ } else if (nodePropertiesLabels[i].equalsIgnoreCase("shape")) {
+ nodeDataAttributes[i] = Attributes.NODE_SHAPE;
+ } else {
+ throw new RuntimeException("Unexpected node parameter at line '" + line + "';");
+ }
+ }
+ state = State.NODE_PROPERTIES;
+ break;
+ case TIE_DATA_DEF:
+ String tieDataLabels[] = line.split("[\\s,]+");
+ tieDataColumns = new AttributeColumn[tieDataLabels.length];
+ tieAttributes = new Attributes[tieDataColumns.length];
+ if (tieDataColumns.length < 2) {
+ throw new RuntimeException("Edge data labels definition does not contain two necessary variables ('from' and 'to').");
+ }
+ // Initialize edge labels and fill edgeAttributes if some
+ // attributes can be used for EdgeDraft
+ for (int i = 2; i < tieDataColumns.length; i++) {
+ if (tieDataLabels[i].equalsIgnoreCase("strength")) {
+ tieAttributes[i] = Attributes.EDGE_STRENGTH;
+ } else {
+ tieAttributes[i] = Attributes.OTHER;
+ tieDataColumns[i] = container.getAttributeModel().getEdgeTable().addColumn(tieDataLabels[i], AttributeType.STRING);
+ }
+ }
+ state = State.TIE_DATA;
+ break;
+ case NODE_DATA:
+ // new node
+ split = split(line);
+ if (split.length != nodeDataColumns.length) {
+ report.logIssue(new Issue("Number of labels and number of data mismatch in: '" + line + "'", Issue.Level.WARNING));
+ break;
+ }
+ addNode(split);
+ // parse - if parse error => LOG error
+ break;
+ case NODE_PROPERTIES:
+ split = split(line);
+ if (split.length != nodePropertiesLabels.length) {
+ report.logIssue(new Issue("Number of labels and number of data mismatch in: '" + line + "'", Issue.Level.WARNING));
+ break;
+ }
+ addNodeProperties(split);
+ // parse - if parse error => LOG error
+ break;
+ case TIE_DATA:
+ split = split(line);
+ if (split.length != tieDataColumns.length) {
+ report.logIssue(new Issue("Number of labels and number of data mismatch in: '" + line + "'", Issue.Level.WARNING));
+ break;
+ }
+ addEdge(split);
+ // parse - if parse error => LOG error
+ break;
+ }
+ Progress.progress(progressTicket);
+ }
+ }
+
+ /**
+ * Splits the line using space separator, but respecting quotes.
+ */
+ private String[] split(String line) {
+ // Pattern for splitting by spaces but respecting quotes.
+ if (pattern == null) {
+ pattern = Pattern.compile("[^\\s\"]+|\"([^\"]*)\"");
+ }
+ List<String> tokens = new ArrayList<String>();
+ Matcher patternMatcher = pattern.matcher(line);
+ while (patternMatcher.find()) {
+ if ((patternMatcher.group(1)) != null) {
+ tokens.add(patternMatcher.group(1));
+ } else {
+ tokens.add(patternMatcher.group());
+ }
+ }
+ return tokens.toArray(new String[]{});
+ }
+
+ private void addNode(String[] nodeData) {
+ NodeDraft node;
+ String id = nodeData[0];
+ if (!container.nodeExists(id)) {
+ node = container.factory().newNodeDraft();
+ node.setId(id);
+ container.addNode(node);
+ } else {
+ node = container.getNode(id);
+ }
+ for (int i = 1; i < nodeDataColumns.length; i++) {
+ node.addAttributeValue(nodeDataColumns[i], nodeData[i]);
+ }
+ }
+
+ private void addNodeProperties(String[] nodeProperties) {
+ NodeDraft node;
+ String id = nodeProperties[0];
+ if (!container.nodeExists(id)) {
+ node = container.factory().newNodeDraft();
+ node.setId(id);
+ container.addNode(node);
+ } else {
+ node = container.getNode(id);
+ }
+ int i = 0;
+ try {
+ for (i = 1; i < nodeProperties.length; i++) {
+ switch (nodeDataAttributes[i]) {
+ case NODE_X:
+ node.setX(Float.parseFloat(nodeProperties[i]));
+ break;
+ case NODE_Y:
+ node.setY(Float.parseFloat(nodeProperties[i]));
+ break;
+ case NODE_COLOR:
+ // Add just shades of red as NetDraw VNA is not specific
+ // about color.
+ node.setColor(Integer.parseInt(nodeProperties[i]), 0, 0);
+ break;
+ case NODE_SIZE:
+ node.setSize(Float.parseFloat(nodeProperties[i]));
+ break;
+ case NODE_SHORT_LABEL:
+ node.setLabel(nodeProperties[i]);
+ break;
+ }
+ }
+ } catch (NumberFormatException e) {
+ report.logIssue(new Issue("Error parsing numerical value at '" + nodeProperties[i] + "'.", Issue.Level.WARNING));
+ }
+ }
+
+ private void addEdge(String[] edgeData) {
+ NodeDraft sourceNode;
+ if (!container.nodeExists(edgeData[0])) {
+ sourceNode = container.factory().newNodeDraft();
+ sourceNode.setId(edgeData[0]);
+ container.addNode(sourceNode);
+ } else {
+ sourceNode = container.getNode(edgeData[0]);
+ }
+ NodeDraft targetNode;
+ if (!container.nodeExists(edgeData[1])) {
+ targetNode = container.factory().newNodeDraft();
+ targetNode.setId(edgeData[1]);
+ container.addNode(targetNode);
+ } else {
+ targetNode = container.getNode(edgeData[1]);
+ }
+ EdgeDraft edge = container.getEdge(sourceNode, targetNode);
+ if (edge == null) {
+ edge = container.factory().newEdgeDraft();
+ edge.setSource(sourceNode);
+ edge.setTarget(targetNode);
+ int i = 0;
+ try {
+ for (i = 2; i < edgeData.length; i++) {
+ switch (tieAttributes[i]) {
+ case EDGE_STRENGTH:
+ float weight = Float.parseFloat(edgeData[i]);
+ if (edgeWidthFunction != null) {
+ weight = edgeWidthFunction.computeTransformation(weight);
+ }
+ edge.setWeight(weight);
+ break;
+ case OTHER:
+ edge.addAttributeValue(tieDataColumns[i], edgeData[i]);
+ break;
+ }
+ }
+ } catch (NumberFormatException e) {
+ report.logIssue(new Issue("Error parsing numerical value at '" + edgeData[i] + "'.", Issue.Level.WARNING));
+ }
+ container.addEdge(edge);
+ }
+ }
+
+ public void setEdgeWidthFunction(EdgeWidthFunction function) {
+ this.edgeWidthFunction = function;
+ }
+
+ @Override
+ public void setReader(Reader reader) {
+ this.reader = reader;
+ }
+
+ @Override
+ public ContainerLoader getContainer() {
+ return container;
+ }
+
+ @Override
+ public Report getReport() {
+ return report;
+ }
+
+ @Override
+ public boolean cancel() {
+ cancel = true;
+ return true;
+ }
+
+ @Override
+ public void setProgressTicket(ProgressTicket progressTicket) {
+ this.progressTicket = progressTicket;
+ }
+
+ public static class EdgeWidthFunction {
+ public enum Function {LINEAR, SQUARE_ROOT, LOGARITHMIC};
+
+ public final Function function;
+ public final float coefficient;
+
+ public EdgeWidthFunction(Function function, float coefficient) {
+ this.function = function;
+ this.coefficient = coefficient;
+ }
+
+ public float computeTransformation(float value) {
+ switch (function) {
+ case LINEAR:
+ return value * coefficient;
+ case LOGARITHMIC:
+ return (float) Math.log(value + 10);
+ case SQUARE_ROOT:
+ return (float) Math.sqrt(value);
+ }
+ return 0;
+ }
+
+ @Override
+ public String toString() {
+ switch (function) {
+ case LINEAR:
+ return "Linear";
+ case LOGARITHMIC:
+ return "Logartihmic";
+ case SQUARE_ROOT:
+ return "Square root";
+ }
+ return null;
+ }
+ }
+}
=== added file 'VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/ImporterVnaUI.java'
--- VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/ImporterVnaUI.java 1970-01-01 00:00:00 +0000
+++ VnaPlugin/src/org/gephi/io/importer/plugin/vnaplugin/ImporterVnaUI.java 2011-03-26 03:04:26 +0000
@@ -0,0 +1,149 @@
+/*
+Copyright 2008-2010 Gephi
+Authors : Vojtech Bardiovsky <vojtech.bardiovsky@xxxxxxxxx>
+Website : http://www.gephi.org
+
+This file is part of Gephi.
+
+Gephi is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+Gephi is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with Gephi. If not, see <http://www.gnu.org/licenses/>.
+*/
+package org.gephi.io.importer.plugin.vnaplugin;
+
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import org.gephi.io.importer.plugin.vnaplugin.ImporterVNA.EdgeWidthFunction;
+import org.gephi.io.importer.spi.Importer;
+import org.gephi.io.importer.spi.ImporterUI;
+import org.openide.util.NbBundle;
+import org.openide.util.lookup.ServiceProvider;
+
+/**
+ * VNA importer UI.
+ * @author Vojtech Bardiovsky
+ */
+@ServiceProvider(service = ImporterUI.class)
+public class ImporterVnaUI implements ImporterUI {
+
+ private ImporterVNA importer;
+ private JComboBox comboBox;
+ private JTextField textField;
+ private JLabel messageLabel;
+ private JPanel panel;
+
+ private final String MESSAGE_LINEAR = NbBundle.getMessage(getClass(), "ImporterVnaUI.message.linear");
+ private final String MESSAGE_SQUARE_ROOT = NbBundle.getMessage(getClass(), "ImporterVnaUI.message.square_root");
+ private final String MESSAGE_LOGARITHMIC = NbBundle.getMessage(getClass(), "ImporterVnaUI.message.logarithmic");
+
+ @Override
+ public void setup(Importer importer) {
+ this.importer = (ImporterVNA) importer;
+ }
+
+ @Override
+ public JPanel getPanel() {
+ panel = new JPanel(new GridBagLayout());
+ comboBox = new JComboBox(EdgeWidthFunction.Function.values());
+ textField = new JTextField("1", 5);
+ messageLabel = new JLabel(MESSAGE_LINEAR);
+
+ comboBox.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ comboBoxSelectionChanged(e);
+ }
+ });
+
+ GridBagConstraints constraints = new GridBagConstraints();
+ constraints.weightx = 1.0;
+ constraints.weighty = 1.0;
+ constraints.anchor = GridBagConstraints.NORTHWEST;
+ constraints.insets = new Insets(5, 5, 5, 5);
+
+ constraints.gridx = 0;
+ constraints.gridy = 0;
+ panel.add(comboBox, constraints);
+
+ constraints.gridx = 1;
+ panel.add(textField, constraints);
+
+ constraints.gridx = 0;
+ constraints.gridy = 1;
+ constraints.gridwidth = 2;
+ panel.add(messageLabel, constraints);
+
+ constraints.gridy = 2;
+ constraints.gridwidth = 2;
+ constraints.fill = GridBagConstraints.VERTICAL;
+ panel.add(new JPanel());
+
+ panel.setPreferredSize(new Dimension(350, 100));
+ panel.setSize(new Dimension(350, 100));
+
+ return panel;
+ }
+
+ private void comboBoxSelectionChanged(ActionEvent e) {
+ switch ((EdgeWidthFunction.Function) comboBox.getSelectedItem()) {
+ case LINEAR:
+ messageLabel.setText(MESSAGE_LINEAR);
+ textField.setEditable(true);
+ break;
+ case LOGARITHMIC:
+ messageLabel.setText(MESSAGE_LOGARITHMIC);
+ textField.setEditable(false);
+ break;
+ case SQUARE_ROOT:
+ messageLabel.setText(MESSAGE_SQUARE_ROOT);
+ textField.setEditable(false);
+ break;
+ }
+ }
+
+ @Override
+ public void unsetup(boolean update) {
+ if (update) {
+ float coefficient = 1;
+ if (((EdgeWidthFunction.Function) comboBox.getSelectedItem()).equals(EdgeWidthFunction.Function.LINEAR)) {
+ try {
+ coefficient = Float.parseFloat(textField.getText());
+ } catch (NumberFormatException e) {}
+ }
+ importer.setEdgeWidthFunction(new EdgeWidthFunction((EdgeWidthFunction.Function) comboBox.getSelectedItem(), coefficient));
+ }
+ panel = null;
+ importer = null;
+ textField = null;
+ messageLabel = null;
+ comboBox = null;
+ }
+
+ @Override
+ public String getDisplayName() {
+ return NbBundle.getMessage(getClass(), "ImporterVnaUI.displayName");
+ }
+
+ @Override
+ public boolean isUIForImporter(Importer importer) {
+ return importer instanceof ImporterVNA;
+ }
+
+}
=== added directory 'VnaPlugin/test'
=== added directory 'VnaPlugin/test/unit'
=== added directory 'VnaPlugin/test/unit/src'
=== added directory 'VnaPlugin/test/unit/src/org'
=== added directory 'VnaPlugin/test/unit/src/org/gephi'
=== added directory 'VnaPlugin/test/unit/src/org/gephi/io'
=== added directory 'VnaPlugin/test/unit/src/org/gephi/io/importer'
=== added directory 'VnaPlugin/test/unit/src/org/gephi/io/importer/plugin'
=== added directory 'VnaPlugin/test/unit/src/org/gephi/io/importer/plugin/vnaplugin'
=== added file 'VnaPlugin/test/unit/src/org/gephi/io/importer/plugin/vnaplugin/ImporterVNATest.java'
--- VnaPlugin/test/unit/src/org/gephi/io/importer/plugin/vnaplugin/ImporterVNATest.java 1970-01-01 00:00:00 +0000
+++ VnaPlugin/test/unit/src/org/gephi/io/importer/plugin/vnaplugin/ImporterVNATest.java 2011-03-26 03:04:26 +0000
@@ -0,0 +1,82 @@
+package org.gephi.io.importer.plugin.vnaplugin;
+
+import org.gephi.io.importer.api.Report;
+import org.gephi.io.importer.api.Container;
+import org.openide.util.Lookup;
+import org.gephi.io.importer.api.ContainerFactory;
+import java.io.StringReader;
+import org.gephi.io.importer.api.Issue;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ * JUnit test for {@link ImporterVNA}.
+ *
+ * @author Vojtech Bardiovsky
+ */
+public class ImporterVNATest {
+
+ /**
+ * Test of execute method, of class ImporterVNA.
+ */
+ @Test
+ public void testExecute() {
+ Container container = Lookup.getDefault().lookup(ContainerFactory.class).newContainer();
+ container.setReport(new Report());
+ ImporterVNA instance = new ImporterVNA();
+ instance.setReader(new StringReader(INPUT_1));
+ instance.execute(container.getLoader());
+ for (Issue issue : instance.getReport().getIssues()) {
+ System.out.println(issue.getLevel() + " - " + issue.getMessage());
+ };
+ System.out.println("Testing executed.");
+ }
+
+ private static final String INPUT_1 = "*Node data\n" +
+ "ID gender role betweenness\n" +
+ "HOLLY female participant 78.33333588\n" +
+ "BRAZEY female participant 0\n" +
+ "CAROL female participant 1.333333373\n" +
+ "PAM female participant 32.5\n" +
+ "PAT female participant 39.5\n" +
+ "JENNIE female participant 6.333333492\n" +
+ "PAULINE female participant 12.5\n" +
+ "*Node properties\n" +
+ "ID x y color shape size shortlabel\n" +
+ "HOLLY 1160 271 255 1 10 HOLLY\n" +
+ "BRAZEY 1214 577 255 1 10 BRAZEY\n" +
+ "CAROL 671 612 255 1 10 CAROL\n" +
+ "PAM 985 127 255 1 10 PAM\n" +
+ "PAT 802 402 255 1 10 PAT\n" +
+ "JENNIE 729 187 255 1 10 JENNIE\n" +
+ "PAULINE 69 590 255 1 10 PAULINE\n" +
+ "ANN 877 818 255 1 10 ANN\n" +
+ "MICHAEL 182 224 255 1 10 MICHAEL\n" +
+ "BILL 380 137 255 1 10 BILL\n" +
+ "LEE 617 44 255 1 10 LEE\n" +
+ "DON 281 656 255 1 10 DON\n" +
+ "JOHN 617 839 255 1 10 JOHN\n" +
+ "HARRY 382 410 255 1 10 HARRY\n" +
+ "*Tie data\n" +
+ "from to friends strength\n" +
+ "HOLLY PAM 1 1\n" +
+ "PAT HOLLY 1 2\n" +
+ "PAULINE PAT 1 2\n" +
+ "JOHN RUSS 1 3\n" +
+ "HARRY HOLLY 1 2\n" +
+ "HARRY MICHAEL 1 1\n" +
+ "BERT RUSS 1 3\n" +
+ "RUSS GERY 1 1\n" +
+ "RUSS STEVE 1 3\n" +
+ "RUSS BERT 1 2\n" +
+ "HOLLY BRAZEY 0 7\n" +
+ "HOLLY CAROL 0 17\n" +
+ "BRAZEY PAULINE 0 7\n" +
+ "BRAZEY ANN 0 6\n" +
+ "BRAZEY MICHAEL 0 15\n" +
+ "PAM MICHAEL 0 9\n" +
+ "PAM BILL 0 16\n" +
+ "PAM LEE 0 13\n" +
+ "JENNIE BRAZEY 0 8\n" +
+ "PAULINE JENNIE 0 5\n";
+}
\ No newline at end of file
=== modified file 'nbproject/project.properties'
--- nbproject/project.properties 2011-03-06 23:48:09 +0000
+++ nbproject/project.properties 2011-03-26 03:04:26 +0000
@@ -1,206 +1,208 @@
-app.icon=branding/core/core.jar/org/netbeans/core/startup/frame48.gif
-app.name=gephi07beta
-app.title=Gephi 0.7 beta
-project.org.apache.tools.bzip2=BZIP2Wrapper
-project.org.gephi.algorithms=Algorithms
-project.org.gephi.clustering.api=ClusteringAPI
-project.org.gephi.clustering.plugin=ClusteringPlugin
-project.org.gephi.datalab.api=DataLaboratoryAPI
-project.org.gephi.datalab.plugin=DataLaboratoryPlugin
-project.org.gephi.desktop.clustering=DesktopClustering
-project.org.gephi.desktop.context=DesktopContext
-project.org.gephi.desktop.datalab=DesktopDataLaboratory
-project.org.gephi.desktop.importer=DesktopImport
-project.org.gephi.desktop.layout=DesktopLayout
-project.org.gephi.desktop.mrufiles.api=MostRecentFilesAPI
-project.org.gephi.desktop.perspective=DesktopPerspective
-project.org.gephi.desktop.preview=DesktopPreview
-project.org.gephi.desktop.progress=DesktopProgress
-project.org.gephi.desktop.project=DesktopProject
-project.org.gephi.desktop.recentfiles=DesktopRecentFiles
-project.org.gephi.desktop.spigot=DesktopSpigot
-project.org.gephi.desktop.timeline=DesktopTimeline
-project.org.gephi.desktop.welcome=WelcomeScreen
-project.org.gephi.dynamic=DynamicImpl
-project.org.gephi.dynamic.api=DynamicAPI
-project.org.gephi.filters=FiltersImpl
-project.org.gephi.filters.plugin=FiltersPlugin
-project.org.gephi.io.exporter.api=ExportAPI
-project.org.gephi.io.exporter.plugin=ExportPlugin
-project.org.gephi.io.exporter.preview=PreviewExport
-project.org.gephi.io.generator.api=GeneratorAPI
-project.org.gephi.io.generator.plugin=GeneratorPlugin
-project.org.gephi.io.importer.api=ImportAPI
-project.org.gephi.io.importer.plugin=ImportPlugin
-project.org.gephi.io.processor.plugin=ProcessorPlugin
-project.org.gephi.io.spigot.plugin=SpigotPlugin
-project.org.gephi.javacsv=Javacsv
-project.org.gephi.layout.plugin=LayoutPlugin
-project.org.gephi.lib.batik=BatikWrapper
-project.org.gephi.desktop.filters=DesktopFilters
-project.org.gephi.desktop.hierarchy=DesktopHierarchy
-project.org.gephi.desktop.io.export=DesktopExport
-project.org.gephi.desktop.partition=DesktopPartition
-project.org.gephi.desktop.ranking=DesktopRanking
-project.org.gephi.desktop.statistics=DesktopStatistics
-project.org.gephi.desktop.tools=DesktopTools
-project.org.gephi.filters.api=FiltersAPI
-project.org.gephi.io.database.drivers=DBDrivers
-project.org.gephi.desktop.generate=DesktopGenerate
-project.org.gephi.lib.beansbinding=BeansBindingWrapper
-project.org.gephi.lib.commons.codec=CommonsCodec
-project.org.gephi.lib.flamingo=FlamingoWrapper
-project.org.gephi.lib.itext=iTextWrapper
-project.org.gephi.lib.javacsv=JavaCSVWrapper
-project.org.gephi.lib.javamail=JavaMailWrapper
-project.org.gephi.lib.jcalendar=JCalendarWrapper
-project.org.gephi.lib.staxutils=StaxUtils
-project.org.gephi.partition.api=PartitionAPI
-project.org.gephi.partition.plugin=PartitionPlugin
-project.org.gephi.preview=PreviewImpl
-project.org.gephi.preview.api=PreviewAPI
-project.org.gephi.lib.processing=ProcessingWrapper
-project.org.gephi.ranking.api=RankingAPI
-project.org.gephi.statistics.api=StatisticsAPI
-project.org.gephi.statistics.plugin=StatisticsPlugin
-project.org.gephi.timeline.api=TimelineAPI
-project.org.gephi.tools.plugin=ToolsPlugin
-project.org.gephi.tools.api=ToolsAPI
-project.org.gephi.ui.components=UIComponents
-project.org.gephi.ui.components.SplineEditor=SplineEditor
-project.org.gephi.ui.exporter.plugin=ExportPluginUI
-project.org.gephi.ui.exporter.preview=PreviewExportUI
-project.org.gephi.ui.filters.plugin=FiltersPluginUI
-project.org.gephi.ui.generator.plugin=GeneratorPluginUI
-project.org.gephi.ui.importer.plugin=ImportPluginUI
-project.org.gephi.ui.partition.plugin=PartitionPluginUI
-project.org.gephi.ui.processor.plugin=ProcessorPluginUI
-project.org.gephi.ui.project=ProjectUI
-project.org.gephi.ui.propertyeditor=AttributeColumnPropertyEditor
-project.org.gephi.ui.ranking.plugin=RankingPluginUI
-project.org.gephi.ui.spigot.plugin=SpigotPluginUI
-project.org.gephi.ui.statistics.plugin=StatisticsPluginUI
-project.org.gephi.ui.workspace=WorkspaceUI
-project.org.gephi.lib.validation=ValidationAPI
-project.org.gephi.utils=Utils
-project.org.gephi.utils.collection=CollectionUtils
-project.org.gephi.visualization.api=VisualizationAPI
-project.org.jdesktop.swingx=SwingX
-project.org.jfree=JFreeChart
-project.org.gephi.utils.longtask=LongTaskAPI
-project.org.joda.time=JodaWrapper
-project.org.netbeans.swing.dirchooser=DirectoryChooser
-run.args.extra=-J-Xms256m -J-Xmx1000m -J-Dsun.java2d.noddraw=true -J-Dsun.awt.noerasebackground=true
-branding.token=${app.name}
-app.conf=nbproject/gephi07beta.conf
-modules=\
- ${project.org.gephi.project.api}:\
- ${project.org.gephi.branding.desktop}:\
- ${project.org.gephi.ui.utils}:\
- ${project.org.gephi.visualization}:\
- ${project.org.gephi.lib.jogl}:\
- ${project.org.gephi.graph.api}:\
- ${project.org.gephi.lib.gleem}:\
- ${project.org.gephi.data.attributes.api}:\
- ${project.org.gephi.layout.api}:\
- ${project.org.gephi.data.attributes}:\
- ${project.org.gephi.graph.dhns}:\
- ${project.org.gephi.desktop.generate}:\
- ${project.org.gephi.lib.validation}:\
- ${project.org.jdesktop.swingx}:\
- ${project.org.gephi.utils.longtask}:\
- ${project.org.gephi.io.database.drivers}:\
- ${project.org.jfree}:\
- ${project.org.gephi.timeline.api}:\
- ${project.org.gephi.ui.components}:\
- ${project.org.gephi.desktop.io.export}:\
- ${project.org.netbeans.swing.dirchooser}:\
- ${project.org.gephi.tools.api}:\
- ${project.org.gephi.tools.plugin}:\
- ${project.org.gephi.desktop.tools}:\
- ${project.org.gephi.desktop.ranking}:\
- ${project.org.gephi.ui.components.SplineEditor}:\
- ${project.org.gephi.filters.api}:\
- ${project.org.gephi.lib.processing}:\
- ${project.org.gephi.preview.api}:\
- ${project.org.gephi.preview}:\
- ${project.org.gephi.desktop.hierarchy}:\
- ${project.org.gephi.partition.api}:\
- ${project.org.gephi.desktop.partition}:\
- ${project.org.gephi.ui.workspace}:\
- ${project.org.gephi.statistics.api}:\
- ${project.org.gephi.desktop.statistics}:\
- ${project.org.gephi.ui.propertyeditor}:\
- ${project.org.gephi.lib.batik}:\
- ${project.org.gephi.desktop.filters}:\
- ${project.org.gephi.statistics.plugin}:\
- ${project.org.gephi.ui.statistics.plugin}:\
- ${project.org.gephi.ui.project}:\
- ${project.org.gephi.layout.plugin}:\
- ${project.org.gephi.desktop.layout}:\
- ${project.org.gephi.io.exporter.plugin}:\
- ${project.org.gephi.ui.exporter.plugin}:\
- ${project.org.gephi.io.exporter.api}:\
- ${project.org.gephi.io.generator.plugin}:\
- ${project.org.gephi.ui.generator.plugin}:\
- ${project.org.gephi.io.generator.api}:\
- ${project.org.gephi.io.importer.api}:\
- ${project.org.gephi.io.importer.plugin}:\
- ${project.org.gephi.io.processor.plugin}:\
- ${project.org.gephi.desktop.importer}:\
- ${project.org.gephi.filters.plugin}:\
- ${project.org.gephi.ui.filters.plugin}:\
- ${project.org.gephi.partition.plugin}:\
- ${project.org.gephi.algorithms}:\
- ${project.org.gephi.clustering.api}:\
- ${project.org.gephi.clustering.plugin}:\
- ${project.org.gephi.desktop.clustering}:\
- ${project.org.gephi.desktop.context}:\
- ${project.org.gephi.desktop.preview}:\
- ${project.org.gephi.desktop.timeline}:\
- ${project.org.joda.time}:\
- ${project.org.gephi.ui.ranking.plugin}:\
- ${project.org.gephi.ranking.api}:\
- ${project.org.gephi.utils.collection}:\
- ${project.org.gephi.desktop.welcome}:\
- ${project.org.gephi.desktop.mrufiles.api}:\
- ${project.org.gephi.desktop.project}:\
- ${project.org.gephi.lib.itext}:\
- ${project.org.gephi.io.exporter.preview}:\
- ${project.org.gephi.ui.exporter.preview}:\
- ${project.org.gephi.desktop.progress}:\
- ${project.org.gephi.filters}:\
- ${project.org.gephi.visualization.api}:\
- ${project.org.gephi.lib.beansbinding}:\
- ${project.org.gephi.utils}:\
- ${project.org.gephi.ui.importer.plugin}:\
- ${project.org.gephi.io.spigot.plugin}:\
- ${project.org.gephi.ui.spigot.plugin}:\
- ${project.org.gephi.desktop.spigot}:\
- ${project.org.gephi.ui.partition.plugin}:\
- ${project.org.gephi.dynamic}:\
- ${project.org.gephi.dynamic.api}:\
- ${project.org.gephi.desktop.perspective}:\
- ${project.org.gephi.ui.processor.plugin}:\
- ${project.org.gephi.lib.staxutils}:\
- ${project.org.gephi.lib.commons.codec}:\
- ${project.org.gephi.lib.flamingo}:\
- ${project.org.gephi.lib.javacsv}:\
- ${project.org.gephi.datalab.api}:\
- ${project.org.gephi.datalab.plugin}:\
- ${project.org.gephi.desktop.datalab}:\
- ${project.org.apache.tools.bzip2}:\
- ${project.org.gephi.desktop.recentfiles}:\
- ${project.org.gephi.lib.javamail}:\
- ${project.org.gephi.lib.jcalendar}
-project.org.gephi.branding.desktop=DesktopBranding
-project.org.gephi.data.attributes=AttributesImpl
-project.org.gephi.data.attributes.api=AttributesAPI
-project.org.gephi.graph.api=GraphAPI
-project.org.gephi.lib.jogl=JOGLWrapper
-project.org.gephi.layout.api=LayoutAPI
-project.org.gephi.project.api=ProjectAPI
-project.org.gephi.ui.utils=UIUtils
-project.org.gephi.visualization=VisualizationModule
-project.org.gephi.lib.gleem=Gleem
-project.org.gephi.graph.dhns=DHNSGraph
+app.icon=branding/core/core.jar/org/netbeans/core/startup/frame48.gif
+app.name=gephi07beta
+app.title=Gephi 0.7 beta
+project.org.apache.tools.bzip2=BZIP2Wrapper
+project.org.gephi.algorithms=Algorithms
+project.org.gephi.clustering.api=ClusteringAPI
+project.org.gephi.clustering.plugin=ClusteringPlugin
+project.org.gephi.datalab.api=DataLaboratoryAPI
+project.org.gephi.datalab.plugin=DataLaboratoryPlugin
+project.org.gephi.desktop.clustering=DesktopClustering
+project.org.gephi.desktop.context=DesktopContext
+project.org.gephi.desktop.datalab=DesktopDataLaboratory
+project.org.gephi.desktop.importer=DesktopImport
+project.org.gephi.desktop.layout=DesktopLayout
+project.org.gephi.desktop.mrufiles.api=MostRecentFilesAPI
+project.org.gephi.desktop.perspective=DesktopPerspective
+project.org.gephi.desktop.preview=DesktopPreview
+project.org.gephi.desktop.progress=DesktopProgress
+project.org.gephi.desktop.project=DesktopProject
+project.org.gephi.desktop.recentfiles=DesktopRecentFiles
+project.org.gephi.desktop.spigot=DesktopSpigot
+project.org.gephi.desktop.timeline=DesktopTimeline
+project.org.gephi.desktop.welcome=WelcomeScreen
+project.org.gephi.dynamic=DynamicImpl
+project.org.gephi.dynamic.api=DynamicAPI
+project.org.gephi.filters=FiltersImpl
+project.org.gephi.filters.plugin=FiltersPlugin
+project.org.gephi.io.exporter.api=ExportAPI
+project.org.gephi.io.exporter.plugin=ExportPlugin
+project.org.gephi.io.exporter.preview=PreviewExport
+project.org.gephi.io.generator.api=GeneratorAPI
+project.org.gephi.io.generator.plugin=GeneratorPlugin
+project.org.gephi.io.importer.api=ImportAPI
+project.org.gephi.io.importer.plugin=ImportPlugin
+project.org.gephi.io.importer.plugin.vnaplugin=VnaPlugin
+project.org.gephi.io.processor.plugin=ProcessorPlugin
+project.org.gephi.io.spigot.plugin=SpigotPlugin
+project.org.gephi.javacsv=Javacsv
+project.org.gephi.layout.plugin=LayoutPlugin
+project.org.gephi.lib.batik=BatikWrapper
+project.org.gephi.desktop.filters=DesktopFilters
+project.org.gephi.desktop.hierarchy=DesktopHierarchy
+project.org.gephi.desktop.io.export=DesktopExport
+project.org.gephi.desktop.partition=DesktopPartition
+project.org.gephi.desktop.ranking=DesktopRanking
+project.org.gephi.desktop.statistics=DesktopStatistics
+project.org.gephi.desktop.tools=DesktopTools
+project.org.gephi.filters.api=FiltersAPI
+project.org.gephi.io.database.drivers=DBDrivers
+project.org.gephi.desktop.generate=DesktopGenerate
+project.org.gephi.lib.beansbinding=BeansBindingWrapper
+project.org.gephi.lib.commons.codec=CommonsCodec
+project.org.gephi.lib.flamingo=FlamingoWrapper
+project.org.gephi.lib.itext=iTextWrapper
+project.org.gephi.lib.javacsv=JavaCSVWrapper
+project.org.gephi.lib.javamail=JavaMailWrapper
+project.org.gephi.lib.jcalendar=JCalendarWrapper
+project.org.gephi.lib.staxutils=StaxUtils
+project.org.gephi.partition.api=PartitionAPI
+project.org.gephi.partition.plugin=PartitionPlugin
+project.org.gephi.preview=PreviewImpl
+project.org.gephi.preview.api=PreviewAPI
+project.org.gephi.lib.processing=ProcessingWrapper
+project.org.gephi.ranking.api=RankingAPI
+project.org.gephi.statistics.api=StatisticsAPI
+project.org.gephi.statistics.plugin=StatisticsPlugin
+project.org.gephi.timeline.api=TimelineAPI
+project.org.gephi.tools.plugin=ToolsPlugin
+project.org.gephi.tools.api=ToolsAPI
+project.org.gephi.ui.components=UIComponents
+project.org.gephi.ui.components.SplineEditor=SplineEditor
+project.org.gephi.ui.exporter.plugin=ExportPluginUI
+project.org.gephi.ui.exporter.preview=PreviewExportUI
+project.org.gephi.ui.filters.plugin=FiltersPluginUI
+project.org.gephi.ui.generator.plugin=GeneratorPluginUI
+project.org.gephi.ui.importer.plugin=ImportPluginUI
+project.org.gephi.ui.partition.plugin=PartitionPluginUI
+project.org.gephi.ui.processor.plugin=ProcessorPluginUI
+project.org.gephi.ui.project=ProjectUI
+project.org.gephi.ui.propertyeditor=AttributeColumnPropertyEditor
+project.org.gephi.ui.ranking.plugin=RankingPluginUI
+project.org.gephi.ui.spigot.plugin=SpigotPluginUI
+project.org.gephi.ui.statistics.plugin=StatisticsPluginUI
+project.org.gephi.ui.workspace=WorkspaceUI
+project.org.gephi.lib.validation=ValidationAPI
+project.org.gephi.utils=Utils
+project.org.gephi.utils.collection=CollectionUtils
+project.org.gephi.visualization.api=VisualizationAPI
+project.org.jdesktop.swingx=SwingX
+project.org.jfree=JFreeChart
+project.org.gephi.utils.longtask=LongTaskAPI
+project.org.joda.time=JodaWrapper
+project.org.netbeans.swing.dirchooser=DirectoryChooser
+run.args.extra=-J-Xms256m -J-Xmx1000m -J-Dsun.java2d.noddraw=true -J-Dsun.awt.noerasebackground=true
+branding.token=${app.name}
+app.conf=nbproject/gephi07beta.conf
+modules=\
+ ${project.org.gephi.project.api}:\
+ ${project.org.gephi.branding.desktop}:\
+ ${project.org.gephi.ui.utils}:\
+ ${project.org.gephi.visualization}:\
+ ${project.org.gephi.lib.jogl}:\
+ ${project.org.gephi.graph.api}:\
+ ${project.org.gephi.lib.gleem}:\
+ ${project.org.gephi.data.attributes.api}:\
+ ${project.org.gephi.layout.api}:\
+ ${project.org.gephi.data.attributes}:\
+ ${project.org.gephi.graph.dhns}:\
+ ${project.org.gephi.desktop.generate}:\
+ ${project.org.gephi.lib.validation}:\
+ ${project.org.jdesktop.swingx}:\
+ ${project.org.gephi.utils.longtask}:\
+ ${project.org.gephi.io.database.drivers}:\
+ ${project.org.jfree}:\
+ ${project.org.gephi.timeline.api}:\
+ ${project.org.gephi.ui.components}:\
+ ${project.org.gephi.desktop.io.export}:\
+ ${project.org.netbeans.swing.dirchooser}:\
+ ${project.org.gephi.tools.api}:\
+ ${project.org.gephi.tools.plugin}:\
+ ${project.org.gephi.desktop.tools}:\
+ ${project.org.gephi.desktop.ranking}:\
+ ${project.org.gephi.ui.components.SplineEditor}:\
+ ${project.org.gephi.filters.api}:\
+ ${project.org.gephi.lib.processing}:\
+ ${project.org.gephi.preview.api}:\
+ ${project.org.gephi.preview}:\
+ ${project.org.gephi.desktop.hierarchy}:\
+ ${project.org.gephi.partition.api}:\
+ ${project.org.gephi.desktop.partition}:\
+ ${project.org.gephi.ui.workspace}:\
+ ${project.org.gephi.statistics.api}:\
+ ${project.org.gephi.desktop.statistics}:\
+ ${project.org.gephi.ui.propertyeditor}:\
+ ${project.org.gephi.lib.batik}:\
+ ${project.org.gephi.desktop.filters}:\
+ ${project.org.gephi.statistics.plugin}:\
+ ${project.org.gephi.ui.statistics.plugin}:\
+ ${project.org.gephi.ui.project}:\
+ ${project.org.gephi.layout.plugin}:\
+ ${project.org.gephi.desktop.layout}:\
+ ${project.org.gephi.io.exporter.plugin}:\
+ ${project.org.gephi.ui.exporter.plugin}:\
+ ${project.org.gephi.io.exporter.api}:\
+ ${project.org.gephi.io.generator.plugin}:\
+ ${project.org.gephi.ui.generator.plugin}:\
+ ${project.org.gephi.io.generator.api}:\
+ ${project.org.gephi.io.importer.api}:\
+ ${project.org.gephi.io.importer.plugin}:\
+ ${project.org.gephi.io.processor.plugin}:\
+ ${project.org.gephi.desktop.importer}:\
+ ${project.org.gephi.filters.plugin}:\
+ ${project.org.gephi.ui.filters.plugin}:\
+ ${project.org.gephi.partition.plugin}:\
+ ${project.org.gephi.algorithms}:\
+ ${project.org.gephi.clustering.api}:\
+ ${project.org.gephi.clustering.plugin}:\
+ ${project.org.gephi.desktop.clustering}:\
+ ${project.org.gephi.desktop.context}:\
+ ${project.org.gephi.desktop.preview}:\
+ ${project.org.gephi.desktop.timeline}:\
+ ${project.org.joda.time}:\
+ ${project.org.gephi.ui.ranking.plugin}:\
+ ${project.org.gephi.ranking.api}:\
+ ${project.org.gephi.utils.collection}:\
+ ${project.org.gephi.desktop.welcome}:\
+ ${project.org.gephi.desktop.mrufiles.api}:\
+ ${project.org.gephi.desktop.project}:\
+ ${project.org.gephi.lib.itext}:\
+ ${project.org.gephi.io.exporter.preview}:\
+ ${project.org.gephi.ui.exporter.preview}:\
+ ${project.org.gephi.desktop.progress}:\
+ ${project.org.gephi.filters}:\
+ ${project.org.gephi.visualization.api}:\
+ ${project.org.gephi.lib.beansbinding}:\
+ ${project.org.gephi.utils}:\
+ ${project.org.gephi.ui.importer.plugin}:\
+ ${project.org.gephi.io.spigot.plugin}:\
+ ${project.org.gephi.ui.spigot.plugin}:\
+ ${project.org.gephi.desktop.spigot}:\
+ ${project.org.gephi.ui.partition.plugin}:\
+ ${project.org.gephi.dynamic}:\
+ ${project.org.gephi.dynamic.api}:\
+ ${project.org.gephi.desktop.perspective}:\
+ ${project.org.gephi.ui.processor.plugin}:\
+ ${project.org.gephi.lib.staxutils}:\
+ ${project.org.gephi.lib.commons.codec}:\
+ ${project.org.gephi.lib.flamingo}:\
+ ${project.org.gephi.lib.javacsv}:\
+ ${project.org.gephi.datalab.api}:\
+ ${project.org.gephi.datalab.plugin}:\
+ ${project.org.gephi.desktop.datalab}:\
+ ${project.org.apache.tools.bzip2}:\
+ ${project.org.gephi.desktop.recentfiles}:\
+ ${project.org.gephi.lib.javamail}:\
+ ${project.org.gephi.lib.jcalendar}:\
+ ${project.org.gephi.io.importer.plugin.vnaplugin}
+project.org.gephi.branding.desktop=DesktopBranding
+project.org.gephi.data.attributes=AttributesImpl
+project.org.gephi.data.attributes.api=AttributesAPI
+project.org.gephi.graph.api=GraphAPI
+project.org.gephi.lib.jogl=JOGLWrapper
+project.org.gephi.layout.api=LayoutAPI
+project.org.gephi.project.api=ProjectAPI
+project.org.gephi.ui.utils=UIUtils
+project.org.gephi.visualization=VisualizationModule
+project.org.gephi.lib.gleem=Gleem
+project.org.gephi.graph.dhns=DHNSGraph
Follow ups