source: trunk/grails-app/services/dbnp/modules/ModuleNotificationService.groovy @ 1456

Last change on this file since 1456 was 1456, checked in by business@…, 9 years ago

moved gdt package to org.dbnp, moved tests for RelTime?, TemplateEntity?, Template etc. to gdt plugin

File size: 1.6 KB
Line 
1/**
2 * SynchronizationService Service
3 *
4 * Description of my service
5 *
6 * @author  your email (+name?)
7 * @since       2010mmdd
8 * @package     ???
9 *
10 * Revision information:
11 * $Rev: 1442 $
12 * $Author: robert@isdat.nl $
13 * $Date: 2011-01-26 17:02:05 +0100 (Wed, 26 Jan 2011) $
14 */
15package dbnp.modules
16
17import dbnp.studycapturing.*
18
19class ModuleNotificationService implements Serializable {
20    boolean transactional = false
21       
22    /**
23     * Sends a notification to assay modules that some part of a study has changed.
24     *
25     * Only modules that have the notify flag set to true will be notified. They will be notified on the URL
26     *
27     * [moduleUrl]/rest/notifyStudyChange?studyToken=abc
28     *
29     * Errors that occur when calling this URL are ignored. The module itself is responsible of
30     * maintaining a synchronized state.
31     *
32     * @param study
33     * @return
34     */
35        def invalidateStudy( Study study ) {
36                if( !study )
37                        return
38                       
39                log.info( "Invalidate " + study.code )
40
41                def modules = AssayModule.findByNotify(true);
42               
43                def urls = []
44                modules.each { module ->
45                        urls << module.url + '/rest/notifyStudyChange?studyToken=' + study.giveUUID()
46                }
47               
48                Thread.start { 
49                        urls.each { url ->
50                                try {
51                                        def connection = url.toURL().openConnection()
52                                        if( connection.responseCode == 200 ) {
53                                                log.info( "GSCF NOTIFY-CALL SUCCEEDED: ${url}" )
54                                        } else {
55                                                log.info( "GSCF NOTIFY-CALL FAILED: ${url}: " + connection.responseCode )
56                                        }
57                                } catch( Exception ignore) {
58                                        log.info( "GSCF NOTIFY-CALL ERROR: ${url} - " + ignore.getMessage() )
59                                }
60                        }
61                 };
62    }
63}
Note: See TracBrowser for help on using the repository browser.