// Path: predictor/src/main/java/predictions/model/db/AccessType.java
// public enum AccessType {
// 	
// 	R, W, N
// 
// }
// 
// Path: predictor/src/main/java/predictions/model/db/Community.java
// public class Community {
// 
// 	@JsonProperty
// 	private String name;
// 
// 	@JsonProperty
// 	private boolean createAccountEnabled = true;
// 
// 	@JsonProperty
// 
// 	private ZonedDateTime openingDate = null;
// 
// 	@JsonProperty
// 	private AccessType groupsAccess = AccessType.N;
// 
// 	@JsonProperty
// 	private AccessType finalsAccess = AccessType.N;
// 
// 	public Community() {
// 		
// 	}
// 
// 	public Community(String name, boolean createAccountEnabled, ZonedDateTime openingDate, AccessType groupsAccess, AccessType finalsAccess) {
// 		super();
// 		this.name = name;
// 		this.openingDate = openingDate;
// 		this.createAccountEnabled = createAccountEnabled;
// 		this.groupsAccess = groupsAccess;
// 		this.finalsAccess = finalsAccess;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public boolean isCreateAccountEnabled() {
// 		return createAccountEnabled;
// 	}
// 
// 	public AccessType getGroupsAccess() {
// 		return groupsAccess;
// 	}
// 	
// 	public AccessType getFinalsAccess() {
// 		return finalsAccess;
// 	}
// 
// 	public ZonedDateTime getOpeningDate() {
// 		return openingDate;
// 	}
// }
// 
// Path: predictor/src/main/java/predictions/model/db/CommunityDAO.java
// @RegisterRowMapper(CommunityMapper.class)
// public interface CommunityDAO {
// 	
// 	@SqlUpdate("MERGE INTO COMMUNITY KEY(COMMUNITY_NAME) VALUES(:name, :createAccountEnabled, :openingDate, :groupsAccess, :finalsAccess)")
// 	void updateCommunity(@Bind("name") String name, @Bind("createAccountEnabled") boolean createAccountEnabled, @Bind("openingDate")ZonedDateTime openingDate, @Bind("groupsAccess") AccessType groupsAccess, @Bind("finalsAccess") AccessType finalsAccess);
// 	
// 	@SqlQuery("SELECT COMMUNITY.* FROM COMMUNITY WHERE COMMUNITY_NAME = :name")
// 	Community getCommunity(@Bind("name") String name);
// 
// }
// 
// Path: predictor/src/main/java/predictions/model/db/User.java
// public class User implements Principal {
// 	
// 	@NotNull
// 	private String community;
// 	
// 	@NotNull
// 	private String name;
// 
// 	@NotNull
// 	private String email;
// 	
// 	@NotNull
// 	private String password;
// 	
// 	private String changePasswordToken;
// 	
// 	private DateTime lastLoginDate;
// 
// 	@Min(value = 0)
// 	private int currentScore = 0;
// 	
// 	@Min(value = 1)
// 	private int currentRanking = 1;
// 	
// 	@Min(value = 1)
// 	private int previousRanking = 1;
// 	
// 	private boolean admin = false;
// 	
// 	private boolean active = true;
// 
// 	private boolean late = false;
// 
// 	public User() {
// 	}
// 
// 	public User(String community, String name, String email, String password, String changePasswordToken,
// 			DateTime lastLoginDate, int currentScore, int currentRanking, int previousRanking, boolean admin, boolean active, boolean late) {
// 		super();
// 		this.community = community;
// 		this.name = name;
// 		this.email = email;
// 		this.password = password;
// 		this.changePasswordToken = changePasswordToken;
// 		this.lastLoginDate = lastLoginDate;
// 		this.currentScore = currentScore;
// 		this.currentRanking = currentRanking;
// 		this.previousRanking = previousRanking;
// 		this.admin = admin;
// 		this.active = active;
// 		this.late = late;
// 	}
// 
// 	@JsonProperty
// 	public String getCommunity() {
// 		return community;
// 	}
// 
// 	@JsonProperty
// 	public String getEmail() {
// 		return email.toLowerCase();
// 	}
// 	
// 	@JsonProperty
// 	public String getName() {
// 		return name;
// 	}
// 
// 	@JsonProperty
// 	public int getCurrentScore() {
// 		return currentScore;
// 	}
// 
// 	@JsonProperty
// 	public boolean isAdmin() {
// 		return admin;
// 	}
// 
// 	@JsonProperty
// 	public boolean isLate() {
// 		return late;
// 	}
// 
// 	@JsonProperty
// 	@JsonFormat(locale = "fr", shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+2")
// 	public DateTime getLastLoginDate() {
// 		return lastLoginDate;
// 	}
// 	
// 	@JsonProperty
// 	public boolean isActive() {
// 		return active;
// 	}
// 	
// 	@JsonProperty
// 	public int getCurrentRanking() {
// 		return currentRanking;
// 	}
// 	
// 	public int getPreviousRanking() {
// 		return previousRanking;
// 	}
// 
// 	public String getChangePasswordToken() {
// 		return changePasswordToken;
// 	}
// }


import javax.annotation.security.RolesAllowed;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import io.dropwizard.auth.Auth;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.Authorization;
import predictions.model.db.AccessType;
import predictions.model.db.Community;
import predictions.model.db.CommunityDAO;
import predictions.model.db.User;
package predictions.resources;



@Path("/community")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Api
public class CommunityResource {
	
	@Context private HttpServletRequest httpRequest;
	
// Path: predictor/src/main/java/predictions/model/db/AccessType.java
// public enum AccessType {
// 	
// 	R, W, N
// 
// }
// 
// Path: predictor/src/main/java/predictions/model/db/Community.java
// public class Community {
// 
// 	@JsonProperty
// 	private String name;
// 
// 	@JsonProperty
// 	private boolean createAccountEnabled = true;
// 
// 	@JsonProperty
// 
// 	private ZonedDateTime openingDate = null;
// 
// 	@JsonProperty
// 	private AccessType groupsAccess = AccessType.N;
// 
// 	@JsonProperty
// 	private AccessType finalsAccess = AccessType.N;
// 
// 	public Community() {
// 		
// 	}
// 
// 	public Community(String name, boolean createAccountEnabled, ZonedDateTime openingDate, AccessType groupsAccess, AccessType finalsAccess) {
// 		super();
// 		this.name = name;
// 		this.openingDate = openingDate;
// 		this.createAccountEnabled = createAccountEnabled;
// 		this.groupsAccess = groupsAccess;
// 		this.finalsAccess = finalsAccess;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public boolean isCreateAccountEnabled() {
// 		return createAccountEnabled;
// 	}
// 
// 	public AccessType getGroupsAccess() {
// 		return groupsAccess;
// 	}
// 	
// 	public AccessType getFinalsAccess() {
// 		return finalsAccess;
// 	}
// 
// 	public ZonedDateTime getOpeningDate() {
// 		return openingDate;
// 	}
// }
// 
// Path: predictor/src/main/java/predictions/model/db/CommunityDAO.java
// @RegisterRowMapper(CommunityMapper.class)
// public interface CommunityDAO {
// 	
// 	@SqlUpdate("MERGE INTO COMMUNITY KEY(COMMUNITY_NAME) VALUES(:name, :createAccountEnabled, :openingDate, :groupsAccess, :finalsAccess)")
// 	void updateCommunity(@Bind("name") String name, @Bind("createAccountEnabled") boolean createAccountEnabled, @Bind("openingDate")ZonedDateTime openingDate, @Bind("groupsAccess") AccessType groupsAccess, @Bind("finalsAccess") AccessType finalsAccess);
// 	
// 	@SqlQuery("SELECT COMMUNITY.* FROM COMMUNITY WHERE COMMUNITY_NAME = :name")
// 	Community getCommunity(@Bind("name") String name);
// 
// }
// 
// Path: predictor/src/main/java/predictions/model/db/User.java
// public class User implements Principal {
// 	
// 	@NotNull
// 	private String community;
// 	
// 	@NotNull
// 	private String name;
// 
// 	@NotNull
// 	private String email;
// 	
// 	@NotNull
// 	private String password;
// 	
// 	private String changePasswordToken;
// 	
// 	private DateTime lastLoginDate;
// 
// 	@Min(value = 0)
// 	private int currentScore = 0;
// 	
// 	@Min(value = 1)
// 	private int currentRanking = 1;
// 	
// 	@Min(value = 1)
// 	private int previousRanking = 1;
// 	
// 	private boolean admin = false;
// 	
// 	private boolean active = true;
// 
// 	private boolean late = false;
// 
// 	public User() {
// 	}
// 
// 	public User(String community, String name, String email, String password, String changePasswordToken,
// 			DateTime lastLoginDate, int currentScore, int currentRanking, int previousRanking, boolean admin, boolean active, boolean late) {
// 		super();
// 		this.community = community;
// 		this.name = name;
// 		this.email = email;
// 		this.password = password;
// 		this.changePasswordToken = changePasswordToken;
// 		this.lastLoginDate = lastLoginDate;
// 		this.currentScore = currentScore;
// 		this.currentRanking = currentRanking;
// 		this.previousRanking = previousRanking;
// 		this.admin = admin;
// 		this.active = active;
// 		this.late = late;
// 	}
// 
// 	@JsonProperty
// 	public String getCommunity() {
// 		return community;
// 	}
// 
// 	@JsonProperty
// 	public String getEmail() {
// 		return email.toLowerCase();
// 	}
// 	
// 	@JsonProperty
// 	public String getName() {
// 		return name;
// 	}
// 
// 	@JsonProperty
// 	public int getCurrentScore() {
// 		return currentScore;
// 	}
// 
// 	@JsonProperty
// 	public boolean isAdmin() {
// 		return admin;
// 	}
// 
// 	@JsonProperty
// 	public boolean isLate() {
// 		return late;
// 	}
// 
// 	@JsonProperty
// 	@JsonFormat(locale = "fr", shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+2")
// 	public DateTime getLastLoginDate() {
// 		return lastLoginDate;
// 	}
// 	
// 	@JsonProperty
// 	public boolean isActive() {
// 		return active;
// 	}
// 	
// 	@JsonProperty
// 	public int getCurrentRanking() {
// 		return currentRanking;
// 	}
// 	
// 	public int getPreviousRanking() {
// 		return previousRanking;
// 	}
// 
// 	public String getChangePasswordToken() {
// 		return changePasswordToken;
// 	}
// }


// Path: predictor/src/main/java/predictions/resources/CommunityResource.java
import javax.annotation.security.RolesAllowed;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import io.dropwizard.auth.Auth;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.Authorization;
import predictions.model.db.AccessType;
import predictions.model.db.Community;
import predictions.model.db.CommunityDAO;
import predictions.model.db.User;

package predictions.resources;



@Path("/community")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Api
public class CommunityResource {
	
	@Context private HttpServletRequest httpRequest;
	
	private CommunityDAO communityDAO;