Commit 4bf1e33a authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

implement taskresource

parent f6facfa4
import Repository.TasksRepository;
import Repository.TeamsRepository;
import Repository.UsersRepository;
import api.TasksResource;
import api.TeamsResource;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import core.TaskType;
import database.MongoDBConnector;
import io.dropwizard.Application;
import io.dropwizard.setup.Environment;
import objects.Task;
import objects.Team;
import objects.User;
......@@ -25,7 +29,10 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
MongoDBConnector dbConnector = new MongoDBConnector();
dbConnector.connect();
UsersRepository usersRepository = new UsersRepository(dbConnector);//todo: use injections
// UsersRepository usersRepository = new UsersRepository(dbConnector);//todo: use injections
//GENERATE TEAMS
TeamsRepository teamsRepository = new TeamsRepository(dbConnector);
teamsRepository.clean();
......@@ -42,8 +49,30 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
teamsRepository.add(new Team(String.valueOf(UUID.randomUUID()), "description", members));
}
//GENERATE TEAMS END
//GENERATE TASKS
TasksRepository tasksRepository = new TasksRepository(dbConnector);
tasksRepository.clean();
int numberOfNewTasks = 20;
for(int i = 0; i < 20; i++) {
Task task = new Task(String.valueOf(UUID.randomUUID()), i,
i % 2 == 0 ? TaskType.CRYPTO : TaskType.WEB
);
tasksRepository.add(task);
}
//GENERATE TASKS END
//REGISTER RESOURCES
// environment.jersey().register(new UsersResource(usersRepository));
environment.jersey().register(new TeamsResource(teamsRepository));
environment.jersey().register(new TasksResource(tasksRepository));
}
private Injector createInjector(UsersRepository usersRepository) {
......
package Repository;
import database.MongoDBConnector;
import objects.Task;
import org.bson.Document;
import java.util.List;
import java.util.UUID;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* Created by gpietrus on 20.02.2016.
*/
public class TasksRepository implements Repository {
private MongoDBConnector mongoDBConnector;
public TasksRepository(MongoDBConnector mongoDBConnector) {
this.mongoDBConnector = mongoDBConnector;
}
@Override
public void get(UUID uuid) {
}
@Override
public List<Object> getAll() {
return mongoDBConnector.getCollection("tasks")
.stream()
.map((Function<Document, Object>) Task::new)
.collect(Collectors.toList());
}
public void add(Task task) {
mongoDBConnector.addDocument("tasks", new Document(task.toMap()));
}
public void clean() {
mongoDBConnector.removeCollection("tasks");
}
}
//todo: generify!
\ No newline at end of file
package api;
import Repository.TasksRepository;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.List;
/**
* Created by gpietrus on 16.02.16.
*/
@Path(value = "/tasks")
@Produces(MediaType.APPLICATION_JSON)
public class TasksResource
{
private TasksRepository tasksRepository;
//todo: use injections
public TasksResource(TasksRepository tasksRepository) {
this.tasksRepository = tasksRepository;
}
@GET
public List<Object> getTasks() {
return tasksRepository.getAll();
}
}
package objects;
import com.google.common.collect.ImmutableMap;
import core.TaskType;
import org.bson.Document;
import java.util.Map;
/**
* Created by gpietrus on 20.02.2016.
......@@ -8,14 +12,27 @@ import core.TaskType;
public class Task {
private String name;
private int level;
private TaskType taskType;
private TaskType type;
public Task(Document document) {
this.name = document.get("name").toString();
this.level = (int) document.get("level");
this.type = TaskType.valueOf(document.get("type").toString());
}
public TaskType getType() {
return type;
}
public TaskType getTaskType() {
return taskType;
public Task(String name, int level, TaskType type) {
this.name = name;
this.level = level;
this.type = type;
}
public void setTaskType(TaskType taskType) {
this.taskType = taskType;
public void setType(TaskType type) {
this.type = type;
}
public String getName() {
......@@ -33,4 +50,13 @@ public class Task {
public void setLevel(int level) {
this.level = level;
}
//todo: refactor mapping
public Map<String, Object> toMap() {
return ImmutableMap.<String, Object>builder()
.put("name", name)
.put("level", level)
.put("type", type.getType())
.build();
}
}
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