Commit 827199c0 authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

change /solutions/all format file

parent 23caffda
...@@ -2,11 +2,14 @@ package com.telephoners.krakyournet.ctf.repositories; ...@@ -2,11 +2,14 @@ package com.telephoners.krakyournet.ctf.repositories;
import com.telephoners.krakyournet.ctf.beans.Solution; import com.telephoners.krakyournet.ctf.beans.Solution;
import com.telephoners.krakyournet.ctf.beans.Team; import com.telephoners.krakyournet.ctf.beans.Team;
import com.telephoners.krakyournet.ctf.beans.tasks.Task;
import org.mongodb.morphia.Datastore; import org.mongodb.morphia.Datastore;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Singleton @Singleton
...@@ -41,4 +44,22 @@ public class SolutionsRepository implements Repository ...@@ -41,4 +44,22 @@ public class SolutionsRepository implements Repository
.collect(Collectors.toList()); .collect(Collectors.toList());
//todo: group by task //todo: group by task
} }
public Map<Integer, List<String>> getTeamSolutions(Team team)
{
return getByTeam(team).stream()
.collect(Collectors.groupingBy(new Function<Solution, Task>()
{
@Override
public Task apply(Solution solution1)
{
return solution1.getTask();
}
})).entrySet().stream()
.collect(Collectors.toMap(
taskSolutions -> taskSolutions.getKey().getLevel(),
taskSolutions -> taskSolutions.getValue().stream()
.map(solution -> solution.getFlag().getDescription()).collect(Collectors.toList())
));
}
} }
\ No newline at end of file
package com.telephoners.krakyournet.ctf.resources; package com.telephoners.krakyournet.ctf.resources;
import com.telephoners.krakyournet.ctf.beans.Solution;
import com.telephoners.krakyournet.ctf.beans.Team; import com.telephoners.krakyournet.ctf.beans.Team;
import com.telephoners.krakyournet.ctf.beans.User; import com.telephoners.krakyournet.ctf.beans.User;
import com.telephoners.krakyournet.ctf.beans.tasks.Task;
import com.telephoners.krakyournet.ctf.repositories.SolutionsRepository; import com.telephoners.krakyournet.ctf.repositories.SolutionsRepository;
import com.telephoners.krakyournet.ctf.repositories.TasksRepository; import com.telephoners.krakyournet.ctf.repositories.TasksRepository;
import com.telephoners.krakyournet.ctf.repositories.TeamsRepository; import com.telephoners.krakyournet.ctf.repositories.TeamsRepository;
...@@ -20,7 +18,6 @@ import javax.ws.rs.core.Response; ...@@ -20,7 +18,6 @@ import javax.ws.rs.core.Response;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Singleton @Singleton
...@@ -56,46 +53,19 @@ public class SolutionsResource ...@@ -56,46 +53,19 @@ public class SolutionsResource
public Map<Integer, List<String>> getTeamSolutions(@Auth User user) public Map<Integer, List<String>> getTeamSolutions(@Auth User user)
{ {
Optional<Team> team = teamsRepository.getTeamByUser(user); Optional<Team> team = teamsRepository.getTeamByUser(user);
return solutionsRepository.getTeamSolutions(team.get());
return solutionsRepository.getByTeam(team.get()).stream()
.collect(Collectors.groupingBy(new Function<Solution, Task>()
{
@Override
public Task apply(Solution solution1)
{
return solution1.getTask();
}
})).entrySet().stream()
.collect(Collectors.toMap(
taskSolutions -> taskSolutions.getKey().getLevel(),
taskSolutions -> taskSolutions.getValue().stream()
.map(solution -> solution.getFlag().getDescription()).collect(Collectors.toList())
));
} }
@GET @GET
@Path("/all") @Path("/all")
public Map<String, List<String>> getTeamsSolutions() public Map<String, Map<Integer, List<String>>> getTeamsSolutions()
{ {
return solutionsRepository.getAll() return teamsRepository.getAll()
.stream()
.collect(Collectors.groupingBy(new Function<Solution, String>()
{
@Override
public String apply(Solution solution)
{
return solution.getTask().getName();
}
}))
.entrySet()
.stream() .stream()
.collect(Collectors.toMap( .collect(Collectors.toMap(
Map.Entry::getKey, Team::getName,
entry -> entry.getValue().stream() team -> solutionsRepository.getTeamSolutions(team)
.map(solution -> solution.getTeam().getName())
.collect(Collectors.toList())
)); ));
} }
} }
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