Giter Site home page Giter Site logo

specify / specify6 Goto Github PK

View Code? Open in Web Editor NEW
14.0 17.0 6.0 449.84 MB

Source Code for Specify 6, Biological Collections Management Platform

Home Page: https://specifysoftware.org

License: GNU General Public License v2.0

HTML 4.85% Shell 0.29% Haskell 0.01% CSS 0.02% Java 94.69% XSLT 0.15% PHP 0.01%
biodiversity-informatics museum-collection-specimens museum curation collection specimen biorepository biodiversity species specify

specify6's Introduction

Specify 6

Build Status

Specify Software is a product of the Specify Collections Consortium that is funded by its member institutions. Consortium Founding Members include: University of Michigan, University of Florida, Denmark Consortium of Museums, and the University of Kansas. The Consortium operates under the non-profit U.S. tax status of the University of Kansas Center for Research. Specify was supported previously by multiple awards from the U.S. National Science Foundation.

Specify 6 Copyright © 2023 University of Kansas Center for Research. Specify comes with ABSOLUTELY NO WARRANTY. This is free software licensed under GNU General Public License 2 (GPL2).

Specify Collections Consortium
Biodiversity Institute
University of Kansas
1345 Jayhawk Blvd.
Lawrence, KS USA 66045

Building Specify 6

Building Specify 6 requires the JDK v1.8 and Apache Ant v1.9.3.

The following build targets are available:

  • ant compile-nonmac - Compile Java source code to target platforms other than Mac OSX.

  • ant compile-mac - Compile Java source code targeting Mac OSX.

  • ant make-jar-nonmac - Assemble JAR file for non Mac targets.

  • ant make-jar-mac - Assemble JAR file for Mac targets.

  • ant generate-datamodel - Generate config/specify_datamodel.xml. This target is depended upon by the packaging targets and will be run automatically for packaging. It needs to be run manually, however, to permit Specify to run from within an IDE.

  • ant run-specify-nonmac - Execute the main Specify application for non Mac systems.

  • ant run-specify-mac - Execute the main Specify application on Mac systems.

All build outputs will be found in the build/ directory except for config/specify_datamodel.xml.

Packaging Specify 6

Packaging Specify 6 requires Install4J v8.0 (evaluation or licensed).

The path to Install4J must be provided to the Ant build through the -Dinstall4j.dir=/path/to/install4j parameter unless Install4J is at the default location $HOME/install4j8.0.11.

The following Ant build targets are available for packaging:

  • ant package-nonmac - Produce installers for Windows and Linux 64 and 32 bit systems.

  • ant package-mac - Produce installers for Mac systems.

  • ant package-all - Produce installers for all systems plus the updates.xml auto-updating information.

All packaging products will be found in the packages/ directory.

Code Signing

The Windows and Mac installers can be code signed by passing the following properties to Ant:

  • code.signing set to "true" to enable code signing.

  • win.pkcs12 with the path to the Windows code signing certificate with root and intermediate certificates.

  • win-keystore-password with the encryption password for the above.

  • mac.pkcs12 with the path to the Mac code signing key.

  • mac-keystore-password with the encryption password for the above.

For example:

ant package-all \
    -Dcode.signing=true \
    -Dwin.pkcs12=/mnt/biteme/BI/Specify/Specify6/Certificates/WindowsCertificates/certwithroot.pfx \
    -Dwin-keystore-password=SECRET \
    -Dmac.pkcs12=/mnt/biteme/BI/Specify/Specify6/Certificates/MacOsCertificates/SpecifyMacOSCert.p12 \
    -Dmac-keystore-password=SECRET

Automated Builds

This repository is equipped with automated builds using GitHub actions. All commits pushed to the repository will result in test builds that can be found under the actions tab with downloadable package artifacts for testing that persist for 90 days. If a commit is tagged and pushed the repository, a GitHub draft prerelease with the name of the tag will be automatically created and have the build output packages attached.

Proposed Release Process (starting with v6.7.00)

A process for producing final releases could be as follows:

  1. Tag the commit to be released with the version number plus rcX, where X is the release candidate number.

  2. The automated build system will produce a prerelease as described above.

  3. The external packages can be downloaded and given final testing.

  4. If all is well, retag the commit with the plain version number.

  5. Using the GitHub UI, remove the prerelease status from the resulting automatic build prerelease.

  6. Download the external installer packages and updates.xml.

  7. In the account [email protected] create a new directory named XYZ where X, Y, and Z come from the version number X.Y.Z.

  8. Upload the installer packages and updates.xml to the newly created directory.

  9. Upload the readme.html for the new version to the new directory with the filename relnotes.html.

  10. Take a copy of index.html from a previous version folder and update it with the current version number and place that in the new directory.

  11. To make the release live for auto updates, copy the contents of the new version directory to the home directoryanalytics

specify6's People

Contributors

benanhalt avatar grantfitzsimmons avatar ianengelbrecht avatar maxpatiiuk avatar melton-jason avatar mokelly2 avatar rspears avatar timo11 avatar tlammer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

specify6's Issues

BE: erroneous mapping requirement

For the attached query, I am unable to use the Batch Editor function without adding the field CO.text1, which doesn't seem to make any sense. I also get the error below.

batcheditorerror

BatchEditorQueryIssue.zip

class_name: edu.ku.brc.specify.tasks.WorkbenchTask
comments:

stack_trace:
java.lang.NullPointerException
at edu.ku.brc.specify.tasks.subpane.wb.WorkbenchPaneSS.buildValidator(Unknown Source)
at edu.ku.brc.specify.tasks.subpane.wb.WorkbenchPaneSS.buildValidator(Unknown Source)
at edu.ku.brc.specify.tasks.subpane.wb.WorkbenchPaneSS.(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator.doIt(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator.access$100(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator$1.doInBackground(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator$1.doInBackground(Unknown Source)
at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

task_name: BatchEdit
title:
id: fa341824-173a-0988-6119-3b90cafcd922--16009a747b0
os_name: Windows 7
os_version: 6.1
java_version: 1.8.0_152
java_vendor: Oracle Corporation
max_memory: 778502144
used_memory: 423004944
user_name: g778g663
ip: 169.254.88.15
app_version: 6.6.06
collection: CReAC
discipline: Entomology
division: Entomology
institution: KU Biodiversity Institute
Collection_number: 1337872530.67
Discipline_number: 1337872530.34
Division_number: 1337872530
Institution_number: 1337872526.99
ISA_number: 2014548
email: [email protected]

WorkBench Validations are not updating immediately

Many times when I make changes to invalid cells, they remain highlighted red with the previous issue showing up when you mouse-over them. If you save, close the dataset, and reopen it, they will no longer be red.

BE: Autofill Cat #s can't batch edit

If your cat #s are set to autofill, then the BE will act as the WorkBench does and will tell you that the cells are invalid, and must be blank because they are set to autofill. This doesn't make sense, because you aren't adding new records, you're just making changes to existing records.

If there is an issue with the data in the database already, when changes are applied the screen goes to the WB upload screen

If there is an issue with the data in the batch set, such as number of digits in the coords or missing data, there is no warning until you try to apply changes, then it takes you to the Workbench upload screen (split screen like in the image attached), but the bottom panel is off of the screen and there is no scroll bar, so you don't know what is going on unless you Macguyver a way to see it.
I did this in a Rancho Santa Ana database. I ran the Standard Label Query, added Barcode to the query and got the attached images. If you want to reduce the wait, you can make barcode contain 0031. It won't have all of the messages, but it will have the coord length issues.
be2
be1

WorkBench datasets that include fields which are not defined in trees throw error

If you try to import or run a dataset that includes any tree fields (such as subspecies) that have not yet been added in the tree definition cause the following error, and will not allow you to use the workbench:

class_name: edu.ku.brc.specify.tasks.WorkbenchTask
comments:

stack_trace:
java.lang.NullPointerException
at edu.ku.brc.specify.tasks.subpane.wb.WorkbenchPaneSS.buildValidator(WorkbenchPaneSS.java:4303)
at edu.ku.brc.specify.tasks.subpane.wb.WorkbenchPaneSS.buildValidator(WorkbenchPaneSS.java:4243)
at edu.ku.brc.specify.tasks.subpane.wb.WorkbenchPaneSS.(WorkbenchPaneSS.java:418)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator.doIt(WorkbenchEditorCreator.java:214)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator.access$100(WorkbenchEditorCreator.java:39)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator$1.doInBackground(WorkbenchEditorCreator.java:71)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator$1.doInBackground(WorkbenchEditorCreator.java:67)
at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

task_name: Workbench
title:
id: fa341824-173a-0988-6119-3b90cafcd922--160e9b03740
os_name: Windows 7
os_version: 6.1
java_version: 1.8.0_152
java_vendor: Oracle Corporation
max_memory: 954728448
used_memory: 298214368
user_name: g778g663
ip: 169.254.88.15
app_version: 6.6.06
collection: Invertebrate Paleontology
discipline: Invertebrate Paleontology
division: Division
institution: Specify Software Collections
Collection_number: 1515172189.1353
Discipline_number: 1515172188.4338
Division_number: 1515435901.9519
Institution_number: 1515104796.7204
email: [email protected]

BE: Can delete grayed-out data

There are columns/fields that have grayed out data (either required or shouldn't be able to be edited). If you highlight one of those fields then click the yellow pencil button, it will delete that data, and then you can apply/save those changes.

Need to fix preparation guids

The update guid routine that runs (or used to run) when schema updates happened did not update prep guids. Next release needs to include a fix for empty and duplicated prep guids. (Possibly other tables have the same problem.)

BE: Changes not applied when geography removed

If I remove geography from a locality record in batch edit, I get a message saying time ran out and edits were not applied.
There is no explanation as to why the changes were not applied.

Locality query and collection object queries

Can't upload dataset with certain fields

Whenever I try to upload a recordset with the CO Citation field, I get the following exception and WorkBench stops the upload:

edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: org.hibernate.PropertyValueException: not-null property references a null or transient value: edu.ku.brc.specify.datamodel.ReferenceWork.title
edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: org.hibernate.PropertyValueException: not-null property references a null or transient value: edu.ku.brc.specify.datamodel.ReferenceWork.titleedu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: org.hibernate.PropertyValueException: not-null property references a null or transient value: edu.ku.brc.specify.datamodel.ReferenceWork.title
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.doWrite(UploadTable.java:6097)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.doWrite(UploadTable.java:6097) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.doWrite(UploadTable.java:6097)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRowOrNot(UploadTable.java:5780)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRowOrNot(UploadTable.java:5780) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRowOrNot(UploadTable.java:5780)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRow(UploadTable.java:5619)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRow(UploadTable.java:5619) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRow(UploadTable.java:5619)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.writeRow(Uploader.java:5463)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.writeRow(Uploader.java:5463) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.writeRow(Uploader.java:5463)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.uploadRow(Uploader.java:5427)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.uploadRow(Uploader.java:5427) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.uploadRow(Uploader.java:5427)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4430)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4430) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4430)
at javax.swing.SwingWorker$1.call(Unknown Source)
at javax.swing.SwingWorker$1.call(Unknown Source) at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source) at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at java.lang.Thread.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: edu.ku.brc.specify.datamodel.ReferenceWork.title
Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: edu.ku.brc.specify.datamodel.ReferenceWork.titleCaused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: edu.ku.brc.specify.datamodel.ReferenceWork.title
at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)
at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72) at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507) at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495)
at edu.ku.brc.specify.dbsupport.HibernateDataProviderSession.saveOrUpdate(HibernateDataProviderSession.java:549)
at edu.ku.brc.specify.dbsupport.HibernateDataProviderSession.saveOrUpdate(HibernateDataProviderSession.java:549) at edu.ku.brc.specify.dbsupport.HibernateDataProviderSession.saveOrUpdate(HibernateDataProviderSession.java:549)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.doWrite(UploadTable.java:6066)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.doWrite(UploadTable.java:6066) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.doWrite(UploadTable.java:6066)
... 11 more
... 11 more ... 11 more

BE: Partial date fields not editable

While you can edit full date fields in the BE, you can't edit partial date fields (like the year field, month field, and day field). Users may want to use this feature in case they have to make changes to several records for just one of those fields and it might be easier if they are able to edit a single date part field.

BE: If Series is turned on, can't go to batch editing

if you turn on Series when query results come in and try to switch to batch edit mode, it returns you to the query page with no explanation and this in the error log:
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 7java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 7
at java.util.Vector.get(Unknown Source)
at java.util.Vector.get(Unknown Source) at java.util.Vector.get(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchTask.loadRsIntoWb(WorkbenchTask.java:1858)
at edu.ku.brc.specify.tasks.WorkbenchTask.loadRsIntoWb(WorkbenchTask.java:1858) at edu.ku.brc.specify.tasks.WorkbenchTask.loadRsIntoWb(WorkbenchTask.java:1858)
at edu.ku.brc.specify.tasks.WorkbenchTask$1.construct(WorkbenchTask.java:2031)
at edu.ku.brc.specify.tasks.WorkbenchTask$1.construct(WorkbenchTask.java:2031) at edu.ku.brc.specify.tasks.WorkbenchTask$1.construct(WorkbenchTask.java:2031)
at edu.ku.brc.helpers.SwingWorker$2.run(SwingWorker.java:133)
at edu.ku.brc.helpers.SwingWorker$2.run(SwingWorker.java:133) at edu.ku.brc.helpers.SwingWorker$2.run(SwingWorker.java:133)
at java.lang.Thread.run(Unknown Source)
at java.lang.Thread.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

BE: Error cells don't completely correct

If I clear a geography level that is enforced, the cell is flagged as invalid and edited.
If I select the cell and undo the edit, the highlighting clears, but the invalid cell count is not decremented, and won't decrement, and the batch can never be applied.
(If I type something in the cell instead of un-doing, there is no problem.)

BE gives error in paleo db

When batch editing a query in a paleo db regardless of what table is being queried, the following error message occurs:

java.lang.NullPointerException
at edu.ku.brc.specify.tasks.WorkbenchTask.getDataType(Unknown Source)
at edu.ku.brc.specify.tasks.subpane.wb.FormPane.createUIComp(Unknown Source)
at edu.ku.brc.specify.tasks.subpane.wb.FormPane.buildUI(Unknown Source)
at edu.ku.brc.specify.tasks.subpane.wb.FormPane.(Unknown Source)
at edu.ku.brc.specify.tasks.subpane.wb.WorkbenchPaneSS.(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator.doIt(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator.access$100(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator$1.doInBackground(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator$1.doInBackground(Unknown Source)
at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

I used the 'demopaleo' db under demo databases in the specify 6 shared drive

BE: Can ctrl + v (paste) into grayed-out columns

Although you cannot right click and paste into these columns, you can use the shortcut ctrl+v to do so. Since grayed-out fields should not be editable, this shouldn't be possible. Disabling shortcut keys in the BE might fix this, but it would also inconvenience people who would prefer to use them over the right click options when dealing with non grayed-out fields.

Error in WorkBench when uploading multiple Collectors

When trying to upload with multiple collectors in the workbench, you may get the exception below. If you continue to attempt uploading, you will get a slightly different exception, also below:
edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: java.lang.NullPointerException
edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: java.lang.NullPointerExceptionedu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: java.lang.NullPointerException
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5011)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5011) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5011)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4440)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4440) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4440)
at javax.swing.SwingWorker$1.call(Unknown Source)
at javax.swing.SwingWorker$1.call(Unknown Source) at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source) at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at java.lang.Thread.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
Caused by: java.lang.NullPointerExceptionCaused by: java.lang.NullPointerException
at java.lang.Integer.compareTo(Unknown Source)
at java.lang.Integer.compareTo(Unknown Source) at java.lang.Integer.compareTo(Unknown Source)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadedRecordInfo.compareTo(UploadedRecordInfo.java:105)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadedRecordInfo.compareTo(UploadedRecordInfo.java:105) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadedRecordInfo.compareTo(UploadedRecordInfo.java:105)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadedRecordInfo.compareTo(UploadedRecordInfo.java:33)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadedRecordInfo.compareTo(UploadedRecordInfo.java:33) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadedRecordInfo.compareTo(UploadedRecordInfo.java:33)
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.compare(Unknown Source) at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap$NavigableSubMap.tooLow(Unknown Source)
at java.util.TreeMap$NavigableSubMap.tooLow(Unknown Source) at java.util.TreeMap$NavigableSubMap.tooLow(Unknown Source)
at java.util.TreeMap$NavigableSubMap.inRange(Unknown Source)
at java.util.TreeMap$NavigableSubMap.inRange(Unknown Source) at java.util.TreeMap$NavigableSubMap.inRange(Unknown Source)
at java.util.TreeMap$NavigableSubMap.containsKey(Unknown Source)
at java.util.TreeMap$NavigableSubMap.containsKey(Unknown Source) at java.util.TreeMap$NavigableSubMap.containsKey(Unknown Source)
at java.util.TreeSet.contains(Unknown Source)
at java.util.TreeSet.contains(Unknown Source) at java.util.TreeSet.contains(Unknown Source)
at java.util.AbstractSet.removeAll(Unknown Source)
at java.util.AbstractSet.removeAll(Unknown Source) at java.util.AbstractSet.removeAll(Unknown Source)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.abortRow(UploadTable.java:6214)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.abortRow(UploadTable.java:6214) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.abortRow(UploadTable.java:6214)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5003)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5003) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5003)
... 7 more
... 7 more ... 7 more

Error 2:
edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: java.util.ConcurrentModificationException
edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: java.util.ConcurrentModificationExceptionedu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: java.util.ConcurrentModificationException
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5011)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5011) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5011)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4440)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4440) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4440)
at javax.swing.SwingWorker$1.call(Unknown Source)
at javax.swing.SwingWorker$1.call(Unknown Source) at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source) at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at java.lang.Thread.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
Caused by: java.util.ConcurrentModificationException
Caused by: java.util.ConcurrentModificationExceptionCaused by: java.util.ConcurrentModificationException
at java.util.TreeMap$NavigableSubMap$SubMapIterator.nextEntry(Unknown Source)
at java.util.TreeMap$NavigableSubMap$SubMapIterator.nextEntry(Unknown Source) at java.util.TreeMap$NavigableSubMap$SubMapIterator.nextEntry(Unknown Source)
at java.util.TreeMap$NavigableSubMap$SubMapKeyIterator.next(Unknown Source)
at java.util.TreeMap$NavigableSubMap$SubMapKeyIterator.next(Unknown Source) at java.util.TreeMap$NavigableSubMap$SubMapKeyIterator.next(Unknown Source)
at java.util.AbstractSet.removeAll(Unknown Source)
at java.util.AbstractSet.removeAll(Unknown Source) at java.util.AbstractSet.removeAll(Unknown Source)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.abortRow(UploadTable.java:6214)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.abortRow(UploadTable.java:6214) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.abortRow(UploadTable.java:6214)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5003)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5003) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.abortRow(Uploader.java:5003)
... 7 more
... 7 more ... 7 more

BE: CO.ProjectNumber not being read by BE

The CO.ProjectNumber field in PRI's database is a required field. However, the Batch Editor isn't able to find it for some reason, even though it's included in the query (I checked the schema config to make sure), and it won't let me batch edit the query results. The query is attached below.

ProjectNumberQueryBug.zip

BE: If Latitude and Longitude are in the mapping and values are empty, changes to the batch cannot be applied

  1. Do a CO query that includes latitude 1 and longitude 1
  2. Switch to Batch edit mode
  3. There must be records with the latitude and longitude values blank
  4. make a change to a non-locality field

The latitude and longitude cells get highlighted as changed and when the changes are Applied, The message says "Time ran out and edits were not applied. Click 'OK' to resume data editing."
and this message appears in the error log:
Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: edu.ku.brc.specify.datamodel.Locality.localityName
Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: edu.ku.brc.specify.datamodel.Locality.localityNameCaused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: edu.ku.brc.specify.datamodel.Locality.localityName
at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)
at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72) at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507) at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495)
at edu.ku.brc.specify.dbsupport.HibernateDataProviderSession.saveOrUpdate(HibernateDataProviderSession.java:549)
at edu.ku.brc.specify.dbsupport.HibernateDataProviderSession.saveOrUpdate(HibernateDataProviderSession.java:549) at edu.ku.brc.specify.dbsupport.HibernateDataProviderSession.saveOrUpdate(HibernateDataProviderSession.java:549)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.doWrite(UploadTable.java:6200)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.doWrite(UploadTable.java:6200) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.doWrite(UploadTable.java:6200)
... 11 more
... 11 more ... 11 more

BE: Error followed by missing fields

If you try to Batch Edit a set of data in query results that is missing a required field from a table you are using, Specify will notify you then take you back to the Query Builder screen. However, it also gives you an error (see below), which seems kind of unnecessary.

Error:
class_name: edu.ku.brc.specify.tasks.WorkbenchTask
comments:

stack_trace:
org.hibernate.TransientObjectException: cannot lock an unsaved transient instance: edu.ku.brc.specify.datamodel.Workbench
at org.hibernate.event.def.DefaultLockEventListener.onLock(DefaultLockEventListener.java:53)
at org.hibernate.impl.SessionImpl.fireLock(SessionImpl.java:584)
at org.hibernate.impl.SessionImpl.lock(SessionImpl.java:576)
at edu.ku.brc.specify.dbsupport.HibernateDataProviderSession.attach(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator.doIt(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator.access$100(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator$1.doInBackground(Unknown Source)
at edu.ku.brc.specify.tasks.WorkbenchEditorCreator$1.doInBackground(Unknown Source)
at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

task_name: BatchEdit
title:
id: fa341824-173a-0988-6119-3b90cafcd922--1606c15d3d0
os_name: Windows 7
os_version: 6.1
java_version: 1.8.0_152
java_vendor: Oracle Corporation
max_memory: 778502144
used_memory: -176149416
user_name: g778g663
ip: 169.254.88.15
app_version: 6.6.06
collection: IP
discipline: Invertebrate Paleontology
division: IP
institution: Florida Museum of Natural History
Collection_number: 1389134614.11
Discipline_number: 1389134613.98
Division_number: 1389134613.72
Institution_number: 1389134611.51
email: ph@ph

Batch Editor Icon is available for non-admin users in Query Results

When logged in as a manager (non-admin), and possibly other lower level users, you can access the Batch Editor through the icon in the Query Results page. You should only have access to the batch editor if you're an admin user, I believe. But, icon is not available at the top in the task bar, which is good.

BE and Query no results "issue of concern"

In both the Batch Editor, and the Query Builder, if you run a query that returns no results, you no longer get the typical message indicating that there were no results found. Instead you get "An Issue of Concern" that says "The results could not be assembled. Please try your search again". This has been happening for the past few builds and is still present in the most recent one (tootsweet).

Batch Editor allows more than maximum of 7,000 rows

Andy was right. I tested using a full 20,000 query result to batch edit. It still warned me that the maximum rows that would be used is 7,000 (not sure how it said 2,000 for Andy). But then when I clicked okay it decided to continue using all 20,000 rows. Also somehow it didn't give me the null pointer exception so that may be fixed in the latest build.

BE: Fields that were not edited are highlighted

Whenever I make a change to a Locality Name field in a row in a batch of CO records, the Lat/Long fields are highlighted even if I don't make a change to them. Lat/long are also highlighted when I make changes to Geography fields or the CE #. This behavior may happen with other tables, but I have not discovered other cases yet.

Workbench Validation Issue

I'm not sure what caused it, but my workbench upload failed in the build batchyfog. This is the exception found in the logs:

edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: FinishDepth does not support seq > 0
edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: FinishDepth does not support seq > 0edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploaderException: FinishDepth does not support seq > 0
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTableTree.finishDepth(UploadTableTree.java:1100)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTableTree.finishDepth(UploadTableTree.java:1100) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTableTree.finishDepth(UploadTableTree.java:1100)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRowOrNot(UploadTable.java:5762)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRowOrNot(UploadTable.java:5762) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRowOrNot(UploadTable.java:5762)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRow(UploadTable.java:5579)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRow(UploadTable.java:5579) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.writeRow(UploadTable.java:5579)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.writeRow(Uploader.java:5522)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.writeRow(Uploader.java:5522) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.writeRow(Uploader.java:5522)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.uploadRow(Uploader.java:5486)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.uploadRow(Uploader.java:5486) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.uploadRow(Uploader.java:5486)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4486)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4486) at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader$13.doInBackground(Uploader.java:4486)
at javax.swing.SwingWorker$1.call(Unknown Source)
at javax.swing.SwingWorker$1.call(Unknown Source) at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source) at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at java.lang.Thread.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

BE: Error in batch editing when Locality Details in CO query

I created a CO query in the ento collection of the demo database and included a field from locality details. I switched to batch editing and double clicked a field to edit it (not a locality details field) and this error popped up.

failed to lazily initialize a collection of role: edu.ku.brc.specify.datamodel.Locality.localityDetails, no session or session was closed

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: edu.ku.brc.specify.datamodel.Locality.localityDetails, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:163)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.getChildRecords(UploadTable.java:1463)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.loadRecord(UploadTable.java:1412)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.loadRecord(UploadTable.java:1393)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.loadRecord(UploadTable.java:1393)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.UploadTable.loadExportedRecord(UploadTable.java:1357)
at edu.ku.brc.specify.tasks.subpane.wb.wbuploader.Uploader.checkChangedData(Uploader.java:1744)
at edu.ku.brc.specify.tasks.subpane.wb.WorkbenchValidator.endCellEdit(WorkbenchValidator.java:96)
at edu.ku.brc.specify.tasks.subpane.wb.WorkbenchPaneSS.updateRowValidationStatus(WorkbenchPaneSS.java:4873)
at edu.ku.brc.specify.tasks.subpane.wb.WorkbenchPaneSS$GridCellEditor.stopCellEditing(WorkbenchPaneSS.java:5586)
at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(Unknown Source)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at edu.ku.brc.ui.tmanfe.SpreadSheet.processMouseEvent(SpreadSheet.java:819)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

BE: Partial Date fields are combined in batch editor, always shows full date

If I were to use a query that split a date (i.e. CE.StartDate) into Day, Month, and Year (so three separate fields in the query), the resulting dataset in the batch editor fills in the full date for all three fields. This makes it a little more difficult to change just the Day, or just the Month, or just the Year. See picture below.
partialdatesimpossible

Auto incrementing in created formats does not work for Accession Number

Rancho Santa Ana and Sarah Schmits both reported (and testing confirmed) accession numbers formatted to auto increment are not doing so.
We created a format of yyyy-#### that is incrementing and set to restart with each year but it is creating the same number with each save (2018-0001). We tried #### incrementing as well and it does the same thing (0001 over and over again).
Auto- incrementing is on in the databases in question (a copy of RSA and a created database)
tested in the external 6.6.06 and "heap" internal release

BE: Drag and Drop Recordsets Stop Working

When you first drag and drop a recordset onto a saved query, it will work fine. If you attempt to do this again after closing the Batch Editor tab, it will only take you to the saved query instead of the query results screen. If you leave the Batch Editor tab open, dragging and dropping recordsets seems to continue working. You must restart specify after this issue occurs or it will keep occuring.

BE: Can save changes without data in required fields

If you are batch editing data that includes a required field, and there are any rows that are empty for that required field, you can save the data edits without filling in those required fields. If you edit those required fields at all (by entering data), they become required and you cannot save data changes without having filled in those cells. This is not possible when manually editing a single record, so it shouldn't be possible when editing several records at once, otherwise required fields may remain empty when they should not.

No way to delete past Workbench mappings

There is no way to delete workbench mappings of datasets that have been deleted. Users don't always want to delete mappings, but sometimes they do, especially when they get to be very numerous.

BE: Fill down/up does not activate Apply button

If you only make changes to fields using the fill down or fill up right-click option, the Apply button will not become active, even though all the fields that are being changed are highlighted green. Making a change to a single cell will fix the issue. But this still may confuse some users and they might not realize they can fix it that way.

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.