codigoFonte.Sistema.java Source code

Java tutorial

Introduction

Here is the source code for codigoFonte.Sistema.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 codigoFonte;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import java.util.ArrayList;
import org.jdom2.output.XMLOutputter;

public class Sistema {
    private ArrayList<User> users;

    public boolean addUser(User u) throws IOException {

        boolean success = false, matriculaExists = false;
        File file = new File("Sistema.xml");
        Document newDocument = null;
        Element root = null;
        Attribute matricula = null, nome = null, tipo = null, senha = null;
        Element user = null;

        if (u.getTipo().isEmpty() || u.getTipo().isEmpty() || u.getPassword().isEmpty()) {
            return success;
        }

        if (file.exists()) {
            SAXBuilder builder = new SAXBuilder();
            try {
                newDocument = builder.build(file);
            } catch (JDOMException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            }
            root = newDocument.getRootElement();
        } else {
            root = new Element("sistema");

            newDocument = new Document(root);
        }

        if (root.getChildren().size() > 0) {
            List<Element> listUsers = root.getChildren();
            for (Element a : listUsers) {
                if (a.getAttributeValue("matrcula").equals(u.getMatricula())) {
                    matriculaExists = true;
                }
            }
        }

        if (!matriculaExists) {
            user = new Element("user");

            matricula = new Attribute("matrcula", this.newId());
            tipo = new Attribute("tipo", u.getTipo());
            nome = new Attribute("nome", u.getNome());
            senha = new Attribute("senha", u.getPassword());

            user.setAttribute(matricula);
            user.setAttribute(nome);
            user.setAttribute(tipo);
            user.setAttribute(senha);
            //user.setAttribute(divida);

            root.addContent(user);

            success = true;
        }
        //        

        XMLOutputter out = new XMLOutputter();

        try {
            FileWriter arquivo = new FileWriter(file);
            out.output(newDocument, arquivo);
        } catch (IOException ex) {
            Logger.getLogger(Sistema.class.getName()).log(Level.SEVERE, null, ex);
        }

        return success;
    }

    public boolean editarUser(User u) {
        File file = new File("Sistema.xml");
        Document newDocument = null;
        Element root = null;
        boolean success = false;

        if (file.exists()) {
            SAXBuilder builder = new SAXBuilder();
            try {
                newDocument = builder.build(file);
            } catch (JDOMException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            }
            root = newDocument.getRootElement();
        }

        List<Element> listusers = root.getChildren();
        for (Element e : listusers) {
            if (e.getAttributeValue("matrcula").equals(u.getMatricula())) {
                e.getAttribute("nome").setValue(u.getNome());
                e.getAttribute("tipo").setValue(u.getTipo());
                e.getAttribute("senha").setValue(u.getPassword());

                success = true;

                XMLOutputter out = new XMLOutputter();

                try {
                    FileWriter arquivo = new FileWriter(file);
                    out.output(newDocument, arquivo);
                } catch (IOException ex) {
                    Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
                }
                return success;
            }
        }
        return success;
    }

    public ArrayList<User> listarUser() {
        File file = new File("Sistema.xml");
        Document newDocument = null;
        Element root = null;
        ArrayList<User> users = new ArrayList<User>();
        ;
        ArrayList<Livro> livros = new ArrayList<Livro>();

        if (file.exists()) {
            SAXBuilder builder = new SAXBuilder();
            try {
                newDocument = builder.build(file);
            } catch (JDOMException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            }
            root = newDocument.getRootElement();
        } else {
            root = new Element("sistema");

            newDocument = new Document(root);
        }

        List<Element> listusers = root.getChildren();
        for (Element e : listusers) {
            User user = new User(null, null, null, null);
            List<Element> listlivro = e.getChildren("livro");
            List<Element> historico = e.getChildren("histrico");

            if (!listlivro.isEmpty())

                for (Element l : listlivro) {
                    Livro livro = new Livro(null, null, null, 0);
                    livro.setAutor(l.getAttributeValue("autor"));
                    livro.setEditora(l.getAttributeValue("editora"));
                    livro.setTitulo(l.getAttributeValue("ttulo"));
                    livros.add(livro);
                }

            //List<Element> historico = e.getChildren("histrico");
            ArrayList<Livro> historicoObjeto = new ArrayList<Livro>();
            if (!historico.isEmpty()) {
                for (Element h : historico) {
                    Livro livroHistorico = new Livro(null, null, null, 0);
                    livroHistorico.setAutor(h.getAttributeValue("autor"));
                    livroHistorico.setEditora(h.getAttributeValue("editora"));
                    livroHistorico.setTitulo(h.getAttributeValue("ttulo"));
                    historicoObjeto.add(livroHistorico);
                }
            }

            user.setMatricula(e.getAttributeValue("matrcula"));
            user.setNome(e.getAttributeValue("nome"));
            user.setTipo(e.getAttributeValue("tipo"));
            user.setLivros(livros);

            users.add(user);
        }
        return users;
    }

    public User pesquisarUser(String matricula) {
        File file = new File("Sistema.xml");
        Document newDocument = null;
        Element root = null;
        User user = null;

        if (file.exists()) {
            SAXBuilder builder = new SAXBuilder();
            try {
                newDocument = builder.build(file);
            } catch (JDOMException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            }
            root = newDocument.getRootElement();
        } else {
            root = new Element("sistema");

            newDocument = new Document(root);
        }

        List<Element> listusers = root.getChildren();
        for (Element e : listusers) {
            if (e.getAttributeValue("matrcula").equals(matricula)) {
                List<Element> listlivros = e.getChildren("livro");
                user = new User(null, null, null, null);
                if (!listlivros.isEmpty()) {
                    for (Element l : listlivros) {
                        Livro livro = new Livro(null, null, null, 0);
                        livro.setAutor(l.getAttributeValue("autor"));
                        livro.setEditora(l.getAttributeValue("editora"));
                        livro.setTitulo(l.getAttributeValue("ttulo"));
                        livro.setEntrega(l.getAttributeValue("dataEntrega"));
                        livro.setAluguel(l.getAttributeValue("dataAluguel"));
                        livro.setId(l.getAttributeValue("id"));
                        user.getLivros().add(livro);
                    }
                }
                List<Element> historico = e.getChildren("historico");
                if (!historico.isEmpty()) {
                    for (Element h : historico) {
                        Livro livroHistorico = new Livro(null, null, null, 0);
                        livroHistorico.setAutor(h.getAttributeValue("autor"));
                        livroHistorico.setEditora(h.getAttributeValue("editora"));
                        livroHistorico.setTitulo(h.getAttributeValue("ttulo"));
                        livroHistorico.setEntrega(h.getAttributeValue("dataEntrega"));
                        livroHistorico.setAluguel(h.getAttributeValue("dataAluguel"));
                        livroHistorico.setId(h.getAttributeValue("id"));
                        user.getHistorico().add(livroHistorico);
                    }
                }
                user.setMatricula(matricula);
                user.setTipo(e.getAttributeValue("tipo"));
                user.setNome(e.getAttributeValue("nome"));
                user.setPassword(e.getAttributeValue("senha"));

                return user;
            }
        }
        return user;
    }

    public boolean removeUser(User u) {
        File file = new File("Sistema.xml");
        Document newDocument = null;
        Element root = null;
        Element user = null;
        boolean success = false;

        if (file.exists()) {
            SAXBuilder builder = new SAXBuilder();
            try {
                newDocument = builder.build(file);
            } catch (JDOMException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            }
            root = newDocument.getRootElement();
        } else {
            root = new Element("sistema");

            newDocument = new Document(root);
        }

        List<Element> listusers = root.getChildren("user");
        for (Element e : listusers) {
            if (e.getAttributeValue("matrcula").equals(u.getMatricula()) && e.getChildren("livro").size() == 0) {
                root.removeContent(e);

                XMLOutputter out = new XMLOutputter();

                try {
                    FileWriter arquivo = new FileWriter(file);
                    out.output(newDocument, arquivo);
                } catch (IOException ex) {
                    Logger.getLogger(Sistema.class.getName()).log(Level.SEVERE, null, ex);
                }

                success = true;
                return success;
            }
        }
        return success;
    }

    @SuppressWarnings("empty-statement")
    public String newId() throws IOException {
        File file = new File("idHandlerMatricula.txt");
        BufferedReader in = null;
        BufferedWriter out = null;
        String hex = null;

        if (file.exists()) {
            String read = null;
            try {
                in = new BufferedReader(new FileReader(file));
                do {
                    read = in.readLine();
                    if (read != null) {
                        int n = Integer.parseInt(read) + 1;
                        hex = Integer.toString(n);
                    }
                } while (read != null);

            } catch (IOException e) {
                System.out.println("Ocorreu um problema em: " + e);
                e.printStackTrace();
            } finally {
                if (in != null) {
                    in.close();
                }
            }
        } else {
            hex = "54205421";
        }

        try {
            out = new BufferedWriter(new FileWriter(file, true));
            out.write(hex);
            out.newLine();
        } catch (IOException e) {
            System.out.println("Ocorreu um problema em: " + e);
            e.printStackTrace();
        } finally {
            if (out != null) {
                out.close();
            }
        }

        return hex;
    }

    public String emularId() throws IOException {
        File file = new File("idHandlerMatricula.txt");
        BufferedReader in = null;
        String hex = null;
        if (file.exists()) {
            String read = null;
            try {
                in = new BufferedReader(new FileReader(file));
                do {
                    read = in.readLine();
                    if (read != null) {
                        int n = Integer.parseInt(read) + 1;
                        hex = Integer.toString(n) + "\n";
                    }
                } while (read != null);

            } catch (IOException e) {
                System.out.println("Ocorreu um problema em: " + e);
                e.printStackTrace();
            } finally {
                if (in != null) {
                    in.close();
                }
            }
        } else {
            hex = "54205421";
        }
        return hex;

    }

    public boolean autentica(User u) {
        File file = new File("Sistema.xml");
        Document newDocument = null;
        Element root = null;
        boolean autenticado = false;

        if (file.exists()) {
            SAXBuilder builder = new SAXBuilder();
            try {
                newDocument = builder.build(file);
            } catch (JDOMException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            }
            root = newDocument.getRootElement();
        } else {
            root = new Element("sistema");

            newDocument = new Document(root);
        }

        User user = null;
        List<Element> listusers = root.getChildren();
        for (Element e : listusers) {
            if (e.getAttributeValue("matrcula").equals(u.getMatricula())
                    && e.getAttributeValue("senha").equals(u.getPassword())) {
                autenticado = true;
                return autenticado;
            }
        }
        return autenticado;
    }

    public User login(String matricula) {
        User user = this.pesquisarUser(matricula);
        return user;
    }

    public boolean autenticaAdmin(String username, String password) {
        File file = new File("Sistema.xml");
        Document newDocument = null;
        Element root = null;
        boolean autenticado = false;

        if (file.exists()) {
            SAXBuilder builder = new SAXBuilder();
            try {
                newDocument = builder.build(file);
            } catch (JDOMException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex);
            }
            root = newDocument.getRootElement();
        } else {
            root = new Element("sistema");

            newDocument = new Document(root);
        }
        if (root.getAttributeValue("username").equals(username)
                && root.getAttributeValue("password").equals(password)) {
            autenticado = true;
            return autenticado;
        }
        return autenticado;
    }

}