aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Foiani <sotech117@michaels-mbp-3.lan>2021-04-09 16:41:57 -0400
committerMichael Foiani <sotech117@michaels-mbp-3.lan>2021-04-09 16:41:57 -0400
commitc0b15a96c176f01a7199d3c3d107946341af3e50 (patch)
tree32f22c50397e07854ff3b07f86fcc4e7760bd552
parentfea5c5cb4cc3eb1177cbdc8adb27d254fe2f9db7 (diff)
Added a basic skeleton for derivative trades, if we dedice to look at those as well.
-rw-r--r--data/xml_derivative_only_test.xml97
-rw-r--r--src/main/java/edu/brown/cs/student/term/parsing/Transaction.java16
-rw-r--r--src/test/java/edu/brown/cs/student/TransactionTest.java20
3 files changed, 131 insertions, 2 deletions
diff --git a/data/xml_derivative_only_test.xml b/data/xml_derivative_only_test.xml
new file mode 100644
index 0000000..cd19564
--- /dev/null
+++ b/data/xml_derivative_only_test.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0"?>
+<ownershipDocument>
+
+ <schemaVersion>X0306</schemaVersion>
+
+ <documentType>4</documentType>
+
+ <periodOfReport>2021-04-07</periodOfReport>
+
+ <issuer>
+ <issuerCik>0001005817</issuerCik>
+ <issuerName>TOMPKINS FINANCIAL CORP</issuerName>
+ <issuerTradingSymbol>TMP</issuerTradingSymbol>
+ </issuer>
+
+ <reportingOwner>
+ <reportingOwnerId>
+ <rptOwnerCik>0001463126</rptOwnerCik>
+ <rptOwnerName>Fessenden Daniel J.</rptOwnerName>
+ </reportingOwnerId>
+ <reportingOwnerAddress>
+ <rptOwnerStreet1>C/O TOMPKINS FINANCIAL CORPORATION</rptOwnerStreet1>
+ <rptOwnerStreet2>P.O. BOX 460</rptOwnerStreet2>
+ <rptOwnerCity>ITHACA</rptOwnerCity>
+ <rptOwnerState>NY</rptOwnerState>
+ <rptOwnerZipCode>14851</rptOwnerZipCode>
+ <rptOwnerStateDescription></rptOwnerStateDescription>
+ </reportingOwnerAddress>
+ <reportingOwnerRelationship>
+ <isDirector>1</isDirector>
+ </reportingOwnerRelationship>
+ </reportingOwner>
+
+ <derivativeTable>
+ <derivativeTransaction>
+ <securityTitle>
+ <value>Phantom Stock</value>
+ </securityTitle>
+ <conversionOrExercisePrice>
+ <footnoteId id="F1"/>
+ </conversionOrExercisePrice>
+ <transactionDate>
+ <value>2021-04-07</value>
+ </transactionDate>
+ <transactionCoding>
+ <transactionFormType>4</transactionFormType>
+ <transactionCode>A</transactionCode>
+ <equitySwapInvolved>0</equitySwapInvolved>
+ </transactionCoding>
+ <transactionTimeliness></transactionTimeliness>
+ <transactionAmounts>
+ <transactionShares>
+ <value>142.275</value>
+ </transactionShares>
+ <transactionPricePerShare>
+ <value>80.8293</value>
+ </transactionPricePerShare>
+ <transactionAcquiredDisposedCode>
+ <value>A</value>
+ </transactionAcquiredDisposedCode>
+ </transactionAmounts>
+ <exerciseDate>
+ <footnoteId id="F1"/>
+ </exerciseDate>
+ <expirationDate>
+ <footnoteId id="F1"/>
+ </expirationDate>
+ <underlyingSecurity>
+ <underlyingSecurityTitle>
+ <value>Common Stock</value>
+ </underlyingSecurityTitle>
+ <underlyingSecurityShares>
+ <value>142.275</value>
+ </underlyingSecurityShares>
+ </underlyingSecurity>
+ <postTransactionAmounts>
+ <sharesOwnedFollowingTransaction>
+ <value>4757.199</value>
+ </sharesOwnedFollowingTransaction>
+ </postTransactionAmounts>
+ <ownershipNature>
+ <directOrIndirectOwnership>
+ <value>D</value>
+ </directOrIndirectOwnership>
+ </ownershipNature>
+ </derivativeTransaction>
+ </derivativeTable>
+
+ <footnotes>
+ <footnote id="F1">Each share of phantom stock is the economic equivalent of one share of common stock. Phantom stock represents deferred stock compensation under the Amended and Restated Retainer Plan for Eligible Directors of Tompkins Financial Corporation and its Wholly-Owned Subsidiaries. These shares are held in a rabbi trust pending distribution upon the occurrence of certain events specified in the Plan. The reporting person has no voting or investment power over the shares prior to such distribution.</footnote>
+ </footnotes>
+
+ <ownerSignature>
+ <signatureName>/s/Daniel J. Fessenden</signatureName>
+ <signatureDate>2021-04-09</signatureDate>
+ </ownerSignature>
+</ownershipDocument>
diff --git a/src/main/java/edu/brown/cs/student/term/parsing/Transaction.java b/src/main/java/edu/brown/cs/student/term/parsing/Transaction.java
index 718d2a5..2111048 100644
--- a/src/main/java/edu/brown/cs/student/term/parsing/Transaction.java
+++ b/src/main/java/edu/brown/cs/student/term/parsing/Transaction.java
@@ -22,7 +22,7 @@ public class Transaction {
private final String ticker;
/**
- * Constructor that extracts the important info from the document.
+ * Constructor that represents the transaction from the document.
* @param document The document parsed from the xml file.
*/
public Transaction(Document document) {
@@ -34,7 +34,19 @@ public class Transaction {
id = id();
ticker = ticker();
- NodeList tradesAsNodes = document.getElementsByTagName("nonDerivativeTransaction");
+ // There are two types of transactions within the xml - derivative and non derivative.
+ NodeList nonDerivative = document.getElementsByTagName("nonDerivativeTransaction");
+ //NodeList derivative = document.getElementsByTagName("derivativeTransaction");
+ // Processing both of their trades into the trades instance var.
+ processTransactions(nonDerivative);
+ //processTransactions(derivative);
+ }
+
+ /**
+ * Takes a transaction as a node list, then processes and stores them into trades.
+ * @param tradesAsNodes The trades within the transaction as a nodelist.
+ */
+ private void processTransactions(NodeList tradesAsNodes) {
int numTrades = tradesAsNodes.getLength();
for(int i = 0; i < numTrades; i++) {
NodeList tradeValues = getValueList(tradesAsNodes.item(i));
diff --git a/src/test/java/edu/brown/cs/student/TransactionTest.java b/src/test/java/edu/brown/cs/student/TransactionTest.java
index 444263d..f9a00f7 100644
--- a/src/test/java/edu/brown/cs/student/TransactionTest.java
+++ b/src/test/java/edu/brown/cs/student/TransactionTest.java
@@ -67,6 +67,26 @@ public class TransactionTest {
tearDown();
}
+ /*
+ @Test
+ public void derivativeTransaction(){
+ setUp();
+ Document doc = _xmlParser.parse("data/xml_derivative_only_test.xml");
+ assertNotEquals(doc, null);
+
+ // One trades in transaction
+ Transaction transaction = new Transaction(doc);
+ assertEquals(transaction.getTrades().size(), 1);
+
+ // TODO: add more qualities on trade to test...
+ Trade firstTrade = transaction.getTrades().get(0);
+ assertEquals(firstTrade.getNumShares(), 8236);
+ assertEquals(firstTrade.getHolder().getId(), 1463126);
+
+ tearDown();
+ }
+ */
+
@Test
public void noTrades(){
setUp();