All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.ahtutils.model.primefaces.PrimefacesEjbIdDataModel Maven / Gradle / Ivy

There is a newer version: 0.2.5
Show newest version
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