/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.delegate.directory.complex;
import beans.directory.packet.template.DirectoryPacketTemplateBeanRemote;
import beans.directory.packet.entity.PacketTemplateDetails;
import beans.directory.packet.template.DirectoryPacketTemplateBean;
import cli_fmw.delegate.directory.DirectoryMagic;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.SelectorEditableExceptional;
import clips.delegate.directory.ro.DirectoryLpuItem;
import clips.login.UserInfo;
import framework.beans.directory.DirectoryItemDetails;
import framework.utils.ROList;
import java.util.ArrayList;
import java.util.HashMap;
/**
*
* @author lacoste
*/
public class DirectoryPacketTemplate extends
DirectoryMagic<DirectoryPacketTemplateBeanRemote, DirectoryPacketTemplateItem> {
private HashMap<DirectoryLpuItem, ROList<DirectoryPacketTemplateItem>> map;
public DirectoryPacketTemplate() throws ClipsException {
super(DirectoryPacketTemplateBean.class.getSimpleName());
map = new HashMap<DirectoryLpuItem, ROList<DirectoryPacketTemplateItem>>();
}
@Override
public String getDirectoryTitle() {
return "Шаблоны пакетов услуг";
}
@Override
protected DirectoryPacketTemplateItem createFromLoadedDetails(DirectoryItemDetails details) {
PacketTemplateDetails d = (PacketTemplateDetails) details;
return new DirectoryPacketTemplateItem(d);
}
@Override
protected DirectoryPacketTemplateItem createNullItem() {
PacketTemplateDetails details = new PacketTemplateDetails();
details.title = "Не указан";
return new DirectoryPacketTemplateItem(details);
}
// /**
// *
// * @return
// * @deprecated Unsupported, use "getFilteredItems"
// */
// @Deprecated
// @Override
// public SelectorEditableExceptional<DirectoryPacketTemplateItem> getItems() {
// throw new UnsupportedOperationException("Unsupported, use \"getFilteredItems\"");
// }
private ArrayList<DirectoryPacketTemplateItem> filterItems(DirectoryLpuItem lpu) throws ClipsException{
ArrayList<DirectoryPacketTemplateItem> list = new ArrayList<DirectoryPacketTemplateItem>(0);
if (lpu == null) {
return list;
}
SelectorEditableExceptional<DirectoryPacketTemplateItem> items = getItems();
for (int i = 0; i < items.size(); i++) {
DirectoryPacketTemplateItem item = items.get(i);
if(item.getLpu() != null && item.getLpu().getID() == lpu.getID()){
list.add(item);
}
}
return list;
}
public ROList<DirectoryPacketTemplateItem> getFilteredItems(DirectoryLpuItem lpu) throws ClipsException {
if (map.get(lpu) == null){
map.put(lpu, new ROList<DirectoryPacketTemplateItem>(filterItems(lpu)));
}
return map.get(lpu);
}
// @Override
// protected void removeDB(DirectoryPacketTemplateItem item) throws ClipsException {
// super.removeDB(item);
// map.clear();
// }
@Override
protected void addToExtraCache(DirectoryPacketTemplateItem item) {
map.clear();
}
@Override
protected void removeFromExtraCache(DirectoryPacketTemplateItem item) {
map.clear();
}
}