Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
openbis
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
sispub
openbis
Commits
06a096d0
Commit
06a096d0
authored
15 years ago
by
tpylak
Browse files
Options
Downloads
Patches
Plain Diff
LMS-1264 DSU: bugfix, improve error reports (no logging required, just send an email to the admin)
SVN: 13520
parent
3cb213b9
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/main/TrackingBO.java
+42
-29
42 additions, 29 deletions
.../java/ch/ethz/bsse/cisd/dsu/tracking/main/TrackingBO.java
with
42 additions
and
29 deletions
deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/tracking/main/TrackingBO.java
+
42
−
29
View file @
06a096d0
...
...
@@ -66,38 +66,44 @@ public class TrackingBO
fetchChangedEntities
(
prevTrackingState
,
trackingServer
,
session
);
List
<
EmailWithSummary
>
emailsWithSummary
=
emailGenerator
.
generateEmails
(
changedEntities
);
sendEmails
(
emailsWithSummary
,
mailClient
);
saveTrackingState
(
changedEntities
,
trackingDAO
);
saveTrackingState
(
prevTrackingState
,
changedEntities
,
trackingDAO
);
}
private
static
void
sendEmails
(
List
<
EmailWithSummary
>
emailsWithSummary
,
IMailClient
mailClient
)
{
for
(
EmailWithSummary
emailWithSummary
:
emailsWithSummary
)
{
Email
email
=
emailWithSummary
.
getEmail
();
try
{
sendMessage
(
mailClient
,
emailWithSummary
);
logEmailSummary
(
emailWithSummary
);
sendMessage
(
mailClient
,
email
);
}
catch
(
Exception
ex
)
{
sendErrorReport
(
mailClient
,
ex
,
email
WithSummary
);
sendErrorReport
(
mailClient
,
ex
,
email
);
}
}
}
private
static
void
logEmailSummary
(
EmailWithSummary
emailWithSummary
)
{
LogUtils
.
info
(
"Sending an email ["
+
emailWithSummary
.
getEmail
().
getSubject
()
+
"]. Summary:\n"
+
emailWithSummary
.
getSummary
());
}
// This email could not be sent, most probably the recipient addresses were
// incorrect.
// We send the email to the administrator "replyTo' address, the admin should
// forward it to the right recipient.
private
static
void
sendErrorReport
(
IMailClient
mailClient
,
Exception
exception
,
EmailWithSummary
emailWithSummary
)
private
static
void
sendErrorReport
(
IMailClient
mailClient
,
Exception
exception
,
Email
email
)
{
Email
email
=
emailWithSummary
.
getEmail
();
StringBuilder
errorReportContentBuilder
=
new
StringBuilder
();
appendLine
(
errorReportContentBuilder
,
"Dear openBIS Admin,"
);
appendLine
(
errorReportContentBuilder
,
"This email has been generated automatically from the openBIS Changes Tracking system."
);
appendLine
(
errorReportContentBuilder
,
"There was a failure while trying to send the email:"
);
appendLine
(
errorReportContentBuilder
,
exception
.
getMessage
());
appendLine
(
errorReportContentBuilder
,
exception
.
getMessage
()
==
null
?
"<no details>"
:
exception
.
getMessage
());
appendLine
(
errorReportContentBuilder
,
"The possible reason is that the recipient address is not valid."
);
appendLine
(
errorReportContentBuilder
,
...
...
@@ -112,36 +118,25 @@ public class TrackingBO
+
CollectionUtils
.
abbreviate
(
email
.
getRecipients
(),
-
1
));
appendLine
(
errorReportContentBuilder
,
""
);
StringBuilder
errorReportSummaryBuilder
=
new
StringBuilder
(
errorReportContentBuilder
.
toString
());
appendLine
(
errorReportContentBuilder
,
"Original content: "
);
appendLine
(
errorReportContentBuilder
,
email
.
getContent
());
String
errorReportContent
=
errorReportContentBuilder
.
toString
();
appendLine
(
errorReportSummaryBuilder
,
"Original content summary: "
);
appendLine
(
errorReportSummaryBuilder
,
emailWithSummary
.
getSummary
());
String
errorReportSummary
=
errorReportSummaryBuilder
.
toString
();
Email
errorReportEmail
=
new
Email
(
"[Tracking] Sending an email failed"
,
errorReportContent
,
null
,
email
.
getFromOrNull
(),
email
.
getReplyToOrNull
());
sendMessage
(
mailClient
,
new
EmailWithSummary
(
errorReportEmail
,
errorReportSummary
)
);
sendMessage
(
mailClient
,
errorReportEmail
);
}
private
static
void
sendMessage
(
IMailClient
mailClient
,
Email
WithSummary
emailWithSummary
)
private
static
void
sendMessage
(
IMailClient
mailClient
,
Email
email
)
{
Email
email
=
emailWithSummary
.
getEmail
();
String
summary
=
emailWithSummary
.
getSummary
();
String
subject
=
email
.
getSubject
();
String
content
=
email
.
getContent
();
String
replyToOrNull
=
email
.
getReplyToOrNull
();
From
fromOrNull
=
email
.
getFromOrNull
();
String
[]
recipients
=
email
.
getRecipients
();
mailClient
.
sendMessage
(
subject
,
content
,
replyToOrNull
,
fromOrNull
,
recipients
);
LogUtils
.
debug
(
"Sending an email ["
+
subject
+
"]\n"
+
summary
);
mailClient
.
sendMessage
(
subject
,
content
,
replyToOrNull
,
fromOrNull
,
recipients
);
}
private
static
void
appendLine
(
StringBuilder
sb
,
String
msg
)
...
...
@@ -150,18 +145,36 @@ public class TrackingBO
sb
.
append
(
"\n"
);
}
private
static
void
saveTrackingState
(
TrackedEntities
changedEntities
,
ITrackingDAO
trackingDAO
)
private
static
void
saveTrackingState
(
TrackingStateDTO
prevState
,
TrackedEntities
changedEntities
,
ITrackingDAO
trackingDAO
)
{
TrackingStateDTO
state
=
new
TrackingStateDTO
();
state
.
setLastSeenSequencingSampleId
(
calcMaxId
(
changedEntities
.
getSequencingSamples
()));
state
.
setLastSeenFlowLaneSampleId
(
calcMaxId
(
changedEntities
.
getFlowLaneSamples
()));
state
.
setLastSeenDatasetId
(
calcMaxId
(
changedEntities
.
getDataSets
()));
TrackingStateDTO
state
=
calcNewTrackingState
(
prevState
,
changedEntities
);
trackingDAO
.
saveTrackingState
(
state
);
}
private
static
int
calcMaxId
(
List
<?
extends
IIdentifiable
>
entities
)
private
static
TrackingStateDTO
calcNewTrackingState
(
TrackingStateDTO
prevState
,
TrackedEntities
changedEntities
)
{
TrackingStateDTO
state
=
new
TrackingStateDTO
();
int
lastSeenSequencingSampleId
=
calcMaxId
(
changedEntities
.
getSequencingSamples
(),
prevState
.
getLastSeenSequencingSampleId
());
state
.
setLastSeenSequencingSampleId
(
lastSeenSequencingSampleId
);
int
lastSeenFlowLaneSampleId
=
calcMaxId
(
changedEntities
.
getFlowLaneSamples
(),
prevState
.
getLastSeenFlowLaneSampleId
());
state
.
setLastSeenFlowLaneSampleId
(
lastSeenFlowLaneSampleId
);
int
lastSeenDatasetId
=
calcMaxId
(
changedEntities
.
getDataSets
(),
prevState
.
getLastSeenDatasetId
());
state
.
setLastSeenDatasetId
(
lastSeenDatasetId
);
return
state
;
}
private
static
int
calcMaxId
(
List
<?
extends
IIdentifiable
>
entities
,
int
initialValue
)
{
long
max
=
0
;
long
max
=
initialValue
;
for
(
IIdentifiable
entity
:
entities
)
{
max
=
Math
.
max
(
max
,
entity
.
getId
());
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment