aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Foiani <sotech117@michaels-mbp-3.lan>2021-04-05 14:36:31 -0400
committerMichael Foiani <sotech117@michaels-mbp-3.lan>2021-04-05 14:36:31 -0400
commit12498969cb903c03ff45c191e88ce3adb6146623 (patch)
treee08657086dbc342f8504fea215d9a93233964c93
parentafd767bf26c6853c36178e2fc0d091ba1b598fea (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.iml34
-rw-r--r--data/bad.xml7
-rw-r--r--src/main/java/edu/brown/cs/student/term/parsing/UrlXmlParser.java37
-rw-r--r--src/test/java/edu/brown/cs/student/TradeTest.java93
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();
+ }
}