1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
| package com.peofofo.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import javax.swing.table.AbstractTableModel;
import com.peofofo.dao.DAO;
import com.peofofo.dao.DAOFactory;
import com.peofofo.dao.JdbcConnector;
import com.peofofo.dao.tables.ConsommationsDao;
import com.peofofo.swing.AttributiveCellTableModel;
import com.peofofo.swing.CellSpan;
import com.peofofo.swing.MultiSpanCellTable;
public class Tableau_model extends AbstractTableModel {
private ArrayList<ArrayList<String>> list_boissons = new ArrayList<ArrayList<String>>();// tableau multi-dimensionnel
private ArrayList<ArrayList<Object>> list_consommations = new ArrayList<ArrayList<Object>>();// tableau multi-dimensionnel
private ArrayList<Boissons> boissons;
private ArrayList<Consommations> consommations;
private ArrayList<Consommations> consommations_total;
public Tableau_model(Membres membres){
DAO<Boissons> boissonsDao = DAOFactory.getBoissonsDAO();
// On compte le nombre de boissons
System.out.println("\tNombres de boissons : "+boissonsDao.count().getNombre());
list_boissons.add(0, new ArrayList<String>());
list_boissons.get(0).add(0, "Date");
list_boissons.get(0).add(1, "");
list_boissons.get(0).add(2, "0");
boissons = boissonsDao.select();
for(int i = 1; i < boissonsDao.count().getNombre()+1; i++){
//On fait notre recherche
//boissons = boissonsDao.find(i);
list_boissons.add(i, new ArrayList<String>());
list_boissons.get(i).add(0, boissons.get(i-1).getNom());
list_boissons.get(i).add(1, String.valueOf(boissons.get(i-1).getId()));
list_boissons.get(i).add(2, String.valueOf(boissons.get(i-1).getOrdre()));
System.out.println(i);
}
// On trie par ordre croissant les boissons
Collections.sort(list_boissons,
new Comparator<ArrayList<String>>(){
public int compare(ArrayList<String> o1, ArrayList<String> o2) {
if (Integer.valueOf(o1.get(2)) > Integer.valueOf(o2.get(2))) return 1;
else if(Integer.valueOf(o1.get(2)) == Integer.valueOf(o2.get(2))) return 0;
else return -1;
}
});
list_boissons.add(boissonsDao.count().getNombre()+1, new ArrayList<String>());
list_boissons.get(boissonsDao.count().getNombre()+1).add(0, "Débit");
list_boissons.add(boissonsDao.count().getNombre()+2, new ArrayList<String>());
list_boissons.get(boissonsDao.count().getNombre()+2).add(0, "Solde");
DAO<Consommations> consommationDao = DAOFactory.getConsommationsDAO();
//On fait notre recherche
consommations_total = consommationDao.select("id_membres", String.valueOf(membres.getId()));
ConsommationsDao consommationDao2 = new ConsommationsDao(JdbcConnector.getInstance());
consommations = consommationDao2.select_groupby("id_membres", String.valueOf(membres.getId()));
for(int i = 1; i < consommationDao.count("id_membres", String.valueOf(membres.getId())).getNombre()+1; i++){
list_consommations.add(i-1, new ArrayList<Object>());
list_consommations.get(i-1).add(0, consommations.get(i-1).getDate());
for(int z = 1; z < boissonsDao.count().getNombre()+1; z++){
int quantite=0, quantite2=0;
for(Consommations str : consommations_total){
if(Integer.valueOf(list_boissons.get(z).get(1)) == str.getId_boissons() && consommations.get(i-1).getId_consommations()==str.getId_consommations()){
System.out.println(list_boissons.get(z).get(1)+" test "+z+" test"+i+" "+str.getId_consommations()+" "+str.getId_membres()+" "+str.getQuantites());
quantite2=str.getQuantites();
quantite=1;
}
}
if(quantite==1)
list_consommations.get(i-1).add(z, String.valueOf(quantite2));
else
list_consommations.get(i-1).add(z, "");
}
//On ajoute le débit
list_consommations.get(i-1).add(boissonsDao.count().getNombre()+1, consommations.get(i-1).getDebit_total());
//On ajoute le solde
list_consommations.get(i-1).add(boissonsDao.count().getNombre()+2, consommations.get(i-1).getSolde_restant());
}
// On ajoute les approvisionnenent des comptes
DAO<Approvisionnement_compte_boissons> approvisionnement_compte_boissonsDao = DAOFactory.getApprovisionnement_compte_boissonsDAO();
// On ajoute les éléments pour la fusion
AttributiveCellTableModel ml = new AttributiveCellTableModel(14,15); // Ajout de cette ligne pour la fusion (essai avec 14,15)
final CellSpan cellAtt =(CellSpan)ml.getCellAttribute(); // Ajout de cette ligne pour la fusion
final MultiSpanCellTable table = new MultiSpanCellTable( ml ); // Ajout de cette ligne pour la fusion
//On fait notre recherche
ArrayList<Approvisionnement_compte_boissons> approvisionnement = approvisionnement_compte_boissonsDao.select("id_membres_approvisionnement", String.valueOf(membres.getId()));
for(int i = 1; i < approvisionnement_compte_boissonsDao.count("id_membres_approvisionnement", String.valueOf(membres.getId())).getNombre()+1; i++){
list_consommations.add(i-1, new ArrayList<Object>());
list_consommations.get(i-1).add(0, approvisionnement.get(i-1).getDate());
list_consommations.get(i-1).add(1, "Approvisionnement compte boissons");
list_consommations.get(i-1).add(2, "");
list_consommations.get(i-1).add(3, "");
list_consommations.get(i-1).add(4, "");
list_consommations.get(i-1).add(5, "");
list_consommations.get(i-1).add(6, "");
list_consommations.get(i-1).add(7, "");
list_consommations.get(i-1).add(8, "");
list_consommations.get(i-1).add(9, "");
list_consommations.get(i-1).add(10, "");
list_consommations.get(i-1).add(11, "");
list_consommations.get(i-1).add(12, "");
list_consommations.get(i-1).add(13, "");
list_consommations.get(i-1).add(14, approvisionnement.get(i-1).getMontant());
list_consommations.get(i-1).add(15, approvisionnement.get(i-1).getNouveau_solde());
}
int[] columns = {2,3,4,5,6,7,8,9,10,11,12,13};// On fusionne de la colonne 2 à 13
int[] rows = {2,3,4}; // On fusionne la ligne 2 à 4
cellAtt.combine(rows,columns); // Ajout de cette ligne pour la fusion
table.clearSelection(); // Ajout de cette ligne pour la fusion
table.revalidate(); // Ajout de cette ligne pour la fusion
table.repaint(); // Ajout de cette ligne pour la fusion
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return list_boissons.size();
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return list_consommations.size();
}
public String getColumnName(int col) {
return list_boissons.get(col).get(0);
}
@Override
public Object getValueAt(int row, int col) {
return list_consommations.get(row).get(col);
}
} |
Partager