Menu

#273 Log all copies for access

Next Release
open
margotc
Access (5)
6
2014-01-06
2012-08-20
No

Add logging of what access copies are exported from the Digital Archives (using the Copy for Access), when and by whom (this can be logged to the database or elsewhere). This information would be used for auditing and security purposes and would need to be retained for some reasonable amount of time.

Discussion

  • Terry O'Neill

    Terry O'Neill - 2012-08-20

    Also include the reason for access. The options might include something like:

    Lending Request
    Access for NAA Staff
    System Testing

     
  • John

    John - 2012-08-20

    I was sure that there was a feature request here somewhere about functionality to take an export from RecordSearch (the lending part) which contained the barcodes of items requested. This export would then be used to select the relevant AIPs for an access request. I cannot find that feature request.

    If we had this sort of functionality in RecordSearch, we could include a 'lending job number', 'client identifier' and any other relevant details (staff have a different identifier than public or agency clients). These Details could be used for automatically logging the 'reason for access'

     
  • John

    John - 2012-08-20

    The "Reasonable amount of time" mentioned in the request would be 5 years. This is set out in the NAA records authority class 18936 (http://naa.gov.au/naaresources/ra/2007-00576124.pdf)

     
  • margotc

    margotc - 2012-10-04
    • assigned_to: nobody --> margotc
     
  • margotc

    margotc - 2013-10-02
    • assigned_to: margotc --> Kirti Chennareddy
    • Group: --> Next Release
     
  • margotc

    margotc - 2013-10-02

    At this stage, copy for access is logged in the database in a table named copy_for_access. Each copy for access request represents a row in the table. A feature request for reporting will be added to provide reporting against copy for access. The reporting component will not require checksum checker to generate reports.

     
  • Kirti Chennareddy

    Testing on DPR testing branch - Ubuntu

    1. Code builds successfully
    2. Ran db update script to add the new table 'copy_for_access'
    3. Started DPR, completed copy for access. records are copied successfully but the database is not updated. Get below error in the console..tried using both methods - dprserver and the Read\Write mount. Same error on both.

    rg.postgresql.util.PSQLException: ERROR: relation "copy_for_access" does not exist
    Position: 13
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363)
    at au.gov.naa.digipres.dpr.dao.CopyForAccessDAO.add(CopyForAccessDAO.java:46)
    at au.gov.naa.digipres.dpr.task.CopyForAccessTask.wrtieAudit(CopyForAccessTask.java:535)
    at au.gov.naa.digipres.dpr.task.CopyForAccessTask.exportAipContents(CopyForAccessTask.java:517)
    at au.gov.naa.digipres.dpr.task.CopyForAccessTask.performCopy(CopyForAccessTask.java:414)
    at au.gov.naa.digipres.dpr.ui.task.CopyForAccessActions$PerformCopyActionProvider.doAction(CopyForAccessActions.java:509)
    at au.gov.naa.digipres.dpr.util.Command.actionPerformed(Command.java:94)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2713)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
    at java.awt.EventQueue.access$000(EventQueue.java:101)
    at java.awt.EventQueue$3.run(EventQueue.java:666)
    at java.awt.EventQueue$3.run(EventQueue.java:664)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:680)
    at java.awt.EventQueue$4.run(EventQueue.java:678)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

     
  • Kirti Chennareddy

    Tested on testing branch, copy for access is successful but copy_for_access table in the database is not updated and below error is displayed in the console,
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at au.gov.naa.digipres.dpr.dao.ConnectionFactory.ConnectionProperties(ConnectionFactory.java:97)
    at au.gov.naa.digipres.dpr.dao.ConnectionFactory.<init>(ConnectionFactory.java:70)
    at au.gov.naa.digipres.dpr.dao.ConnectionFactory.getInstance(ConnectionFactory.java:186)
    at au.gov.naa.digipres.dpr.dao.CopyForAccessDAO.getConnection(CopyForAccessDAO.java:44)
    at au.gov.naa.digipres.dpr.dao.CopyForAccessDAO.add(CopyForAccessDAO.java:54)
    at au.gov.naa.digipres.dpr.task.CopyForAccessTask.wrtieAudit(CopyForAccessTask.java:539)
    at au.gov.naa.digipres.dpr.task.CopyForAccessTask.exportAipContents(CopyForAccessTask.java:520)
    at au.gov.naa.digipres.dpr.task.CopyForAccessTask.performCopy(CopyForAccessTask.java:379)
    at au.gov.naa.digipres.dpr.ui.task.CopyForAccessActions$PerformCopyActionProvider.doAction(CopyForAccessActions.java:509)
    at au.gov.naa.digipres.dpr.util.Command.actionPerformed(Command.java:94)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2713)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
    at java.awt.EventQueue.access$000(EventQueue.java:101)
    at java.awt.EventQueue$3.run(EventQueue.java:666)
    at java.awt.EventQueue$3.run(EventQueue.java:664)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:680)
    at java.awt.EventQueue$4.run(EventQueue.java:678)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)</init>

     
  • Kirti Chennareddy

    • assigned_to: Kirti Chennareddy --> margotc
     
  • Kirti Chennareddy

    Tested on testing branch,

    Below error in console when clicking on 'Perform Copy' button. Files are not copied and database is not updated. Database schema version is 2.5 and copy_for_access table exists,

    Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "rfdfsf"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at au.gov.naa.digipres.dpr.task.CopyForAccessTask.performCopy(CopyForAccessTask.java:332)
    at au.gov.naa.digipres.dpr.ui.task.CopyForAccessActions$PerformCopyActionProvider.doAction(CopyForAccessActions.java:509)
    at au.gov.naa.digipres.dpr.util.Command.actionPerformed(Command.java:94)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2713)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
    at java.awt.EventQueue.access$000(EventQueue.java:101)
    at java.awt.EventQueue$3.run(EventQueue.java:666)
    at java.awt.EventQueue$3.run(EventQueue.java:664)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:680)
    at java.awt.EventQueue$4.run(EventQueue.java:678)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

     

Log in to post a comment.