diff --git a/src/main/java/edu/harvard/mcz/imagecapture/SpecimenDetailsViewPane.java b/src/main/java/edu/harvard/mcz/imagecapture/SpecimenDetailsViewPane.java index 04dfb5d0..32227e0a 100644 --- a/src/main/java/edu/harvard/mcz/imagecapture/SpecimenDetailsViewPane.java +++ b/src/main/java/edu/harvard/mcz/imagecapture/SpecimenDetailsViewPane.java @@ -66,6 +66,7 @@ import java.util.Collection; import java.util.Date; import java.util.Set; +import javax.persistence.OptimisticLockException; import javax.swing.BorderFactory; import javax.swing.DefaultCellEditor; import javax.swing.DefaultComboBoxModel; @@ -246,14 +247,17 @@ public SpecimenDetailsViewPane(Specimen aSpecimenInstance, SpecimenController aC specimenController = aControler; initialize(); setValues(); - } catch (SessionException e) { - log.debug(e.getMessage(),e); - Singleton.getSingletonInstance().getMainFrame().setStatusMessage("Database Connection Error."); - HibernateUtil.terminateSessionFactory(); - this.setVisible(false); - } catch (TransactionException e) { - log.debug(e.getMessage(),e); - Singleton.getSingletonInstance().getMainFrame().setStatusMessage("Database Connection Error."); + } catch (Exception e) { + String status = "Undefined error initializing SpecimenDetails. Restarting Database connection..."; + if (e instanceof SessionException || e instanceof TransactionException) { + status = "Database Connection Error. Resetting connection... Try again."; + } else if (e instanceof IllegalStateException) { + status = "Illegal state exception. Last edit possibly lost. Try again."; + } else if (e instanceof OptimisticLockException){ + status = "Error: last edited entry has been modified externally. Try again."; + } + Singleton.getSingletonInstance().getMainFrame().setStatusMessage(status); + log.debug(e.getMessage(), e); HibernateUtil.terminateSessionFactory(); this.setVisible(false); } diff --git a/src/main/java/edu/harvard/mcz/imagecapture/data/SpecimenLifeCycle.java b/src/main/java/edu/harvard/mcz/imagecapture/data/SpecimenLifeCycle.java index 75dbcaba..0ce1edc9 100644 --- a/src/main/java/edu/harvard/mcz/imagecapture/data/SpecimenLifeCycle.java +++ b/src/main/java/edu/harvard/mcz/imagecapture/data/SpecimenLifeCycle.java @@ -170,7 +170,8 @@ public void attachDirty(Specimen instance) throws SaveFailedException { } } - /** Re-associate a transient instance with a session. + /** + * Re-associate a transient instance with a session. * * @param instance */