Package org.jboss.seam.example.seamspace

Source Code of org.jboss.seam.example.seamspace.Member

package org.jboss.seam.example.seamspace;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.persistence.UniqueConstraint;

import org.hibernate.validator.Email;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.hibernate.validator.Pattern;
import org.jboss.seam.annotations.Name;

/**
* A member account
*
* @author Shane Bryzak
*/
@Entity
@Name("member")
@Table(uniqueConstraints = @UniqueConstraint(columnNames = "membername"))
public class Member implements Serializable
{
   private static final long serialVersionUID = 5179242727836683375L;
  
   public enum Gender {
      male("Male", "his"),
      female("Female", "her");
     
     private String descr;
     private String possessive;
    
     Gender(String descr, String possessive) {
       this.descr = descr;
       this.possessive = possessive;
      }
     public String getDescr() {
        return descr;
     }
    
     public String getPossessive() {
        return possessive;
     }
   };
  
   private Integer memberId;
   private String memberName;
   private String firstName;
   private String lastName;
   private String email;
   private MemberImage picture;
  
   private String tagline;
   private Gender gender;
   private Date dob;
   private String location;
   private Date memberSince;
  
   private Set<MemberImage> images;  
   private Set<MemberFriend> friends;

   @Id @GeneratedValue
   public Integer getMemberId()
   {
      return memberId;
   }

   public void setMemberId(Integer memberId)
   {
      this.memberId = memberId;
   }
  
   @NotNull
   @Length(min = 3, max = 40)
   @Pattern(regex="[a-zA-Z]?[a-zA-Z0-9_]+",
         message="Member name must start with a letter, and only contain letters, numbers or underscores")
   public String getMemberName()
   {
      return memberName;
   }

   public void setMemberName(String memberName)
   {
      this.memberName = memberName;
   }
  
   @NotNull
   @Length(min = 3, max = 40)
   @Pattern(regex="[a-zA-Z]+", message="First name must only contain letters")
   public String getFirstName()
   {
      return firstName;
   }
  
   public void setFirstName(String firstName)
   {
      this.firstName = firstName;
   }
  
   @NotNull
   @Length(min = 3, max = 40)
   @Pattern(regex="[a-zA-Z]+", message="Last name must only contain letters")
   public String getLastName()
   {
      return lastName;
   }
  
   public void setLastName(String lastName)
   {
      this.lastName = lastName;
   }  
  
   @NotNull @Email
   public String getEmail()
   {
      return email;
   }
  
   public void setEmail(String email)
   {
      this.email = email;
   }

   @OneToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "PICTURE_ID")
   public MemberImage getPicture()
   {
      return picture;
   }

   public void setPicture(MemberImage picture)
   {
      this.picture = picture;
   }

   @NotNull
   public Date getDob()
   {
      return dob;
   }

   public void setDob(Date dob)
   {
      this.dob = dob;
   }

   @NotNull
   public Gender getGender()
   {
      return gender;
   }

   public void setGender(Gender gender)
   {
      this.gender = gender;
   }

   public String getLocation()
   {
      return location;
   }

   public void setLocation(String location)
   {
      this.location = location;
   }
  
   @NotNull
   public Date getMemberSince()
   {
      return memberSince;
   }
  
   public void setMemberSince(Date memberSince)
   {
      this.memberSince = memberSince;
   }

   public String getTagline()
   {
      return tagline;
   }

   public void setTagline(String tagline)
   {
      this.tagline = tagline;
   }

   @OneToMany(mappedBy = "member", fetch = FetchType.LAZY)
   public Set<MemberImage> getImages()
   {
      return images;
   }

   public void setImages(Set<MemberImage> images)
   {
      this.images = images;
   }
  
   @OneToMany(mappedBy = "member")
   public Set<MemberFriend> getFriends()
   {
      return friends;
   }
  
   public void setFriends(Set<MemberFriend> friends)
   {
      this.friends = friends;  
   }
  
   @Transient
   public boolean isFriend(Member member)
   {
      for (MemberFriend f : friends)
      {
         if (f.getFriend().getMemberId().equals(member.getMemberId())) return true;         
      }
     
      return false;
   }
  
   @Transient
   public String getAge()
   {
      Calendar birthday = new GregorianCalendar();
      birthday.setTime(dob);
      int by = birthday.get(Calendar.YEAR);
      int bm = birthday.get(Calendar.MONTH);
      int bd = birthday.get(Calendar.DATE);
     
      Calendar now = new GregorianCalendar();
      now.setTimeInMillis(System.currentTimeMillis());
      int ny = now.get(Calendar.YEAR);
      int nm = now.get(Calendar.MONTH);
      int nd = now.get(Calendar.DATE);     
     
      int age = ny - by + (nm > bm || (nm == bm && nd >= bd) ? 0 : -1);                             
      return String.format("%d years old", age);                             
   }
}
TOP

Related Classes of org.jboss.seam.example.seamspace.Member

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.