]> source.dussan.org Git - archiva.git/blob
c68c53df23416f768a064b2a5d799d0e248c53dd
[archiva.git] /
1 package org.apache.maven.archiva.database.updater;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.commons.collections.CollectionUtils;
23 import org.apache.commons.collections.Predicate;
24 import org.apache.commons.collections.functors.OrPredicate;
25 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
26 import org.apache.maven.archiva.configuration.DatabaseScanningConfiguration;
27 import org.apache.maven.archiva.consumers.DatabaseCleanupConsumer;
28 import org.apache.maven.archiva.consumers.DatabaseUnprocessedArtifactConsumer;
29 import org.apache.maven.archiva.consumers.functors.PermanentConsumerPredicate;
30 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
31 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
32
33 import java.util.ArrayList;
34 import java.util.Collections;
35 import java.util.List;
36
37 /**
38  * DatabaseConsumers 
39  *
40  * @version $Id$
41  * 
42  * @plexus.component role="org.apache.maven.archiva.database.updater.DatabaseConsumers"
43  */
44 public class DatabaseConsumers
45     implements Initializable
46 {
47     /**
48      * @plexus.requirement
49      */
50     private ArchivaConfiguration archivaConfiguration;
51
52     /**
53      * @plexus.requirement role="org.apache.maven.archiva.consumers.DatabaseUnprocessedArtifactConsumer"
54      */
55     private List availableUnprocessedConsumers;
56
57     /**
58      * @plexus.requirement role="org.apache.maven.archiva.consumers.DatabaseCleanupConsumer"
59      */
60     private List availableCleanupConsumers;
61
62     private Predicate selectedCleanupConsumers;
63
64     private Predicate selectedUnprocessedConsumers;
65
66     class SelectedUnprocessedConsumersPredicate
67         implements Predicate
68     {
69         public boolean evaluate( Object object )
70         {
71             boolean satisfies = false;
72
73             if ( object instanceof DatabaseUnprocessedArtifactConsumer )
74             {
75                 DatabaseUnprocessedArtifactConsumer consumer = (DatabaseUnprocessedArtifactConsumer) object;
76                 DatabaseScanningConfiguration config = archivaConfiguration.getConfiguration().getDatabaseScanning();
77
78                 return config.getUnprocessedConsumers().contains( consumer.getId() );
79             }
80
81             return satisfies;
82         }
83     }
84
85     class SelectedCleanupConsumersPredicate
86         implements Predicate
87     {
88         public boolean evaluate( Object object )
89         {
90             boolean satisfies = false;
91
92             if ( object instanceof DatabaseCleanupConsumer )
93             {
94                 DatabaseCleanupConsumer consumer = (DatabaseCleanupConsumer) object;
95                 DatabaseScanningConfiguration config = archivaConfiguration.getConfiguration().getDatabaseScanning();
96
97                 return config.getCleanupConsumers().contains( consumer.getId() );
98             }
99
100             return satisfies;
101         }
102     }
103
104     public void initialize()
105         throws InitializationException
106     {
107         Predicate permanentConsumers = new PermanentConsumerPredicate();
108
109         selectedCleanupConsumers = new OrPredicate( permanentConsumers, new SelectedCleanupConsumersPredicate() );
110         selectedUnprocessedConsumers = new OrPredicate( permanentConsumers, new SelectedUnprocessedConsumersPredicate() );
111     }
112
113     /**
114      * Get the {@link List} of {@link DatabaseUnprocessedArtifactConsumer} objects
115      * for those consumers selected due to the configuration.
116      * 
117      * @return the list of selected {@link DatabaseUnprocessedArtifactConsumer} objects.
118      */
119     public List getSelectedUnprocessedConsumers()
120     {
121         List ret = new ArrayList();
122         ret.addAll( CollectionUtils.select( availableUnprocessedConsumers, selectedUnprocessedConsumers ) );
123         return ret;
124     }
125
126     /**
127      * Get the {@link List} of {@link DatabaseCleanupConsumer} objects for those
128      * consumers selected due to the configuration.
129      * 
130      * @return the list of selected {@link DatabaseCleanupConsumer} objects.
131      */
132     public List getSelectedCleanupConsumers()
133     {
134         List ret = new ArrayList();
135         ret.addAll( CollectionUtils.select( availableCleanupConsumers, selectedCleanupConsumers ) );
136         return ret;
137     }
138
139     /**
140      * Get the complete {@link List} of {@link DatabaseUnprocessedArtifactConsumer} objects
141      * that are available in the system, regardless of configuration.
142      * 
143      * @return the list of all available {@link DatabaseUnprocessedArtifactConsumer} objects.
144      */
145     public List getAvailableUnprocessedConsumers()
146     {
147         return Collections.unmodifiableList( this.availableUnprocessedConsumers );
148     }
149
150     /**
151      * Get the complete {@link List} of {@link DatabaseCleanupConsumer} objects
152      * that are available in the system, regardless of configuration.
153      * 
154      * @return the list of all available {@link DatabaseCleanupConsumer} objects.
155      */
156     public List getAvailableCleanupConsumers()
157     {
158         return Collections.unmodifiableList( this.availableCleanupConsumers );
159     }
160 }