Subversion Repositories general

Rev

Rev 1051 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package ak.hostadmiral.core.model;

import ak.hostadmiral.util.ModelException;
import ak.hostadmiral.util.ModelSecurityException;

/**
 *
 * @hibernate.class table="systemusers"
 */
public class SystemUser
        extends GeneralModelObject
{
        /** user id in the OS */
        private Integer    uid;
        private String     name;
        private User       owner;
        private SystemUser origin;  // save original object state before any changes

        protected SystemUser()
        {
        }

        protected SystemUser(SystemUser origin)
        {
                super(origin);
                this.uid   = origin.uid;
                this.name  = origin.name;
                this.owner = origin.owner;
        }

    protected SystemUser getOrigin()
    {
        return origin;
    }

    protected void backupMe()
    {
        if(origin == null)
            origin = new SystemUser(this);
    }

    protected void resetOrigin()
    {
        origin = null;
    }

        /**
         *
         * @hibernate.property
         */
        public Integer getUid()
        {
                return uid;
        }

        protected void setUid(Integer uid)
        {
                this.uid = uid;
        }

        public void setUid(User editor, Integer uid)
                throws ModelException
        {
                if(!editableBy(editor))
                        throw new ModelSecurityException();

                this.uid = uid;
        }

        /**
         *
         * @hibernate.property
         */
        public String getName()
        {
                return name;
        }

        protected void setName(String name)
        {
                this.name = name;
        }

        public void setName(User editor, String name)
                throws ModelException
        {
                if(!editableBy(editor))
                        throw new ModelSecurityException();

                this.name = name;
        }

        /**
         *
         * @hibernate.many-to-one
         */
        public User getOwner()
        {
                return owner;
        }

        protected void setOwner(User owner)
        {
                this.owner = owner;
        }

        public void setOwner(User editor, User owner)
                throws ModelException
        {
                if(!editableBy(editor))
                        throw new ModelSecurityException();

                this.owner = owner;
        }

        public String getTypeKey()
        {
                return ak.hostadmiral.core.resources.CoreResources.TYPE_SYSTEM_USER;
        }

        public String getIdentKey()
        {
                return ak.hostadmiral.core.resources.CoreResources.IDENT_SYSTEM_USER;
        }

        public Object[] getIdentParams()
        {
                return new Object[] { getName(), getUid() };
        }

        public boolean viewableBy(User user)
        {
                return user.isSuperuser() || (owner == null) || user.equals(owner);
        }

        public boolean editableBy(User user)
        {
                return user.isSuperuser();
        }

        public boolean deleteableBy(User user)
        {
                return user.isSuperuser();
        }

        protected static boolean allowedToCreate(SystemUserManager manager, User editor)
                throws ModelException
        {
                return editor.isSuperuser();
        }

        protected static SystemUser createLimitedCopy(SystemUser origin)
        {
                SystemUser u = new SystemUser();
                u.setUid(origin.getUid());
                u.setName(origin.getName());
                return u;
        }

        public String toString()
        {
                return "SystemUser id=[" + getId() + "] uid=[" + uid + "] name=[" + name + "]";
        }
}