Skip to content

Commit

Permalink
Merge a702e17 into a568bd5
Browse files Browse the repository at this point in the history
  • Loading branch information
IDragonfire committed May 8, 2017
2 parents a568bd5 + a702e17 commit 23cf8f0
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 0 deletions.
27 changes: 27 additions & 0 deletions src/main/java/com/faforever/api/data/domain/Avatar.java
Original file line number Diff line number Diff line change
@@ -1,24 +1,33 @@
package com.faforever.api.data.domain;

import com.yahoo.elide.annotation.Include;
import com.yahoo.elide.annotation.UpdatePermission;
import lombok.Setter;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import java.time.OffsetDateTime;
import java.util.List;

@Entity
@Table(name = "avatars_list")
@Include(rootLevel = true, type = "avatar")
@Setter
public class Avatar {

// TODO: use AbstractEntity class
private int id;
private OffsetDateTime createTime;
private OffsetDateTime updateTime;
private String url;
private String tooltip;
private List<AvatarAssignment> assignments;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand All @@ -27,6 +36,16 @@ public int getId() {
return id;
}

@Column(name = "create_time")
public OffsetDateTime getCreateTime() {
return createTime;
}

@Column(name = "update_time")
public OffsetDateTime getUpdateTime() {
return updateTime;
}

@Column(name = "url")
public String getUrl() {
return url;
Expand All @@ -36,4 +55,12 @@ public String getUrl() {
public String getTooltip() {
return tooltip;
}

// Cascading is needed for Create & Delete
@OneToMany(mappedBy = "avatar", cascade = CascadeType.ALL, orphanRemoval = true)
// Permission is managed by AvatarAssignment class
@UpdatePermission(expression = "Prefab.Role.All")
public List<AvatarAssignment> getAssignments() {
return this.assignments;
}
}
68 changes: 68 additions & 0 deletions src/main/java/com/faforever/api/data/domain/AvatarAssignment.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.faforever.api.data.domain;

import com.yahoo.elide.annotation.Include;
import lombok.Setter;

import javax.persistence.Column;
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.ManyToOne;
import javax.persistence.Table;
import java.time.OffsetDateTime;

@Entity
@Table(name = "avatars")
@Include(rootLevel = true, type = "avatarAssignment")
@Setter
public class AvatarAssignment {
private int id;
private OffsetDateTime createTime;
private OffsetDateTime updateTime;
private boolean selected;
private OffsetDateTime expiresAt;
private Player player;
private Avatar avatar;

@Column(name = "selected")
public boolean isSelected() {
return selected;
}

@Column(name = "expires_at")
public OffsetDateTime getExpiresAt() {
return expiresAt;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "idAvatar")
public Avatar getAvatar() {
return avatar;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "idUser")
public Player getPlayer() {
return player;
}

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
public int getId() {
return id;
}

@Column(name = "create_time")
public OffsetDateTime getCreateTime() {
return createTime;
}

@Column(name = "update_time")
public OffsetDateTime getUpdateTime() {
return updateTime;
}
}
8 changes: 8 additions & 0 deletions src/main/java/com/faforever/api/data/domain/Player.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public class Player extends Login {
private Ladder1v1Rating ladder1v1Rating;
private GlobalRating globalRating;
private List<ClanMembership> clanMemberships;
private List<AvatarAssignment> avatarAssignments;

@OneToOne(mappedBy = "player", fetch = FetchType.LAZY)
public Ladder1v1Rating getLadder1v1Rating() {
Expand All @@ -50,6 +51,13 @@ public Clan getClan() {
return null;
}

// Permission is managed by AvatarAssignment class
@UpdatePermission(expression = "Prefab.Role.All")
@OneToMany(mappedBy = "player")
public List<AvatarAssignment> getAvatarAssignments() {
return avatarAssignments;
}

@Override
public String toString() {
return "Player(" + getId() + ", " + getLogin() + ")";
Expand Down

0 comments on commit 23cf8f0

Please sign in to comment.