Player.java :  » GPS » androidrunner » es » sonxurxo » androidrunner » model » persistence » player » entity » Android Open Source

Android Open Source » GPS » androidrunner 
androidrunner » es » sonxurxo » androidrunner » model » persistence » player » entity » Player.java
/*
 * Android Runner is a multiplayer GPS game fully written by Xurxo Mendez Perez
 * 
 * Copyright (C) 2009 Xurxo Mendez Perez
 *   
 * This file is part of Android Runner.
 * 
 * Android Runner is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * Android Runner is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with Android Runner.  If not, see <http://www.gnu.org/licenses/>.
 */

package es.sonxurxo.androidrunner.model.persistence.player.entity;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;

import org.hibernate.annotations.AccessType;

import es.sonxurxo.androidrunner.model.persistence.game.entity.FinishedGameRegister;
import es.sonxurxo.androidrunner.model.persistence.game.entity.Game;
import es.sonxurxo.androidrunner.model.persistence.item.entity.Item;

/**
 * 
 * @author "Xurxo Mendez Perez"
 *
 */
@Entity
public class Player {
  
  private long playerId;
  private UserData userData;
  private int points;
  private int totalPoints;
  private int maxPoints;
  private int bestRank;
  private int imageId;
  private Game game = null;
  private int latitude;
  private int longitude;
  private boolean messageChanges = false;
  private boolean itemChanges = false;
  private Set<Item> itemsICanSee = new HashSet<Item>();
  private Set<Item> itemsIHave = new HashSet<Item>();
  private Set<FinishedGameRegister> finishedGameRegisters = 
    new HashSet<FinishedGameRegister>();
  
  public Player() {
    // Empty on purpose
  }
  
  public Player(String login, String password, String email, boolean showPersonalInfo, 
      String phone, String name, String surname, String country, int imageId, String role) {
    super();
    this.userData = new UserData(login, password, email, showPersonalInfo, phone, name, 
        surname, country, role);
    this.points = 0;
    this.totalPoints = 0;
    this.latitude = 42341185;
    this.longitude = -7863749;
    this.imageId = imageId;
  }

  public boolean isMessageChanges() {
    return this.messageChanges;
  }

  public void setMessageChanges(boolean messageChanges) {
    this.messageChanges = messageChanges;
  }

  public boolean isItemChanges() {
    return this.itemChanges;
  }

  public void setItemChanges(boolean itemChanges) {
    this.itemChanges = itemChanges;
  }

  public int getImageId() {
    return this.imageId;
  }

  public void setImageId(int imageId) {
    this.imageId = imageId;
  }

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "gameId")
  public Game getGame() {
    return this.game;
  }

  public void setGame(Game game) {
    this.game = game;
  }

  @OneToMany(mappedBy = "player", fetch = FetchType.LAZY)
  public Set<FinishedGameRegister> getFinishedGameRegisters() {
    return this.finishedGameRegisters;
  }

  public void setFinishedGameRegisters(
      Set<FinishedGameRegister> finishedGameRegisters) {
    this.finishedGameRegisters = finishedGameRegisters;
  }
  
  public void addFinishedGameRegister(FinishedGameRegister finishedGameRegister) {
    this.finishedGameRegisters.add(finishedGameRegister);
    finishedGameRegister.setPlayer(this);
  }

  public void removeFinishedGameRegister(FinishedGameRegister finishedGameRegister) {
    this.finishedGameRegisters.remove(finishedGameRegister);
    finishedGameRegister.setPlayer(null);
  }
  
  @ManyToMany(
      fetch = FetchType.LAZY,
      targetEntity = Item.class, // no es necesario
      cascade = {CascadeType.PERSIST, CascadeType.MERGE})
  @JoinTable(
      name = "PlayerSeeItem",
      joinColumns = @JoinColumn(name = "playerId"),
      inverseJoinColumns = @JoinColumn(name = "itemId"))
  @AccessType("field")
  public Set<Item> getItemsICanSee() {
    return this.itemsICanSee;
  }

  public void setItemsICanSee(Set<Item> itemsICanSee) {
    this.itemsICanSee = itemsICanSee;
  }
  
  public void addItemICanSee(Item item) {
    this.itemsICanSee.add(item);
    item.getPlayersCanSeeMe().add(this);
  }
  
  public void removeItemICanSee(Item item) {
    this.itemsICanSee.remove(item);
    item.getPlayersCanSeeMe().remove(this);
  }
  
  @ManyToMany(
      fetch = FetchType.LAZY,
      targetEntity = Item.class, 
      cascade = {CascadeType.PERSIST, CascadeType.MERGE})
  @JoinTable(
      name = "PlayerHasItem",
      joinColumns = @JoinColumn(name = "playerId"),
      inverseJoinColumns = @JoinColumn(name = "itemId"))
  public Set<Item> getItemsIHave() {
    return this.itemsIHave;
  }

  public void setItemsIHave(Set<Item> itemsIHave) {
    this.itemsIHave = itemsIHave;
  }

  public void addItemIHave(Item item) {
    this.itemsIHave.add(item);
    item.getPlayersHaveMe().add(this);
  }
  
  public void removeItemIHave(Item item) {
    this.itemsIHave.remove(item);
    item.getPlayersHaveMe().remove(this);
  }
  
  public int getLatitude() {
    return this.latitude;
  }

  public void setLatitude(int latitude) {
    this.latitude = latitude;
  }

  public int getLongitude() {
    return this.longitude;
  }

  public void setLongitude(int longitude) {
    this.longitude = longitude;
  }

  @Id
  @GeneratedValue(strategy=GenerationType.AUTO,
            generator="PlayerIdGenerator")
    @SequenceGenerator(             // It only takes effect for
            name="PlayerIdGenerator", // databases providing identifier
            sequenceName="PlayerSeq") // generators.
  public long getPlayerId() {
    return this.playerId;
  }

  public void setPlayerId(long playerId) {
    this.playerId = playerId;
  }

  public int getPoints() {
    return this.points;
  }

  public void setPoints(int points) {
    this.points = points;
  }

  public int getTotalPoints() {
    return this.totalPoints;
  }

  public void setTotalPoints(int totalPoints) {
    this.totalPoints = totalPoints;
  }
  
  public int getBestRank() {
    return this.bestRank;
  }

  public void setBestRank(int bestRank) {
    this.bestRank = bestRank;
  }

  public int getMaxPoints() {
    return this.maxPoints;
  }

  public void setMaxPoints(int maxPoints) {
    this.maxPoints = maxPoints;
  }
  
  public boolean equals(Player player) {
    return this.playerId == player.getPlayerId();
  }

  @Embedded
  public UserData getUserData() {
    return this.userData;
  }

  public void setUserData(UserData userData) {
    this.userData = userData;
  }  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.