Git Product home page Git Product logo

finances's Introduction

Finances

Home page

Installation

An application for tracking personal finances using a SQL database.

Requires Java 8.

Database Support

When using MySql or PostgreSQL, the database runs as a separate application and must be installed separately.

When using Derby, the database runs as part of the application and does not require a separate installation.

finances's People

Contributors

jonestimd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

finances's Issues

Error setting category on an import column

  • edit PDF import
  • add column
  • set label
  • set type
  • set format
  • try to set category
java.lang.ClassCastException: io.github.jonestimd.finance.swing.fileimport.ImportFieldTableModel cannot be cast to io.github.jonestimd.swing.table.model.BeanListTableModel
	at io.github.jonestimd.finance.swing.fileimport.ImportFieldsPanel$TransactionTypeCellEditor.getTableCellEditorComponent(ImportFieldsPanel.java:168)
	at javax.swing.JTable.prepareEditor(JTable.java:5784)
	at javax.swing.JTable.editCellAt(JTable.java:3518)
	at io.github.jonestimd.swing.table.DecoratedTable.editCellAt(DecoratedTable.java:259)
	at javax.swing.JTable.processKeyBinding(JTable.java:5290)
	at io.github.jonestimd.swing.table.DecoratedTable.processKeyBinding(DecoratedTable.java:224)
	at javax.swing.JComponent.processKeyBindings(JComponent.java:2943)
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2845)
	at java.awt.Component.processEvent(Component.java:6316)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:834)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1102)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:973)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:799)
	at java.awt.Component.dispatchEventImpl(Component.java:4760)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at org.GNOME.Accessibility.AtkWrapper$6.dispatchEvent(AtkWrapper.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
	at java.awt.Dialog.show(Dialog.java:1084)
	at java.awt.Component.show(Component.java:1671)
	at java.awt.Component.setVisible(Component.java:1623)
	at java.awt.Window.setVisible(Window.java:1014)
	at java.awt.Dialog.setVisible(Dialog.java:1005)
	at io.github.jonestimd.swing.dialog.MessageDialog.setVisible(MessageDialog.java:73)
	at io.github.jonestimd.swing.dialog.ValidatedDialog.setVisible(ValidatedDialog.java:157)
	at io.github.jonestimd.finance.swing.fileimport.FileImportsDialog.showDialog(FileImportsDialog.java:165)
	at io.github.jonestimd.finance.swing.transaction.ImportFileMenuFactory$1.displayDialog(ImportFileMenuFactory.java:84)
	at io.github.jonestimd.swing.action.DialogAction$InitializeTask.lambda$updateUI$0(DialogAction.java:103)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at org.GNOME.Accessibility.AtkWrapper$6.dispatchEvent(AtkWrapper.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Reduce basis for "Return of Capital"

"Return of Capital" on a security reduces the cost basis for that security.

  • need to assign lots?
  • update cost basis calculation for securities views

Error updating multiple details in a transaction

Change the category of multiple details and save:

java.lang.reflect.UndeclaredThrowableException
	at com.sun.proxy.$Proxy55.merge(Unknown Source)
	at io.github.jonestimd.finance.operations.TransactionOperationsImpl.saveTransaction(TransactionOperationsImpl.java:117)
	at java.util.ArrayList.forEach(ArrayList.java:1249)
	at io.github.jonestimd.finance.operations.TransactionOperationsImpl.updateTransactions(TransactionOperationsImpl.java:107)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.github.jonestimd.hibernate.TransactionInterceptor.invoke(TransactionInterceptor.java:50)
	at com.sun.proxy.$Proxy66.updateTransactions(Unknown Source)
	at io.github.jonestimd.finance.service.TransactionServiceImpl.updateTransactions(TransactionServiceImpl.java:64)
	at io.github.jonestimd.finance.swing.transaction.action.SaveAllAction.performTask(SaveAllAction.java:80)
	at io.github.jonestimd.finance.swing.transaction.action.SaveAllAction.performTask(SaveAllAction.java:44)
	at io.github.jonestimd.swing.BackgroundTask$1.performTask(BackgroundTask.java:117)
	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
	at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1582)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.github.jonestimd.hibernate.TransactionInterceptor.invoke(TransactionInterceptor.java:70)
	... 20 more
Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [io.github.jonestimd.finance.domain.transaction.TransactionDetail#34222]
	at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:338)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:186)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:886)
	at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:868)
	at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:277)
	at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:350)
	at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:293)
	at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:161)
	at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:379)
	at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:319)
	at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:296)
	at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:161)
	at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:118)
	at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:474)
	at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:343)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:186)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:85)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:876)
	at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:858)
	at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:863)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356)
	at com.sun.proxy.$Proxy68.merge(Unknown Source)
	at io.github.jonestimd.finance.dao.hibernate.HibernateDao.merge(HibernateDao.java:98)
	... 25 more

Security Lot allocation

  • Show all lots (include lots with no available shares)
  • Show basis for allocated lots
    • per lot
    • total
  • Add sales lot dialog for purchase

Optimistic lock error updating multiple related transactions

If a transaction contains 2 transfers to the same account, updating the 2 transfers from the other account (e.g. marking them both cleared) causes an optimistic lock error.

java.lang.reflect.UndeclaredThrowableException
	at com.sun.proxy.$Proxy100.merge(Unknown Source)
	at io.github.jonestimd.finance.operations.TransactionOperationsImpl.saveTransaction(TransactionOperationsImpl.java:122)
	at java.util.ArrayList.forEach(ArrayList.java:1259)
	at io.github.jonestimd.finance.operations.TransactionOperationsImpl.updateTransactions(TransactionOperationsImpl.java:112)
	at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.github.jonestimd.hibernate.TransactionInterceptor.invoke(TransactionInterceptor.java:50)
	at com.sun.proxy.$Proxy111.updateTransactions(Unknown Source)
	at io.github.jonestimd.finance.service.TransactionServiceImpl.updateTransactions(TransactionServiceImpl.java:64)
	at io.github.jonestimd.finance.swing.transaction.action.SaveAllAction.performTask(SaveAllAction.java:80)
	at io.github.jonestimd.finance.swing.transaction.action.SaveAllAction.performTask(SaveAllAction.java:44)
	at io.github.jonestimd.swing.BackgroundTask$1.performTask(BackgroundTask.java:117)
	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
	at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1596)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.GeneratedMethodAccessor58.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.github.jonestimd.hibernate.TransactionInterceptor.invoke(TransactionInterceptor.java:70)
	... 19 more
Caused by: javax.persistence.OptimisticLockException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [io.github.jonestimd.finance.domain.transaction.Transaction#33090]
	at org.hibernate.internal.ExceptionConverterImpl.wrapStaleStateException(ExceptionConverterImpl.java:223)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:93)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:852)
	at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:815)
	at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:261)
	at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:510)
	at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:434)
	at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220)
	at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:153)
	at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:518)
	at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:346)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:172)
	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:842)
	at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:815)
	at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:261)
	at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:510)
	at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:434)
	at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220)
	at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:153)
	at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:518)
	at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:346)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:172)
	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:842)
	at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:815)
	at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:261)
	at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:510)
	at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:434)
	at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220)
	at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:543)
	at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:474)
	at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:437)
	at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220)
	at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:153)
	at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:518)
	at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:346)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:172)
	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:842)
	at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:815)
	at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:261)
	at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:510)
	at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:434)
	at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220)
	at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:153)
	at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:518)
	at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:346)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:172)
	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:842)
	at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:815)
	at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:261)
	at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:510)
	at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:434)
	at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220)
	at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:153)
	at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:518)
	at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:346)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:172)
	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:842)
	at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:815)
	at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:261)
	at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:510)
	at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:434)
	at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220)
	at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:543)
	at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:474)
	at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:437)
	at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220)
	at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:153)
	at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:518)
	at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:346)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:172)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:70)
	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:822)
	at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:809)
	at sun.reflect.GeneratedMethodAccessor59.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:351)
	at com.sun.proxy.$Proxy114.merge(Unknown Source)
	at io.github.jonestimd.finance.dao.hibernate.HibernateDao.merge(HibernateDao.java:98)
	... 23 more
Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [io.github.jonestimd.finance.domain.transaction.Transaction#33090]
	at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:341)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:172)
	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:842)
	... 105 more

File import

Need a UI for creating/modifying file import configurations

Error editing filtered transactions

When transactions are filtered changing the matching field on a transaction causes the following exception.
Example: filter on payee name and modify the payee to a value that doesn't match the filter.

java.lang.IllegalArgumentException: Row index out of range
	at javax.swing.JTable.boundRow(JTable.java:2146)
	at javax.swing.JTable.setRowSelectionInterval(JTable.java:2169)
	at io.github.jonestimd.swing.table.DecoratedTable.selectViewRow(DecoratedTable.java:223)
	at io.github.jonestimd.swing.table.DecoratedTable.processKeyBinding(DecoratedTable.java:217)
	at javax.swing.JComponent.processKeyBindings(JComponent.java:2943)
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2845)
	at java.awt.Component.processEvent(Component.java:6316)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:835)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1103)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:974)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:800)
	at java.awt.Component.dispatchEventImpl(Component.java:4760)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Error saving transaction with multiple changes

  • mark transaction cleared
  • modify detail
  • save
java.lang.reflect.UndeclaredThrowableException
	at com.sun.proxy.$Proxy100.merge(Unknown Source)
	at io.github.jonestimd.finance.operations.TransactionOperationsImpl.saveTransaction(TransactionOperationsImpl.java:125)
	at java.util.ArrayList.forEach(ArrayList.java:1259)
	at io.github.jonestimd.finance.operations.TransactionOperationsImpl.updateTransactions(TransactionOperationsImpl.java:115)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.github.jonestimd.hibernate.TransactionInterceptor.invoke(TransactionInterceptor.java:50)
	at com.sun.proxy.$Proxy111.updateTransactions(Unknown Source)
	at io.github.jonestimd.finance.service.TransactionServiceImpl.updateTransactions(TransactionServiceImpl.java:64)
	at io.github.jonestimd.finance.swing.transaction.action.SaveAllAction.performTask(SaveAllAction.java:80)
	at io.github.jonestimd.finance.swing.transaction.action.SaveAllAction.performTask(SaveAllAction.java:44)
	at io.github.jonestimd.swing.BackgroundTask$1.performTask(BackgroundTask.java:117)
	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
	at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1596)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.github.jonestimd.hibernate.TransactionInterceptor.invoke(TransactionInterceptor.java:70)
	... 20 more
Caused by: javax.persistence.OptimisticLockException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [io.github.jonestimd.finance.domain.transaction.Transaction#29698]
	at org.hibernate.internal.ExceptionConverterImpl.wrapStaleStateException(ExceptionConverterImpl.java:223)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:93)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:833)
	at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:809)
	at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:351)
	at com.sun.proxy.$Proxy114.merge(Unknown Source)
	at io.github.jonestimd.finance.dao.hibernate.HibernateDao.merge(HibernateDao.java:98)
	... 24 more
Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [io.github.jonestimd.finance.domain.transaction.Transaction#29698]
	at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:341)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:172)
	at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:70)
	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107)
	at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:822)
	... 31 more

Import uses old configuration

After editing an import (change to/from single payee) the import still uses the old setting until the app is restarted.

Error updating UI when adding a transfer detail to a transaction

Error when saving a transaction with an added transfer detail. The detail is saved but the UI doesn't update.

java.lang.NullPointerException: element cannot be mapped to a null key
	at java.util.Objects.requireNonNull(Objects.java:228)
	at java.util.stream.Collectors.lambda$groupingBy$45(Collectors.java:907)
	at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
	at io.github.jonestimd.finance.domain.event.DomainEvent.index(DomainEvent.java:45)
	at io.github.jonestimd.finance.domain.event.DomainEvent.<init>(DomainEvent.java:64)
	at io.github.jonestimd.finance.domain.event.TransactionEvent.<init>(TransactionEvent.java:31)
	at io.github.jonestimd.finance.swing.transaction.action.CommitAction.removeStaleEntities(CommitAction.java:109)
	at io.github.jonestimd.finance.swing.transaction.action.CommitAction.updateUI(CommitAction.java:91)
	at io.github.jonestimd.finance.swing.transaction.action.CommitAction.updateUI(CommitAction.java:45)
	at io.github.jonestimd.swing.BackgroundTask$1.updateUI(BackgroundTask.java:122)
	at io.github.jonestimd.swing.BackgroundTask.lambda$run$0(BackgroundTask.java:161)
	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:774)
	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:750)
	at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:456)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at org.GNOME.Accessibility.AtkWrapper$6.dispatchEvent(AtkWrapper.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Support transfering security shares between accounts

Need to retain original purchase date and cost basis

  • Support related detail for security transfer
    • allow non-zero asset quantity
    • negative shares on transfer out
  • All security lots link to purchase (or shares in) in original account
    • lots for transfer out (shares < 0)
    • lots for sale
    • lots for shares out
  • Update calculation of remaining shares on purchase to account for transfers
    • original account: purchase shares - sum(sales/transfers from the account)
    • transfer account: sum(shares transferred to the account) - sum(sales/transfers from the account)

security transfer

Add global find

Add an action for searching all accounts for transactions that match some criteria and displaying the results.

Error converting category to a transfer

Changing the category of an existing transaction detail to a transfer causes the following exception:

	at java.util.Objects.requireNonNull(Objects.java:228)
	at java.util.stream.Collectors.lambda$groupingBy$45(Collectors.java:907)
	at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
	at io.github.jonestimd.finance.domain.event.DomainEvent.index(DomainEvent.java:45)
	at io.github.jonestimd.finance.domain.event.DomainEvent.<init>(DomainEvent.java:64)
	at io.github.jonestimd.finance.domain.event.TransactionEvent.<init>(TransactionEvent.java:31)
	at io.github.jonestimd.finance.swing.transaction.action.CommitAction.removeStaleEntities(CommitAction.java:109)
	at io.github.jonestimd.finance.swing.transaction.action.CommitAction.updateUI(CommitAction.java:91)
	at io.github.jonestimd.finance.swing.transaction.action.CommitAction.updateUI(CommitAction.java:45)
	at io.github.jonestimd.swing.BackgroundTask$1.updateUI(BackgroundTask.java:122)
	at io.github.jonestimd.swing.BackgroundTask.lambda$run$0(BackgroundTask.java:161)
	at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760)
	at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736)
	at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:442)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Error deleting a transfer detail from a transaction

When saving the transaction:

java.lang.reflect.UndeclaredThrowableException
	at com.sun.proxy.$Proxy105.deleteSaleLots(Unknown Source)
	at io.github.jonestimd.finance.operations.TransactionOperationsImpl.deleteDetail(TransactionOperationsImpl.java:151)
	at io.github.jonestimd.finance.operations.TransactionOperationsImpl.deleteDetail(TransactionOperationsImpl.java:158)
	at io.github.jonestimd.finance.operations.TransactionOperationsImpl.saveTransaction(TransactionOperationsImpl.java:127)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.github.jonestimd.hibernate.TransactionInterceptor.invoke(TransactionInterceptor.java:50)
	at com.sun.proxy.$Proxy111.saveTransaction(Unknown Source)
	at io.github.jonestimd.finance.service.TransactionServiceImpl.saveTransaction(TransactionServiceImpl.java:57)
	at io.github.jonestimd.finance.swing.transaction.action.CommitAction.performTask(CommitAction.java:87)
	at io.github.jonestimd.finance.swing.transaction.action.CommitAction.performTask(CommitAction.java:45)
	at io.github.jonestimd.swing.BackgroundTask$1.performTask(BackgroundTask.java:117)
	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
	at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1596)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.github.jonestimd.hibernate.TransactionInterceptor.invoke(TransactionInterceptor.java:70)
	... 20 more
Caused by: java.lang.NullPointerException
	at io.github.jonestimd.finance.dao.hibernate.SecuritySummaryEventHandler.changed(SecuritySummaryEventHandler.java:90)
	at io.github.jonestimd.finance.dao.hibernate.CompositeEventHandler.changed(CompositeEventHandler.java:56)
	at io.github.jonestimd.finance.dao.hibernate.DomainEventInterceptor.onFlushDirty(DomainEventInterceptor.java:50)
	at io.github.jonestimd.hibernate.InterceptorChain.onFlushDirty(InterceptorChain.java:46)
	at org.hibernate.event.internal.DefaultFlushEntityEventListener.invokeInterceptor(DefaultFlushEntityEventListener.java:374)
	at org.hibernate.event.internal.DefaultFlushEntityEventListener.handleInterception(DefaultFlushEntityEventListener.java:351)
	at org.hibernate.event.internal.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:302)
	at org.hibernate.event.internal.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:171)
	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107)
	at org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:229)
	at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:93)
	at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:50)
	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107)
	at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1356)
	at org.hibernate.internal.SessionImpl.executeUpdate(SessionImpl.java:1460)
	at org.hibernate.query.internal.AbstractProducedQuery.doExecuteUpdate(AbstractProducedQuery.java:1714)
	at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1696)
	at io.github.jonestimd.finance.dao.hibernate.SecurityLotDaoImpl.deleteSaleLots(SecurityLotDaoImpl.java:56)
	... 25 more

Support tags on accounts and categories

Allow custom reporting tags for accounts and categories.
For example:

  • tax exempt, tax deferred account (or additional account types)
  • assign tax form/line to categories

Error adding category on CSV import

java.lang.NullPointerException
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:770)
	at com.google.common.base.Splitter.splitToList(Splitter.java:408)
	at io.github.jonestimd.finance.swing.fileimport.TransactionTypeColumnAdapter.lambda$static$0(TransactionTypeColumnAdapter.java:49)
	at io.github.jonestimd.swing.table.model.FunctionColumnAdapter.getValue(FunctionColumnAdapter.java:42)
	at io.github.jonestimd.swing.table.model.BeanTableAdapter.setValue(BeanTableAdapter.java:105)
	at io.github.jonestimd.swing.table.model.BeanListTableModel.setValue(BeanListTableModel.java:132)
	at io.github.jonestimd.swing.table.model.BufferedBeanListTableModel.setValue(BufferedBeanListTableModel.java:72)
	at io.github.jonestimd.swing.table.model.BeanListTableModel.setValueAt(BeanListTableModel.java:126)
	at javax.swing.JTable.setValueAt(JTable.java:2744)
	at javax.swing.JTable.editingStopped(JTable.java:4729)
	at javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:141)
	at io.github.jonestimd.swing.table.PopupTableCellEditor.fireEditingStopped(PopupTableCellEditor.java:88)
	at io.github.jonestimd.swing.table.PopupListTableCellEditor.commitEdit(PopupListTableCellEditor.java:71)
	at io.github.jonestimd.swing.component.ListField.processKeyBinding(ListField.java:154)
	at javax.swing.JComponent.processKeyBindings(JComponent.java:2929)
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2845)
	at java.awt.Component.processEvent(Component.java:6316)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:834)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1102)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:973)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:799)
	at java.awt.Component.dispatchEventImpl(Component.java:4760)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at org.GNOME.Accessibility.AtkWrapper$6.dispatchEvent(AtkWrapper.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
	at java.awt.Dialog.show(Dialog.java:1084)
	at java.awt.Component.show(Component.java:1671)
	at java.awt.Component.setVisible(Component.java:1623)
	at java.awt.Window.setVisible(Window.java:1014)
	at java.awt.Dialog.setVisible(Dialog.java:1005)
	at io.github.jonestimd.swing.dialog.MessageDialog.setVisible(MessageDialog.java:73)
	at io.github.jonestimd.swing.dialog.ValidatedDialog.setVisible(ValidatedDialog.java:157)
	at io.github.jonestimd.finance.swing.fileimport.FileImportsDialog.showDialog(FileImportsDialog.java:165)
	at io.github.jonestimd.finance.swing.transaction.ImportFileMenuFactory$1.displayDialog(ImportFileMenuFactory.java:84)
	at io.github.jonestimd.swing.action.DialogAction$InitializeTask.lambda$updateUI$0(DialogAction.java:103)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at org.GNOME.Accessibility.AtkWrapper$6.dispatchEvent(AtkWrapper.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Can't add a new account

The account type should be editable for a new account but it is not. Can't save the account because the type is required and can't be set.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.