Package framework.beans.directory.simple

Source Code of framework.beans.directory.simple.DirectorySimpleBeanAbstract

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package framework.beans.directory.simple;

import framework.beans.directory.DirectoryBean;
import framework.beans.directory.DirectoryItemDetails;
import framework.beans.directory.DirectoryEntity;
import framework.beans.directory.DirectoryEntityDirty;
import framework.beans.directory.DirectoryEntityExternal;
import framework.beans.directory.DirectoryEntityTrash;
import framework.beans.directory.simple.entities.Arm;
import framework.beans.directory.simple.entities.ClientDocumentType;
import framework.beans.directory.simple.entities.DocumentGivenPlace;
import framework.beans.directory.simple.entities.IntelWriterType;
import framework.beans.directory.simple.entities.Name;
import framework.beans.directory.simple.entities.Patronymic;
import framework.beans.directory.simple.entities.Sex;
import framework.beans.directory.simple.entities.Surname;
import framework.generic.ClipsServerException;
import framework.generic.EDataIntegrity;
import framework.security.UserRight;
import framework.security.UserRightsSetAbstract;
import java.util.Iterator;
import reportgen.cores.ejb.annotations.DefineQueryEntity;


/**
* Как ни странно сушность итема ни с чем больше не связана
* @security ok
* @author axe
*/

public abstract class DirectorySimpleBeanAbstract extends DirectoryBean<DirectoryEntity<DirectoryItemDetails>, DirectoryItemDetails>
        implements DirectorySimpleBeanRemoteAbstract {

    public static final int DL_SURNAME = 1;
    public static final int DL_NAME = 2;
    public static final int DL_PATHRON = 3;
    public static final int DL_SEX = 4;  
    public static final int DL_ARMS = 5;
    public static final int DL_INTELLI_WRITER_TYPE = 6;
    public static final int DL_DOCUMENT_TYPE = 7;
    public static final int DL_DOCUMENT_GIVEN_PLACE = 8;

    protected boolean hasExtKey = false;
    protected boolean hasDirty = false;
    protected boolean hasTrash  = false;
   
    public DirectorySimpleBeanAbstract() {
        super(null, null);
    }

    @Override
    protected UserRight getRightForCreateDirectoryItem() throws ClipsServerException {
        Class<? extends DirectoryEntity<DirectoryItemDetails>> clazz = getEntityClass();
        if (clazz == Surname.class) {
            return UserRightsSetAbstract.CREATE_DIRECTORY_COMMON_ITEM;
        } else if (clazz == Name.class) {
            return UserRightsSetAbstract.CREATE_DIRECTORY_COMMON_ITEM;
        } else if (clazz == Patronymic.class) {
            return UserRightsSetAbstract.CREATE_DIRECTORY_COMMON_ITEM;
        } else if (clazz == Sex.class) {
            return UserRightsSetAbstract.WRITE_DEVELOPER_DIRECTORY;
        } else if (clazz == Arm.class) {
            return UserRightsSetAbstract.WRITE_REGION_ADMIN_DIRECTORY;
        } else if (clazz == IntelWriterType.class) {
            return UserRightsSetAbstract.CREATE_DIRECTORY_INTEL_WRITER;
        } else if (clazz == ClientDocumentType.class) {
            return UserRightsSetAbstract.WRITE_DEVELOPER_DIRECTORY;
        } else if (clazz == DocumentGivenPlace.class) {
            return UserRightsSetAbstract.CREATE_DIRECTORY_COMMON_ITEM;
        } else {
            System.err.println("Для справочника '" + clazz.getSimpleName() + "' не определены права");
            return UserRightsSetAbstract.WRITE_DEVELOPER_DIRECTORY;
        }
    }

    @Override
    protected UserRight getRightForWriteToDirectory() throws ClipsServerException {
        Class<? extends DirectoryEntity<DirectoryItemDetails>> clazz = getEntityClass();
        if (clazz == Surname.class) {
            return UserRightsSetAbstract.WRITE_REGION_ADMIN_DIRECTORY;
        } else if (clazz == Name.class) {
            return UserRightsSetAbstract.WRITE_REGION_ADMIN_DIRECTORY;
        } else if (clazz == Patronymic.class) {
            return UserRightsSetAbstract.WRITE_REGION_ADMIN_DIRECTORY;
        } else if (clazz == Sex.class) {
            return UserRightsSetAbstract.WRITE_DEVELOPER_DIRECTORY;
        } else if (clazz == Arm.class) {
            return UserRightsSetAbstract.WRITE_REGION_ADMIN_DIRECTORY;
        } else if (clazz == IntelWriterType.class) {
            return UserRightsSetAbstract.WRITE_REGION_ADMIN_DIRECTORY;
        } else if (clazz == ClientDocumentType.class) {
            return UserRightsSetAbstract.WRITE_DEVELOPER_DIRECTORY;
        } else if (clazz == DocumentGivenPlace.class) {
            return UserRightsSetAbstract.WRITE_REGION_ADMIN_DIRECTORY;
        } else {
            System.err.println("Для справочника '" + clazz.getSimpleName() + "' не определены права");
            return UserRightsSetAbstract.WRITE_DEVELOPER_DIRECTORY;
        }
    }



    @Override
    public boolean init(int type) throws ClipsServerException {
        switch (type) {
            case DL_SURNAME: {
                entityClass = Surname.class;
                break;
            }
            case DL_NAME: {
                entityClass = Name.class;
                break;
            }
            case DL_PATHRON: {
                entityClass = Patronymic.class;
                break;
            }
            case DL_SEX: {
                entityClass = Sex.class;
                break;
            }
            case DL_ARMS: {
                entityClass = Arm.class;
                break;
            }
            case DL_INTELLI_WRITER_TYPE: {
                entityClass = IntelWriterType.class;
                break;
            }
            case DL_DOCUMENT_TYPE: {
                entityClass = ClientDocumentType.class;
                break;
            }
            case DL_DOCUMENT_GIVEN_PLACE: {
                entityClass = DocumentGivenPlace.class;
                break;
            }
            default: {
                return false;
            }
        }

        DefineQueryEntity gene = entityClass.getAnnotation(DefineQueryEntity.class);
        if (gene != null) {
            hudClassName = gene.title();
        }
        if (DirectoryEntityExternal.class.isAssignableFrom(entityClass)) {
             hasExtKey = true;
         }
         if (DirectoryEntityDirty.class.isAssignableFrom(entityClass)) {
             hasDirty = true;
         }
         if (DirectoryEntityTrash.class.isAssignableFrom(entityClass)) {
             hasTrash = true;
         }
        return true;
    }

    @Override
    protected void set(DirectoryEntity entity, DirectoryItemDetails d) throws ClipsServerException {
        entity.setTitle(d.title);
        if (entity instanceof DirectoryEntityDirty) {
            ((DirectoryEntityDirty)entity).setDirty(d.dirty);
        }
        if (entity instanceof DirectoryEntityExternal) {
            ((DirectoryEntityExternal)entity).setExtKey(d.external_key != null ? d.external_key : "");
        }
        if (entity instanceof DirectoryEntityTrash) {
            ((DirectoryEntityTrash)entity).setTrash(d.hidden);
        }
    }

    /**
     * Проверяет уникайльнойсть итемов
     * Для справочников содержащих внешний ключ проверяется уникальность по внешнему ключу
     * Для остальных проверяется уникальность по тайтлу
     * @param item
     * @throws framework.generic.ClipsServerException
     */
    @Override
    protected void checkUniqe(DirectoryItemDetails item) throws ClipsServerException {
        Field[] f = null;
        if (DirectoryEntityExternal.class.isAssignableFrom(entityClass)) {
            f = new Field[]{ new Field("extKey", item.external_key) };
        } else {
            f = new Field[]{ new Field("title", item.title) };
        }

        Iterator iterator = findEntityList(entityClass, f).iterator();
        while (iterator.hasNext()) {
            DirectoryEntity de = (DirectoryEntity)iterator.next();
            if (item.id != de.getId()) {
                throw new EDataIntegrity("Элемент справочника с таким названием (или внешним ключем) уже присутствует в базе");
            }
        }

    }
    @Override
    public boolean isExternal() {
        return hasExtKey;
    }
    @Override
    public boolean isDirty() {
        return hasDirty;
    }
    @Override
    public boolean isTrash() {
        return hasTrash;
    }
}
TOP

Related Classes of framework.beans.directory.simple.DirectorySimpleBeanAbstract

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.