com.dnsoft.inmobiliaria.controllers.ConsultaCCPropietariosController.java Source code

Java tutorial

Introduction

Here is the source code for com.dnsoft.inmobiliaria.controllers.ConsultaCCPropietariosController.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 com.dnsoft.inmobiliaria.controllers;

import com.dnsoft.inmobiliaria.Renderers.TableRendererColorActivo;
import com.dnsoft.inmobiliaria.beans.CCPropietario;
import com.dnsoft.inmobiliaria.beans.Moneda;
import com.dnsoft.inmobiliaria.beans.Parametros;
import com.dnsoft.inmobiliaria.beans.Propietario;
import com.dnsoft.inmobiliaria.beans.Rubro;
import com.dnsoft.inmobiliaria.daos.ICCPropietarioDAO;
import com.dnsoft.inmobiliaria.daos.IParametrosDAO;
import com.dnsoft.inmobiliaria.daos.IPropietarioDAO;
import com.dnsoft.inmobiliaria.models.PropietariosTableModel;
import com.dnsoft.inmobiliaria.utils.Container;
import com.dnsoft.inmobiliaria.views.ConsultaCCPropietarioView;
import com.dnsoft.inmobiliaria.views.DetalleMovimientosCCPropietario;
import com.dnsoft.inmobiliaria.views.PropietariosDetalleDlg;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyVetoException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableCellRenderer;
import org.jdesktop.swingx.prompt.PromptSupport;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.MultiplePiePlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.util.TableOrder;

/**
 *
 * @author Diego Noble
 */
public class ConsultaCCPropietariosController implements ActionListener {

    Container container;
    ControlDeCajaController cajaController;
    Propietario propietarioSeleccionado;
    List<Propietario> listPropietarios;
    IPropietarioDAO propietarioDAO;
    ICCPropietarioDAO cCPropietarioDAO;
    PropietariosTableModel tableModelPropietarios;
    ConsultaCCPropietarioView view;
    Rubro rubro;
    Parametros parametros;
    IParametrosDAO parametrosDAO;

    public ConsultaCCPropietariosController(ConsultaCCPropietarioView view) {

        this.view = view;

        inicio();
    }

    public ConsultaCCPropietariosController(ConsultaCCPropietarioView view, Rubro rubro,
            ControlDeCajaController cajaController) {

        this.view = view;
        this.rubro = rubro;
        this.cajaController = cajaController;
        inicio();

    }

    public void go() {
        try {
            this.view.setVisible(true);
            this.view.toFront();
            view.setMaximum(true);
        } catch (PropertyVetoException ex) {
            Logger.getLogger(ConsultaCCPropietariosController.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    void saldos() {

        DecimalFormat formatter = new DecimalFormat("###,###,###.00");
        BigDecimal saldoPesos = new BigDecimal(BigInteger.ZERO);
        BigDecimal saldoDolares = new BigDecimal(BigInteger.ZERO);
        ;

        for (Propietario propietario : listPropietarios) {
            CCPropietario ccPesos = cCPropietarioDAO.findUltimoMovimiento(Moneda.PESOS, propietario);
            if (ccPesos != null) {
                saldoPesos = saldoPesos.add(ccPesos.getSaldo());
            }
            CCPropietario ccDolares = cCPropietarioDAO.findUltimoMovimiento(Moneda.DOLARES, propietario);
            if (ccDolares != null) {
                saldoDolares = saldoDolares.add(ccDolares.getSaldo());
            }
        }
        view.txtDolares.setText(formatter.format(saldoDolares));
        view.txtPesos.setText(formatter.format(saldoPesos));

    }

    void muestraGrafico() {

        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
        //DefaultPieDataset dataDolares = new DefaultPieDataset();

        for (Propietario propietario : listPropietarios) {
            CCPropietario ccPesos = cCPropietarioDAO.findUltimoMovimiento(Moneda.PESOS, propietario);
            if (ccPesos != null) {
                dataSet.setValue(ccPesos.getSaldo(), "Pesos", propietario.toString());
            }
            CCPropietario ccDolares = cCPropietarioDAO.findUltimoMovimiento(Moneda.DOLARES, propietario);
            if (ccDolares != null) {
                dataSet.setValue(ccDolares.getSaldo(), "Dolares", propietario.toString());
            }
        }
        // Creando el Grafico
        //JFreeChart chart = ChartFactory.createPieChart("Saldos", (PieDataset) dataSet, true, true, false);
        JFreeChart chart = ChartFactory.createMultiplePieChart("Saldos", dataSet, TableOrder.BY_ROW, false, true,
                false);
        //PieSectionLabelGenerator gen = new StandardPieSectionLabelGenerator("{0}: {1} ({2})", new DecimalFormat("0"), new DecimalFormat("0%"));
        MultiplePiePlot plot = (MultiplePiePlot) chart.getPlot();
        JFreeChart subchart = plot.getPieChart();
        PiePlot p = (PiePlot) subchart.getPlot();
        p.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}: {1} ({2})"));
        //JFreeChart chartDolares = ChartFactory.createPieChart("Saldos en Dolares", dataDolares, true, true, false);
        // Mostrar Grafico
        ChartFrame frame = new ChartFrame("JFreeChart", chart);
        frame.pack();
        frame.setVisible(true);

    }

    final void inicio() {
        this.container = Container.getInstancia();
        PromptSupport.setPrompt("Buscar por nombre, apellido o documento", view.txtBusqueda);
        this.view.txtBusqueda.setActionCommand("txtBusqueda");
        this.view.txtBusqueda.addActionListener(this);

        this.view.btnGrafico.setActionCommand("btnGrafico");
        this.view.btnGrafico.addActionListener(this);

        propietarioDAO = container.getBean(IPropietarioDAO.class);
        cCPropietarioDAO = container.getBean(ICCPropietarioDAO.class);
        parametrosDAO = container.getBean(IParametrosDAO.class);
        parametros = parametrosDAO.findAll().get(0);
        configuraTblPropietarios();
        buscarPropietarios();
        accionesBotones();
        saldos();
    }

    final void configuraTblPropietarios() {
        ((DefaultTableCellRenderer) view.tblPropietario.getTableHeader().getDefaultRenderer())
                .setHorizontalAlignment(SwingConstants.CENTER);

        listPropietarios = new ArrayList<>();

        tableModelPropietarios = new PropietariosTableModel(listPropietarios);
        view.tblPropietario.setModel(tableModelPropietarios);
        view.tblPropietario.setRowHeight(25);
        view.tblPropietario.getColumn("Activo").setMaxWidth(0);
        view.tblPropietario.getColumn("Activo").setMinWidth(0);
        view.tblPropietario.getColumn("Activo").setPreferredWidth(0);
        view.tblPropietario.getColumn("Activo").setWidth(0);
        view.tblPropietario.setDefaultRenderer(Object.class, new TableRendererColorActivo(2));
        ListSelectionModel listModel = view.tblPropietario.getSelectionModel();
        listModel.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent lse) {
                if (view.tblPropietario.getSelectedRow() != -1) {
                    view.btnCuenta.setEnabled(true);
                    view.btnPropietario.setEnabled(true);
                } else {
                    view.btnCuenta.setEnabled(false);
                    view.btnPropietario.setEnabled(false);
                }
            }
        });

        view.tblPropietario.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent me) {

                if (me.getClickCount() == 2) {
                    detallesCCPropietario();
                }
            }
        });

    }

    void buscarPropietarios() {
        listPropietarios.clear();
        listPropietarios.addAll(propietarioDAO.findPropietario(view.txtBusqueda.getText()));
        tableModelPropietarios.fireTableDataChanged();
    }

    void detallesCCPropietario() {

        propietarioSeleccionado = listPropietarios.get(view.tblPropietario.getSelectedRow());
        DetalleMovimientosCCPropietario movimientosCCPropietario = new DetalleMovimientosCCPropietario(null, false);
        DetalleCCPropietariosController controller = new DetalleCCPropietariosController(movimientosCCPropietario,
                propietarioSeleccionado);
        controller.go();

    }

    void verPropietarioSeleccionado() {
        try {
            propietarioSeleccionado = propietarioDAO
                    .findByPropietarioEager(listPropietarios.get(view.tblPropietario.getSelectedRow()).getId());
            PropietariosDetalleDlg propietario = new PropietariosDetalleDlg(null, true, propietarioSeleccionado);
            propietario.setVisible(true);
            propietario.toFront();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
            ex.printStackTrace();
        }
    }

    void accionesBotones() {
        view.botonVolver1.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent evt) {
                ConsultaCCPropietariosController.this.view.dispose();
            }
        });

        view.btnCuenta.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent evt) {

                detallesCCPropietario();
            }
        });

        view.btnPropietario.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent evt) {

                verPropietarioSeleccionado();
            }
        });
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String comando = e.getActionCommand();

        switch (comando) {

        case "txtBusqueda":
            buscarPropietarios();
            break;

        case "btnGrafico":
            muestraGrafico();
            break;

        default:
            throw new AssertionError();
        }
    }

}