Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes #386 - dates can have time #441

Merged
merged 1 commit into from
Jun 19, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,14 @@ public void visit(final Date date) {
dateString = date.getDate();
yearString = date.getYear();
sortDateString = date.getSortDate();
final GetTimeVisitor timeVisitor = new GetTimeVisitor();
for (final GedObject gob : date.getAttributes()) {
gob.accept(timeVisitor);
if (!timeVisitor.getTimeString().isEmpty()) {
dateString += " " + timeVisitor.getTimeString();
break;
}
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package org.schoellerfamily.gedbrowser.datamodel.visitor;

import org.schoellerfamily.gedbrowser.datamodel.Attribute;

/**
* @author Dick Schoeller
*/
public final class GetTimeVisitor implements GedObjectVisitor {
/**
* Accumulates the best time information.
*/
private String timeString = "";

/**
* Visit an Attribute. We will look at the attributes of this Attribute
* for Dates. Once one is found, quit.
*
* @see GedObjectVisitor#visit(Attribute)
*/
@Override
public void visit(final Attribute attribute) {
if ("Time".equals(attribute.getString())) {
timeString = attribute.getTail();
}
}

/**
* Did we find one?
*
* @return the time string if we found one.
*/
public String getTimeString() {
return timeString;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,15 @@ public final class TestDataReader {
private static final String[] A_SOURCE_SHORT = {
"0 HEAD",
"1 SOUR TMG",
"2 VERS 4.0",
"1 SUBM @SUB1@",
"1 GEDC",
"2 VERS 5.5",
"2 FORM LINEAGE-LINKED",
"1 DEST GED55",
"1 DATE 16 FEB 2001",
"2 TIME 22:04",
"1 CHAR ANSI",
"0 @SUB1@ SUBM",
"1 NAME Richard Schoeller",
"1 ADDR 242 Marked Tree Road",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public final class GedLineTest {
"1 SEX F",
"1 CHAN",
"2 DATE 29 DEC 1996",
"3 TIME 13:00:00",
"1 FAMC @F1@",
"0 @I2@ INDI",
"1 REFN 2",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package org.schoellerfamily.gedbrowser.renderer;

import org.schoellerfamily.gedbrowser.datamodel.Date;
import org.schoellerfamily.gedbrowser.datamodel.visitor.GetDateVisitor;

/**
* @author Dick Schoeller
*/
Expand Down Expand Up @@ -34,6 +37,9 @@ public StringBuilder renderAsListItem(final StringBuilder builder,
*/
@Override
public String getListItemContents() {
return dateRenderer.renderAsPhrase();
final GetDateVisitor visitor = new GetDateVisitor();
final Date date = dateRenderer.getGedObject();
date.accept(visitor);
return visitor.getDate();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.schoellerfamily.gedbrowser.renderer;

import org.schoellerfamily.gedbrowser.datamodel.Date;
import org.schoellerfamily.gedbrowser.datamodel.visitor.GetDateVisitor;

/**
* @author Dick Schoeller
Expand All @@ -25,7 +26,9 @@ protected DatePhraseRenderer(final DateRenderer dateRenderer) {
*/
@Override
public final String renderAsPhrase() {
final Date date = dateRenderer.getGedObject();
return GedRenderer.escapeString(date.getString());
final GetDateVisitor visitor = new GetDateVisitor();
final Date date1 = dateRenderer.getGedObject();
date1.accept(visitor);
return GedRenderer.escapeString(visitor.getDate());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ public final class DateListItemRendererTest {
/** */
private transient Date date;

/** */
private transient Date date2;

/** */
private RenderingContext anonymousContext;

Expand All @@ -42,10 +45,11 @@ public final class DateListItemRendererTest {
public void init() {
final GedObjectBuilder builder = new GedObjectBuilder();
final Person person = builder.createPerson();
attribute = new Attribute(person, "String", "");
person.addAttribute(attribute);
date = new Date(attribute, "14 December 1958");
attribute.addAttribute(date);
attribute = builder.createPersonEvent(person, "String");
date = builder.addDateToGedObject(attribute, "14 December 1958");
builder.createAttribute(date, "Time", "12:00");
final Attribute a2 = builder.createPersonEvent(person, "String2");
date2 = builder.addDateToGedObject(a2, "14 December 1958");
anonymousContext = RenderingContext.anonymous(appInfo);
}

Expand All @@ -59,6 +63,20 @@ public void testGetRenderAsListItem() {
final StringBuilder builder = new StringBuilder();
dlir.renderAsListItem(builder, false, 0);
final String string = builder.toString();
assertEquals("Rendered string doesn't match expectation",
"14 December 1958 12:00", string);
}

/** */
@Test
public void testGetRenderAsListItem2() {
final DateRenderer dRenderer = new DateRenderer(date2,
new GedRendererFactory(), anonymousContext);
final DateListItemRenderer dlir = (DateListItemRenderer) dRenderer
.getListItemRenderer();
final StringBuilder builder = new StringBuilder();
dlir.renderAsListItem(builder, false, 0);
final String string = builder.toString();
assertEquals("Rendered string doesn't match expectation",
"14 December 1958", string);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ public final class DatePhraseRendererTest {
/** */
private transient Date date;

/** */
private transient Date date2;

/** */
private RenderingContext anonymousContext;

Expand All @@ -42,10 +45,11 @@ public final class DatePhraseRendererTest {
public void init() {
final GedObjectBuilder builder = new GedObjectBuilder();
final Person person = builder.createPerson();
attribute = new Attribute(person, "String", "");
person.addAttribute(attribute);
date = new Date(attribute, "14 December 1958");
attribute.addAttribute(date);
attribute = builder.createPersonEvent(person, "String");
date = builder.addDateToGedObject(attribute, "14 December 1958");
builder.createAttribute(date, "Time", "12:00");
final Attribute a2 = builder.createPersonEvent(person, "String2");
date2 = builder.addDateToGedObject(a2, "14 December 1958");
anonymousContext = RenderingContext.anonymous(appInfo);
}

Expand All @@ -57,6 +61,18 @@ public void testGetRenderAsPhrase() {
final DatePhraseRenderer dpRenderer = (DatePhraseRenderer) dRenderer
.getPhraseRenderer();
final String string = dpRenderer.renderAsPhrase();
assertEquals("Rendered date string doesn't match expectation",
"14 December 1958 12:00", string);
}

/** */
@Test
public void testGetRenderAsPhrase2() {
final DateRenderer dRenderer = new DateRenderer(date2,
new GedRendererFactory(), anonymousContext);
final DatePhraseRenderer dpRenderer = (DatePhraseRenderer) dRenderer
.getPhraseRenderer();
final String string = dpRenderer.renderAsPhrase();
assertEquals("Rendered date string doesn't match expectation",
"14 December 1958", string);
}
Expand Down