/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cli_fmw.delegate.directory.complex;
import cli_fmw.delegate.directory.DirectoryRecursiveLazy;
import cli_fmw.main.ClipsException;
import cli_fmw.main.DirectoryItemNotFoundException;
import framework.beans.address.DirectoryKladrBean;
import framework.beans.address.DirectoryKladrBeanRemote;
import framework.beans.address.KladrCode;
import framework.beans.address.KladrItem;
import framework.beans.address.entities.AddressObject;
import framework.beans.directory.DirectoryItemDetails;
import framework.beans.address.entities.AddressObjectDetails;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
*
* @author petr
*/
public class DirectoryKladr
extends DirectoryRecursiveLazy<DirectoryKladrBeanRemote, DirectoryKladrItem>{
public DirectoryKladr() throws ClipsException {
super(DirectoryKladrBean.class.getSimpleName());
}
@Override
public String getDirectoryTitle() {
return "КЛАДР";
}
@Override
protected DirectoryKladrItem createFromLoadedDetails(DirectoryItemDetails details) {
AddressObjectDetails d = (AddressObjectDetails) details;
return new DirectoryKladrItem(d, this);
}
// @Override
// protected DirectoryKladrItem createNullItem() {
// AddressObjectDetails d = new AddressObjectDetails();
// d.title = "";
// return createFromLoadedDetails(d);
// }
public void syncDirectory(List<KladrItem> roots, Map<KladrCode,KladrCode> altnames) throws ClipsException{
System.out.println("DIRECTORYKLADR: синхронизация данных справочника адресов");
try {
getBean().get().syncDirectory(roots, altnames);
} catch (Exception ex) {
clearBean();
throw new ClipsException("Ошибка при обновлении классификатора адресов", ex);
}
}
@Override
protected DirectoryKladrItem createNullItem() {
AddressObjectDetails details = new AddressObjectDetails();
details.title = "неизвестно";
details.kladrCode = "";
details.hidden = true;
DirectoryKladrItem item = new DirectoryKladrItem(details, this);
return item;
}
public DirectoryKladrItem getRussia() throws DirectoryItemNotFoundException{
return getItemFromID(AddressObject.ADDRESS_OBJECT_RUSSIA);
}
public DirectoryKladrItem getItemByCode(String code) throws ClipsException {
try {
int id = getBean().get().getItemIDByCode(code);
return getItemFromID(id);
} catch (Exception ex) {
clearBean();
throw new ClipsException("Не удалось получить элемент КЛАДРа (" + code + ")", ex);
}
}
public ArrayList<DirectoryKladrItem> getAddress(String str) throws ClipsException{
int[] is = getBean().get().findAddressObject(str, ", ");
ArrayList<DirectoryKladrItem> res = new ArrayList<DirectoryKladrItem>();
for (int id : is) {
res.add(this.getItemFromID(id));
}
return res;
}
}