document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. package nativa.view.reports;
  2.  
  3. import java.sql.Date;
  4. import java.text.DecimalFormat;
  5. import java.text.DecimalFormatSymbols;
  6. import java.text.SimpleDateFormat;
  7. import java.util.ArrayList;
  8. import java.util.HashMap;
  9. import java.util.List;
  10. import java.util.Locale;
  11. import java.util.Map;
  12. import javax.swing.JOptionPane;
  13. import javax.swing.table.AbstractTableModel;
  14. import nativa.facade.AvaliacaoFCD;
  15. import nativa.facade.ProdutoFCD;
  16. import nativa.model.Avaliacao;
  17. import nativa.model.Produto;
  18. import net.sf.jasperreports.engine.JRException;
  19. import net.sf.jasperreports.engine.JasperFillManager;
  20. import net.sf.jasperreports.engine.JasperPrint;
  21. import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
  22. import net.sf.jasperreports.view.JasperViewer;
  23.  
  24. /**
  25.  *
  26.  * @author bolivar
  27.  */
  28. public class TableModelAvaliacoesProduto extends AbstractTableModel {
  29.  
  30.     private Produto produto;
  31.     private List<Avaliacao> dados;
  32.     private String[] columnNames = {"Data", "Custo MO", "Custo MP", "Outros", "Total", "Unitário"};
  33.  
  34.     // ==============================================================
  35.     // Construtores.
  36.     // ==============================================================
  37.     public TableModelAvaliacoesProduto() {
  38.         // no construtor, instanciamos o List
  39.         dados = new ArrayList<Avaliacao>();
  40.     }
  41.  
  42.     public TableModelAvaliacoesProduto(List<Avaliacao> lista) {
  43.         this(); // chama construtor anterior
  44.         dados.addAll(lista);
  45.     }
  46.  
  47.     public TableModelAvaliacoesProduto(Produto p) {
  48.         // start this lista dados
  49.         this();
  50.         /// carrega avaliacoes do produto na lista de dados
  51.         dados.addAll(new AvaliacaoFCD().selectAvaliacoesDoProduto(p));
  52.         // seta produto pra usar no getValueAt
  53.         produto = p;
  54.     }
  55.  
  56.     // ==============================================================
  57.     // Métodos implementados.
  58.     // ==============================================================
  59.     @Override
  60.     public Class<?> getColumnClass(int coluna) {
  61.         return String.class;
  62.     }
  63.  
  64.     @Override
  65.     public int getColumnCount() {
  66.         // esse método deve retornar o número de colunas.
  67.         return columnNames.length;
  68.     }
  69.  
  70.     @Override
  71.     public String getColumnName(int coluna) {
  72.         // retorna o nome das colunas
  73.         return columnNames[coluna];
  74.     }
  75.  
  76.     @Override
  77.     public int getRowCount() {
  78.         // retorna o número de linhas, ou seja, a quantidade de entradas na
  79.         // nossa lista.
  80.         return dados.size();
  81.     }
  82.  
  83.     @Override
  84.     public boolean isCellEditable(int rowIndex, int columnIndex) {
  85.         // permitir editar o conteudo das celulas
  86.         return true;
  87.     }
  88.  
  89.     @Override
  90.     public Object getValueAt(int linha, int coluna) {
  91.         ProdutoFCD fcdP = new ProdutoFCD();
  92.         // get avaliacao
  93.         Avaliacao aval = dados.get(linha);
  94.         // formatador pra dinheiro brasil
  95.         DecimalFormat DINHEIRO_REAL = new DecimalFormat("¤ ###,###,##0.00",
  96.                 new DecimalFormatSymbols(
  97.                 new Locale("pt", "BR")));
  98.         // façamos um switch, como tem "return" nao precisa "break"
  99.         switch (coluna) {
  100.             case 0: // data
  101.                 return new SimpleDateFormat("dd/MM/yyyy").format(aval.getAvaData());
  102.             case 1: // Custo Mao-de-obra
  103.                 return DINHEIRO_REAL.format(fcdP.custoMaoDeObra(produto, aval));
  104.             case 2: // Custo da Materia-prima
  105.                 return DINHEIRO_REAL.format(aval.getAvaCustoMp());
  106.             case 3: // Custos Indiretos - Gastos - Outros
  107.                 return DINHEIRO_REAL.format(aval.getAvaGastos());
  108.             case 4: // Custo Total do Produto na Avaliacao
  109.                 return DINHEIRO_REAL.format(fcdP.custoProdutoAvaliacao(produto, aval));
  110.             case 5: // Custo da Unidade Produzida = Qtde Saida Ultima Tarefa / Custo Total
  111.                 return DINHEIRO_REAL.format(fcdP.custoUnitario(produto, aval));
  112.             default:
  113.                 return ""; // isso nunca deve ocorrer
  114.             }
  115.     }
  116.  
  117.     @Override
  118.     public void setValueAt(Object valor, int linha, int coluna) {
  119.         try {
  120.             // aqui devemos atualizar o valor de avaliacao
  121.             // vemos em qual linha ele está
  122.             Avaliacao objeto = dados.get(linha);
  123.             // e vemos o que será atualizado
  124.             switch (coluna) {
  125.                 case 0: // data
  126.                     objeto.setAvaData(Date.valueOf(valor.toString()));
  127.                     break;
  128.                 case 1: // Custo Mao-de-obra por hora
  129.                     objeto.setAvaCustoMoph(Double.parseDouble(valor.toString()));
  130.                     break;
  131.                 case 2: // Custo da Materia-prima
  132.                     objeto.setAvaCustoMp(Double.parseDouble(valor.toString()));
  133.                     break;
  134.                 case 3: // Custos Indiretos - Gastos - Outros
  135.                     objeto.setAvaGastos(Double.parseDouble(valor.toString()));
  136.                     break;
  137.                 case 4: // Custo Total do Produto na Avaliacao
  138.                     System.out.println("*** Tentou setar valor para custo total da producao AvaliacoesCustoTableModel");
  139.                     break;
  140.                 case 5:
  141.                     // Custo Unitário do Produto FInal
  142.                     System.out.println("*** Tentou setar valor para custo unitário produto AvaliacoesCustoTableModel");
  143.                     break;
  144.                 default:
  145.                     System.out.println("Entrada invalida! Revisar setValueAt() em AvaliacoesCustoTableModel");
  146.             }
  147.             // é importante notificar os listeners a cada alteração
  148.             fireTableDataChanged();
  149.         } catch (Exception ex) {
  150.             System.out.println("### Exception - setValueAt: " + ex.getMessage());
  151.         }
  152.     }
  153.  
  154.     /**
  155.      * retorna aval de uma linha
  156.      */
  157.     public Avaliacao get(int linha) {
  158.         return dados.get(linha);
  159.     }
  160.  
  161.     /**
  162.      * Esvazia a lista.
  163.      */
  164.     public void limpaLista() {
  165.         int i = dados.size();
  166.         dados.clear();
  167.         fireTableRowsDeleted(0, i - 1);
  168.     }
  169.  
  170.     // Criar uma nova Lista para os dados a serem impressos
  171.     // com objetos Print
  172.     public List<Print> carregaDadosPrint() {
  173.         List<Print> list = new ArrayList<Print>();
  174.         int rows = getRowCount();
  175.         try {
  176.             for (int row = 0; row < rows; row++) {
  177.                 Print p = new Print();
  178.                 p.setData(getValueAt(row, 0).toString());
  179.                 p.setCustomo(getValueAt(row, 1).toString());
  180.                 p.setCustomp(getValueAt(row, 2).toString());
  181.                 p.setOutros(getValueAt(row, 3).toString());
  182.                 p.setTotal(getValueAt(row, 4).toString());
  183.                 p.setUnitario(getValueAt(row, 5).toString());
  184.                 list.add(p);
  185.             }
  186.         } catch (Exception e) {
  187.             System.out.println("#--------------# erro: " + e.getMessage());
  188.         }
  189.         return list;
  190.     }
  191.  
  192.     /**
  193.      * Imprimir dados com relatório Ireport
  194.      */
  195.     public void imprimir() {
  196.         List<Print> printList = carregaDadosPrint();
  197.         try {
  198.             // Criar um Jasper Callection
  199.             JRBeanCollectionDataSource jrs = new JRBeanCollectionDataSource(printList);
  200.             // Criar um mapa de parametros, caso seja necessario
  201.             Map parametros = new HashMap();
  202.             parametros.put("NOME_PRODUTO", produto.getProNome());
  203.             parametros.put("CUSTO_MEDIO_PRODUTO", new ProdutoFCD().custoMedio(produto));
  204.             // Gerar o JasperPrint = Dados a serem impressos
  205.             JasperPrint jpr = JasperFillManager.fillReport("/home/bolivar/NetBeansProjects/Nativa/src/nativa/view/reports/CustoProduto2.jasper", parametros, jrs);
  206.             // Visualiza em Tela através do JasperViewer
  207.             JasperViewer.viewReport(jpr, false);
  208.         } catch (JRException je) {
  209.             je.printStackTrace();
  210.             JOptionPane.showMessageDialog(null, je.getMessage());
  211.         }
  212.     }
  213.  
  214.     public class Print {
  215.  
  216.         private String data;
  217.         private String customo;
  218.         private String customp;
  219.         private String outros;
  220.         private String total;
  221.         private String unitario;
  222.  
  223.         public String getData() {
  224.             return data;
  225.         }
  226.  
  227.         public void setData(String data) {
  228.             this.data = data;
  229.         }
  230.  
  231.         public String getCustomo() {
  232.             return customo;
  233.         }
  234.  
  235.         public void setCustomo(String customo) {
  236.             this.customo = customo;
  237.         }
  238.  
  239.         public String getCustomp() {
  240.             return customp;
  241.         }
  242.  
  243.         public void setCustomp(String customp) {
  244.             this.customp = customp;
  245.         }
  246.  
  247.         public String getOutros() {
  248.             return outros;
  249.         }
  250.  
  251.         public void setOutros(String outros) {
  252.             this.outros = outros;
  253.         }
  254.  
  255.         public String getTotal() {
  256.             return total;
  257.         }
  258.  
  259.         public void setTotal(String total) {
  260.             this.total = total;
  261.         }
  262.  
  263.         public String getUnitario() {
  264.             return unitario;
  265.         }
  266.  
  267.         public void setUnitario(String unitario) {
  268.             this.unitario = unitario;
  269.         }
  270.     }
  271. }
  272.  
  273.  
');