From 3e2786a004eddf968a5fa7d5a92dff5b1b5f7734 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 24 Feb 2016 08:16:16 +0000 Subject: Create internal package --- .../mammoth/internal/documents/Bookmark.java | 18 ++++++ .../mammoth/internal/documents/Document.java | 21 +++++++ .../internal/documents/DocumentElement.java | 5 ++ .../internal/documents/DocumentElementVisitor.java | 20 +++++++ .../mammoth/internal/documents/Documents.java | 4 ++ .../mammoth/internal/documents/HasChildren.java | 7 +++ .../mammoth/internal/documents/Hyperlink.java | 42 ++++++++++++++ .../zwobble/mammoth/internal/documents/Image.java | 37 ++++++++++++ .../mammoth/internal/documents/LineBreak.java | 13 +++++ .../zwobble/mammoth/internal/documents/Note.java | 27 +++++++++ .../mammoth/internal/documents/NoteReference.java | 32 +++++++++++ .../mammoth/internal/documents/NoteType.java | 6 ++ .../zwobble/mammoth/internal/documents/Notes.java | 27 +++++++++ .../mammoth/internal/documents/NumberingLevel.java | 27 +++++++++ .../mammoth/internal/documents/Paragraph.java | 33 +++++++++++ .../zwobble/mammoth/internal/documents/Run.java | 65 ++++++++++++++++++++++ .../zwobble/mammoth/internal/documents/Style.java | 26 +++++++++ .../zwobble/mammoth/internal/documents/Tab.java | 13 +++++ .../zwobble/mammoth/internal/documents/Table.java | 21 +++++++ .../mammoth/internal/documents/TableCell.java | 21 +++++++ .../mammoth/internal/documents/TableRow.java | 21 +++++++ .../zwobble/mammoth/internal/documents/Text.java | 18 ++++++ .../internal/documents/VerticalAlignment.java | 7 +++ 23 files changed, 511 insertions(+) create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Bookmark.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Document.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/DocumentElement.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Documents.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/HasChildren.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Image.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/LineBreak.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Note.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/NoteReference.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/NoteType.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Notes.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/NumberingLevel.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Paragraph.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Run.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Style.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Tab.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Table.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/TableCell.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/Text.java create mode 100644 src/main/java/org/zwobble/mammoth/internal/documents/VerticalAlignment.java (limited to 'src/main/java/org/zwobble/mammoth/internal/documents') diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Bookmark.java b/src/main/java/org/zwobble/mammoth/internal/documents/Bookmark.java new file mode 100644 index 0000000..cca6317 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/Bookmark.java @@ -0,0 +1,18 @@ +package org.zwobble.mammoth.internal.documents; + +public class Bookmark implements DocumentElement { + private final String name; + + public Bookmark(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + @Override + public T accept(DocumentElementVisitor visitor) { + return visitor.visit(this); + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Document.java b/src/main/java/org/zwobble/mammoth/internal/documents/Document.java new file mode 100644 index 0000000..447d6ed --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/Document.java @@ -0,0 +1,21 @@ +package org.zwobble.mammoth.internal.documents; + +import java.util.List; + +public class Document implements HasChildren { + private final List children; + private final Notes notes; + + public Document(List children, Notes notes) { + this.children = children; + this.notes = notes; + } + + public List getChildren() { + return children; + } + + public Notes getNotes() { + return notes; + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElement.java b/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElement.java new file mode 100644 index 0000000..b3360ed --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElement.java @@ -0,0 +1,5 @@ +package org.zwobble.mammoth.internal.documents; + +public interface DocumentElement { + T accept(DocumentElementVisitor visitor); +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java b/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java new file mode 100644 index 0000000..569a525 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/DocumentElementVisitor.java @@ -0,0 +1,20 @@ +package org.zwobble.mammoth.internal.documents; + +public interface DocumentElementVisitor { + T visit(Paragraph paragraph); + T visit(Run run); + T visit(Text text); + + T visit(Tab tab); + T visit(LineBreak lineBreak); + + T visit(Table table); + T visit(TableRow tableRow); + T visit(TableCell tableCell); + + T visit(Hyperlink hyperlink); + T visit(Bookmark bookmark); + T visit(NoteReference noteReference); + + T visit(Image image); +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Documents.java b/src/main/java/org/zwobble/mammoth/internal/documents/Documents.java new file mode 100644 index 0000000..64a5d1c --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/Documents.java @@ -0,0 +1,4 @@ +package org.zwobble.mammoth.internal.documents; + +public class Documents { +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/HasChildren.java b/src/main/java/org/zwobble/mammoth/internal/documents/HasChildren.java new file mode 100644 index 0000000..2a5280e --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/HasChildren.java @@ -0,0 +1,7 @@ +package org.zwobble.mammoth.internal.documents; + +import java.util.List; + +public interface HasChildren { + List getChildren(); +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java b/src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java new file mode 100644 index 0000000..ceb558f --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java @@ -0,0 +1,42 @@ +package org.zwobble.mammoth.internal.documents; + +import java.util.List; +import java.util.Optional; + +public class Hyperlink implements DocumentElement, HasChildren { + public static Hyperlink href(String href, List children) { + return new Hyperlink(Optional.of(href), Optional.empty(), children); + } + + public static Hyperlink anchor(String anchor, List children) { + return new Hyperlink(Optional.empty(), Optional.of(anchor), children); + } + + private final Optional href; + private final Optional anchor; + private final List children; + + private Hyperlink(Optional href, Optional anchor, List children) { + this.href = href; + this.anchor = anchor; + this.children = children; + } + + public Optional getHref() { + return href; + } + + public Optional getAnchor() { + return anchor; + } + + @Override + public List getChildren() { + return children; + } + + @Override + public T accept(DocumentElementVisitor visitor) { + return visitor.visit(this); + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Image.java b/src/main/java/org/zwobble/mammoth/internal/documents/Image.java new file mode 100644 index 0000000..8ceee7c --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/Image.java @@ -0,0 +1,37 @@ +package org.zwobble.mammoth.internal.documents; + +import org.zwobble.mammoth.internal.util.InputStreamSupplier; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Optional; + +public class Image implements DocumentElement { + + private final Optional altText; + private final Optional contentType; + private final InputStreamSupplier open; + + public Image(Optional altText, Optional contentType, InputStreamSupplier open) { + this.altText = altText; + this.contentType = contentType; + this.open = open; + } + + public Optional getAltText() { + return altText; + } + + public Optional getContentType() { + return contentType; + } + + public InputStream open() throws IOException { + return open.open(); + } + + @Override + public T accept(DocumentElementVisitor visitor) { + return visitor.visit(this); + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/LineBreak.java b/src/main/java/org/zwobble/mammoth/internal/documents/LineBreak.java new file mode 100644 index 0000000..00b2a06 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/LineBreak.java @@ -0,0 +1,13 @@ +package org.zwobble.mammoth.internal.documents; + +public class LineBreak implements DocumentElement { + public static final LineBreak LINE_BREAK = new LineBreak(); + + private LineBreak() { + } + + @Override + public T accept(DocumentElementVisitor visitor) { + return visitor.visit(this); + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Note.java b/src/main/java/org/zwobble/mammoth/internal/documents/Note.java new file mode 100644 index 0000000..d7d741b --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/Note.java @@ -0,0 +1,27 @@ +package org.zwobble.mammoth.internal.documents; + +import java.util.List; + +public class Note { + private final NoteType noteType; + private final String id; + private final List body; + + public Note(NoteType noteType, String id, List body) { + this.noteType = noteType; + this.id = id; + this.body = body; + } + + public NoteType getNoteType() { + return noteType; + } + + public String getId() { + return id; + } + + public List getBody() { + return body; + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/NoteReference.java b/src/main/java/org/zwobble/mammoth/internal/documents/NoteReference.java new file mode 100644 index 0000000..7d0beb2 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/NoteReference.java @@ -0,0 +1,32 @@ +package org.zwobble.mammoth.internal.documents; + +public class NoteReference implements DocumentElement { + public static NoteReference footnoteReference(String noteId) { + return new NoteReference(NoteType.FOOTNOTE, noteId); + } + + public static NoteReference endnoteReference(String noteId) { + return new NoteReference(NoteType.ENDNOTE, noteId); + } + + private final NoteType noteType; + private final String noteId; + + public NoteReference(NoteType noteType, String noteId) { + this.noteType = noteType; + this.noteId = noteId; + } + + public NoteType getNoteType() { + return noteType; + } + + public String getNoteId() { + return noteId; + } + + @Override + public T accept(DocumentElementVisitor visitor) { + return visitor.visit(this); + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/NoteType.java b/src/main/java/org/zwobble/mammoth/internal/documents/NoteType.java new file mode 100644 index 0000000..47defc1 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/NoteType.java @@ -0,0 +1,6 @@ +package org.zwobble.mammoth.internal.documents; + +public enum NoteType { + FOOTNOTE, + ENDNOTE +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Notes.java b/src/main/java/org/zwobble/mammoth/internal/documents/Notes.java new file mode 100644 index 0000000..d8ca28d --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/Notes.java @@ -0,0 +1,27 @@ +package org.zwobble.mammoth.internal.documents; + +import com.google.common.collect.Maps; +import com.google.common.collect.Multimaps; + +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import static org.zwobble.mammoth.internal.util.MammothLists.list; + +public class Notes { + public final static Notes EMPTY = new Notes(list()); + + private final Map> notes; + + public Notes(List notes) { + this.notes = Maps.transformValues( + Multimaps.index(notes, Note::getNoteType).asMap(), + notesOfType -> Maps.uniqueIndex(notesOfType, Note::getId)); + } + + public Optional findNote(NoteType noteType, String noteId) { + return Optional.ofNullable(notes.get(noteType)) + .flatMap(notesOfType -> Optional.ofNullable(notesOfType.get(noteId))); + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/NumberingLevel.java b/src/main/java/org/zwobble/mammoth/internal/documents/NumberingLevel.java new file mode 100644 index 0000000..592d96f --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/NumberingLevel.java @@ -0,0 +1,27 @@ +package org.zwobble.mammoth.internal.documents; + +public class NumberingLevel { + public static NumberingLevel ordered(String levelIndex) { + return new NumberingLevel(levelIndex, true); + } + + public static NumberingLevel unordered(String levelIndex) { + return new NumberingLevel(levelIndex, false); + } + + private final String levelIndex; + private final boolean isOrdered; + + public NumberingLevel(String levelIndex, boolean isOrdered) { + this.levelIndex = levelIndex; + this.isOrdered = isOrdered; + } + + public String getLevelIndex() { + return levelIndex; + } + + public boolean isOrdered() { + return isOrdered; + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Paragraph.java b/src/main/java/org/zwobble/mammoth/internal/documents/Paragraph.java new file mode 100644 index 0000000..66ea009 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/documents/Paragraph.java @@ -0,0 +1,33 @@ +package org.zwobble.mammoth.internal.documents; + +import java.util.List; +import java.util.Optional; + +public class Paragraph implements DocumentElement, HasChildren { + private final Optional