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