From 67ac01e36e221058a4d5940c0292a48128e55838 Mon Sep 17 00:00:00 2001 From: ryans Date: Mon, 24 Nov 2025 12:22:59 -0500 Subject: [PATCH 1/4] Include event name in overlap message Fixes #62 --- .../jlab/dtm/business/session/IncidentFacade.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java b/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java index 60b377c..fc4845b 100644 --- a/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java +++ b/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java @@ -408,7 +408,8 @@ public Event addEvent( throw new UserFriendlyException( "An event of type " + type.getName() - + " is already open (cannot add another open event of same type)"); + + " is already open (cannot add another open event of same type). The existing event name: " + + event.getTitle()); } /* we must ensure that an incident has a timeUp if the event is closed*/ @@ -420,6 +421,18 @@ public Event addEvent( throw new UserFriendlyException("Incident time up can not come after event time up"); } + List eventList = + eventFacade.findEventListWithIncidents( + timeDown, eventTimeUp == null ? new Date() : eventTimeUp, type.getEventTypeId()); + + if (!eventList.isEmpty()) { + throw new UserFriendlyException( + "Existing event of type " + + type.getAbbreviation() + + " found in same time period named: " + + eventList.get(0).getTitle()); + } + // Enforce restrictions on closed events. Operators must work with open events if they wish to // mettle in the past AuditContext auditCtx = AuditContext.getCurrentInstance(); From 46c2992301e18e4414cd88027770f71dc2e564a4 Mon Sep 17 00:00:00 2001 From: ryans Date: Mon, 24 Nov 2025 12:55:41 -0500 Subject: [PATCH 2/4] Include event name in overlap message --- .../dtm/business/session/EventFacade.java | 22 ++++++++++ .../dtm/business/session/IncidentFacade.java | 44 +++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/src/main/java/org/jlab/dtm/business/session/EventFacade.java b/src/main/java/org/jlab/dtm/business/session/EventFacade.java index 0f32e28..9a4d08f 100644 --- a/src/main/java/org/jlab/dtm/business/session/EventFacade.java +++ b/src/main/java/org/jlab/dtm/business/session/EventFacade.java @@ -199,6 +199,28 @@ public void editEvent(BigInteger eventId, Date timeUp, String title, BigInteger List closedIncidents = new ArrayList(); + List eventList = + this.findEventListWithIncidents( + event.getTimeDown(), + timeUp == null ? new Date() : timeUp, + event.getEventType().getEventTypeId()); + + List differentEventList = new ArrayList<>(); + + for (Event e : eventList) { + if (!e.getEventId().equals(event.getEventId())) { + differentEventList.add(e); + } + } + + if (!differentEventList.isEmpty()) { + throw new UserFriendlyException( + "Event modification results in event of type " + + event.getEventType().getAbbreviation() + + " time period collision with existing event named: " + + eventList.get(0).getTitle()); + } + if (timeUp == null) { // Reopen or keep open Event openEvent = findOpenEvent(event.getEventType().getEventTypeId()); diff --git a/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java b/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java index fc4845b..ce71806 100644 --- a/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java +++ b/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java @@ -551,6 +551,28 @@ public void editIncident( boolean wasPreviouslyClosed = incident.getTimeUp() != null; + List eventList = + eventFacade.findEventListWithIncidents( + timeDown.before(event.getTimeDown()) ? timeDown : event.getTimeDown(), + event.getTimeUp() == null ? new Date() : event.getTimeUp(), + event.getEventType().getEventTypeId()); + + List differentEventList = new ArrayList<>(); + + for (Event e : eventList) { + if (!e.getEventId().equals(event.getEventId())) { + differentEventList.add(e); + } + } + + if (!differentEventList.isEmpty()) { + throw new UserFriendlyException( + "Incident modification results in event type " + + event.getEventType().getAbbreviation() + + " time period collision with existing event named: " + + eventList.get(0).getTitle()); + } + validateAndPopulateIncident( incident, title, @@ -653,6 +675,28 @@ public void addIncident( event.setTitle(eventTitle); + List eventList = + eventFacade.findEventListWithIncidents( + timeDown.before(event.getTimeDown()) ? timeDown : event.getTimeDown(), + event.getTimeUp() == null ? new Date() : event.getTimeUp(), + event.getEventType().getEventTypeId()); + + List differentEventList = new ArrayList<>(); + + for (Event e : eventList) { + if (!e.getEventId().equals(event.getEventId())) { + differentEventList.add(e); + } + } + + if (!differentEventList.isEmpty()) { + throw new UserFriendlyException( + "Incident modification results in event type " + + event.getEventType().getAbbreviation() + + " time period collision with existing event named: " + + eventList.get(0).getTitle()); + } + em.flush(); Incident incident = new Incident(); From e412fb77c7cc56240ed6ed0d14dcba4723fe7f97 Mon Sep 17 00:00:00 2001 From: ryans Date: Mon, 24 Nov 2025 13:01:51 -0500 Subject: [PATCH 3/4] Include event name in overlap message --- .../jlab/dtm/business/session/EventFacade.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/jlab/dtm/business/session/EventFacade.java b/src/main/java/org/jlab/dtm/business/session/EventFacade.java index 9a4d08f..982fa28 100644 --- a/src/main/java/org/jlab/dtm/business/session/EventFacade.java +++ b/src/main/java/org/jlab/dtm/business/session/EventFacade.java @@ -194,16 +194,9 @@ public void editEvent(BigInteger eventId, Date timeUp, String title, BigInteger throw new InternalException("EventType with ID " + eventTypeId + " not found"); } - event.setTitle(title); - event.setEventType(type); - - List closedIncidents = new ArrayList(); - List eventList = this.findEventListWithIncidents( - event.getTimeDown(), - timeUp == null ? new Date() : timeUp, - event.getEventType().getEventTypeId()); + event.getTimeDown(), timeUp == null ? new Date() : timeUp, type.getEventTypeId()); List differentEventList = new ArrayList<>(); @@ -216,11 +209,16 @@ public void editEvent(BigInteger eventId, Date timeUp, String title, BigInteger if (!differentEventList.isEmpty()) { throw new UserFriendlyException( "Event modification results in event of type " - + event.getEventType().getAbbreviation() + + type.getAbbreviation() + " time period collision with existing event named: " + eventList.get(0).getTitle()); } + event.setTitle(title); + event.setEventType(type); + + List closedIncidents = new ArrayList(); + if (timeUp == null) { // Reopen or keep open Event openEvent = findOpenEvent(event.getEventType().getEventTypeId()); From 5f4250b48ef82b804c9d01c2c27d7b7c5b5f3db1 Mon Sep 17 00:00:00 2001 From: ryans Date: Mon, 24 Nov 2025 13:08:40 -0500 Subject: [PATCH 4/4] Include event name in overlap message --- .../org/jlab/dtm/business/session/EventFacade.java | 4 +++- .../jlab/dtm/business/session/IncidentFacade.java | 14 ++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jlab/dtm/business/session/EventFacade.java b/src/main/java/org/jlab/dtm/business/session/EventFacade.java index 982fa28..349b04a 100644 --- a/src/main/java/org/jlab/dtm/business/session/EventFacade.java +++ b/src/main/java/org/jlab/dtm/business/session/EventFacade.java @@ -210,7 +210,9 @@ public void editEvent(BigInteger eventId, Date timeUp, String title, BigInteger throw new UserFriendlyException( "Event modification results in event of type " + type.getAbbreviation() - + " time period collision with existing event named: " + + " time period collision with existing event " + + eventList.get(0).getEventId() + + " named: " + eventList.get(0).getTitle()); } diff --git a/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java b/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java index ce71806..6cb7c64 100644 --- a/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java +++ b/src/main/java/org/jlab/dtm/business/session/IncidentFacade.java @@ -427,9 +427,11 @@ public Event addEvent( if (!eventList.isEmpty()) { throw new UserFriendlyException( - "Existing event of type " + "Event addition results in type " + type.getAbbreviation() - + " found in same time period named: " + + " time period collision with existing event " + + eventList.get(0).getEventId() + + " named: " + eventList.get(0).getTitle()); } @@ -569,7 +571,9 @@ public void editIncident( throw new UserFriendlyException( "Incident modification results in event type " + event.getEventType().getAbbreviation() - + " time period collision with existing event named: " + + " time period collision with existing event " + + eventList.get(0).getEventId() + + " named: " + eventList.get(0).getTitle()); } @@ -693,7 +697,9 @@ public void addIncident( throw new UserFriendlyException( "Incident modification results in event type " + event.getEventType().getAbbreviation() - + " time period collision with existing event named: " + + " time period collision with existing event " + + eventList.get(0).getEventId() + + " named: " + eventList.get(0).getTitle()); }