Commit 1211d752 authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

implement users reposittory stub

parent 112c5818
......@@ -7,6 +7,18 @@
<groupId>ctf-group</groupId>
<artifactId>ctf-archifact</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
......
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="false">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
......@@ -9,8 +9,10 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="org.mongodb:mongo-java-driver:3.1.0" level="project" />
<orderEntry type="library" name="org.mongolink:mongolink:1.2.2" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard:dropwizard-core:0.9.0" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard:dropwizard-util:0.9.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.6.0" level="project" />
......@@ -26,7 +28,6 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-joda:2.6.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.12" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.3" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard:dropwizard-validation:0.9.0" level="project" />
<orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.2.2.Final" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
......@@ -39,58 +40,56 @@
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.4" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard:dropwizard-logging:0.9.0" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-logback:3.1.2" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-core:3.1.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.12" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.12" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.12" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-util:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard:dropwizard-metrics:0.9.0" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard:dropwizard-lifecycle:0.9.0" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-server:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-http:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-io:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard:dropwizard-jersey:0.9.0" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-server:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-common:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.bundles.repackaged:jersey-guava:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:osgi-resource-locator:1.0.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.22.1" level="project" />
<orderEntry type="library" name="Maven: javax.ws.rs:javax.ws.rs-api:2.0.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.media:jersey-media-jaxb:2.22.1" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.bundles.repackaged:jersey-guava:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-api:2.4.0-b31" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-utils:2.4.0-b31" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:aopalliance-repackaged:2.4.0-b31" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:javax.inject:2.4.0-b31" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-locator:2.4.0-b31" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.18.1-GA" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:osgi-resource-locator:1.0.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.media:jersey-media-jaxb:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.ext:jersey-metainf-services:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.ext:jersey-bean-validation:2.22.1" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-jersey2:3.1.2" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-annotation:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.6.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.6.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.6.3" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.containers:jersey-container-servlet:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.containers:jersey-container-servlet-core:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-server:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-io:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-webapp:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-xml:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-servlet:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-security:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-continuation:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard:dropwizard-servlets:0.9.0" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-annotation:3.1.2" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard:dropwizard-jetty:0.9.0" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-jetty9:3.1.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-servlet:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-security:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-servlets:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-http:9.2.13.v20150730" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard:dropwizard-lifecycle:0.9.0" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-core:3.1.2" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-jvm:3.1.2" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-servlets:3.1.2" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-healthchecks:3.1.2" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-json:3.1.2" level="project" />
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-healthchecks:3.1.2" level="project" />
<orderEntry type="library" name="Maven: net.sourceforge.argparse4j:argparse4j:0.6.0" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty.toolchain.setuid:jetty-setuid-java:1.0.3" level="project" />
<orderEntry type="library" name="org.mongodb:mongo-java-driver:3.1.0" level="project" />
<orderEntry type="library" name="org.mongolink:mongolink:1.2.2" level="project" />
</component>
</module>
\ No newline at end of file
import Repository.UsersRepository;
import api.ExampleResource;
import com.google.common.collect.Lists;
import com.mongodb.*;
......@@ -5,6 +6,7 @@ import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import database.MongoDBConnector;
import database.MongoDatabaseConnector;
import io.dropwizard.Application;
import io.dropwizard.setup.Environment;
......@@ -39,20 +41,27 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
//todo: add mongo-java-driver as maven dep
User user = new User(String.valueOf(UUID.randomUUID()), "mehow");
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("db");
// MongoClient mongoClient = new MongoClient("localhost", 27017);
// MongoDatabase database = mongoClient.getDatabase("db");
MongoCollection<Document> usersCollection = database.getCollection("users");
MongoDBConnector mongoDBConnector = new MongoDBConnector();
mongoDBConnector.connect();
usersCollection.drop(); //todo: remove
UsersRepository usersRepository = new UsersRepository(mongoDBConnector);//todo: use injections
List<Object> all = usersRepository.getAll();
usersCollection.insertOne(new Document(user.toMap()));
ArrayList<Document> usersDocuments = DBUtils.toList(usersCollection.find());
// MongoCollection<Document> usersCollection = database.getCollection("users");
List<Object> users = usersDocuments.stream()
.map(User::new)
.collect(Collectors.toList());
// usersCollection.drop(); //todo: remove
//
// usersCollection.insertOne(new Document(user.toMap()));
// ArrayList<Document> usersDocuments = DBUtils.toList(usersCollection.find());
// List<Object> users = usersDocuments.stream()
// .map(User::new)
// .collect(Collectors.toList());
}
}
package Repository;
import java.util.List;
import java.util.UUID;
/**
* Created by gpietrus on 20.02.2016.
*/
public interface Repository {
public void get(UUID uuid);
public List<Object> getAll();
}
package Repository;
import database.MongoDBConnector;
import objects.User;
import org.bson.Document;
import java.util.HashMap;
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 UsersRepository implements Repository {
private MongoDBConnector mongoDBConnector;
public UsersRepository(MongoDBConnector mongoDBConnector) {
this.mongoDBConnector = mongoDBConnector;
}
@Override
public void get(UUID uuid) {
// new HashMap<>()
// return mongoDBConnector.getDocument("");
}
@Override
public List<Object> getAll() {
return mongoDBConnector.getCollection("users")
.stream()
.map((Function<Document, Object>) User::new)
.collect(Collectors.toList());
}
}
package database;
/**
* Created by gpietrus on 20.02.2016.
*/
public interface DBConnector {
public void connect();
public void disconnect();
public void databaseCleanup();
}
package database;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import org.bson.BsonDocument;
import org.bson.Document;
import org.bson.conversions.Bson;
import java.util.ArrayList;
import java.util.Map;
/**
* Created by gpietrus on 20.02.2016.
*/
public class MongoDBConnector implements DBConnector {
private MongoClient mongoClient;
private MongoDatabase database;
@Override
public void connect() {
//todo: get from configuration file
mongoClient = new MongoClient("localhost", 27017);
this.database = mongoClient.getDatabase("db");
}
@Override
public void disconnect() {
}
@Override
public void databaseCleanup() {
}
public ArrayList<Document> getCollection(String collectionName) {
return database.getCollection(collectionName).find().into(new ArrayList<>());
}
public void getDocument(String collectionName, Map criteria) {
BsonDocument bsonDocument = new BsonDocument();
bsonDocument.putAll(criteria);
database.getCollection(collectionName).find(bsonDocument);
}
}
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