Commit 74a4b062 authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

implement team resource

parent ad3e143e
import Repository.TeamsRepository;
import Repository.UsersRepository;
import api.UsersResource;
import api.TeamsResource;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import database.MongoDBConnector;
import io.dropwizard.Application;
import io.dropwizard.setup.Environment;
import objects.Team;
import objects.User;
import java.util.ArrayList;
import java.util.Random;
import java.util.UUID;
......@@ -19,25 +22,28 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
@Override
public void run(ApplicationConfiguration applicationConfiguration, Environment environment) throws Exception {
MongoDBConnector mongoDBConnector = new MongoDBConnector();
mongoDBConnector.connect();
MongoDBConnector dbConnector = new MongoDBConnector();
dbConnector.connect();
UsersRepository usersRepository = new UsersRepository(mongoDBConnector);//todo: use injections
usersRepository.clean(); //todo
UsersRepository usersRepository = new UsersRepository(dbConnector);//todo: use injections
TeamsRepository teamsRepository = new TeamsRepository(dbConnector);
teamsRepository.clean();
int numberOfNewUsers = new Random().nextInt(50);
for (int i = 0; i < numberOfNewUsers; i++) {
User user = new User(String.valueOf(UUID.randomUUID()), "mehow");
usersRepository.add(user);
}
int numberOfNewTeams = new Random().nextInt(20);
int numberOfTeamMembers = 3;
// Injector injector = createInjector(usersRepository);
for (int i = 0; i < numberOfNewTeams; i++) {
// final LifecycleEnvironment lifecycleEnvironment = environment.lifecycle();
//
// lifecycleEnvironment.manage((Managed) );
ArrayList<User> members = new ArrayList<>();
for (int j = 0; j < numberOfTeamMembers; j++) {
members.add(new User(String.valueOf(UUID.randomUUID()), "passwd", "email"));
}
environment.jersey().register(new UsersResource(usersRepository));
teamsRepository.add(new Team(String.valueOf(UUID.randomUUID()), "description", members));
}
// environment.jersey().register(new UsersResource(usersRepository));
environment.jersey().register(new TeamsResource(teamsRepository));
}
private Injector createInjector(UsersRepository usersRepository) {
......@@ -48,6 +54,7 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
}
});
}
public static void main(String[] args) throws Exception {
//todo: add mongo-java-driver as maven dep
new CTFApplication().run(args);
......
package Repository;
import objects.User;
import java.util.List;
import java.util.UUID;
......@@ -12,5 +10,5 @@ public interface Repository {
void get(UUID uuid);
List<Object> getAll();
void add(User user); //todo: not user //todo: use generics?
// void add(User user); //todo: not user //todo: use generics?
}
package Repository;
import database.MongoDBConnector;
import objects.Team;
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 TeamsRepository implements Repository {
private MongoDBConnector mongoDBConnector;
public TeamsRepository(MongoDBConnector mongoDBConnector) {
this.mongoDBConnector = mongoDBConnector;
}
@Override
public void get(UUID uuid) {
}
@Override
public List<Object> getAll() {
return mongoDBConnector.getCollection("teams")
.stream()
.map((Function<Document, Object>) Team::new)
.collect(Collectors.toList());
}
public void add(Team team) {
mongoDBConnector.addDocument("teams", new Document(team.toMap()));
}
public void clean() {
mongoDBConnector.removeCollection("teams");
}
}
......@@ -34,7 +34,6 @@ public class UsersRepository implements Repository {
.collect(Collectors.toList());
}
@Override
public void add(User user) {
mongoDBConnector.addDocument("users", new Document(user.toMap()));
}
......
package api;
import Repository.TeamsRepository;
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 = "/teams")
@Produces(MediaType.APPLICATION_JSON)
public class TeamsResource
{
private TeamsRepository teamsRepository;
//todo: use injections
public TeamsResource(TeamsRepository teamsRepository) {
this.teamsRepository = teamsRepository;
}
@GET
public List<Object> getTeams() {
return teamsRepository.getAll();
}
}
package objects;
import com.google.common.collect.ImmutableMap;
import org.bson.Document;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Created by gpietrus on 20.02.2016.
*/
public class Team {
private String name;
private String description;
private List<User> members;
public Team(Document document) {
//todo: refactor mapping
this.name = document.get("name").toString();
this.description = document.get("description").toString();
this.members = (List<User>) document.get("members");//todo
}
public List getMembers() {
return members;
}
public void setMembers(List members) {
this.members = members;
}
public Team(String name, String description, List<User> members) {
this.name = name;
this.description = description;
this.members = members;
}
public String getName() {
return name;
......@@ -22,4 +51,20 @@ public class Team {
public void setDescription(String description) {
this.description = description;
}
//todo: refactor mapping
public Map<String, Object> toMap() {
//todo: refacotr mapping
List<Object> membersList = members.stream()
.map(User::toMap)
.collect(Collectors.toList());
return ImmutableMap.<String, Object>builder()
.put("name", name)
.put("description", description)
.put("members", membersList)
.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