/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.delegate.directory.complex;
import beans.directory.cabinet.DirectoryCabinetBean;
import beans.directory.cabinet.DirectoryCabinetBeanRemote;
import cli_fmw.main.ClipsException;
import beans.directory.cabinet.entity.CabinetDetails;
import cli_fmw.delegate.directory.DirectoryMagic;
import cli_fmw.utils.SelectorEditableExceptional;
import clips.delegate.directory.ro.DirectoryLpuItem;
import framework.beans.directory.DirectoryItemDetails;
import framework.utils.ROList;
import java.util.ArrayList;
import java.util.HashMap;
/**
* справочник типов справок
* @author lacoste
*/
public class DirectoryCabinet extends
DirectoryMagic<DirectoryCabinetBeanRemote, DirectoryCabinetItem> {
private HashMap<DirectoryLpuItem, ROList<DirectoryCabinetItem>> map = new HashMap<DirectoryLpuItem, ROList<DirectoryCabinetItem>>();
public DirectoryCabinet() throws ClipsException {
super(DirectoryCabinetBean.class.getSimpleName());
}
@Override
public String getDirectoryTitle() {
return "Кабинеты";
}
@Override
protected DirectoryCabinetItem createFromLoadedDetails(DirectoryItemDetails details) {
CabinetDetails d = (CabinetDetails) details;
return new DirectoryCabinetItem(d);
}
@Override
protected DirectoryCabinetItem createNullItem() {
CabinetDetails d = new CabinetDetails();
d.description = "";
d.title = "Кабинет не указан";
return createFromLoadedDetails(d);
}
private ArrayList<DirectoryCabinetItem> filterItems(DirectoryLpuItem lpu) throws ClipsException{
ArrayList<DirectoryCabinetItem> list = new ArrayList<DirectoryCabinetItem>(0);
if (lpu == null) {
return list;
}
SelectorEditableExceptional<DirectoryCabinetItem> items = getItems();
for (int i = 0; i < items.size(); i++) {
DirectoryCabinetItem item = items.get(i);
if(item.getLpu() != null && item.getLpu().getID() == lpu.getID()){
list.add(item);
}
}
return list;
}
public ROList<DirectoryCabinetItem> getFilteredItems(DirectoryLpuItem lpu) throws ClipsException {
if (map.get(lpu) == null){
map.put(lpu, new ROList<DirectoryCabinetItem>(filterItems(lpu)));
}
return map.get(lpu);
}
@Override
protected void addToExtraCache(DirectoryCabinetItem item) {
super.addToExtraCache(item);
map.clear();
}
@Override
protected void removeFromExtraCache(DirectoryCabinetItem item) {
super.removeFromExtraCache(item);
map.clear();
}
}