Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package my.grafos; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.util.ArrayList; import javax.swing.JFileChooser; import static my.grafos.Fabrica.xstream; import static my.grafos.Fabrica.xmlA; import static my.grafos.Fabrica.xmlV; import org.apache.commons.lang.RandomStringUtils; /** * * @author GiovanniStroppaFaquin */ class Maquina { static int a = 0; static int v = 0; static int i = 0; static String makeGrafoMatrizAdjacencia() { Grafo grafo = new Grafo(); grafo.setNomeGrafo(RandomStringUtils.random(8, false, true)); grafo.setTipoGrafo(RandomStringUtils.random(8, false, true)); grafo.setListaAresta(Fabrica.listaArestas); grafo.setListaVertices(Fabrica.listaVertices); return Grafo.matrizAdjacencia(grafo); } static String makeGrafoListaAdjacencia() { Grafo grafo = new Grafo(); grafo.setNomeGrafo(RandomStringUtils.random(8, false, true)); grafo.setTipoGrafo(RandomStringUtils.random(8, false, true)); grafo.setListaAresta(Fabrica.listaArestas); grafo.setListaVertices(Fabrica.listaVertices); return Grafo.listaAdjacencia(grafo); } static public String getAdjacentes() { String adjacentes = ""; for (Aresta aresta : Fabrica.listaArestas) { adjacentes += " Os Vertices " + aresta.getOrigem().getId() + " e " + aresta.getDestino().getId() + " so adjacentes \n"; } return adjacentes; } static public String getVerticesIncidentes() { String incidentes = ""; for (Aresta aresta : Fabrica.listaArestas) { incidentes += " Os Vertices " + aresta.getOrigem().getId() + " e " + aresta.getDestino().getId() + " so incidente com a aresta (" + aresta.getOrigem().getId() + "," + aresta.getDestino().getId() + ")\n"; } return incidentes; } static String makeGrafoMatrizIncidencia() { Grafo grafo = new Grafo(); grafo.setNomeGrafo(RandomStringUtils.random(8, false, true)); grafo.setTipoGrafo(RandomStringUtils.random(8, false, true)); grafo.setListaAresta(Fabrica.listaArestas); grafo.setListaVertices(Fabrica.listaVertices); return Grafo.matrizIncidencia(grafo); } static void makeSalvarArestaAction(int id, boolean direcionado, int origem, int destino) { boolean incluiAresta = Fabrica.incluiAresta(id, direcionado, Fabrica.listaVertices.get(origem), Fabrica.listaVertices.get(destino)); if (incluiAresta) { System.out.println("Maquina.makeSalvarArestaAction>incluiAresta"); } else { System.out.println("No salvou"); } a++; } static void makeSalvarVerticeAction(String id, int subConj) { if (Fabrica.incluiVertice(id, subConj)) { System.out.println("Salvou Vertice na lista"); v++; } else { System.out.println("No salvou Vertice na lista"); } } static String makeExibirLista() { if (Fabrica.xmlA.isEmpty()) { return "No h lista a ser exibida."; } else { Fabrica.listaArestas = (ArrayList<Aresta>) xstream.fromXML(xmlA); return Fabrica.xmlA; } } static String getIndexNaLista() { return String.valueOf(a); } static Aresta correrLista(int f) { Aresta pessoa = new Aresta(); if (f == 1) { if (Fabrica.listaArestas.isEmpty()) { System.out.println("Fabrica.listaArestas.isEmpty()"); return pessoa; } else if (a < Fabrica.getTamanhoListaArestas()) { a++; if (a == Fabrica.getTamanhoListaArestas()) { a--; pessoa = Fabrica.listaArestas.get(a); return pessoa; } else { pessoa = Fabrica.listaArestas.get(a); System.out.println("Local da lista: " + a); return pessoa; } } else { System.out.println("Fim de lista: " + a); return pessoa; } } else if (Fabrica.listaArestas.isEmpty()) { System.out.println("Fabrica.listaArestas.isEmpty()"); return pessoa; } else if (a == 0) { System.out.println("Local da Lista: " + a); pessoa = Fabrica.listaArestas.get(a); return pessoa; } else { a--; pessoa = Fabrica.listaArestas.get(a); System.out.println("Local da lista: " + a); } return pessoa; } static void abrirGrafo() throws FileNotFoundException, IOException, ClassNotFoundException { /* FileInputStream fis = new FileInputStream("d:\\t.xml"); ObjectInputStream ois = new ObjectInputStream(fis); ArrayList<Aresta> leituraListaistaArestas = (ArrayList<Aresta>) ois.readObject(); ois.close(); Fabrica.listaArestas = leituraListaistaArestas; */ a = 0; final JFileChooser fc = new JFileChooser(); //Handle open button action. int returnVal = fc.showOpenDialog(null); File file = fc.getSelectedFile(); if (returnVal == JFileChooser.APPROVE_OPTION) { file = fc.getSelectedFile(); //This is where a real application would open the file. System.out.println("Opening: " + file.getName() + "." + "\n"); } else { System.out.println("Open command cancelled by user." + "\n"); } StringBuilder arestaBuilder = new StringBuilder(); StringBuilder verticeBuilder = new StringBuilder(); String line; try { InputStream inputstream = new BufferedInputStream(new FileInputStream(file.getPath())); BufferedReader r = new BufferedReader(new InputStreamReader(inputstream)); while ((line = r.readLine()) != null && !line.contains("</list>")) { arestaBuilder.append(line); arestaBuilder.append("\n"); } arestaBuilder.append("</list>"); verticeBuilder.append("<list>\n"); while ((line = r.readLine()) != null) { verticeBuilder.append(line); verticeBuilder.append("\n"); } } catch (IOException e) { } Fabrica.xmlA = arestaBuilder.toString(); Fabrica.xmlV = verticeBuilder.toString(); Fabrica.listaArestas = (ArrayList<Aresta>) xstream.fromXML(xmlA); Fabrica.listaVertices = (ArrayList<Vertice>) xstream.fromXML(xmlV); } static void salvarGrafo() throws FileNotFoundException, IOException { /* FileOutputStream fos = new FileOutputStream("d:\\t.xml"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(Fabrica.listaArestas); oos.close(); */ final JFileChooser fc = new JFileChooser(); //Handle save button action. int returnVal = fc.showSaveDialog(null); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); System.out.println("1 " + fc.getSelectedFile()); System.out.println("2 " + file); // if (Fabrica.xmlA.length() == 0) { if (Fabrica.xmlA.length() == 0) { // System.out.println("No h dados para salvar."); return; } try (OutputStream output = new FileOutputStream(file.getPath())) { int count = 0; while (count < Fabrica.xmlA.length()) { output.write(Fabrica.xmlA.charAt(count)); count++; } count = 0; while (count < Fabrica.xmlV.length()) { output.write(Fabrica.xmlV.charAt(count)); count++; } } catch (IOException e) { } } } }