-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixes #396 - submittor name rendering
Because there is no constraint on submittor name structure, change the rendering to avoid ? and to not do any special surname handling.
- Loading branch information
1 parent
2f50f93
commit c950a55
Showing
25 changed files
with
785 additions
and
51 deletions.
There are no files selected for viewing
37 changes: 37 additions & 0 deletions
37
...owser-renderer/src/main/java/org/schoellerfamily/gedbrowser/renderer/ComplexRenderer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package org.schoellerfamily.gedbrowser.renderer; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
/** | ||
* Contains a few common methods used in complex renderers. | ||
* | ||
* @author Dick Schoeller | ||
*/ | ||
public interface ComplexRenderer { | ||
/** | ||
* Properly escape the string for display in HTML. | ||
* | ||
* @param input the input string | ||
* @return the string prepared for display in HTML | ||
*/ | ||
default String escapeString(final String input) { | ||
return GedRenderer.escapeString(input).trim(); | ||
} | ||
|
||
/** | ||
* Separate the provided strings with spaces, drop empty tokens. | ||
* | ||
* @param args the strings to separate | ||
* @return either a space or an empty string | ||
*/ | ||
default String separate(final String... args) { | ||
final List<String> argList = new ArrayList<>(); | ||
for (String arg : args) { | ||
if (!arg.isEmpty()) { | ||
argList.add(arg); | ||
} | ||
} | ||
return String.join(" ", argList); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
55 changes: 55 additions & 0 deletions
55
...rer/src/main/java/org/schoellerfamily/gedbrowser/renderer/SimpleNameListItemRenderer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
package org.schoellerfamily.gedbrowser.renderer; | ||
|
||
/** | ||
* @author Dick Schoeller | ||
*/ | ||
public class SimpleNameListItemRenderer implements ListItemRenderer { | ||
/** | ||
* Holder for the SimpleNameRenderer that is using this helper. | ||
*/ | ||
private final transient SimpleNameRenderer simpleNameRenderer; | ||
|
||
/** | ||
* Constructor. | ||
* | ||
* @param nameRenderer the renderer that this is associated with. | ||
*/ | ||
protected SimpleNameListItemRenderer( | ||
final SimpleNameRenderer nameRenderer) { | ||
this.simpleNameRenderer = nameRenderer; | ||
} | ||
|
||
/** | ||
* {@inheritDoc} | ||
*/ | ||
@Override | ||
public final StringBuilder renderAsListItem(final StringBuilder builder, | ||
final boolean newLine, final int pad) { | ||
if (pad > 0) { | ||
return builder; | ||
} | ||
|
||
GedRenderer.renderNewLine(builder, newLine); | ||
|
||
builder.append(simpleNameRenderer.renderAsPhrase()); | ||
return builder; | ||
} | ||
|
||
/** | ||
* @param builder the string builder that we will be appending to. | ||
*/ | ||
private void renderListItemContents(final StringBuilder builder) { | ||
builder.append("<span class=\"label\">Name:</span> "); | ||
builder.append(simpleNameRenderer.renderAsPhrase()); | ||
} | ||
|
||
/** | ||
* {@inheritDoc} | ||
*/ | ||
@Override | ||
public final String getListItemContents() { | ||
final StringBuilder builder = new StringBuilder(); | ||
renderListItemContents(builder); | ||
return builder.toString(); | ||
} | ||
} |
44 changes: 44 additions & 0 deletions
44
...rer/src/main/java/org/schoellerfamily/gedbrowser/renderer/SimpleNameNameHtmlRenderer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package org.schoellerfamily.gedbrowser.renderer; | ||
|
||
import org.schoellerfamily.gedbrowser.datamodel.Name; | ||
|
||
/** | ||
* A NameHtmlRenderer that is designed to work with a NameRenderer. | ||
* | ||
* @author Dick Schoeller | ||
*/ | ||
public class SimpleNameNameHtmlRenderer | ||
implements NameHtmlRenderer, SimpleRenderer { | ||
/** | ||
* Holder for the SimpleNameRenderer that is using this helper. | ||
*/ | ||
private final transient SimpleNameRenderer simpleNameRenderer; | ||
|
||
/** | ||
* Constructor. | ||
* | ||
* This constructor is public for testing purposes only. Do not try to call | ||
* it outside of the context of the rendering engine. | ||
* | ||
* @param simpleNameRenderer the renderer that this is associated with. | ||
*/ | ||
public SimpleNameNameHtmlRenderer( | ||
final SimpleNameRenderer simpleNameRenderer) { | ||
this.simpleNameRenderer = simpleNameRenderer; | ||
} | ||
|
||
|
||
/** | ||
* {@inheritDoc} | ||
*/ | ||
@Override | ||
public final String getNameHtml() { | ||
final Name name = simpleNameRenderer.getGedObject(); | ||
|
||
final String prefix = escapeString(name.getPrefix()); | ||
final String surname = escapeString(name.getSurname()); | ||
final String suffix = escapeString(name.getSuffix()); | ||
|
||
return separate(prefix, surname, suffix); | ||
} | ||
} |
74 changes: 74 additions & 0 deletions
74
...er/src/main/java/org/schoellerfamily/gedbrowser/renderer/SimpleNameNameIndexRenderer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
package org.schoellerfamily.gedbrowser.renderer; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
import org.schoellerfamily.gedbrowser.datamodel.Name; | ||
|
||
/** | ||
* @author Dick Schoeller | ||
*/ | ||
public final class SimpleNameNameIndexRenderer | ||
implements NameIndexRenderer, SimpleRenderer { | ||
/** */ | ||
private final transient SimpleNameRenderer nameRenderer; | ||
|
||
/** | ||
* Constructor. | ||
* | ||
* @param nameRenderer the NameRenderer that is using this helper. | ||
*/ | ||
public SimpleNameNameIndexRenderer(final SimpleNameRenderer nameRenderer) { | ||
this.nameRenderer = nameRenderer; | ||
} | ||
|
||
/** | ||
* {@inheritDoc} | ||
*/ | ||
@Override | ||
public String getIndexName() { | ||
final Name name = nameRenderer.getGedObject(); | ||
if (!name.isSet()) { | ||
return " <span class=\"surname\">?</span>"; | ||
} | ||
|
||
final String prefix = escapeString(name.getPrefix()); | ||
final String surname = escapeString(name.getSurname()); | ||
final String suffix = escapeString(name.getSuffix()); | ||
|
||
return " " + separate( | ||
wrap("<span class=\"surname\">", surname, "</span>"), | ||
prefix, suffix); | ||
} | ||
|
||
/** | ||
* {@inheritDoc} | ||
*/ | ||
@Override | ||
public String separate(final String... args) { | ||
final List<String> argList = new ArrayList<>(); | ||
for (final String arg : args) { | ||
if (!arg.isEmpty()) { | ||
argList.add(arg); | ||
} | ||
} | ||
return String.join(", ", argList); | ||
} | ||
|
||
/** | ||
* If the middle string has contents, append the strings. | ||
* | ||
* @param before the before string | ||
* @param string the middle string | ||
* @param after the after string | ||
* @return the combined strings | ||
*/ | ||
private String wrap(final String before, final String string, | ||
final String after) { | ||
if (string.isEmpty()) { | ||
return ""; | ||
} | ||
return before + string + after; | ||
} | ||
|
||
} |
36 changes: 36 additions & 0 deletions
36
...derer/src/main/java/org/schoellerfamily/gedbrowser/renderer/SimpleNamePhraseRenderer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package org.schoellerfamily.gedbrowser.renderer; | ||
|
||
import org.schoellerfamily.gedbrowser.datamodel.Name; | ||
|
||
/** | ||
* @author Dick Schoeller | ||
*/ | ||
public class SimpleNamePhraseRenderer | ||
implements PhraseRenderer, SimpleRenderer { | ||
/** | ||
* The renderer that we are associated with. | ||
*/ | ||
private final transient SimpleNameRenderer simpleNameRenderer; | ||
|
||
/** | ||
* Constructor. | ||
* | ||
* @param simpleNameRenderer the renderer that we are associated with. | ||
*/ | ||
public SimpleNamePhraseRenderer( | ||
final SimpleNameRenderer simpleNameRenderer) { | ||
this.simpleNameRenderer = simpleNameRenderer; | ||
} | ||
|
||
/** | ||
* {@inheritDoc} | ||
*/ | ||
@Override | ||
public final String renderAsPhrase() { | ||
final Name name = simpleNameRenderer.getGedObject(); | ||
final String prefix = escapeString(name.getPrefix()); | ||
final String surname = escapeString(name.getSurname()); | ||
final String suffix = escapeString(name.getSuffix()); | ||
return separate(prefix, surname, suffix); | ||
} | ||
} |
26 changes: 26 additions & 0 deletions
26
...er-renderer/src/main/java/org/schoellerfamily/gedbrowser/renderer/SimpleNameRenderer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package org.schoellerfamily.gedbrowser.renderer; | ||
|
||
import org.schoellerfamily.gedbrowser.datamodel.Name; | ||
|
||
/** | ||
* Render a Name. | ||
* | ||
* @author Dick Schoeller | ||
*/ | ||
public final class SimpleNameRenderer extends GedRenderer<Name> { | ||
/** | ||
* @param gedObject the Name that we are going to render | ||
* @param rendererFactory the factory that creates the renderers for the | ||
* attributes | ||
* @param renderingContext the context that we are rendering in | ||
*/ | ||
public SimpleNameRenderer(final Name gedObject, | ||
final GedRendererFactory rendererFactory, | ||
final RenderingContext renderingContext) { | ||
super(gedObject, rendererFactory, renderingContext); | ||
setNameHtmlRenderer(new SimpleNameNameHtmlRenderer(this)); | ||
setListItemRenderer(new SimpleNameListItemRenderer(this)); | ||
setPhraseRenderer(new SimpleNamePhraseRenderer(this)); | ||
setNameIndexRenderer(new SimpleNameNameIndexRenderer(this)); | ||
} | ||
} |
Oops, something went wrong.