]> source.dussan.org Git - archiva.git/blob
e6fa22d7b273981f681ef9ca85eb8e9114567f4d
[archiva.git] /
1 package org.apache.archiva.repository.scanner;
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 java.text.SimpleDateFormat;
23 import java.util.List;
24 import java.util.Map;
25
26 import org.apache.commons.collections.CollectionUtils;
27 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
28
29 /**
30  * RepositoryScanStatistics - extension to the RepositoryContentStatistics model.
31  *
32  * @version $Id$
33  */
34 public class RepositoryScanStatistics
35 {
36     private transient List<String> knownConsumers;
37
38     private transient List<String> invalidConsumers;
39
40     private transient long startTimestamp;
41     
42     private SimpleDateFormat df = new SimpleDateFormat();
43
44     /**
45      * Field repositoryId
46      */
47     private String repositoryId;
48
49     /**
50      * Field whenGathered
51      */
52     private java.util.Date whenGathered;
53
54     /**
55      * Field duration
56      */
57     private long duration = 0;
58
59     /**
60      * Field totalFileCount
61      */
62     private long totalFileCount = 0;
63
64     /**
65      * Field newFileCount
66      */
67     private long newFileCount = 0;
68
69     /**
70      * Field totalSize
71      */
72     private long totalSize = 0;
73
74     private Map<String, Long> consumerCounts;
75
76     private Map<String, Long> consumerTimings;
77
78     public void triggerStart()
79     {
80         startTimestamp = System.currentTimeMillis();
81     }
82
83     public java.util.Date getWhenGathered()
84     {
85         return whenGathered;
86     }
87
88     public void triggerFinished()
89     {
90         long finished = System.currentTimeMillis();
91         this.duration = finished - startTimestamp;
92         this.whenGathered = new java.util.Date( finished );
93     }
94
95     public void increaseFileCount()
96     {
97         long count = getTotalFileCount();
98         this.totalFileCount = ++count;
99     }
100
101     public void increaseNewFileCount()
102     {
103         long count = getNewFileCount();
104         this.newFileCount = ++count;
105     }
106
107     public void setKnownConsumers( List<String> consumers )
108     {
109         knownConsumers = consumers;
110     }
111
112     public void setInvalidConsumers( List<String> consumers )
113     {
114         invalidConsumers = consumers;
115     }
116
117     public String toDump( ManagedRepositoryConfiguration repo )
118     {
119         StringBuffer buf = new StringBuffer();
120
121         buf.append( "\n.\\ Scan of " ).append( this.getRepositoryId() );
122         buf.append( " \\.__________________________________________" );
123
124         buf.append( "\n  Repository Dir    : " ).append( repo.getLocation() );
125         buf.append( "\n  Repository Name   : " ).append( repo.getName() );
126         buf.append( "\n  Repository Layout : " ).append( repo.getLayout() );
127
128         buf.append( "\n  Known Consumers   : " );
129         if ( CollectionUtils.isNotEmpty( knownConsumers ) )
130         {
131             buf.append( "(" ).append( knownConsumers.size() ).append( " configured)" );
132             for ( String id : knownConsumers )
133             {
134                 buf.append( "\n                      " ).append( id );
135                 if ( consumerTimings.containsKey( id ) )
136                 {
137                     long time = consumerTimings.get( id );
138                     buf.append( " (Total: " ).append( time ).append( "ms" );
139                     if ( consumerCounts.containsKey( id ) )
140                     {
141                         long total = consumerCounts.get( id );
142                         buf.append( "; Avg.: " + ( time / total ) + "; Count: " + total );
143                     }
144                     buf.append( ")" );
145                 }
146             }
147         }
148         else
149         {
150             buf.append( "<none>" );
151         }
152
153         buf.append( "\n  Invalid Consumers : " );
154         if ( CollectionUtils.isNotEmpty( invalidConsumers ) )
155         {
156             buf.append( "(" ).append( invalidConsumers.size() ).append( " configured)" );
157             for ( String id : invalidConsumers )
158             {
159                 buf.append( "\n                      " ).append( id );
160                 if ( consumerTimings.containsKey( id ) )
161                 {
162                     long time = consumerTimings.get( id );
163                     buf.append( " (Total: " ).append( time ).append( "ms" );
164                     if ( consumerCounts.containsKey( id ) )
165                     {
166                         long total = consumerCounts.get( id );
167                         buf.append( "; Avg.: " + ( time / total ) + "ms; Count: " + total );
168                     }
169                     buf.append( ")" );
170                 }
171             }
172         }
173         else
174         {
175             buf.append( "<none>" );
176         }
177
178         buf.append( "\n  Duration          : " );
179         buf.append( org.apache.maven.archiva.common.utils.DateUtil.getDuration( this.getDuration() ) );
180         buf.append( "\n  When Gathered     : " );
181         if ( this.getWhenGathered() == null )
182         {
183             buf.append( "<null>" );
184         }
185         else
186         {
187             buf.append( df.format( this.getWhenGathered() ) );
188         }
189
190         buf.append( "\n  Total File Count  : " ).append( this.getTotalFileCount() );
191
192         long averageMsPerFile = 0;
193
194         if ( getTotalFileCount() != 0 )
195         {
196             averageMsPerFile = ( this.getDuration() / this.getTotalFileCount() );
197         }
198
199         buf.append( "\n  Avg Time Per File : " );
200         buf.append( org.apache.maven.archiva.common.utils.DateUtil.getDuration( averageMsPerFile ) );
201         buf.append( "\n______________________________________________________________" );
202
203         return buf.toString();
204     }
205
206     public void setRepositoryId( String repositoryId )
207     {
208         this.repositoryId = repositoryId;
209     }
210
211     public String getRepositoryId()
212     {
213         return repositoryId;
214     }
215
216     public long getDuration()
217     {
218         return duration;
219     }
220
221     public long getTotalFileCount()
222     {
223         return totalFileCount;
224     }
225
226     public long getNewFileCount()
227     {
228         return newFileCount;
229     }
230
231     public long getTotalSize()
232     {
233         return totalSize;
234     }
235
236     public void setConsumerCounts( Map<String, Long> consumerCounts )
237     {
238         this.consumerCounts = consumerCounts;
239     }
240
241     public void setConsumerTimings( Map<String, Long> consumerTimings )
242     {
243         this.consumerTimings = consumerTimings;
244     }
245 }