/*
* ItemTableModel.java
*
* Created on 2006��11��10��, ����10:00
*
* RealCix2.0
*/
package realcix20.guis.models;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import realcix20.classes.basic.BaseClass;
import realcix20.classes.basic.Cell;
import realcix20.classes.basic.Column;
import realcix20.classes.basic.Row;
import realcix20.classes.plugins.CurrencyPlugin;
import realcix20.guis.utils.I18NManager;
import realcix20.utils.GlobalValueManager;
import realcix20.utils.ObjectUtil;
public class ItemTableModel extends DefaultTableModel {
private BaseClass object;
private Vector names;
private Vector dataValues;
public ItemTableModel(BaseClass object, Row mainRow) {
this.object = object;
names = new Vector();
dataValues = new Vector();
Iterator columnIter = object.getColumns().iterator();
while (columnIter.hasNext()) {
Column column = (Column)columnIter.next();
if (column.isItemField())
names.add(column);
}
names.add("row");
Iterator rowIter = mainRow.getRowSet().getRows().iterator();
int size = mainRow.getRowSet().getRows().size();
while (rowIter.hasNext()) {
Row row = (Row)rowIter.next();
if ( (isItemRow(row)) && (!row.isDelete()) ) {
Vector rowDatas = new Vector();
columnIter = object.getColumns().iterator();
while (columnIter.hasNext()) {
Column column = (Column)columnIter.next();
if (column.isItemField()) {
Cell newCell = ObjectUtil.findNewCell(row, column.getTableName(), column.getColumnName());
if (column.isI18N()) {
String i18nString = null;
if (newCell.getColumnValue() != null)
i18nString = I18NManager.getI18NString(column.getI18nPrefix(), newCell.getColumnValue());
if (i18nString != null) {
if (GlobalValueManager.getValue("APPLICATION.ZIC").equals("1")) {
rowDatas.add(i18nString);
} else if (GlobalValueManager.getValue("APPLICATION.ZIC").equals("2")) {
rowDatas.add(newCell.getColumnValue());
} else if (GlobalValueManager.getValue("APPLICATION.ZIC").equals("3")) {
rowDatas.add(newCell.getColumnValue() + " - " + i18nString);
}
}
else {
if (newCell.getColumnValue() instanceof Double) {
rowDatas.add(CurrencyPlugin.getFormatedDouble((Double)newCell.getColumnValue()));
} else
rowDatas.add(newCell.getColumnValue());
}
} else {
if (newCell.getColumnValue() instanceof Double) {
rowDatas.add(CurrencyPlugin.getFormatedDouble((Double)newCell.getColumnValue()));
} else
rowDatas.add(newCell.getColumnValue());
}
}
}
rowDatas.add(row);
dataValues.add(rowDatas);
}
}
setDataVector(dataValues, names);
}
//help methods
public void addRow(Row row) {
Vector rowDatas = new Vector();
Iterator cellIter = row.getNewCells().iterator();
while (cellIter.hasNext()) {
Cell cell = (Cell)cellIter.next();
rowDatas.add(cell.getColumnValue());
}
addRow(rowDatas);
}
private boolean isItemRow(Row row) {
boolean flag = true;
Iterator cellIter = row.getNewCells().iterator();
while (cellIter.hasNext()) {
Cell cell = (Cell)cellIter.next();
Column column = findColumn(object, cell.getTableName(), cell.getColumnName());
if (column != null) {
if ( (column.isPrimaryKey()) && (column.isItemField()) ) {
if ( (cell.getColumnValue() == null) ) {
flag = false;
break;
}
}
}
}
return flag;
}
private Column findColumn(BaseClass object, String tableName, String columnName) {
Column rColumn = null;
Iterator columnIter = object.getColumns().iterator();
while (columnIter.hasNext()) {
Column column = (Column)columnIter.next();
if ( (column.getTableName().equals(tableName)) && (column.getColumnName().equals(columnName)) ) {
rColumn = column;
break;
}
}
return rColumn;
}
}