package com.idega.user.data; import java.rmi.RemoteException; import java.util.Collection; import javax.ejb.CreateException; import javax.ejb.EJBException; import javax.ejb.FinderException; import com.idega.data.GenericEntity; import com.idega.data.IDOException; import com.idega.data.IDOLookup; import com.idega.data.IDOQuery; import com.idega.data.TreeableEntity; import com.idega.data.TreeableEntityBMPBean; /** * <p> * Title: idegaWeb * </p> * <p> * Description: * </p> * <p> * Copyright: Copyright (c) 2002 * </p> * <p> * Company: idega Software * </p> * * @author <a href="gummi@idega.is">Gudmundur Agust Saemundsson</a>,Eirikur * Hrafnsson * @version 1.1 */ public class GroupTypeBMPBean extends TreeableEntityBMPBean implements GroupType, TreeableEntity { private static final String TABLE_NAME = "IC_GROUP_TYPE"; private static final String TYPE_COLUMN = "GROUP_TYPE"; private static final String DESCRIPTION_COLUMN = "DESCRIPTION"; private static final String DEFAULT_GROUP_NAME_COLUMN = "DEFAULT_GROUP_NAME"; private static final String COLUMN_HANDLER_CLASS = "HANDLER_CLASS_ID"; private static final String COLUMN_IS_VISIBLE = "IS_VISIBLE"; private static final String COLUMN_MAX_INSTANCES = "MAX_INSTANCES"; private static final String COLUMN_MAX_INSTANCES_PER_PARENT = "MAX_INSTANCES_PER_PARENT"; private static final String COLUMN_AUTO_CREATE = "AUTO_CREATE"; private static final String COLUMN_NUMBER_OF_INSTANCES_TO_AUTO_CREATE = "INSTANCES_AUTO_CREATED"; private static final String COLUMN_SUPPORTS_SAME_CHILD_TYPE = "SAME_CHILD_TYPE"; private static final String COLUMN_SAME_CHILD_TYPE_ONLY = "SAME_CHILD_TYPE_ONLY"; private static final String TYPE_GENERAL_GROUP = "general"; public static final String TYPE_USER_REPRESENTATIVE = "ic_user_representative"; public static final String TYPE_PERMISSION_GROUP = "permission"; public static final String TYPE_ALIAS = "alias"; public void initializeAttributes() { this.addAttribute(getIDColumnName(), "Type", String.class, 30); this.setAsPrimaryKey(getIDColumnName(), true); this.addAttribute(DESCRIPTION_COLUMN, "Description", String.class, 1000); this.addAttribute(DEFAULT_GROUP_NAME_COLUMN, "Default generated group name", String.class); this.addAttribute(COLUMN_IS_VISIBLE, "is Visible", Boolean.class); this.addAttribute(COLUMN_AUTO_CREATE, "Auto create", Boolean.class); this.addAttribute(COLUMN_NUMBER_OF_INSTANCES_TO_AUTO_CREATE, "Number of instances to autocreate", Integer.class); this.addAttribute(COLUMN_MAX_INSTANCES, "Maximum number of instances globaly", Integer.class); this.addAttribute(COLUMN_MAX_INSTANCES_PER_PARENT, "Maximum number of instances per parent", Integer.class); this.addAttribute(COLUMN_SUPPORTS_SAME_CHILD_TYPE, "Does it support its own type as a child group",Boolean.class); this.addAttribute(COLUMN_SAME_CHILD_TYPE_ONLY, "Only allows the same group type (for groups) for its children",Boolean.class); this.addIndex("IDX_IC_GROUP_TYPE1", COLUMN_IS_VISIBLE); this.addIndex("IDX_IC_GROUP_TYPE2", TYPE_COLUMN); this.addIndex("IDX_IC_GROUP_TYPE3", new String[] { COLUMN_IS_VISIBLE, TYPE_COLUMN }); //cache this table getEntityDefinition().setBeanCachingActiveByDefault(true); } public void setDefaultValues() { setVisibility(true); setAutoCreate(Boolean.TRUE); } public void insertStartData() { try { GroupTypeHome home = (GroupTypeHome) IDOLookup.getHome(GroupType.class); GroupType type = home.create(); type.setType(TYPE_GENERAL_GROUP); type.setDescription(""); type.setVisibility(true); type.store(); } catch (RemoteException ex) { throw new EJBException(ex); } catch (CreateException ex) { ex.printStackTrace(); } try { GroupTypeHome home = (GroupTypeHome) IDOLookup.getHome(GroupType.class); GroupType type = home.create(); type.setType(TYPE_PERMISSION_GROUP); type.setDescription(""); type.setVisibility(true); type.store(); } catch (RemoteException ex) { throw new EJBException(ex); } catch (CreateException ex) { ex.printStackTrace(); } try { GroupTypeHome home = (GroupTypeHome) IDOLookup.getHome(GroupType.class); GroupType type = home.create(); type.setType(TYPE_USER_REPRESENTATIVE); type.setDescription(""); type.setVisibility(false); type.store(); } catch (RemoteException ex) { throw new EJBException(ex); } catch (CreateException ex) { ex.printStackTrace(); } try { GroupTypeHome home = (GroupTypeHome) IDOLookup.getHome(GroupType.class); GroupType type = home.create(); type.setType(TYPE_ALIAS); type.setDescription("Alias group, points to another group"); type.setVisibility(true); type.store(); } catch (RemoteException ex) { throw new EJBException(ex); } catch (CreateException ex) { ex.printStackTrace(); } } public String getEntityName() { return TABLE_NAME; } public void setVisibility(boolean visible) { setColumn(COLUMN_IS_VISIBLE, visible); } public void setType(String type) { setColumn(TYPE_COLUMN, type); } public String getType() { return getStringColumnValue(TYPE_COLUMN); } public void setDescription(String desc) { setColumn(DESCRIPTION_COLUMN, desc); } public String getDescription() { return getStringColumnValue(DESCRIPTION_COLUMN); } public void setDefaultGroupName(String name) { setColumn(DEFAULT_GROUP_NAME_COLUMN, name); } public String getDefaultGroupName() { return getStringColumnValue(DEFAULT_GROUP_NAME_COLUMN); } public Integer getNumberOfInstancesToAutoCreate() { return getIntegerColumnValue(COLUMN_NUMBER_OF_INSTANCES_TO_AUTO_CREATE); } public void setNumberOfInstancesToAutoCreate(Integer number) { setColumn(COLUMN_NUMBER_OF_INSTANCES_TO_AUTO_CREATE, number); } public Integer getMaximumNumberOfInstances() { return getIntegerColumnValue(COLUMN_MAX_INSTANCES); } public void setMaximumNumberOfInstances(Integer max) { setColumn(COLUMN_MAX_INSTANCES, max); } public Integer getMaximumNumberOfInstancesPerParent() { return getIntegerColumnValue(COLUMN_MAX_INSTANCES_PER_PARENT); } public void setMaximumNumberOfInstancesPerParent(Integer max) { setColumn(COLUMN_MAX_INSTANCES_PER_PARENT, max); } public String getIDColumnName() { return TYPE_COLUMN; } public Class getPrimaryKeyClass() { return String.class; } /* * public Class getHandlerClass() throws ClassNotFoundException { ICObject * obj = (ICObject)this.getColumn(COLUMN_HANDLER_CLASS); if(obj != null){ * return obj.getObjectClass(); } else { return null; } } * * * * public void setHandlerClass(ICObject obj){ * setColumn(COLUMN_HANDLER_CLASS,obj); } */ protected String getGeneralGroupTypeString() { return TYPE_GENERAL_GROUP; } protected String getPermissionGroupTypeString() { return TYPE_PERMISSION_GROUP; } protected String getAliasGroupTypeString() { return TYPE_ALIAS; } public void setGroupTypeAsGeneralGroup() { setType(GroupTypeBMPBean.TYPE_GENERAL_GROUP); } public void setGroupTypeAsPermissionGroup() { setType(GroupTypeBMPBean.TYPE_PERMISSION_GROUP); } public void setGroupTypeAsAliasGroup() { setType(TYPE_ALIAS); } public boolean getVisibility() { return getBooleanColumnValue(COLUMN_IS_VISIBLE, true); } public boolean getOnlySupportsSameTypeChildGroups() { return getBooleanColumnValue(COLUMN_SAME_CHILD_TYPE_ONLY, false); } public void setOnlySupportsSameTypeChildGroups(Boolean onlySupportsSameTypeChildGroups) { setColumn(COLUMN_SAME_CHILD_TYPE_ONLY, onlySupportsSameTypeChildGroups); } public boolean getSupportsSameTypeChildGroups() { return getBooleanColumnValue(COLUMN_SUPPORTS_SAME_CHILD_TYPE, true); } public void setSupportsSameTypeChildGroups(Boolean supportsSameTypeChildGroups) { setColumn(COLUMN_SUPPORTS_SAME_CHILD_TYPE, supportsSameTypeChildGroups); } public boolean getAutoCreate() { return getBooleanColumnValue(COLUMN_AUTO_CREATE, true); } public void setAutoCreate(Boolean autoCreate) { setColumn(COLUMN_AUTO_CREATE, autoCreate); } public Collection ejbFindAllGroupTypes() throws FinderException { return super.idoFindIDsBySQL("select * from " + getEntityName()); } public String ejbFindGroupTypeByGroupTypeString(String groupType) throws FinderException { return (String) idoFindOnePKByColumnBySQL(TYPE_COLUMN, groupType); } public Collection ejbFindVisibleGroupTypes() throws FinderException { IDOQuery query = idoQuery(); query.appendSelectAllFrom(); query.append(getEntityName()); query.appendWhere(COLUMN_IS_VISIBLE); query.appendNOTEqual(); query.appendWithinSingleQuotes(super.COLUMN_VALUE_FALSE); query.appendOrderBy(this.getIDColumnName()); // System.out.println("[GroupTypeBMPBean](ejbFindVisibleGroupTypes): // "+query.toString()); return this.idoFindPKsBySQL(query.toString()); // return super.idoFindIDsBySQL("select * from "+getEntityName()+" where // "+ COLUMN_IS_VISIBLE + "!='"+super.COLUMN_VALUE_FALSE+"'"); } public int ejbHomeGetNumberOfGroupTypes() throws FinderException, IDOException { return idoGetNumberOfRecords(); } public int ejbHomeGetNumberOfVisibleGroupTypes() throws FinderException, IDOException { IDOQuery query = idoQuery(); query.appendSelectCountFrom(); query.append(getEntityName()); query.appendWhere(COLUMN_IS_VISIBLE); query.appendNOTEqual(); query.appendWithinSingleQuotes(super.COLUMN_VALUE_FALSE); // System.out.println("[GroupTypeBMPBean](ejbHomeGetNumberOfVisibleGroupTypes): // "+query.toString()); return this.idoGetNumberOfRecords(query.toString()); // return super.idoGetNumberOfRecords("select count(*) from // "+getEntityName()+" where "+ COLUMN_IS_VISIBLE + // "!='"+super.COLUMN_VALUE_FALSE+"'"); } public String ejbHomeGetVisibleGroupTypesSQLString() { IDOQuery query = idoQuery(); query.append("SELECT ").append(getIDColumnName()).appendFrom(); query.append(getEntityName()); query.appendWhere(COLUMN_IS_VISIBLE); query.appendNOTEqual(); query.appendWithinSingleQuotes(super.COLUMN_VALUE_FALSE); return query.toString(); } public static GroupTypeBMPBean getStaticInstance() { return (GroupTypeBMPBean) GenericEntity.getStaticInstance(GroupType.class.getName()); } public String ejbHomeGetGeneralGroupTypeString() { return getGeneralGroupTypeString(); } public String ejbHomeGetPermissionGroupTypeString() { return getPermissionGroupTypeString(); } public String ejbHomeGetAliasGroupTypeString() { return getAliasGroupTypeString(); } }