/*
* @(#)DOMNavigatorModel.java
*
* Copyright 2002 EGANTT LLP. All rights reserved.
* PROPRIETARY/QPL. Use is subject to license terms.
*/
package com.egantt.swing.table.model.row.navigator;
import java.util.HashMap;
import java.util.Map;
import org.w3c.dom.Element;
/**
* Uses the attributes from the Element to populate the rows
*/
public class DOMNavigatorModel extends AbstractNavigatorModel
{
protected final Object columns [];
protected final int index;
protected Map<Object, Object[]>cache = new HashMap<Object, Object[]>(0);
public DOMNavigatorModel(Object columns [], int index)
{
this.columns = columns;
this.index = index;
}
public DOMNavigatorModel(Object columns [])
{
this (columns, -1);
}
// _________________________________________________________________________
protected Object getValue(Object o, int col)
{
Object [] values = (Object []) cache.get(o);
if (values != null && values[col] != null)
return values[col];
return col == index ? o : ((Element) o).getAttribute(columns[col].toString());
}
protected void setValue(Object o, int col, Object value)
{
// nothing can be done about this
if (col == index)
return;
if (value instanceof String)
{
((Element) o).setAttribute(columns[col].toString(), (String) value);
return;
}
Object values [] = (Object []) cache.get(o);
if (values == null)
{
values = new Object[columns.length];
cache.put(o, values);
}
values[col] = value;
}
}