1   package ch.ige.edossier.transfer.client;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   import java.util.Vector;
6   import javax.swing.table.DefaultTableModel;
7   import ch.ige.edossier.transfer.vo.EreignisVO;
8   
9   /**
10   * B32.03 - eDossier-Interceptions - Diplomarbeit an der Software-Schule Schweiz<br>
11   * Datenhaltung Interceptions
12   * <p>
13   * Copyright (c) 2004, Eidgenössisches Institut für Geistiges Eigentum
14   * @author    Anita Rueegsegger, Marc Bouquet
15   * @version   $Id: DtmInterception.java,v 1.6 2004/11/01 13:52:31 ruegsegger Exp $
16   */
17  public class DtmInterception extends DefaultTableModel
18  {
19  
20    public DtmInterception()
21    {
22      initHeader();
23    }
24  
25    /**
26     * Spaltenbeschriftung setzen
27     */
28    private void initHeader()
29    {
30      columnIdentifiers.addElement( " " ); // Checkbox
31      columnIdentifiers.addElement( "Schutit-Key" );
32      columnIdentifiers.addElement( "GesuchNr" );
33      columnIdentifiers.addElement( "Account" ); // Combobox
34      columnIdentifiers.addElement( "vo" ); // EreignisVO beinhaltet alle Daten
35    }
36  
37    /**
38     * Editierbarkeit der Daten verhindern,
39     *
40     * @param row selektierte Zeile
41     * @param col selektierte Spalte
42     * @return true falls Zellen editierbar sind
43     */
44    public boolean isCellEditable( int row, int col )
45    {
46      switch( col )
47      {
48        case 0:
49          return true; // Checkbox muss editierbar sein
50        case 3:
51          return true; // Combobox muss editierbar sein
52        default:
53          return false;
54      }
55    }
56  
57    /**
58     * Werte der angegebenen Spalte werden mit den standardmässigen
59     * Darstellungsobjekten ausgestattet
60     * muss implementiert werden, damit Sortierung korrekt funktioniert
61     *
62     * @param column Spalte
63     * @return gibt die Klasse der Column zurück
64     */
65    public Class getColumnClass( int column )
66    {
67      return getValueAt( 0, column ).getClass();
68    }
69  
70    /**
71     * Tabellendaten werden gesetzt.<br>
72     * Daten werden in Form eines ValueObjects übergeben.
73     * Daten des VOs werden aufgesplittet und in den Datenhaltungsvector(dataVector)
74     * des Tabellenmodels geschrieben.
75     * Felder die null sein können müssen mit "" gefüllt werden,
76     * ansonsten nullpointerexception bei funktionsaufruf getColumnClass
77     *
78     * @param data ArrayList von EreignisVO beinhaltet alle Bagis-Daten der Beanstandungen
79     */
80    public void setData( List data )
81    {
82      dataVector.clear();
83  
84      if( data != null )
85      {
86        for( int i = 0; i < data.size(); i++ )
87        {
88          Vector row = new Vector();
89          EreignisVO vo = ( EreignisVO )data.get( i );
90  
91          row.add( new Boolean( false ) ); //Checkbox
92          row.add( new Integer( vo.schutitKey ) );
93          row.add( new String( vo.schutitVO.gesuchNr == null ? "" :
94                               vo.schutitVO.gesuchNr ) );
95          row.add( new ComboBoxObject( "", "" ) );
96          row.add( vo );
97  
98          dataVector.add( row );
99        }
100     }
101     fireTableDataChanged();
102   }
103 
104   /**
105    * Gibt die selektierten (Checkbox) Tabellendaten in Form einer ArrayList von EreignisVOs zurück
106    * @return Tabellendaten gekapselt in ArrayList von EreignisVOs
107    */
108   public List getMarkedData()
109   {
110     List list = new ArrayList();
111     EreignisVO vo = null;
112     int size = dataVector.size();
113 
114     if( size > 0 )
115     {
116       for( int i = 0; i < size; i++ )
117       {
118         Vector vec = ( Vector )dataVector.get( i );
119 
120         if( ( ( Boolean )vec.get( 0 ) ).booleanValue() )
121         {
122           vo = new EreignisVO();
123           vo = ( EreignisVO )vec.get( 4 );
124           ComboBoxObject cbx = ( ComboBoxObject )vec.get( 3 );
125           vo.accountId = new Integer( cbx.key ).intValue();
126           list.add( vo );
127         }
128       }
129     }
130     return list;
131   }
132 
133   /**
134    * Daten der Tabelle löschen
135    */
136   public void clear()
137   {
138     dataVector.clear();
139     fireTableDataChanged();
140   }
141 }
142