
net.sf.ahtutils.model.primefaces.PrimefacesEjbIdDataModel Maven / Gradle / Ivy
package net.sf.ahtutils.model.primefaces;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.faces.model.ListDataModel;
import net.sf.ahtutils.jsf.interfaces.dm.DmAllSelect;
import net.sf.ahtutils.jsf.interfaces.dm.DmSingleSelect;
import net.sf.ahtutils.model.interfaces.with.EjbWithId;
import org.primefaces.model.SelectableDataModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PrimefacesEjbIdDataModel extends ListDataModel implements SelectableDataModel
{
final static Logger logger = LoggerFactory.getLogger(PrimefacesEjbIdDataModel.class);
private boolean details;
private Map mapUnlock;
private Map mapSelect;
private Map mapInfo;
private DmSingleSelect singleSelectCallback;
private DmAllSelect allSelectCallback;
public PrimefacesEjbIdDataModel(List data)
{
super(data);
details = false;
mapUnlock = new Hashtable();
mapSelect = new Hashtable();
mapInfo = new Hashtable();
for(T t : data)
{
mapUnlock.put(t.getId(), false);
mapSelect.put(t.getId(), false);
mapInfo.put(t.getId(), false);
}
}
@SuppressWarnings("unchecked")
@Override
public T getRowData(String rowKey)
{
List list = (List) getWrappedData();
for(T ejb : list)
{
if(ejb.getId()==(new Integer(rowKey))){return ejb; }
}
return null;
}
@Override
public Object getRowKey(T item) {return item.getId();}
public void unlock(T item) {mapUnlock.put(item.getId(), true);}
public void unlock(T item, boolean value) {mapUnlock.put(item.getId(), value);}
// *********** INFO ************
public void info(T item, boolean value) {mapInfo.put(item.getId(), value);}
// *********** SELECT ************
public void toggleSelection(T item)
{
if(!mapSelect.containsKey(item.getId())){select(item, false);}
else
{
if(mapSelect.get(item.getId())){select(item, false);}
else{select(item, true);}
}
}
public void select(T item, boolean value){select(item, value,true);}
public void select(T item, boolean value, boolean withCallback)
{
mapSelect.put(item.getId(), value);
if(withCallback && singleSelectCallback!=null){singleSelectCallback.dmSingleSelected(item);}
}
public void selectAll(boolean value)
{
for(long key : mapSelect.keySet())
{
mapSelect.put(key, value);
}
if(allSelectCallback!=null){allSelectCallback.dmAllSelected();}
}
@SuppressWarnings("unchecked")
public void update(T item)
{
List list = (List) getWrappedData();
int index = list.indexOf(item);
list.set(index, item);
this.setWrappedData(list);
this.setRowIndex(index);
}
public Map getMapUnlock(){return mapUnlock;}
public Map getMapSelect() {return mapSelect;}
public Map getMapInfo() {return mapInfo;}
public boolean isSelected(long id)
{
if(mapSelect.containsKey(id)){return mapSelect.get(id);}
else {return false;}
}
public List toData()
{
List allData = new ArrayList();
Iterator iterator = this.iterator();
while(iterator.hasNext())
{
allData.add(iterator.next());
}
return allData;
}
public List toSelection()
{
List listSelected = new ArrayList();
Iterator iterator = this.iterator();
while(iterator.hasNext())
{
T t = iterator.next();
if(mapSelect.get(t.getId())){listSelected.add(t);}
}
return listSelected;
}
public void setSingleSelectCallback(DmSingleSelect singleSelectCallback) {this.singleSelectCallback = singleSelectCallback;}
public void setAllSelectCallback(DmAllSelect allSelectCallback) {this.allSelectCallback = allSelectCallback;}
public boolean contains(T t)
{
Iterator iterator = this.iterator();
while(iterator.hasNext())
{
if(t.getId()==iterator.next().getId()){return true;}
}
return false;
}
//*** Detail toggle
public boolean isDetails() {return details;}
public void setDetails(boolean details) {this.details = details;}
public void toggleDetails()
{
if(details){details=false;}
else{details=true;}
logger.trace("Toggled details to "+details);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy