Skip to content

Commit

Permalink
Merge c1eae95 into 833bf96
Browse files Browse the repository at this point in the history
  • Loading branch information
dickschoeller committed Jan 7, 2017
2 parents 833bf96 + c1eae95 commit 936bff2
Show file tree
Hide file tree
Showing 15 changed files with 344 additions and 85 deletions.
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ services:
before_install:
- mkdir /home/travis/data
- mkdir /home/travis/gedbrowser
- cp $(find . -name 'gl120368.ged' | head -n 1) /home/travis/gedbrowser
- docker run -v /home/travis/data:/data/db --name mongo -p 28001:27017 -d mongo

install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -DskipDocker -Dskip.findbugs=true -Dpmd.skip=true -Dcheckstyle.skip=true -B -V > /dev/null 2>&1
Expand All @@ -16,7 +17,7 @@ jdk:
#script: mvn install jacoco:report coveralls:report
script:
- docker ps --all
- mvn install -Dspring.data.mongodb.port=28001 -Dgeoservice.keyfile=stub -Dgeoservice.backupfile=/home/travis/gedbrowser/geoservice-test-backup.json
- mvn install -Dspring.data.mongodb.port=28001 -Dgeoservice.keyfile=stub -Dgeoservice.backupfile=/home/travis/gedbrowser/geoservice-test-backup.json -Dgedbrowser.home=/home/travis/gedbrowser
- docker run --link mongo:mongo -v /home/travis/gedbrowser:/var/lib/gedbrowser -p 8086:8080 -p 8087:8080 --name geoservice -d schoellerfamily/geoservice
- docker run --link mongo:mongo -v /home/travis/gedbrowser:/var/lib/gedbrowser -p 8080:8080 -p 8081:8081 --name gedbrowser -d schoellerfamily/gedbrowser
- sleep 1m
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.schoellerfamily.gedbrowser.Users;
import org.schoellerfamily.gedbrowser.controller.exception.DataSetNotFoundException;
import org.schoellerfamily.gedbrowser.datamodel.Root;
import org.schoellerfamily.gedbrowser.loader.GedFileLoader;
import org.schoellerfamily.gedbrowser.renderer.GedRenderer;
import org.schoellerfamily.gedbrowser.renderer.GedRendererFactory;
import org.schoellerfamily.gedbrowser.renderer.LivingRenderer;
import org.schoellerfamily.gedbrowser.renderer.RenderingContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
Expand Down Expand Up @@ -51,20 +50,16 @@ public final String living(@RequestParam(value = "db",
final Model model) {
logger.debug("Entering living");

final RenderingContext renderingContext = createRenderingContext(users);

final Root root = (Root) loader.load(dbName);
GedRenderer<?> gedRenderer;
if (root == null) {
// TODO introduce a null LivingRenderer?
gedRenderer =
new GedRendererFactory().create(null, renderingContext);
} else {
gedRenderer = new LivingRenderer(root, renderingContext);
throw new DataSetNotFoundException(
"Data set " + dbName + " not found");
}

final String filename = gedbrowserHome + "/" + dbName + ".ged";
model.addAttribute("filename", filename);
final GedRenderer<?> gedRenderer =
new LivingRenderer(root, createRenderingContext(users));

model.addAttribute("filename", gedbrowserHome + "/" + dbName + ".ged");
model.addAttribute("living", gedRenderer);
model.addAttribute("appInfo", new ApplicationInfo());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,20 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.schoellerfamily.gedbrowser.Users;
import org.schoellerfamily.gedbrowser.datamodel.Name;
import org.schoellerfamily.gedbrowser.controller.exception.DataSetNotFoundException;
import org.schoellerfamily.gedbrowser.controller.exception.PersonNotFoundException;
import org.schoellerfamily.gedbrowser.datamodel.Person;
import org.schoellerfamily.gedbrowser.datamodel.Root;
import org.schoellerfamily.gedbrowser.loader.GedFileLoader;
import org.schoellerfamily.gedbrowser.renderer.GedRenderer;
import org.schoellerfamily.gedbrowser.renderer.GedRendererFactory;
import org.schoellerfamily.gedbrowser.renderer.NameRenderer;
import org.schoellerfamily.gedbrowser.renderer.RenderingContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
//import org.schoellerfamily.gedbrowser.persistence.repository.
// RootDocumentRepository;

/**
* @author Dick Schoeller
Expand Down Expand Up @@ -59,49 +57,33 @@ public final String person(
final Model model) {
logger.debug("Entering person");

final RenderingContext renderingContext = createRenderingContext(users);

String nameString;

final Root root = (Root) loader.load(dbName);
GedRenderer<?> gedRenderer;
if (root == null) {
nameString = "Data Set Not Found";
gedRenderer =
new GedRendererFactory().create(null, renderingContext);
} else {
Person person = (Person) root.find(idString);
if (person == null) {
nameString = "Person Not Found";
person = new Person(root);
person.setString(idString);
gedRenderer =
new GedRendererFactory().create(
person, renderingContext);
} else {
final Name name = person.getName();
if (name == null) {
nameString = "Name Not Found";
} else {
final NameRenderer nameRenderer =
(NameRenderer) new GedRendererFactory().create(
name, renderingContext);
nameString = nameRenderer.getNameHtml();
}
gedRenderer =
new GedRendererFactory().create(
person, renderingContext);
}
throw new DataSetNotFoundException(
"Data set " + dbName + " not found");
}
final Person person = (Person) root.find(idString);
if (person == null) {
throw new PersonNotFoundException(
"Person " + idString + " not found");
}

final RenderingContext renderingContext =
createRenderingContext(users);
final GedRenderer<?> nameRenderer =
new GedRendererFactory().create(
person.getName(), renderingContext);
final GedRenderer<?> gedRenderer =
new GedRendererFactory().create(
person, renderingContext);

final String filename = gedbrowserHome + "/" + dbName + ".ged";
model.addAttribute("filename", filename);
model.addAttribute("name", nameString);
model.addAttribute("name", nameRenderer.getNameHtml());
model.addAttribute("person", gedRenderer);
model.addAttribute("appInfo", new ApplicationInfo());

logger.debug("Exiting person");
return "person";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.schoellerfamily.gedbrowser.Users;
import org.schoellerfamily.gedbrowser.controller.exception.DataSetNotFoundException;
import org.schoellerfamily.gedbrowser.controller.exception.SourceNotFoundException;
import org.schoellerfamily.gedbrowser.datamodel.Root;
import org.schoellerfamily.gedbrowser.datamodel.Source;
import org.schoellerfamily.gedbrowser.loader.GedFileLoader;
import org.schoellerfamily.gedbrowser.renderer.GedRenderer;
import org.schoellerfamily.gedbrowser.renderer.GedRendererFactory;
import org.schoellerfamily.gedbrowser.renderer.RenderingContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
Expand Down Expand Up @@ -56,35 +57,23 @@ public final String source(
final Model model) {
logger.debug("Entering source");

final RenderingContext renderingContext = createRenderingContext(users);

String sourceString;

final String filename = gedbrowserHome + "/" + dbName + ".ged";

final Root root = (Root) loader.load(dbName);
GedRenderer<?> gedRenderer;
if (root == null) {
sourceString = "Data Set Not Found";
gedRenderer =
new GedRendererFactory().create(null, renderingContext);
} else {
final Source source = (Source) root.find(idString);
if (source == null) {
sourceString = "Source Not Found";
gedRenderer =
new GedRendererFactory().create(
null, renderingContext);
} else {
sourceString = source.getString();
gedRenderer =
new GedRendererFactory().create(
source, renderingContext);
}
throw new DataSetNotFoundException(
"Data set " + dbName + " not found");
}

model.addAttribute("filename", filename);
model.addAttribute("sourceString", sourceString);
final Source source = (Source) root.find(idString);
if (source == null) {
throw new SourceNotFoundException(
"Source " + idString + " not found");
}

final GedRenderer<?> gedRenderer = new GedRendererFactory()
.create(source, createRenderingContext(users));

model.addAttribute("filename", gedbrowserHome + "/" + dbName + ".ged");
model.addAttribute("sourceString", source.getString());
model.addAttribute("source", gedRenderer);
model.addAttribute("appInfo", new ApplicationInfo());
logger.debug("Exiting source");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.schoellerfamily.gedbrowser.controller.exception;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

/**
* @author Dick Schoeller
*/
@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Data set not found")
public final class DataSetNotFoundException extends RuntimeException {
/** */
private static final long serialVersionUID = 1L;

/**
* @param message the message to display
*/
public DataSetNotFoundException(final String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.schoellerfamily.gedbrowser.controller.exception;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

/**
* @author Dick Schoeller
*/
@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Person not found")
public final class PersonNotFoundException extends RuntimeException {
/** */
private static final long serialVersionUID = 1L;

/**
* @param message the message to display
*/
public PersonNotFoundException(final String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.schoellerfamily.gedbrowser.controller.exception;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

/**
* @author Dick Schoeller
*/
@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Source not found")
public final class SourceNotFoundException extends RuntimeException {
/** */
private static final long serialVersionUID = 1L;

/**
* @param message the message to display
*/
public SourceNotFoundException(final String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/**
* Copyright 2017 Richard Schoeller
* Exceptions for Spring Boot controllers for gedbrowser.
*/
package org.schoellerfamily.gedbrowser.controller.exception;
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ private Root loadRepository(final String dbName) {
root.setDbName(dbName);
} catch (IOException e) {
Logger.getGlobal().severe("Could not read file: " + filename);
root = null;
return null;
}

final RootDocumentMongo rootdoc =
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package org.schoellerfamily.gedbrowser.controller.test;

import static org.assertj.core.api.BDDAssertions.then;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.schoellerfamily.gedbrowser.Application;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.embedded.LocalServerPort;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
* @author Dick Schoeller
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class,
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(properties = {"management.port=0"})
@SuppressWarnings("PMD.JUnitTestsShouldIncludeAssert")
public class LivingControllerTest {

/**
* Not sure what this is good for.
*/
@Autowired
private TestRestTemplate testRestTemplate;

/**
* Server port.
*/
@LocalServerPort
private int port;

/** */
@Test
public final void test1() {
final String url = "http://localhost:" + port
+ "/gedbrowser/living?db=gl120368";
final ResponseEntity<String> entity =
testRestTemplate.getForEntity(url, String.class);

then(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
then(entity.getBody()).contains("<title>Living</title>");
}

/** */
@Test
public final void testBadDataSet() {
final ResponseEntity<String> entity =
testRestTemplate.getForEntity(
"http://localhost:" + port
+ "/gedbrowser/living?db=XYZZY",
String.class);

then(entity.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
then(entity.getBody()).contains("Data set not found");
}
}
Loading

0 comments on commit 936bff2

Please sign in to comment.