diff options
| author | Michael Foiani <sotech117@michaels-mbp-3.lan> | 2021-04-09 16:41:57 -0400 |
|---|---|---|
| committer | Michael Foiani <sotech117@michaels-mbp-3.lan> | 2021-04-09 16:41:57 -0400 |
| commit | c0b15a96c176f01a7199d3c3d107946341af3e50 (patch) | |
| tree | 32f22c50397e07854ff3b07f86fcc4e7760bd552 | |
| parent | fea5c5cb4cc3eb1177cbdc8adb27d254fe2f9db7 (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.xml | 97 | ||||
| -rw-r--r-- | src/main/java/edu/brown/cs/student/term/parsing/Transaction.java | 16 | ||||
| -rw-r--r-- | src/test/java/edu/brown/cs/student/TransactionTest.java | 20 |
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(); |
