/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.gui.model;
import net.codjo.model.Table;
import net.codjo.model.TableHome;
import net.codjo.persistent.PersistenceException;
import net.codjo.persistent.Reference;
import java.awt.Component;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.ListCellRenderer;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
/**
* Renderer permettant d'afficher le libell� des tables de <code>PM_TABLE </code>au lieu
* de son DB_TABLE_NAME.
*
* <p></p>
*
* @author $Author: blazart $
* @version $Revision: 1.3 $
*
*
*/
public class DBTableNameRenderer implements ListCellRenderer, TableCellRenderer {
// Renderer
private DefaultListCellRenderer listCellRenderer = new DefaultListCellRenderer();
private DefaultTableCellRenderer tableCellRenderer = new DefaultTableCellRenderer();
private TableHome tableHome;
// Data
private Map traductTable = new HashMap();
/**
* DOCUMENT ME!
*
* @param tableHome Description of Parameter
*
* @exception PersistenceException Description of Exception
* @throws IllegalArgumentException TODO
*/
public DBTableNameRenderer(TableHome tableHome)
throws PersistenceException {
if (tableHome == null) {
throw new IllegalArgumentException();
}
this.tableHome = tableHome;
fillTraductTable();
}
/**
* DOCUMENT ME!
*
* @param list
* @param value
* @param index
* @param isSelected
* @param cellHasFocus
*
* @return La valeur de listCellRendererComponent
*/
public Component getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
return listCellRenderer.getListCellRendererComponent(list, translateValue(value),
index, isSelected, cellHasFocus);
}
/**
* DOCUMENT ME!
*
* @param table
* @param value
* @param isSelected
* @param hasFocus
* @param row
* @param column
*
* @return La valeur de tableCellRendererComponent
*/
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return tableCellRenderer.getTableCellRendererComponent(table,
translateValue(value), isSelected, hasFocus, row, column);
}
/**
* Traduit la DB_TABLE_NAME en libell� de la table
*
* @param value La nouvelle valeur choisie
*
* @return La valeur telle qu'on doit la stocker
*/
public String translateValue(Object value) {
if (traductTable.containsKey(value)) {
Table t = (Table)((Reference)traductTable.get(value)).getLoadedObject();
return t.getTableName();
}
else {
return "? " + value + " ?";
}
}
/**
* Rempli la HashMap qui fait le mapping entre le <code>DB_TABLE_NAME_ID </code>et
* <code>TABLE_NAME</code> de la table <code>PM_TABLE</code> .
*
* @exception PersistenceException Description of Exception
*/
private void fillTraductTable() throws PersistenceException {
java.util.List list = tableHome.getAllObjects();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Table table = (Table)((Reference)iter.next()).getObject();
traductTable.put(table.getDBTableName(), table.getReference());
}
}
}