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

implement taskresource

parent f6facfa4
import Repository.TasksRepository;
import Repository.TeamsRepository; import Repository.TeamsRepository;
import Repository.UsersRepository; import Repository.UsersRepository;
import api.TasksResource;
import api.TeamsResource; import api.TeamsResource;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.Injector; import com.google.inject.Injector;
import core.TaskType;
import database.MongoDBConnector; import database.MongoDBConnector;
import io.dropwizard.Application; import io.dropwizard.Application;
import io.dropwizard.setup.Environment; import io.dropwizard.setup.Environment;
import objects.Task;
import objects.Team; import objects.Team;
import objects.User; import objects.User;
...@@ -25,7 +29,10 @@ public class CTFApplication extends Application<ApplicationConfiguration> { ...@@ -25,7 +29,10 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
MongoDBConnector dbConnector = new MongoDBConnector(); MongoDBConnector dbConnector = new MongoDBConnector();
dbConnector.connect(); 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 teamsRepository = new TeamsRepository(dbConnector);
teamsRepository.clean(); teamsRepository.clean();
...@@ -42,8 +49,30 @@ public class CTFApplication extends Application<ApplicationConfiguration> { ...@@ -42,8 +49,30 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
teamsRepository.add(new Team(String.valueOf(UUID.randomUUID()), "description", members)); 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 UsersResource(usersRepository));
environment.jersey().register(new TeamsResource(teamsRepository)); environment.jersey().register(new TeamsResource(teamsRepository));
environment.jersey().register(new TasksResource(tasksRepository));
} }
private Injector createInjector(UsersRepository usersRepository) { 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; package objects;
import com.google.common.collect.ImmutableMap;
import core.TaskType; import core.TaskType;
import org.bson.Document;
import java.util.Map;
/** /**
* Created by gpietrus on 20.02.2016. * Created by gpietrus on 20.02.2016.
...@@ -8,14 +12,27 @@ import core.TaskType; ...@@ -8,14 +12,27 @@ import core.TaskType;
public class Task { public class Task {
private String name; private String name;
private int level; 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() { public Task(String name, int level, TaskType type) {
return taskType; this.name = name;
this.level = level;
this.type = type;
} }
public void setTaskType(TaskType taskType) { public void setType(TaskType type) {
this.taskType = taskType; this.type = type;
} }
public String getName() { public String getName() {
...@@ -33,4 +50,13 @@ public class Task { ...@@ -33,4 +50,13 @@ public class Task {
public void setLevel(int level) { public void setLevel(int level) {
this.level = 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