]> source.dussan.org Git - archiva.git/blob
1adbfe6f60d5b9fc497b182fd97ad2609955f5a3
[archiva.git] /
1 package org.apache.archiva.redback.integration.reports;
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.lang.StringUtils;
23 import org.springframework.context.ApplicationContext;
24 import org.springframework.stereotype.Service;
25
26 import javax.annotation.PostConstruct;
27 import javax.inject.Inject;
28 import java.util.Collections;
29 import java.util.HashMap;
30 import java.util.List;
31 import java.util.Map;
32
33 /**
34  * ReportManager
35  *
36  * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
37  * @version $Id$
38  */
39 @Service( "reportManager" )
40 public class ReportManager
41 {
42
43     @Inject
44     private List<Report> availableReports;
45
46     @Inject
47     private ApplicationContext applicationContext;
48
49     private Map<String, Map<String, Report>> reportMap;
50
51     public Report findReport( String id, String type )
52         throws ReportException
53     {
54         if ( StringUtils.isBlank( id ) )
55         {
56             throw new ReportException( "Unable to generate report from empty report id." );
57         }
58
59         if ( StringUtils.isBlank( type ) )
60         {
61             throw new ReportException( "Unable to generate report from empty report type." );
62         }
63
64         Map<String, Report> typeMap = reportMap.get( id );
65         if ( typeMap == null )
66         {
67             throw new ReportException( "Unable to find report id [" + id + "]" );
68         }
69
70         Report requestedReport = typeMap.get( type );
71
72         if ( requestedReport == null )
73         {
74             throw new ReportException( "Unable to find report id [" + id + "] type [" + type + "]" );
75         }
76
77         return requestedReport;
78     }
79
80     public Map<String, Map<String, Report>> getReportMap()
81     {
82         return Collections.unmodifiableMap( reportMap );
83     }
84
85     @SuppressWarnings( "unchecked" )
86     @PostConstruct
87     public void initialize()
88     {
89         reportMap = new HashMap<String, Map<String, Report>>();
90
91         for ( Report report : availableReports )
92         {
93             Map<String, Report> typeMap = reportMap.get( report.getId() );
94             if ( typeMap == null )
95             {
96                 typeMap = new HashMap<String, Report>();
97             }
98
99             typeMap.put( report.getType(), report );
100             reportMap.put( report.getId(), typeMap );
101         }
102     }
103 }