Commit 0946634c authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

public endpoints stub

parent bb2009d5
package objects.tasks; package objects.tasks;
import com.fasterxml.jackson.annotation.JsonInclude;
import core.TaskType; import core.TaskType;
import objects.Flag; import objects.Flag;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
...@@ -9,6 +10,7 @@ import org.mongodb.morphia.annotations.Id; ...@@ -9,6 +10,7 @@ import org.mongodb.morphia.annotations.Id;
import java.util.List; import java.util.List;
@Entity("tasks") @Entity("tasks")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Task { public class Task {
@Id @Id
private ObjectId id; private ObjectId id;
......
...@@ -27,7 +27,8 @@ import java.util.stream.Collectors; ...@@ -27,7 +27,8 @@ import java.util.stream.Collectors;
* Created by gpietrus on 20.02.2016. * Created by gpietrus on 20.02.2016.
*/ */
@Singleton @Singleton
public class TasksRepository implements Repository { public class TasksRepository implements Repository
{
private ApplicationConfiguration applicationConfiguration; private ApplicationConfiguration applicationConfiguration;
private Datastore datastore; private Datastore datastore;
...@@ -39,7 +40,8 @@ public class TasksRepository implements Repository { ...@@ -39,7 +40,8 @@ public class TasksRepository implements Repository {
@Inject @Inject
public TasksRepository(ApplicationConfiguration applicationConfiguration, Datastore datastore, public TasksRepository(ApplicationConfiguration applicationConfiguration, Datastore datastore,
TeamsRepository teamsRepository, SolutionsRepository solutionsRepository, TeamsRepository teamsRepository, SolutionsRepository solutionsRepository,
UsersRepository usersRepository) { UsersRepository usersRepository)
{
this.applicationConfiguration = applicationConfiguration; this.applicationConfiguration = applicationConfiguration;
this.datastore = datastore; this.datastore = datastore;
this.teamsRepository = teamsRepository; this.teamsRepository = teamsRepository;
...@@ -48,24 +50,35 @@ public class TasksRepository implements Repository { ...@@ -48,24 +50,35 @@ public class TasksRepository implements Repository {
initialize(); initialize();
} }
public Task get(String taskName) { //todo: task name? public Task get(String taskName)
{ //todo: task name?
return datastore.createQuery(Task.class) return datastore.createQuery(Task.class)
.filter("name", taskName) .filter("name", taskName)
.get(); .get();
} }
public Task get(int level) { public Task get(int level)
{
return datastore.createQuery(Task.class) return datastore.createQuery(Task.class)
.filter("level", level) .filter("level", level)
.get(); .get();
} }
public List<Task> getAll() { public List<Task> getAllPublic()
{
return datastore.createQuery(Task.class)
.retrievedFields(true, "name", "level") //todo: move to configuration
.asList();
}
public List<Task> getAll()
{
return datastore.createQuery(Task.class).asList(); return datastore.createQuery(Task.class).asList();
} }
@Override @Override
public void initialize() { public void initialize()
{
List<CryptoTaskConfig> cryptoTasks = applicationConfiguration.getCryptoTasks(); List<CryptoTaskConfig> cryptoTasks = applicationConfiguration.getCryptoTasks();
List<WebTaskConfig> webTasks = applicationConfiguration.getWebTasks(); List<WebTaskConfig> webTasks = applicationConfiguration.getWebTasks();
...@@ -99,16 +112,19 @@ public class TasksRepository implements Repository { ...@@ -99,16 +112,19 @@ public class TasksRepository implements Repository {
))); )));
} }
public void add(Task task) { public void add(Task task)
{
datastore.save(task); datastore.save(task);
} }
public void clean() { public void clean()
{
datastore.getCollection(Task.class).drop(); datastore.getCollection(Task.class).drop();
} }
//todo: refactor? //todo: refactor?
public Map<List<String>, Integer> getUserFlagsHashes(String username) { public Map<List<String>, Integer> getUserFlagsHashes(String username)
{
return this.getAll().stream() return this.getAll().stream()
.collect(Collectors.toMap( .collect(Collectors.toMap(
task -> task.getFlags().stream() task -> task.getFlags().stream()
...@@ -118,7 +134,8 @@ public class TasksRepository implements Repository { ...@@ -118,7 +134,8 @@ public class TasksRepository implements Repository {
)); ));
} }
public String calculateHashValue(String username, String flagValue) { //todo public String calculateHashValue(String username, String flagValue)
{ //todo
String combinedStrings = salt + username + flagValue; //todo String combinedStrings = salt + username + flagValue; //todo
MessageDigest md5 = null;//todo: discuss MessageDigest md5 = null;//todo: discuss
try { try {
...@@ -130,7 +147,8 @@ public class TasksRepository implements Repository { ...@@ -130,7 +147,8 @@ public class TasksRepository implements Repository {
return encodedHash; return encodedHash;
} }
private void acceptSolution(String username, Integer taskLevel) { private void acceptSolution(String username, Integer taskLevel)
{
User user = usersRepository.getUserByName(username); User user = usersRepository.getUserByName(username);
Optional<Team> team = teamsRepository.getTeamByUser(user); Optional<Team> team = teamsRepository.getTeamByUser(user);
Optional<Task> task = getTaskByLevel(taskLevel); Optional<Task> task = getTaskByLevel(taskLevel);
...@@ -139,7 +157,8 @@ public class TasksRepository implements Repository { ...@@ -139,7 +157,8 @@ public class TasksRepository implements Repository {
} }
} }
private Optional<Task> getTaskByLevel(Integer level) { private Optional<Task> getTaskByLevel(Integer level)
{
return getAll().stream() return getAll().stream()
.filter(task -> task.getLevel() == level) .filter(task -> task.getLevel() == level)
.findFirst(); .findFirst();
...@@ -147,7 +166,8 @@ public class TasksRepository implements Repository { ...@@ -147,7 +166,8 @@ public class TasksRepository implements Repository {
//todo: cleanup //todo: cleanup
//todo: depracted? //todo: depracted?
private void acceptSolution(String username, Task task) { private void acceptSolution(String username, Task task)
{
User user = usersRepository.getUserByName(username); User user = usersRepository.getUserByName(username);
Optional<Team> team = teamsRepository.getTeamByUser(user); Optional<Team> team = teamsRepository.getTeamByUser(user);
if (team.isPresent()) { if (team.isPresent()) {
...@@ -155,7 +175,8 @@ public class TasksRepository implements Repository { ...@@ -155,7 +175,8 @@ public class TasksRepository implements Repository {
} }
} }
private Optional<Integer> findTaskLevelByFlag(String username, String flagValue) { private Optional<Integer> findTaskLevelByFlag(String username, String flagValue)
{
return getUserFlagsHashes(username).entrySet() return getUserFlagsHashes(username).entrySet()
.stream() .stream()
.filter(flagsMapEntry -> flagsMapEntry.getKey().contains(flagValue)) .filter(flagsMapEntry -> flagsMapEntry.getKey().contains(flagValue))
...@@ -163,7 +184,8 @@ public class TasksRepository implements Repository { ...@@ -163,7 +184,8 @@ public class TasksRepository implements Repository {
.findFirst(); .findFirst();
} }
public boolean checkFlag(String username, String flagValue) { public boolean checkFlag(String username, String flagValue)
{
Optional<Integer> taskLevel = findTaskLevelByFlag(username, flagValue); Optional<Integer> taskLevel = findTaskLevelByFlag(username, flagValue);
if (taskLevel.isPresent()) { if (taskLevel.isPresent()) {
acceptSolution(username, taskLevel.get()); acceptSolution(username, taskLevel.get());
...@@ -172,7 +194,8 @@ public class TasksRepository implements Repository { ...@@ -172,7 +194,8 @@ public class TasksRepository implements Repository {
return false; return false;
} }
public Optional<List<String>> getUserTaskFlags(String username, Integer taskLevel) { //todo: task level, task id public Optional<List<String>> getUserTaskFlags(String username, Integer taskLevel)
{ //todo: task level, task id
return getUserFlagsHashes(username).entrySet().stream() return getUserFlagsHashes(username).entrySet().stream()
.filter(taskEntry -> taskEntry.getValue().equals(taskLevel)) .filter(taskEntry -> taskEntry.getValue().equals(taskLevel))
.map(listIntegerEntry -> { .map(listIntegerEntry -> {
......
...@@ -34,8 +34,8 @@ public class TasksResource ...@@ -34,8 +34,8 @@ public class TasksResource
} }
@GET @GET
public List<Task> getTasks() { public List<Task> getTasksPublic() {
return tasksRepository.getAll(); return tasksRepository.getAllPublic();
} }
@GET @GET
......
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