/*
* CollaboratorLocal.java
*
* Created on 17 Декабрь 2007 г., 11:28
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package clips.delegate.client;
import beans.user.collaborator.CollaboratorBean;
import cli_fmw.delegate.DEC.DECClientAbstract;
import beans.user.collaborator.CollaboratorBeanRemote;
import cli_fmw.delegate.cache.ExtraDataManager;
import cli_fmw.delegate.collaborator.CollaboratorLocalAbstract;
import cli_fmw.delegate.directory.DirectoryItemRO;
import cli_fmw.delegate.lists.DataChunkList;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.SelectorEditable;
import clips.delegate.DEC.DECClient;
import beans.user.collaborator.entities.CollaboratorDetails;
import beans.user.collaborator.entities.CollaboratorFunctionsDetails;
import cli_fmw.delegate.AuditListener;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.directory.ro.DirectoryLpu;
import clips.delegate.directory.ro.DirectoryLpuItem;
import framework.beans.ModificationInfo;
import java.util.HashMap;
import java.util.Iterator;
/**
* Делегат, представляющий доступ к 1 записи в таблице collaborator - сотрудник.
* @author Администратор
*/
public class CollaboratorLocal extends
CollaboratorLocalAbstract<CollaboratorBeanRemote, CollaboratorDetails, ClientLocal> {
private class FunctionsInfo extends DataChunkList<CollaboratorFunctionsChunk>{
public FunctionsInfo(ExtraDataManager contaner) {
super(contaner);
}
@Override
protected void deleteDB(CollaboratorFunctionsChunk data) throws Exception {
ModificationInfo mi = getBean().removeFunctions(data.getDetails());
auditDetailsList.addAll(mi.getAudit());
fireAuditEvent();
}
@Override
protected int saveDB(CollaboratorFunctionsChunk data) throws Exception {
ModificationInfo mi = getBean().addFunctions(data.getDetails());
auditDetailsList.addAll(mi.getAudit());
fireAuditEvent();
return mi.getId();
}
@Override
protected void loadDB() throws Exception {
if (!isNewlyCreated()){
Iterator<CollaboratorFunctionsDetails> it = getBean().getFunctions().iterator();
while (it.hasNext()) {
CollaboratorFunctionsDetails details = it.next();
CollaboratorFunctionsChunk chunk = new CollaboratorFunctionsChunk(CollaboratorLocal.this, details);
initByDetails(chunk);
}
}
}
}
private FunctionsInfo functionsList = new FunctionsInfo(getEDM());
public CollaboratorLocal(ClientLocal c) throws ClipsException {
super(c);
}
public CollaboratorLocal(int id, AuditListener al) throws ClipsException {
super(id, al);
}
public CollaboratorLocal(CollaboratorDetails details, AuditListener al) throws ClipsException {
super(details, al);
}
@Override
protected DECClientAbstract<ClientLocal> initClientCache() throws ClipsException {
return new DECClient(this, "личные данные сотрудника", getAuditListener());
}
@Override
protected CollaboratorDetails getNewDetails() {
return new CollaboratorDetails();
}
/**
*
* @return
* @throws ClipsException
*/
public SelectorEditable<CollaboratorFunctionsChunk> getFunctions() throws ClipsException {
return functionsList.selector();
}
public HashMap<String, Object> getFieldsForPrint() throws ClipsException {
HashMap<String, Object> extraFields = new HashMap<String, Object>();
ClientLocal clientLocal = getClient();
extraFields.put("collabFIO", clientLocal.toString());
extraFields.put("collabSex", clientLocal.getSex().getTitle());
extraFields.put("collabBornDate", clientLocal.BornToString());
extraFields.put("collabSNILS", clientLocal.getSnils());
extraFields.put("collabAddress", clientLocal.getAddress().toString());
extraFields.put("collabRemark", clientLocal.getRemarks());
extraFields.put("collabEmail", clientLocal.getEmail());
extraFields.put("collabPhone", clientLocal.getTelephones());
return extraFields;
}
@Override
protected String getBeanName() {
return CollaboratorBean.class.getSimpleName();
}
public void setSheduled(boolean sheduled) throws ClipsException {
getDetails().sheduled = sheduled;
fireContentStateEvent();
}
public boolean isSheduled() throws ClipsException {
return getDetails().sheduled;
}
public DirectoryLpuItem getLpu() throws ClipsException {
return getDetails().lpuID == 0 ? null : DirectoryLocator.getDirectory(DirectoryLpu.class).getItemFromID(getDetails().lpuID);
}
public void setLpu(DirectoryLpuItem lpu) throws ClipsException {
getDetails().lpuID = lpu.getID();
fireContentStateEvent();
}
/**
* имеет ли сотрудник право на выписку лбготных рецептов
* @return
* @throws ClipsException
*/
public boolean isDlo() throws ClipsException {
return getDetails().dlo;
}
/**
* назначает сотруднику право на выписку льготных рецептов
* @param dlo
* @throws ClipsException
*/
public void setDlo(boolean dlo) throws ClipsException {
getDetails().dlo = dlo;
}
/**
* возвращает идентификационный номер (код) сотрудника
* @return
* @throws ClipsException
*/
public String getCode() throws ClipsException {
return getDetails().code;
}
/**
* назначает идентификационный номер (код) сотруднику
* @param code
* @throws ClipsException
*/
public void setCode(String code) throws ClipsException {
getDetails().code = code;
fireContentStateEvent();
}
@Override
public boolean isDirty() {
return super.isDirty();
}
@Override
protected void load() throws ClipsException {
super.load();
}
// private getPrivateKey(){
// //STUB
// certificateManager.
// //END STUB
// }
}