source: trunk/grails-app/controllers/nl/tno/massSequencing/integration/SynchronizeController.groovy @ 50

Last change on this file since 50 was 50, checked in by robert@…, 8 years ago
  • Added links to remove samples from a run
  • Added synchronization of authorization for all studies, if a user logs in
  • Improved excel import to handle Error-values in a cell
File size: 2.7 KB
Line 
1package nl.tno.massSequencing.integration
2
3import nl.tno.massSequencing.Study;
4
5class SynchronizeController {
6        def synchronizationService
7       
8        // Show a 'waiting' page and perform a full synchronization afterwards
9    def full = { 
10                def redirectUrl = params.redirect;
11               
12                if( !redirectUrl )
13                        redirectUrl = g.createLink( controller: 'run' );
14               
15                // Set the date of last synchronization to now. Doing it here, prevents the
16                // application of entering an infinite loop if an error occurs:
17                //              /study                  -> redirect to synchronization
18                //              /synchronize    -> fails with an error, redirects to /study
19                //                      etc...
20                // synchronizationService.lastFullSynchronization = new Date();
21                [ url: redirectUrl ]
22        }
23       
24        def perform = {
25                try {
26                        if( !session.user ) {
27                                throw new Exception( "No user is logged in" );
28                        }
29                       
30                        synchronizationService.sessionToken = session.sessionToken
31                        synchronizationService.user = session.user
32       
33                        synchronizationService.fullSynchronization();
34                        render "";
35                } catch( Exception e ) {
36                        // Catch all exceptions, show them to the user (by rendering a text message) and print a stacktrace
37                        def message = e.getMessage();
38                        if( !message || message == 'null' )
39                                message = 'unknown error';
40               
41                        // Show errors in log file             
42                        log.error "Exception during full synchronization: " + message
43                        e.printStackTrace()
44                       
45                        // Give the user a nice error message
46                        response.status = 500;
47                        render "An error occurred during synchronization (" + e.class?.name + "): " + message;
48                }
49        }
50       
51        /**
52         * This method should be called after a user logs in. It
53         * updates the authorization for all studies present in the database,
54         * so the user can see all his studies
55         */
56        def authorization = {
57                try {
58                        if( !session.user ) {
59                                throw new Exception( "No user is logged in" );
60                        }
61                       
62                        println "Synchronize authorization!";
63                       
64                        synchronizationService.sessionToken = session.sessionToken
65                        synchronizationService.user = session.user
66       
67                        Study.findAllByTrashcan( false ).each { study ->
68                                synchronizationService.synchronizeAuthorization( study );
69                        }
70                       
71                        if( params.redirectUrl )
72                                redirect( url: params.redirectUrl );
73                        else
74                                redirect( controller: "run" );
75                       
76                        return;
77                } catch( Exception e ) {
78                        // Catch all exceptions, show them to the user (by rendering a text message) and print a stacktrace
79                        def message = e.getMessage();
80                        if( !message || message == 'null' )
81                                message = 'unknown error';
82               
83                        // Show errors in log file
84                        log.error "Exception during synchronization of authorization: " + message
85                        e.printStackTrace()
86                       
87                        // Give the user a nice error message
88                        response.status = 500;
89                        render "An error occurred during synchronization (" + e.class?.name + "): " + message;
90                }
91        }
92}
Note: See TracBrowser for help on using the repository browser.