/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.delegate.directory.complex;
import beans.directory.dlodruglist.DirectoryDloDrugListBean;
import beans.directory.dlodruglist.DirectoryDloDrugListBeanRemote;
import beans.directory.dlodruglist.DloDrugListDetails;
import cli_fmw.delegate.directory.DirectoryMagic;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.Selector;
import cli_fmw.utils.SelectorEditableExceptional;
import clips.delegate.directory.simple.dlo.DirectoryDrugFarmGroupItem;
import framework.beans.directory.DirectoryItemDetails;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author lacoste
*/
public class DirectoryDrugList
extends DirectoryMagic<DirectoryDloDrugListBeanRemote, DirectoryDrugListItem> {
public DirectoryDrugList() throws ClipsException {
super(DirectoryDloDrugListBean.class.getSimpleName());
}
@Override
protected DirectoryDrugListItem createFromLoadedDetails(DirectoryItemDetails details) {
DloDrugListDetails d = (DloDrugListDetails) details;
return new DirectoryDrugListItem(d);
}
@Override
public String getDirectoryTitle() {
return "Перечень лекарственных средств";
}
public Selector<DirectoryDrugListItem> getItemsByFarmGroup(DirectoryDrugFarmGroupItem group) throws ClipsException {
return new FilteredByFarmGroup(group);
}
private class FilteredByFarmGroup implements Selector<DirectoryDrugListItem> {
List<DirectoryDrugListItem> itemsByGroup = new ArrayList<DirectoryDrugListItem>();
public FilteredByFarmGroup(DirectoryDrugFarmGroupItem group) throws ClipsException {
SelectorEditableExceptional it = getItems();
for (int i = 0; i < it.size(); i++) {
DirectoryDrugListItem item = (DirectoryDrugListItem) it.get(i);
//pass nullable element
if(item.getID() == 0) {
continue;
}
if(item.getFarmGroup() == group) {
itemsByGroup.add(item);
}
}
}
@Override
public int size() {
return itemsByGroup.size();
}
@Override
public DirectoryDrugListItem get(int index) {
return itemsByGroup.get(index);
}
}
public Selector<DirectoryDrugListItem> getItemsBySection(DirectoryDloDrugSectionItem section) throws ClipsException {
return new FilteredBySection(section);
}
private class FilteredBySection implements Selector<DirectoryDrugListItem> {
List<DirectoryDrugListItem> itemsBySection = new ArrayList<DirectoryDrugListItem>();
public FilteredBySection(DirectoryDloDrugSectionItem section) throws ClipsException {
SelectorEditableExceptional it = getItems();
for (int i = 0; i < it.size(); i++) {
DirectoryDrugListItem item = (DirectoryDrugListItem) it.get(i);
//pass nullable element
if(item.getID() == 0) {
continue;
}
if(item.getSection() == section) {
itemsBySection.add(item);
}
}
}
@Override
public int size() {
return itemsBySection.size();
}
@Override
public DirectoryDrugListItem get(int index) {
return itemsBySection.get(index);
}
}
}