View Javadoc

1   /*
2    * $Id$
3    */
4   
5   package org.apache.maven.plugin.registry;
6   
7     //---------------------------------/
8    //- Imported classes and packages -/
9   //---------------------------------/
10  
11  import java.util.Date;
12  
13  /**
14   * Root element of the plugin registry file.
15   * 
16   * @version $Revision$ $Date$
17   */
18  public class PluginRegistry extends TrackableBase 
19  implements java.io.Serializable
20  {
21  
22  
23        //--------------------------/
24       //- Class/Member Variables -/
25      //--------------------------/
26  
27      /**
28       * 
29       *             Specifies how often to check for plugin updates.
30       * Valid values are: never, always, interval:XXX.
31       *             For the interval specification, XXX denotes a
32       * terse interval specification, such as 4h.
33       *             Where h=hours, m=minutes, d=days, w=weeks. The
34       * interval period should be specified in descending
35       *             order of granularity, like this: '[n]w [n]d [n]h
36       * [n]m'. Any omitted level of granularity will be
37       *             assumed to be a zero value.
38       *           
39       */
40      private String updateInterval = "never";
41  
42      /**
43       * Specifies whether the user should be prompted to update
44       * plugins.
45       */
46      private String autoUpdate;
47  
48      /**
49       * Whether to resolve plugin versions using LATEST metadata.
50       */
51      private String checkLatest;
52  
53      /**
54       * Field plugins.
55       */
56      private java.util.List plugins;
57  
58  
59        //-----------/
60       //- Methods -/
61      //-----------/
62  
63      /**
64       * Method addPlugin.
65       * 
66       * @param plugin
67       */
68      public void addPlugin( Plugin plugin )
69      {
70          if ( !(plugin instanceof Plugin) )
71          {
72              throw new ClassCastException( "PluginRegistry.addPlugins(plugin) parameter must be instanceof " + Plugin.class.getName() );
73          }
74          getPlugins().add( plugin );
75      } //-- void addPlugin( Plugin ) 
76  
77      /**
78       * Get specifies whether the user should be prompted to update
79       * plugins.
80       * 
81       * @return String
82       */
83      public String getAutoUpdate()
84      {
85          return this.autoUpdate;
86      } //-- String getAutoUpdate() 
87  
88      /**
89       * Get whether to resolve plugin versions using LATEST
90       * metadata.
91       * 
92       * @return String
93       */
94      public String getCheckLatest()
95      {
96          return this.checkLatest;
97      } //-- String getCheckLatest() 
98  
99      /**
100      * Method getPlugins.
101      * 
102      * @return java.util.List
103      */
104     public java.util.List getPlugins()
105     {
106         if ( this.plugins == null )
107         {
108             this.plugins = new java.util.ArrayList();
109         }
110     
111         return this.plugins;
112     } //-- java.util.List getPlugins() 
113 
114     /**
115      * Get 
116      *             Specifies how often to check for plugin updates.
117      * Valid values are: never, always, interval:XXX.
118      *             For the interval specification, XXX denotes a
119      * terse interval specification, such as 4h.
120      *             Where h=hours, m=minutes, d=days, w=weeks. The
121      * interval period should be specified in descending
122      *             order of granularity, like this: '[n]w [n]d [n]h
123      * [n]m'. Any omitted level of granularity will be
124      *             assumed to be a zero value.
125      *           
126      * 
127      * @return String
128      */
129     public String getUpdateInterval()
130     {
131         return this.updateInterval;
132     } //-- String getUpdateInterval() 
133 
134     /**
135      * Method removePlugin.
136      * 
137      * @param plugin
138      */
139     public void removePlugin( Plugin plugin )
140     {
141         if ( !(plugin instanceof Plugin) )
142         {
143             throw new ClassCastException( "PluginRegistry.removePlugins(plugin) parameter must be instanceof " + Plugin.class.getName() );
144         }
145         getPlugins().remove( plugin );
146     } //-- void removePlugin( Plugin ) 
147 
148     /**
149      * Set specifies whether the user should be prompted to update
150      * plugins.
151      * 
152      * @param autoUpdate
153      */
154     public void setAutoUpdate( String autoUpdate )
155     {
156         this.autoUpdate = autoUpdate;
157     } //-- void setAutoUpdate( String ) 
158 
159     /**
160      * Set whether to resolve plugin versions using LATEST
161      * metadata.
162      * 
163      * @param checkLatest
164      */
165     public void setCheckLatest( String checkLatest )
166     {
167         this.checkLatest = checkLatest;
168     } //-- void setCheckLatest( String ) 
169 
170     /**
171      * Set specified plugin update policy information.
172      * 
173      * @param plugins
174      */
175     public void setPlugins( java.util.List plugins )
176     {
177         this.plugins = plugins;
178     } //-- void setPlugins( java.util.List ) 
179 
180     /**
181      * Set 
182      *             Specifies how often to check for plugin updates.
183      * Valid values are: never, always, interval:XXX.
184      *             For the interval specification, XXX denotes a
185      * terse interval specification, such as 4h.
186      *             Where h=hours, m=minutes, d=days, w=weeks. The
187      * interval period should be specified in descending
188      *             order of granularity, like this: '[n]w [n]d [n]h
189      * [n]m'. Any omitted level of granularity will be
190      *             assumed to be a zero value.
191      *           
192      * 
193      * @param updateInterval
194      */
195     public void setUpdateInterval( String updateInterval )
196     {
197         this.updateInterval = updateInterval;
198     } //-- void setUpdateInterval( String ) 
199 
200 
201     private java.util.Map pluginsByKey;
202     
203     public java.util.Map getPluginsByKey()
204     {
205         if ( pluginsByKey == null )
206         {
207             pluginsByKey = new java.util.HashMap();
208             
209             for ( java.util.Iterator it = getPlugins().iterator(); it.hasNext(); )
210             {
211                 Plugin plugin = (Plugin) it.next();
212             
213                 pluginsByKey.put( plugin.getKey(), plugin );
214             }
215         }
216         
217         return pluginsByKey;
218     }
219     
220     public void flushPluginsByKey()
221     {
222         this.pluginsByKey = null;
223     }
224     
225     private RuntimeInfo runtimeInfo;
226     
227     public void setRuntimeInfo( RuntimeInfo runtimeInfo )
228     {
229         this.runtimeInfo = runtimeInfo;
230     }
231     
232     public RuntimeInfo getRuntimeInfo()
233     {
234         return runtimeInfo;
235     }
236         
237     private String modelEncoding = "UTF-8";
238 
239     /**
240      * Set an encoding used for reading/writing the model.
241      *
242      * @param modelEncoding the encoding used when reading/writing the model.
243      */
244     public void setModelEncoding( String modelEncoding )
245     {
246         this.modelEncoding = modelEncoding;
247     }
248 
249     /**
250      * @return the current encoding used when reading/writing this model.
251      */
252     public String getModelEncoding()
253     {
254         return modelEncoding;
255     }
256 }