my.grafos.Maquina.java Source code

Java tutorial

Introduction

Here is the source code for my.grafos.Maquina.java

Source

/*
 * 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) {
            }
        }

    }

}