package org.trails.demo; import java.io.Serializable; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.OneToOne; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.trails.descriptor.annotation.ClassDescriptor; /** * A Director belongs to an Organization * * @author kenneth.colassi nhhockeyplayer@hotmail.com */ @Entity @ClassDescriptor(hasCyclicRelationships = true) public class Director extends Person implements Serializable { private static final Log log = LogFactory.getLog(Director.class); private Organization organization; /** * Copy CTOR */ public Director(Director dto) { super(dto); try { BeanUtils.copyProperties(this, dto); } catch (Exception e) { log.error(e.toString()); e.printStackTrace(); } } public Director() { setERole(ERole.USER); setApplicationRole(EApplicationRole.DIRECTOR); } //@OneToOne(optional = false, mappedBy = "director") //@JoinTable(name = "OrganizationDirector", // joinColumns = @JoinColumn(name = "organization_fk", insertable = true, updatable = true, nullable = true), // inverseJoinColumns = {@JoinColumn(name = "director_fk", insertable = true, updatable = true, nullable = true)} //) // optional = false causes entity not to show up in Director list table... trails misses it @OneToOne(cascade = CascadeType.ALL, mappedBy = "director") public Organization getOrganization() { return organization; } public void setOrganization(Organization organization) { this.organization = organization; } @Override public Director clone() { return new Director(this); } @Override public int hashCode() { final int PRIME = 31; int result = 1; result = PRIME * result + ((getId() == null) ? 0 : getId().hashCode()); return result; } @Override public boolean equals(Object rhs) { if (this == rhs) return true; if (rhs == null) return false; if (!(rhs instanceof Director)) return false; final Director castedObject = (Director) rhs; if (getId() == null) { if (castedObject.getId() != null) return false; } else if (!getId().equals(castedObject.getId())) return false; return true; } }