Package facturacion.tablas

Source Code of facturacion.tablas.EntityTable

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package facturacion.tablas;

import facturacion.tablas.helperTabla.SelectorEntidadTableModel;
import facturacion.tablas.helperTabla.ActionButton;
import facturacion.tablas.editors_renders.CellRendered;
import facturacion.tablas.editors_renders.SelectEditorTable;
import facturacion.accesoDatos.EntityControler;
import facturacion.ConstantesFactura;
import facturacion.tablas.editors_renders.DeleteEditorTable;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.locks.Condition;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;

/**
*Se encarga de a partir de una tabla vacia y la clase de la info que contendra de constuirla.
* No se debe especificar modelo alguno ni nada. lo hace automaticamente.
* Agrega tmb una columna de accion.
* @author marcelo
*/
public class EntityTable<T extends Serializable> {
    //indica si los valores son tomados de la BD o si los envio a travez de una lista externa.
    //Por defecto es true
    boolean databaseSource = true;


    Class clazz;
    EntityControler controler;
    private List<T> list;

    public EntityTable(Class clazz) {
        controler = EntityControler.getInstance();
        this.clazz = clazz;
        databaseSource = true;
    }

    public void buildTable(JTable tabla, ActionButton button,ArrayList<String> view, ActionColumnListener<T> listener,ArrayList<OrderCondition> orderCond) {
       
        ArrayList<String> columnNames = new ArrayList<String>();

        Field[] declaredFields = clazz.getDeclaredFields();
        List<Field> fieldas = Arrays.asList(declaredFields);

        for (int i = 0; i < fieldas.size(); i++) {
            Field field = fieldas.get(i);
            if (view.contains(field.getName())) {
                columnNames.add(field.getName());
            }
        }

        //Si es true el origen de los datos es la misma base de datos
        if (databaseSource){
            String qry = "select e from " + clazz.getSimpleName() + " e";
            if (orderCond != null && !orderCond.isEmpty()){
                qry = qry + " order by ";
                for (int i = 0; i < orderCond.size(); i++) {
                    OrderCondition condition = orderCond.get(i);
                    qry =qry + "e." + condition.getCampo() + " " + condition.sentido;
                    if (i < orderCond.size()-1){
                        qry = qry + ", ";
                    }

                }
               
            }
            System.out.println("qry " + qry);
            list = controler.createQuery(qry, clazz).getResultList();
        }else{ //sino deben ser enviados a traves del aray list. Esto es util
            //para la seleccion de productos a la factura que aun no se persistio
            System.out.println("Origen de datos Externo!");
        }

        SelectorEntidadTableModel<T> model = new SelectorEntidadTableModel<T>(columnNames, list, button);

        tabla.setModel(model);
        if (ActionButton.SELECT.equals(button)) {
            agregarBotonSeleccionar(model, tabla, listener);
        } else if (ActionButton.DELETE.equals(button)) {
            agregarBotonBorrar(model, tabla, listener);
        } else if (ActionButton.EDIT.equals(button)){
            agregarBotonEditar(model, tabla, listener);
        }else if (ActionButton.NONE.equals(button) || button == null){
            //No hago nada           
        }


    }

    public void agregarBotonSeleccionar(SelectorEntidadTableModel<T> model, JTable tabla, final ActionColumnListener<T> listener) {
        TableColumn selectColumn;
        final TableColumnModel columnModel = tabla.getColumnModel();
        selectColumn = columnModel.getColumn(model.getColumnByName(ConstantesFactura.TIPO_COLUMNA_SELECCION));
        selectColumn.setCellEditor(new SelectEditorTable<T>(tabla, new ActionColumnListener<T>() {

            @Override
            public void onActionExecute(T entity) {
                T c = (T) entity;
                listener.onActionExecute(entity);
            }
        }));
        selectColumn.setCellRenderer(new CellRendered(true, "Seleccionar"));
    }

    public void agregarBotonBorrar(SelectorEntidadTableModel<T> model, JTable tabla, final ActionColumnListener<T> listener) {
        TableColumn selectColumn;
        final TableColumnModel columnModel = tabla.getColumnModel();
        selectColumn = columnModel.getColumn(model.getColumnByName(ConstantesFactura.TIPO_COLUMNA_ELIMINAR));
        selectColumn.setCellEditor(new DeleteEditorTable<T>(tabla, new ActionColumnListener<T>() {

            @Override
            public void onActionExecute(T entity) {
                T c = (T) entity;
                listener.onActionExecute(entity);
            }
        }));
        selectColumn.setCellRenderer(new CellRendered(true, "Borrar"));
    }
     public void agregarBotonEditar(SelectorEntidadTableModel<T> model, JTable tabla, final ActionColumnListener<T> listener) {
        TableColumn selectColumn;
        final TableColumnModel columnModel = tabla.getColumnModel();
        selectColumn = columnModel.getColumn(model.getColumnByName(ConstantesFactura.TIPO_COLUMNA_EDICION));
        selectColumn.setCellEditor(new SelectEditorTable<T>(tabla, new ActionColumnListener<T>() {

            @Override
            public void onActionExecute(T entity) {
                T c = (T) entity;
                listener.onActionExecute(entity);
            }
        }));
        selectColumn.setCellRenderer(new CellRendered(true, "Ver Detalle"));
    }

    public boolean isDatabaseSource() {
        return databaseSource;
    }

    public void setDatabaseSource(boolean databaseSource) {
        this.databaseSource = databaseSource;
    }

    public void setDataColection(List<T> list) {
        this.list = list;
    }



}
TOP

Related Classes of facturacion.tablas.EntityTable

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.