/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
// Security Ok.
package framework.beans.directory.enterprise;
import framework.beans.directory.DirectoryBean;
import framework.beans.address.entities.Address;
import framework.beans.address.entities.AddressDetails;
import framework.beans.address.entities.AddressObject;
import framework.generic.ClipsServerException;
import framework.generic.EDataIntegrity;
import framework.security.UserRight;
import framework.security.UserRightsSetAbstract;
/**
* @param <DEN>
* @param <DETAILSTYPE>
* @security -Ok.
* @author axe
*/
public abstract class DirectoryEnterpriseBeanAbstract<DEN extends EnterpriseAbstract<DETAILSTYPE>, DETAILSTYPE extends EnterpriseDetailsAbstract> extends DirectoryBean<DEN, DETAILSTYPE>
implements DirectoryEnterpriseBeanRemoteAbstract<DETAILSTYPE> {
public DirectoryEnterpriseBeanAbstract(Class<DEN> enityClass) {
super(enityClass, "предприятие");
}
@Override
protected UserRight getRightForCreateDirectoryItem() {
return UserRightsSetAbstract.CREATE_DIRECTORY_COMMON_ITEM;
}
@Override
protected UserRight getRightForWriteToDirectory() {
return UserRightsSetAbstract.CREATE_DIRECTORY_COMMON_ITEM;
}
@Override
protected void set(DEN enterprise, DETAILSTYPE details) throws ClipsServerException {
enterprise.setTitle(details.title);
AddressDetails add = details.address;
if(add == null || add.objectId == 0) {
enterprise.setAddress(null);
}else{
Address address = enterprise.getAddress();
if (address == null) {
address = new Address();
}
saveAddress(address, details.address);
enterprise.setAddress(address);
}
if(enterprise.getId() > 0) {
if(details.parentItem > 0) {
if(enterprise.getDepartament() == null
|| details.parentItem != enterprise.getDepartament().getId()) {
throw new EDataIntegrity("Нельзя изменять структуру дерева предприятий");
}
} else {
if(enterprise.getDepartament() != null) {
throw new EDataIntegrity("Нельзя изменять структуру дерева предприятий");
}
}
}
DEN parent = null;
if(details.parentItem > 0) {
parent = findEntity(getEntityClass(), details.parentItem);
}
enterprise.setDepartament(parent);
enterprise.setOkved(details.okved == null ? "" : details.okved);
}
@Override
protected void afterUpdate(DEN entity) throws ClipsServerException {
EnterpriseAbstract enterprise = (EnterpriseAbstract) entity;
EnterpriseAbstract parent = enterprise.getDepartament();
enterprise.setTreePath(((parent != null) ? parent.getTreePath() : "")
+ enterprise.getId() + ".");
saveEntity(enterprise);
}
private void saveAddress(Address address, AddressDetails details) throws ClipsServerException {
address.setBuilding(details.building);
address.setFlat(details.flat);
address.setAddressObject(findEntity(AddressObject.class, details.objectId));
saveEntity(address);
}
}