SetParameterResourceCustomiser.java
01 /*
02  *  SetParameterResourceCustomiser.java
03  *
04  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
05  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
06  *
07  *  This file is part of GATE (see http://gate.ac.uk/), and is free
08  *  software, licenced under the GNU Library General Public License,
09  *  Version 2, June 1991 (in the distribution as file licence.html,
10  *  and also available at http://gate.ac.uk/gate/licence.html).
11  *
12  *  Ian Roberts, 22/Jan/2008
13  *
14  *  $Id: SetParameterResourceCustomiser.java 17530 2014-03-04 15:57:43Z markagreenwood $
15  */
16 
17 package gate.util.spring;
18 
19 import gate.Controller;
20 import gate.Resource;
21 
22 /**
23  * ResourceCustomiser that sets a parameter on the resource being
24  * customised. When used to customise Controllers, it can optionally
25  * take a "prName" property. In this case it will set the parameter on
26  * the first PR with that name in the controller, rather than the
27  * controller itself
28  */
29 public class SetParameterResourceCustomiser implements ResourceCustomiser {
30 
31   private String paramName;
32 
33   private Object value;
34 
35   private String prName = null;
36 
37   @Override
38   public void customiseResource(Resource resthrows Exception {
39     if(prName == null) {
40       res.setParameterValue(paramName, value);
41     }
42     else {
43       if(res instanceof Controller) {
44         for(Object pr : ((Controller)res).getPRs()) {
45           if(prName.equals(((Resource)pr).getName())) {
46             ((Resource)pr).setParameterValue(paramName, value);
47             break;
48           }
49         }
50       }
51       else {
52         throw new IllegalArgumentException("prName was specified, so we can "
53                 "only customise Controllers.  Supplied resource was a "
54                 + res.getClass().getName());
55       }
56     }
57   }
58 
59   public void setParamName(String paramName) {
60     this.paramName = paramName;
61   }
62 
63   public void setValue(Object value) {
64     this.value = value;
65   }
66 
67   public void setPrName(String prName) {
68     this.prName = prName;
69   }
70 
71 }