diff options
| -rw-r--r-- | pom.xml | 6 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/Mammoth.java | 11 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/xml/ElementName.java | 20 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/xml/SimpleSax.java | 15 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/xml/XmlElement.java | 64 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/xml/XmlParser.java | 12 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/xml/XmlTextNode.java | 43 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/MammothTests.java | 6 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/TestData.java | 5 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/xml/XmlParserTests.java | 6 |
10 files changed, 134 insertions, 54 deletions
@@ -23,12 +23,6 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - <version>1.16.6</version> - <scope>provided</scope> - </dependency> - <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>18.0</version> diff --git a/src/main/java/org/zwobble/mammoth/Mammoth.java b/src/main/java/org/zwobble/mammoth/Mammoth.java index aa3514f..c425280 100644 --- a/src/main/java/org/zwobble/mammoth/Mammoth.java +++ b/src/main/java/org/zwobble/mammoth/Mammoth.java @@ -3,6 +3,7 @@ package org.zwobble.mammoth; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import org.zwobble.mammoth.xml.XmlElement; @@ -16,15 +17,13 @@ import com.google.common.collect.ImmutableBiMap; import static com.google.common.collect.Iterables.transform; -import lombok.val; - public class Mammoth { public static String convertToHtml(File file) { - try (val zipFile = new ZipFile(file)) { - val entry = zipFile.getEntry("word/document.xml"); - val documentXml = parseXml(zipFile.getInputStream(entry)); - val text = extractText(documentXml); + try (ZipFile zipFile = new ZipFile(file)) { + ZipEntry entry = zipFile.getEntry("word/document.xml"); + XmlElement documentXml = parseXml(zipFile.getInputStream(entry)); + String text = extractText(documentXml); if (Strings.isNullOrEmpty(text)) { return ""; } else { diff --git a/src/main/java/org/zwobble/mammoth/xml/ElementName.java b/src/main/java/org/zwobble/mammoth/xml/ElementName.java index 9e51e0c..76b1c93 100644 --- a/src/main/java/org/zwobble/mammoth/xml/ElementName.java +++ b/src/main/java/org/zwobble/mammoth/xml/ElementName.java @@ -1,9 +1,19 @@ package org.zwobble.mammoth.xml; -import lombok.Value; - -@Value public class ElementName { - private String uri; - private String localName; + private final String uri; + private final String localName; + + public ElementName(String uri, String localName) { + this.uri = uri; + this.localName = localName; + } + + public String getUri() { + return uri; + } + + public String getLocalName() { + return localName; + } } diff --git a/src/main/java/org/zwobble/mammoth/xml/SimpleSax.java b/src/main/java/org/zwobble/mammoth/xml/SimpleSax.java index bea752a..54bd614 100644 --- a/src/main/java/org/zwobble/mammoth/xml/SimpleSax.java +++ b/src/main/java/org/zwobble/mammoth/xml/SimpleSax.java @@ -3,20 +3,21 @@ package org.zwobble.mammoth.xml; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; +import java.util.Map; import java.util.stream.IntStream; import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import static java.util.stream.Collectors.toMap; -import lombok.val; - public class SimpleSax { public static void parseStream(InputStream input, SimpleSaxHandler handler) { parseInputSource(new InputSource(input), handler); @@ -27,16 +28,16 @@ public class SimpleSax { } private static void parseInputSource(InputSource inputSource, SimpleSaxHandler handler) { - val parserFactory = SAXParserFactory.newInstance(); + SAXParserFactory parserFactory = SAXParserFactory.newInstance(); parserFactory.setNamespaceAware(true); try { - val saxParser = parserFactory.newSAXParser(); - val xmlReader = saxParser.getXMLReader(); + SAXParser saxParser = parserFactory.newSAXParser(); + XMLReader xmlReader = saxParser.getXMLReader(); xmlReader.setContentHandler(new DefaultHandler() { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { - final ElementName name = new ElementName(uri, localName); - val attributesMap = IntStream.range(0, attributes.getLength()) + ElementName name = new ElementName(uri, localName); + Map<ElementName, String> attributesMap = IntStream.range(0, attributes.getLength()) .boxed() .collect(toMap( index -> new ElementName(attributes.getURI(index), attributes.getLocalName(index)), diff --git a/src/main/java/org/zwobble/mammoth/xml/XmlElement.java b/src/main/java/org/zwobble/mammoth/xml/XmlElement.java index b5e8f1b..659be2d 100644 --- a/src/main/java/org/zwobble/mammoth/xml/XmlElement.java +++ b/src/main/java/org/zwobble/mammoth/xml/XmlElement.java @@ -6,14 +6,6 @@ import java.util.Map; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.ToString; - -@RequiredArgsConstructor -@EqualsAndHashCode -@ToString public class XmlElement implements XmlNode { public XmlElement(String name) { this(name, ImmutableMap.of()); @@ -23,11 +15,20 @@ public class XmlElement implements XmlNode { this(name, attributes, ImmutableList.of()); } - @Getter private final String name; private final Map<String, String> attributes; private final List<XmlNode> children; + public XmlElement(String name, Map<String, String> attributes, List<XmlNode> children) { + this.name = name; + this.attributes = attributes; + this.children = children; + } + + public String getName() { + return name; + } + @Override public <T> T accept(XmlNodeVisitor<T> visitor) { return visitor.visit(this); @@ -36,4 +37,49 @@ public class XmlElement implements XmlNode { public Iterable<XmlNode> children() { return children; } + + @Override + public String toString() { + return "XmlElement(name=" + name + ", attributes=" + attributes + + ", children=" + children + ")"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((attributes == null) ? 0 : attributes.hashCode()); + result = prime * result + + ((children == null) ? 0 : children.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + XmlElement other = (XmlElement) obj; + if (attributes == null) { + if (other.attributes != null) + return false; + } else if (!attributes.equals(other.attributes)) + return false; + if (children == null) { + if (other.children != null) + return false; + } else if (!children.equals(other.children)) + return false; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } } diff --git a/src/main/java/org/zwobble/mammoth/xml/XmlParser.java b/src/main/java/org/zwobble/mammoth/xml/XmlParser.java index 219d02c..cf00586 100644 --- a/src/main/java/org/zwobble/mammoth/xml/XmlParser.java +++ b/src/main/java/org/zwobble/mammoth/xml/XmlParser.java @@ -10,8 +10,6 @@ import com.google.common.collect.BiMap; import static java.util.stream.Collectors.toMap; -import lombok.val; - public class XmlParser { private final BiMap<String, String> namespaces; @@ -20,13 +18,13 @@ public class XmlParser { } public XmlElement parseStream(InputStream inputStream) { - val nodeGenerator = new NodeGenerator(); + NodeGenerator nodeGenerator = new NodeGenerator(); SimpleSax.parseStream(inputStream, nodeGenerator); return nodeGenerator.getRoot(); } public XmlElement parseString(String value) { - val nodeGenerator = new NodeGenerator(); + NodeGenerator nodeGenerator = new NodeGenerator(); SimpleSax.parseString(value, nodeGenerator); return nodeGenerator.getRoot(); } @@ -44,13 +42,13 @@ public class XmlParser { @Override public void startElement(ElementName name, Map<ElementName, String> attributes) { - val simpleAttributes = attributes + Map<String, String> simpleAttributes = attributes .entrySet() .stream() .collect(toMap( entry -> readName(entry.getKey()), entry -> entry.getValue())); - val element = new XmlElementBuilder(readName(name), simpleAttributes); + XmlElementBuilder element = new XmlElementBuilder(readName(name), simpleAttributes); elementStack.add(element); } @@ -68,7 +66,7 @@ public class XmlParser { @Override public void endElement() { if (elementStack.size() > 1) { - val element = elementStack.removeLast(); + XmlElementBuilder element = elementStack.removeLast(); elementStack.getLast().addChild(element.build()); } } diff --git a/src/main/java/org/zwobble/mammoth/xml/XmlTextNode.java b/src/main/java/org/zwobble/mammoth/xml/XmlTextNode.java index 4d47626..1dd0275 100644 --- a/src/main/java/org/zwobble/mammoth/xml/XmlTextNode.java +++ b/src/main/java/org/zwobble/mammoth/xml/XmlTextNode.java @@ -1,13 +1,48 @@ package org.zwobble.mammoth.xml; -import lombok.Value; - -@Value public class XmlTextNode implements XmlNode { - private String value; + private final String value; + public XmlTextNode(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + @Override public <T> T accept(XmlNodeVisitor<T> visitor) { return visitor.Visit(this); } + + @Override + public String toString() { + return "XmlTextNode(value=" + value + ")"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((value == null) ? 0 : value.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + XmlTextNode other = (XmlTextNode) obj; + if (value == null) { + if (other.value != null) + return false; + } else if (!value.equals(other.value)) + return false; + return true; + } } diff --git a/src/test/java/org/zwobble/mammoth/tests/MammothTests.java b/src/test/java/org/zwobble/mammoth/tests/MammothTests.java index 013deae..3bbc3e9 100644 --- a/src/test/java/org/zwobble/mammoth/tests/MammothTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/MammothTests.java @@ -1,13 +1,13 @@ package org.zwobble.mammoth.tests; +import java.io.File; + import org.junit.Test; import org.zwobble.mammoth.Mammoth; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; -import lombok.val; - public class MammothTests { @Test public void emptyParagraphsAreIgnoredByDefault() { @@ -22,7 +22,7 @@ public class MammothTests { } private String convertToHtml(String name) { - val file = TestData.file(name); + File file = TestData.file(name); return Mammoth.convertToHtml(file); } } diff --git a/src/test/java/org/zwobble/mammoth/tests/TestData.java b/src/test/java/org/zwobble/mammoth/tests/TestData.java index e84caa4..082ac7c 100644 --- a/src/test/java/org/zwobble/mammoth/tests/TestData.java +++ b/src/test/java/org/zwobble/mammoth/tests/TestData.java @@ -1,14 +1,13 @@ package org.zwobble.mammoth.tests; import java.io.File; +import java.net.URI; import java.net.URISyntaxException; -import lombok.val; - public class TestData { public static File file(String name) { try { - val uri = TestData.class.getResource("/test-data/" + name).toURI(); + URI uri = TestData.class.getResource("/test-data/" + name).toURI(); return new File(uri); } catch (URISyntaxException exception) { throw new RuntimeException(exception); diff --git a/src/test/java/org/zwobble/mammoth/tests/xml/XmlParserTests.java b/src/test/java/org/zwobble/mammoth/tests/xml/XmlParserTests.java index be1eced..00f8fb2 100644 --- a/src/test/java/org/zwobble/mammoth/tests/xml/XmlParserTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/xml/XmlParserTests.java @@ -14,8 +14,6 @@ import com.google.common.collect.ImmutableMap; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; -import lombok.val; - public class XmlParserTests { private final XmlParser parser = new XmlParser(ImmutableBiMap.of()); @@ -80,7 +78,7 @@ public class XmlParserTests { @Test public void mappedNamespaceUrisInElementNamesArePrefixedToLocalNameWithColon() { - val parser = new XmlParser(ImmutableBiMap.of("x", "word")); + XmlParser parser = new XmlParser(ImmutableBiMap.of("x", "word")); assertThat( parser.parseString("<w:body xmlns:w='word'/>"), is(new XmlElement("x:body"))); @@ -88,7 +86,7 @@ public class XmlParserTests { @Test public void mappedNamespaceUrisInAttributeNamesArePrefixedToLocalNameWithColon() { - val parser = new XmlParser(ImmutableBiMap.of("x", "word")); + XmlParser parser = new XmlParser(ImmutableBiMap.of("x", "word")); assertThat( parser.parseString("<body xmlns:w='word' w:name='bob'/>"), is(new XmlElement("body", ImmutableMap.of("x:name", "bob")))); |
