I have this app that is used to schedule employees, for a while we
we're using timestamps to record start and end times of shifts.
We started having issues with daylight savings and the client's
time/server's time being different.
Anyways we recently changed that to numbers so for example 5pm = 17,
such-and-so-forth.
Everything is working fine with that.
But, I was informed of an error, if you try to schedule someone at one
location when they are scheduled another during the same time it's
suppose to warn the user and reload the schedule. However the
application just hangs..
We generate the error in Oracle and bubble it up..
Looks like this:
--first we will validate that this record can be inserted.
validation involves checking for time overlaps
FOR cr_row IN c_rowcheck LOOP
BEGIN
IF( (v_starttime BETWEEN cr_row.starttime_num AND
cr_row.endtime_num)
OR (v_endtime BETWEEN cr_row.starttime_num AND
cr_row.endtime_num )
OR (v_starttime < cr_row.starttime_num AND v_endtime
> cr_row.endtime_num) ) THEN
--the start42 and end42 are for the UI
errDay :=
to_char(getDateFromNum(cr_row.day,cr_row.week,cr_row.year),
'Day');
errMsg := 'START42 Employee ' || emplName || ' is
already on the schedule on ' || errDay || ' from ' ||
militaryToStandardTime(cr_row.starttime_num) || ' to ' ||
militaryToStandardTime(cr_row.endtime_num) || ' at location ' ||
cr_row.descr || ', ' || cr_row.city || ', ' || cr_row.state ||
'END42';
RAISE_APPLICATION_ERROR(-20002,errMsg );
END IF;
END;
END LOOP;
I believe this part of the code to be working fine. I can run this
manually, plug in some variables in Oracle and bam, I get an error
message if the user is elsewhere.
The problem I'm having is when you do this in Flex.. you get the error message
Mar 26, 2008 5:07:32 PM com.dao.WeeklyScheduleDAO updateWeeklySchedule
SEVERE: WeeklyScheduleDAO.updateWeeklySchedule () failed
java.sql.SQLException: ORA-20002: START42 Employee Bob Hope is already
on the schedule on Sunday from 10:45 to 7:45 at location 1234 ST,
Sumcity, ALEND42
ORA-06512: at "AOPSCHEDULE.INSERTSCHEDULEENTRY_NEW", line 38
ORA-06512: at line 1
The user sees the error message they click okay and we have a popup
"Processing..." when it should load the schedule.. It hangs there..
With "Processing..." stuck on the screen, the user never regains
control of the screen and has to reload the page.
I do not see where the error is coming from.
So I'm trying to follow the code up to Flex and see where this is bombing..
So where does the code go from the DAO? The BO? Then to the Delegate?
Then off to Flex? I tried to google a few times but was getting no
where.
If someone can explain the path of code using Cairngorm I'd appreciate it.
The logs stop dead at:
[Flex] 03/27/2008 09:15:31.438 Serializing AMF/HTTP response
Version: 3
(Message #0 targetURI=/7/onStatus, responseURI=)
(Typed Object #0 'flex.messaging.messages.ErrorMessage')
rootCause = (Typed Object #1 'java.lang.Exception')
localizedMessage = "java.sql.SQLException: ORA-20002: START42
Employee Bob Hope is already on the schedule on Sunday from 10:45
to 7:45 at location 1234 ST, City ALEND42
ORA-06512: at "AOPSCHEDULE.INSERTSCHEDULEENTRY_NEW", line 38
ORA-06512: at line 1
"
message = "java.sql.SQLException: ORA-20002: START42 Employee
Bob Hope is already on the schedule on Sunday from 10:45 to 7:45 at
location 1234 ST, City ALEND42
ORA-06512: at "AOPSCHEDULE.INSERTSCHEDULEENTRY_NEW", line 38
ORA-06512: at line 1
"
cause = (Typed Object #2 'java.sql.SQLException')
localizedMessage = "ORA-20002: START42 Employee Bob Hope is
already on the schedule on Sunday from 10:45 to 7:45 at location
1234 ST, City ALEND42
ORA-06512: at "AOPSCHEDULE.INSERTSCHEDULEENTRY_NEW", line 38
ORA-06512: at line 1
"
message = "ORA-20002: START42 Employee Bob Hope is already
on the schedule on Sunday from 10:45 to 7:45 at location 1234 ST,
City ALEND42
ORA-06512: at "AOPSCHEDULE.INSERTSCHEDULEENTRY_NEW", line 38
ORA-06512: at line 1
"
SQLState = "72000"
nextException = null
cause = null
errorCode = 20002
destination = "SchedulerServiceRO"
headers = (Object #3)
correlationId = "E75EC4AF-451B-1518-E773-F097DB89D3B8"
faultString = "java.lang.Exception : java.sql.SQLException:
ORA-20002: START42 Employee Bob Hope is already on the schedule on
Sunday from 10:45 to 7:45 at location 1234 ST, City ALEND42
ORA-06512: at "AOPSCHEDULE.INSERTSCHEDULEENTRY_NEW", line 38
ORA-06512: at line 1
"
messageId = "E362EA84-EF08-E524-E1CF-49EA11BB63DE"
faultCode = "Server.Processing"
timeToLive = 0.0
extendedData = null
faultDetail = null
clientId = null
timestamp = 1.206627331423E12
body = null
Thanks