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

implement team resource

parent ad3e143e
import Repository.TeamsRepository;
import Repository.UsersRepository; import Repository.UsersRepository;
import api.UsersResource; 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 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.Team;
import objects.User; import objects.User;
import java.util.ArrayList;
import java.util.Random; import java.util.Random;
import java.util.UUID; import java.util.UUID;
...@@ -19,25 +22,28 @@ public class CTFApplication extends Application<ApplicationConfiguration> { ...@@ -19,25 +22,28 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
@Override @Override
public void run(ApplicationConfiguration applicationConfiguration, Environment environment) throws Exception { public void run(ApplicationConfiguration applicationConfiguration, Environment environment) throws Exception {
MongoDBConnector mongoDBConnector = new MongoDBConnector(); MongoDBConnector dbConnector = new MongoDBConnector();
mongoDBConnector.connect(); dbConnector.connect();
UsersRepository usersRepository = new UsersRepository(mongoDBConnector);//todo: use injections UsersRepository usersRepository = new UsersRepository(dbConnector);//todo: use injections
usersRepository.clean(); //todo TeamsRepository teamsRepository = new TeamsRepository(dbConnector);
teamsRepository.clean();
int numberOfNewUsers = new Random().nextInt(50); int numberOfNewTeams = new Random().nextInt(20);
for (int i = 0; i < numberOfNewUsers; i++) { int numberOfTeamMembers = 3;
User user = new User(String.valueOf(UUID.randomUUID()), "mehow");
usersRepository.add(user);
}
// Injector injector = createInjector(usersRepository); for (int i = 0; i < numberOfNewTeams; i++) {
// final LifecycleEnvironment lifecycleEnvironment = environment.lifecycle(); ArrayList<User> members = new ArrayList<>();
// for (int j = 0; j < numberOfTeamMembers; j++) {
// lifecycleEnvironment.manage((Managed) ); 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) { private Injector createInjector(UsersRepository usersRepository) {
...@@ -48,6 +54,7 @@ public class CTFApplication extends Application<ApplicationConfiguration> { ...@@ -48,6 +54,7 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
} }
}); });
} }
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
//todo: add mongo-java-driver as maven dep //todo: add mongo-java-driver as maven dep
new CTFApplication().run(args); new CTFApplication().run(args);
......
package Repository; package Repository;
import objects.User;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
...@@ -12,5 +10,5 @@ public interface Repository { ...@@ -12,5 +10,5 @@ public interface Repository {
void get(UUID uuid); void get(UUID uuid);
List<Object> getAll(); 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 { ...@@ -34,7 +34,6 @@ public class UsersRepository implements Repository {
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@Override
public void add(User user) { public void add(User user) {
mongoDBConnector.addDocument("users", new Document(user.toMap())); 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; 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. * Created by gpietrus on 20.02.2016.
*/ */
public class Team { public class Team {
private String name; private String name;
private String description; 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() { public String getName() {
return name; return name;
...@@ -22,4 +51,20 @@ public class Team { ...@@ -22,4 +51,20 @@ public class Team {
public void setDescription(String description) { public void setDescription(String description) {
this.description = 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