while Schleife in Plugin stoppt nicht

CodeIt

Aktives Mitglied
Hallo,
ich schreibe ein Plugin für Gephi in welchem die Label von Knoten in Abhängigkeit von den Labeln der Nachbarknoten verändert werden. Dadurch soll Clustering unterstützt werden.
Sobald sich die Label nicht mehr verändern soll das Programm stoppen.
Und genau hier liegt das Problem, es stoppt nicht.
Ich benutze den ColumnObserver und die overserver.hasColumnChanged() Methode.
Der entscheidene Teil des Codes wäre wie folgt:

Java:
public void execute(GraphModel graphModel){
    Table nodeTable = graphModel.getNodeTable();

    Column col = nodeTable.getColumn(prob);
    if (col == null) {
        col = nodeTable.addColumn(prob, String.class);
    }
    ColumnObserver observer = col.createColumnObserver(true);

    Graph graph = graph.Model.getGraph();
    Node[] nodes = graph.getNodes().toArray();
    ...
    boolean changed = true;
    while(changed){
    for (Node n: nodes){
         ....
        n.setLabel(newLabel); 
    }

    if (observer.hasColumnChanged()){
        change = true;
    }else{
        change = false;
    }

Die Abfrage von changed folgt innerhalb der While Schleife und außerhalb der For Schleife. Wenn ich innerhalb der For Schleife abfrage, wird diese ja nur einmal durchlaufen.
Hat jemand eine Idee?
 

thet1983

Top Contributor
if (observer.hasColumnChanged()){
change = true;
}else{
change = false;
}
sorry hat jetzt nichts mit deinem Problem zutun ( glaube ich ) aber sowas ist echt pervers..
Java:
 observer.hasColumnChanged()
gibt ja einen boolean zurück oder?
Java:
 change = observer.hasColumnChanged();

ich würde mal den debugger zurate ziehen oder sysout´s auf der konsole ausgeben um zu schauen wann false eintritt und warum.
 

mrBrown

Super-Moderator
Mitarbeiter
Dann ist doch klar, dass es immer true ergibt, wenn es irgendwann mal eine Änderung gab...

Ich würde den Observer in der while-Schleife erstellen, dann dürfte der nur bei Änderungen innerhalb eines durchlaufs Aktualität werden.
Und zusätzliche eine do-while ;)
 

CodeIt

Aktives Mitglied
Stoppt leider nach wie vor nicht. Habe den Code wie folgt abgegeändert:
Code:
public void execute(GraphModel graphModel){
    Table nodeTable = graphModel.getNodeTable();

    Column col = nodeTable.getColumn(prob);
    if (col == null) {
        col = nodeTable.addColumn(prob, String.class);
    }  

    Graph graph = graph.Model.getGraph();
    Node[] nodes = graph.getNodes().toArray();
    ...
    boolean changed = true;
    do{
        ColumnObserver observer = col.createColumnObserver(true);
        for (Node n: nodes){
             ....
            n.setLabel(newLabel);
        }
        change = false;
        if (observer.hasColumnChanged()){
            change = true;
        }else{
            change = false;
    }while(changed);

Hab ich noch irgendwas vergessen?
 

mrBrown

Super-Moderator
Mitarbeiter
Vor der while wird changed deklariert und im while dann als Bedingung genutzt.


Wie funktioniert denn überhaupt der ColumnObserver?
 

mrBrown

Super-Moderator
Mitarbeiter
Zeig doch noch mal deinen aktuellen, kompilierenden Code ;)


Wenn der keine Fehler enthält, funktioniert der Observer offensichtlich anders als gedacht.
 

CodeIt

Aktives Mitglied
Würde gerne den kompletten Code zeigen, geht aber nicht weil....... Du versteht evtl. auch so.
Vielleicht sollte ich nach einem anderen Weg zum Abbruch suchen? Vielleicht hast Du einen Vorschlag
 

mrBrown

Super-Moderator
Mitarbeiter
Zumindest der Ausschnitt von grade in richtig wäre schön und ging ja grad auch...
Wie schon gesagt, gibt es da sowohl change als auch changed und Klammern fehlen - all das wären mögliche Fehlerquellen
 

CodeIt

Aktives Mitglied
Code:
public void execute(GraphModel graphModel){
    Table nodeTable = graphModel.getNodeTable();
    Column col = nodeTable.getColumn(prob);

    if (col == null) {
        col = nodeTable.addColumn(prob, String.class);
    }

    Graph graph = graph.Model.getGraph();
    Node[] nodes = graph.getNodes().toArray();
    ...
    boolean change = true;

    do{
        ColumnObserver observer = col.createColumnObserver(true);
        for (Node n: nodes){
        ....
        n.setLabel(newLabel);
        }
        change = false;
        if (observer.hasColumnChanged()){
            change = true;
        }else{
            change = false;
    }while(change);


Vielen Dank das Du dir soviel Zeit nimmst. Habe mich bemüht den Code jetzt besser darzustellen. Leider finde ich hier keine Vorschau um den Code nochmal zu überprüfen.
 

mrBrown

Super-Moderator
Mitarbeiter
Vielen Dank das Du dir soviel Zeit nimmst. Habe mich bemüht den Code jetzt besser darzustellen. Leider finde ich hier keine Vorschau um den Code nochmal zu überprüfen.
Unter weitere Einstellungen gibts ne Vorschau.

Warum kopierst du den Code nicht einfach? Beim abtippen schleichen sich zu viele Fehler ein, da sind ja immer noch welche drin...
 

CodeIt

Aktives Mitglied
Code:
public void execute(GraphModel graphModel){
    Table nodeTable = graphModel.getNodeTable();
    Column col = nodeTable.getColumn(prob);

    if (col == null) {
        col = nodeTable.addColumn(prob, String.class);
    }

    Graph graph = graph.Model.getGraph();
    Node[] nodes = graph.getNodes().toArray();
    ...
    boolean change = true;

    do{
        ColumnObserver observer = col.createColumnObserver(true);
        for (Node n: nodes){
            ....
            n.setLabel(newLabel);
        }
        change = false;
        if (observer.hasColumnChanged()){
            change = true;
        }else{
            change = false;
        }
    }while(change);
    …
    ...
}

Ich finde jetzt ist er aber bildschön. sorry
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D While-Schleife:Zahlen summieren? Tools - Maven, Gradle, Ant & mehr 17
H While-Schleife - Kreise und Quadrate Tools - Maven, Gradle, Ant & mehr 17
S JAVA APPLET While Schleife Frage! Tools - Maven, Gradle, Ant & mehr 3
B how to repaint() in a schleife? Tools - Maven, Gradle, Ant & mehr 2
D Maven ear plugin konfigurieren Tools - Maven, Gradle, Ant & mehr 24
H Maven build.plugins.plugin.version fehlt Tools - Maven, Gradle, Ant & mehr 0
F Maven JAR Plugin Probleme Tools - Maven, Gradle, Ant & mehr 4
von Spotz Gradle: Warum wird das Plugin nicht geladen? Tools - Maven, Gradle, Ant & mehr 4
J Gradle signing Plugin Tools - Maven, Gradle, Ant & mehr 0
H Maven maven-source-plugin is missing Tools - Maven, Gradle, Ant & mehr 5
H Jenkins aktulles Checkstyle Plugin Tools - Maven, Gradle, Ant & mehr 2
LimDul Maven Maven Surefire Plugin - Warnings upgrade Tools - Maven, Gradle, Ant & mehr 2
H Jenkins - maven-jar-plugin - kein jar-file Tools - Maven, Gradle, Ant & mehr 38
H Maven Anfängerproblem - No plugin found for prefix 'archetype' in the current project and in the plugin groups Tools - Maven, Gradle, Ant & mehr 25
D [ERLEDIGT] Probleme mit Authorization in Nexus und mvn deploy plugin Tools - Maven, Gradle, Ant & mehr 1
D [Maven Pluginentwicklung] - Plugin das nur auf Parent pom läuft Tools - Maven, Gradle, Ant & mehr 0
S Maven buildnumber-maven-plugin / Formatproblem mit timestamp Tools - Maven, Gradle, Ant & mehr 17
D [Maven] neuerdings "No plugin found for prefix ..." errors Tools - Maven, Gradle, Ant & mehr 7
HaukeG Maven Suche nach Ideen für Realisierung eines eigenen Plugin Tools - Maven, Gradle, Ant & mehr 3
H Maven Tycho [ERROR] Failed to execute goal org.eclipse.tycho:tycho-packaging-plugin:0.14.1:validate-vers Tools - Maven, Gradle, Ant & mehr 8
L Maven Unable to download maven-copy-plugin Tools - Maven, Gradle, Ant & mehr 10
Chris81T Maven Hilfe bei EAR packaging mit maven-ear-plugin Tools - Maven, Gradle, Ant & mehr 1
maestr0 Maven Plugin Entwicklungs Buch für Einsteiger Tools - Maven, Gradle, Ant & mehr 8
D [maven] problem mit konfiguration von cargo plugin Tools - Maven, Gradle, Ant & mehr 4
D [Maven] problem mit plugin - es fehlen "dubug informationen" Tools - Maven, Gradle, Ant & mehr 8
S Maven pom.xml, Error: Plugin execution not covered by lifecycle configuration Tools - Maven, Gradle, Ant & mehr 3
E Maven maven-jaxb2-plugin proxy Tools - Maven, Gradle, Ant & mehr 4
K MAVEN Plugin erzeugen Tools - Maven, Gradle, Ant & mehr 7
C Buckminster + plugin tests Tools - Maven, Gradle, Ant & mehr 3
B Maven Shared plugin konfiguration ? Tools - Maven, Gradle, Ant & mehr 3
D gwt-maven-plugin und Eclipse Tools - Maven, Gradle, Ant & mehr 1
B Buckminster: Plugin Version in Java source File einfügen Tools - Maven, Gradle, Ant & mehr 4
B Maven build-helper-maven-plugin mit Eclipse Tools - Maven, Gradle, Ant & mehr 3
D Maven Install Plugin: Einzelne Datei installen ? Tools - Maven, Gradle, Ant & mehr 16
M eigenes Plugin erstellen Maven Tools - Maven, Gradle, Ant & mehr 4
S Maven Profiles - maven-exec-plugin Tools - Maven, Gradle, Ant & mehr 4
S Maven Webstart Plugin Tools - Maven, Gradle, Ant & mehr 7
P Maven Release Plugin - überschreiben der POM verhindern? Tools - Maven, Gradle, Ant & mehr 5
T Failed to configure plugin parameters Tools - Maven, Gradle, Ant & mehr 8
J Maven Assembly-Plugin und Dependencies Tools - Maven, Gradle, Ant & mehr 4
U Maven2 WAR Plugin doppelte Dependencies Tools - Maven, Gradle, Ant & mehr 4
M maven-jaxb-plugin Tools - Maven, Gradle, Ant & mehr 1
Z Java-Plugin-Einstellung bei Internet-Explorer Tools - Maven, Gradle, Ant & mehr 1
G Applet braucht eine bestimmte Plugin-Version Tools - Maven, Gradle, Ant & mehr 11
C Java Plugin ??? Tools - Maven, Gradle, Ant & mehr 4
K IE + Sun PlugIn + JAR + Zugriff per file:/ geht nicht mehr Tools - Maven, Gradle, Ant & mehr 2

Ähnliche Java Themen


Oben