Commit 16f5d3a5 authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

refactoring tasksrepository part1

parent 9e965738
package objects;
import objects.tasks.Task;
import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.Entity;
import org.mongodb.morphia.annotations.Id;
/**
* Created by gpietrus on 20.02.2016.
*/
@Entity("solutions")
public class Solution {
public class Solution
{
@Id
private ObjectId id;
private String taskName;
private Task task;
private Team team;
public Solution(Team team, String taskName) {
public Solution(Team team, Task task)
{
this.team = team;
this.taskName = taskName;
this.task = task;
}
public Solution() {
public Solution()
{
}
public void setTaskName(String taskName) {
this.taskName = taskName;
public void setTeam(Team team)
{
this.team = team;
}
public void setTeam(Team team) {
this.team = team;
public Task getTask()
{
return task;
}
public String getTaskName() {
return taskName;
public void setTask(Task task)
{
this.task = task;
}
public Team getTeam() {
public Team getTeam()
{
return team;
}
}
......@@ -48,7 +48,7 @@ public class TasksRepository implements Repository
}
public Task get(String taskName)
{ //todo: task name?
{
return datastore.createQuery(Task.class)
.filter("name", taskName)
.get();
......@@ -144,14 +144,9 @@ public class TasksRepository implements Repository
return encodedHash;
}
private void acceptSolution(String username, Integer taskLevel)
private void acceptSolution(Team team, Task task)
{
User user = usersRepository.getUserByName(username);
Optional<Team> team = teamsRepository.getTeamByUser(user);
Optional<Task> task = getTaskByLevel(taskLevel);
if (team.isPresent() && task.isPresent()) {
solutionsRepository.add(new Solution(team.get(), task.get().getName()));
}
solutionsRepository.add(new Solution(team, task));
}
private Optional<Task> getTaskByLevel(Integer level)
......@@ -161,36 +156,28 @@ public class TasksRepository implements Repository
.findFirst();
}
//todo: cleanup
//todo: depracted?
private void acceptSolution(String username, Task task)
{
User user = usersRepository.getUserByName(username);
Optional<Team> team = teamsRepository.getTeamByUser(user);
if (team.isPresent()) {
solutionsRepository.add(new Solution(team.get(), task.getName()));
}
}
private Optional<Integer> findTaskLevelByFlag(String username, String flagValue)
private Optional<Task> findTaskByUserFlag(String username, String flagValue)
{
return getUserFlagsHashes(username).entrySet()
.stream()
.filter(flagsMapEntry -> flagsMapEntry.getKey().contains(flagValue))
.map(Map.Entry::getValue)
.map(level -> getTaskByLevel(level).get())
.findFirst();
}
public boolean checkFlag(String username, String flagValue)
{
Optional<Integer> taskLevel = findTaskLevelByFlag(username, flagValue);
if (taskLevel.isPresent()) {
acceptSolution(username, taskLevel.get());
Optional<Task> task = findTaskByUserFlag(username, flagValue);
Optional<Team> team = teamsRepository.getTeamByUserName(username);
if (task.isPresent() && team.isPresent()) {
acceptSolution(team.get(), task.get());
return true;
}
return false;
}
//TODO!!!
public Optional<List<String>> getUserTaskFlags(String username, Integer taskLevel)
{ //todo: task level, task id
return getUserFlagsHashes(username).entrySet().stream()
......
......@@ -19,11 +19,14 @@ public class TeamsRepository implements Repository {
private Datastore datastore;
private ApplicationConfiguration applicationConfiguration;
private UsersRepository usersRepository;
@Inject
public TeamsRepository(Datastore datastore, ApplicationConfiguration applicationConfiguration) {
public TeamsRepository(Datastore datastore, ApplicationConfiguration applicationConfiguration,
UsersRepository usersRepository) {
this.datastore = datastore;
this.applicationConfiguration = applicationConfiguration;
this.usersRepository = usersRepository;
initialize();
}
......@@ -33,6 +36,11 @@ public class TeamsRepository implements Repository {
.findFirst();
}
public Optional<Team> getTeamByUserName(String username)
{
return getTeamByUser(usersRepository.getUserByName(username));
}
public void get(UUID uuid) {
}
......@@ -60,5 +68,4 @@ public class TeamsRepository implements Repository {
public void clean() {
datastore.getCollection(Team.class).drop();
}
}
......@@ -19,9 +19,6 @@ import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* Created by gpietrus on 16.02.16.
*/
@Singleton
@Path(value = "/solutions")
@Produces(MediaType.APPLICATION_JSON)
......@@ -54,7 +51,7 @@ public class SolutionsResource {
.collect(Collectors.groupingBy(new Function<Solution, String>() {
@Override
public String apply(Solution solution) {
return solution.getTaskName();
return solution.getTask().getName();
}
}))
.entrySet()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment