ya tuve sorpresas con las confusion de tipos primitivos y objetos, pero bueno.
Estoy trabajando con el GraphBench (aplicacion educativa para simular grafos)
Ya no tengo errores, solo "Notas" supongo advertencias sobre -Xlint y unsafe operations. Busque en la red, hablan del uso de generalidades(ciones?) y he tratado de corregir mi codigo pero la aplicación no me funciona.
Tengo duda con los iteradores, y si estoy enviando bien los params en el metodo putUserData. Debo resolver esto usando el API de este software educativo.
Código:
import ch.ethz.graphbench.toolbox.*; import java.util.Iterator; import java.lang.String; import javax.swing.*; public class Grado_separacion extends GraphAlgorithm{ public void executeAlgorithm(){ // codigo que ejecuta el software String origen = "0"; String destino = "5"; boolean encontrado = false; Iterator<Edge> it; // POR AQUI ANDA EL ASUNTO Edge edg = null; Integer gradosep = new Integer(0); Integer respuesta = new Integer(0); int indiceOrigen=0; if ( !origen.equals(destino) ) // por ahi me dijeron que no era con == ... { for(int i = 0; i < graph.getVertexCount(); i++) { if ( graph.getVertex(i).getName().equals(origen) ); { graph.getVertex(i).setVertexState(Vertex.ACTIVE_STATE); graph.getVertex(i).putUserData("grado", new Integer(0)); indiceOrigen=graph.getVertex(i).getIndex(); graph.getVertex(i).setVertexState(Vertex.QUEUED_STATE); } } for(int i = indiceOrigen; i < graph.getVertexCount(); i++) { if ( graph.getVertex(i).getVertexState() == Vertex.QUEUED_STATE ) { graph.getVertex(i).setVertexState(Vertex.PROCESSED_STATE); // visitado // CODIGO DUDOSO // iterador a las aristas adyacentes al vertice it = graph.getVertex(i).getEdgeIterator(); gradosep=(Integer)graph.getVertex(i).getUserData("grado"); while (it.hasNext()) { edg = (Edge) it.next(); // CODIGO DUDOSO edg.getEndVertex().setVertexState(Vertex.QUEUED_STATE); edg.getEndVertex().putUserData("grado", new Integer(gradosep.intValue()+1)); if ( edg.getEndVertex().getName() == destino ) { encontrado = true; edg.getEndVertex().setVertexState(Vertex.PROCESSED_STATE); respuesta = (Integer) edg.getEndVertex().getUserData("grado"); break; } } } if (encontrado) break; } } } JOptionPane.showMessageDialog(null,Integer.toString(respuesta),"Error",JOptionPane.INFORMATION_MESSAGE); }
API JAVA
de la clase vertex:
public java.util.Iterator getEdgeIterator()
Retorna un iterador a todas las aristas adyacentes al vertice.
public void putUserData(java.lang.Object key, java.lang.Object value)
Mapea Value al objeto Key.
Solo esto incluyo porque con he probado separadamente los demás metodos y me funcionan bien. Sin embargo, el API completo esta aqui
Gracias por sus observaciones.