Subversion Repositories Integrator Subversion

Rev

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

package br.com.ec.domain.model;

import java.io.Serializable;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MapsId;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import org.hibernate.annotations.ForeignKey;

import br.com.ec.core.interfaces.Alterar;
import br.com.ec.core.interfaces.Cadastrar;
import br.com.ec.core.util.VerificadorUtil;

@Entity
@Table(name="sec_usuario_loja", schema="sc_sec")
public class UsuarioLoja implements Serializable {

        private static final long serialVersionUID = 1L;
        private UsuarioLojaId usuarioLojaId = new UsuarioLojaId();
        private Usuario usuario;
        private Loja loja;
       
        public UsuarioLoja() {}
       
        public UsuarioLoja(Usuario usuario, Loja loja) {
                this.usuario = usuario;
                this.loja = loja;
        }
       
        @EmbeddedId
        public UsuarioLojaId getUsuarioLojaId() {
                return usuarioLojaId;
        }
        public void setUsuarioLojaId(UsuarioLojaId usuarioLojaId) {
                this.usuarioLojaId = usuarioLojaId;
        }
       
        @MapsId("sequencialUsuario")
        @ManyToOne
        @ForeignKey(name="fk_usuarioloja_usuario")
        @JoinColumn(name = "seq_usuario", nullable = false)
        @NotNull(message="Obrigatório informar o usuário", groups={Cadastrar.class, Alterar.class})
        public Usuario getUsuario() {
                if (VerificadorUtil.naoEstaNulo(usuario)) {
                        usuarioLojaId.setSequencialUsuario(usuario.getSequencial());
                }
                return usuario;
        }
        public void setUsuario(Usuario usuario) {
                this.usuario = usuario;
        }
       
        @MapsId("sequencialLoja")
        @ManyToOne
        @ForeignKey(name="fk_usuarioloja_loja")
        @JoinColumn(name = "seq_loja", nullable=false)
        @NotNull(message="Obrigatório informar a loja", groups={Cadastrar.class, Alterar.class})
        public Loja getLoja() {
                if (VerificadorUtil.naoEstaNulo(loja)) {
                        usuarioLojaId.setSequencialLoja(loja.getSequencial());
                }
                return loja;
        }
        public void setLoja(Loja loja) {
                this.loja = loja;
        }

        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + ((usuarioLojaId == null) ? 0 : usuarioLojaId.hashCode());
                return result;
        }

        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                UsuarioLoja other = (UsuarioLoja) obj;
                if (usuarioLojaId == null) {
                        if (other.usuarioLojaId != null)
                                return false;
                } else if (!usuarioLojaId.equals(other.usuarioLojaId))
                        return false;
                return true;
        }
       
}