diff options
| author | Michael Foiani <sotech117@michaels-mbp-3.lan> | 2021-04-05 14:36:31 -0400 |
|---|---|---|
| committer | Michael Foiani <sotech117@michaels-mbp-3.lan> | 2021-04-05 14:36:31 -0400 |
| commit | 12498969cb903c03ff45c191e88ce3adb6146623 (patch) | |
| tree | e08657086dbc342f8504fea215d9a93233964c93 | |
| parent | afd767bf26c6853c36178e2fc0d091ba1b598fea (diff) | |
Moved around and added some tests and added an xml parser that uses urls instead of locally held files.
| -rw-r--r-- | .idea/term-project-cohwille-jmccaul3-mfoiani-rhunt2.iml | 34 | ||||
| -rw-r--r-- | data/bad.xml | 7 | ||||
| -rw-r--r-- | src/main/java/edu/brown/cs/student/term/parsing/UrlXmlParser.java | 37 | ||||
| -rw-r--r-- | src/test/java/edu/brown/cs/student/TradeTest.java | 93 |
4 files changed, 169 insertions, 2 deletions
diff --git a/.idea/term-project-cohwille-jmccaul3-mfoiani-rhunt2.iml b/.idea/term-project-cohwille-jmccaul3-mfoiani-rhunt2.iml index d9f2955..b723815 100644 --- a/.idea/term-project-cohwille-jmccaul3-mfoiani-rhunt2.iml +++ b/.idea/term-project-cohwille-jmccaul3-mfoiani-rhunt2.iml @@ -50,5 +50,39 @@ <orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.26-incubating" level="project" /> <orderEntry type="library" name="Maven: org.xerial:sqlite-jdbc:3.30.1" level="project" /> <orderEntry type="library" name="Maven: org.json:json:20201115" level="project" /> + <orderEntry type="library" name="Maven: net.sf.jopt-simple:jopt-simple:6.0-alpha-3" level="project" /> + <orderEntry type="library" name="Maven: junit:junit:4.13" level="project" /> + <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" /> + <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-all:1.3" level="project" /> + <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:2.0.0-alpha1" level="project" /> + <orderEntry type="library" name="Maven: org.slf4j:slf4j-jdk14:2.0.0-alpha1" level="project" /> + <orderEntry type="library" name="Maven: com.google.guava:guava:28.2-jre" level="project" /> + <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" /> + <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" /> + <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" /> + <orderEntry type="library" name="Maven: org.checkerframework:checker-qual:2.10.0" level="project" /> + <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" /> + <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" /> + <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" /> + <orderEntry type="library" name="Maven: com.sparkjava:spark-core:2.9.1" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-server:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-http:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-util:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-io:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-webapp:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-xml:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-servlet:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-security:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-server:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-common:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-client:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-client:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-servlet:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-api:9.4.18.v20190429" level="project" /> + <orderEntry type="library" name="Maven: com.sparkjava:spark-template-freemarker:2.7.1" level="project" /> + <orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.26-incubating" level="project" /> + <orderEntry type="library" name="Maven: org.xerial:sqlite-jdbc:3.30.1" level="project" /> + <orderEntry type="library" name="Maven: org.json:json:20201115" level="project" /> </component> </module>
\ No newline at end of file diff --git a/data/bad.xml b/data/bad.xml index e69de29..8f17d10 100644 --- a/data/bad.xml +++ b/data/bad.xml @@ -0,0 +1,7 @@ +<periodOfReport>2021-03-31</periodOfReport> + +<notSubjectToSection16>0</notSubjectToSection16> + +<issuer> +<issuerCik>0001517006</issuerCik> +<issuerName>Gatos Silver, Inc.</issuer
\ No newline at end of file diff --git a/src/main/java/edu/brown/cs/student/term/parsing/UrlXmlParser.java b/src/main/java/edu/brown/cs/student/term/parsing/UrlXmlParser.java index adad835..440b898 100644 --- a/src/main/java/edu/brown/cs/student/term/parsing/UrlXmlParser.java +++ b/src/main/java/edu/brown/cs/student/term/parsing/UrlXmlParser.java @@ -1,2 +1,37 @@ -package edu.brown.cs.student.term.parsing;public class UrlXmlParser { +package edu.brown.cs.student.term.parsing; + +import org.w3c.dom.Document; +import org.xml.sax.SAXException; + +import java.io.IOException; +import java.net.URL; +import java.net.URLConnection; + +public class UrlXmlParser extends XmlParser{ + public UrlXmlParser() { + super(); + } + + /** + * Method used to parse the xml file. + * + * @param pathToXml The path to the xml text file. + * @return The tree structure parsed as an xml doc. + */ + @Override + public Document parse(String pathToXml) { + try { + System.err.println("LOG: To make url class in parse() of " + getClass()); + URL url = new URL(pathToXml); + System.err.println("LOG: To establish urlConnection in parse() of " + getClass()); + URLConnection conn = url.openConnection(); + System.err.println("LOG: Calling builder.parse() in " + getClass()); + return builder.parse(conn.getInputStream()); + } catch (SAXException e) { + System.err.println("INTERNAL: SAX " + getClass() + " : " + e.getClass()); + } catch (IOException e) { + System.err.println("INTERNAL: IO " + getClass() + " : " + e.getClass()); + } + return null; + } } diff --git a/src/test/java/edu/brown/cs/student/TradeTest.java b/src/test/java/edu/brown/cs/student/TradeTest.java index fb9a2ea..90d656d 100644 --- a/src/test/java/edu/brown/cs/student/TradeTest.java +++ b/src/test/java/edu/brown/cs/student/TradeTest.java @@ -1,2 +1,93 @@ -package edu.brown.cs.student;public class TradeTest { +package edu.brown.cs.student; + +import edu.brown.cs.student.term.parsing.LocalXmlParser; +import edu.brown.cs.student.term.parsing.XmlParser; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import static org.junit.Assert.*; + +public class TradeTest { + private XmlParser _xmlParser; + private Document _doc; + + @Before + public void setUp() { + _xmlParser = new LocalXmlParser(); + } + + @After + public void tearDown() { + _xmlParser = null; + } + + @Test + public void personDataParse(){ + setUp(); + Document doc = _xmlParser.parse("data/xml_trade_test.xml"); + assertNotNull(doc); + + // Id of person + NodeList idNode = doc.getElementsByTagName("rptOwnerCik"); + assertEquals(idNode.getLength(), 1); + String id = idNode.item(0).getTextContent(); + assertEquals(id, "0001561844"); + + // Name of person + NodeList nameNode = doc.getElementsByTagName("rptOwnerName"); + assertEquals(nameNode.getLength(), 1); + String name = nameNode.item(0).getTextContent(); + assertEquals(name, "Levental Igor"); + + tearDown(); + } + + @Test + public void tradeDataParse(){ + setUp(); + Document doc = _xmlParser.parse("data/xml_trade_test.xml"); + assertNotEquals(doc, null); + + // Data of trade in an array of values + NodeList trade = doc.getElementsByTagName("nonDerivativeTransaction"); + assertEquals(trade.item(0).getNodeType(), Node.ELEMENT_NODE); + Element tradeElement = (Element) trade.item(0); + NodeList values = tradeElement.getElementsByTagName("value"); + assertEquals(values.getLength(), 7); + + // type of stock + String stockType = values.item(0).getTextContent(); + assertEquals(stockType, "Common Stock"); + + // date + String date = values.item(1).getTextContent(); + assertEquals(date, "2021-03-31"); + + // # of shares + String numShares = values.item(2).getTextContent(); + assertEquals(numShares, "8236"); + + // price of shares + String priceShares = values.item(3).getTextContent(); + assertEquals(priceShares, "0"); + + // transaction type (A for acquire) + String transactionType = values.item(4).getTextContent(); + assertEquals(transactionType, "A"); + + // shared after transaction + String sharesAfter = values.item(5).getTextContent(); + assertEquals(sharesAfter, "10799"); + + // ownership type + String ownershipType = values.item(6).getTextContent(); + assertEquals(ownershipType, "D"); + + tearDown(); + } } |
