1 package org.apache.archiva.scheduler.repository;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.archiva.metadata.repository.MetadataRepository;
23 import org.apache.archiva.metadata.repository.MetadataRepositoryException;
24 import org.apache.archiva.metadata.repository.stats.RepositoryStatistics;
25 import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
26 import org.springframework.stereotype.Service;
27
28 import java.util.ArrayList;
29 import java.util.Date;
30 import java.util.HashMap;
31 import java.util.List;
32 import java.util.Map;
33
34 @Service( "repositoryStatisticsManager#test" )
35 public class TestRepositoryStatisticsManager
36 implements RepositoryStatisticsManager
37 {
38 private Map<String, List<RepositoryStatistics>> repoStats = new HashMap<>();
39
40 @Override
41 public boolean hasStatistics( MetadataRepository metadataRepository, String repositoryId )
42 throws MetadataRepositoryException
43 {
44 return !repoStats.isEmpty();
45 }
46
47 @Override
48 public RepositoryStatistics getLastStatistics( MetadataRepository metadataRepository, String repositoryId )
49 {
50 List<RepositoryStatistics> repositoryStatisticsList = getStatsList( repositoryId );
51 return !repositoryStatisticsList.isEmpty()
52 ? repositoryStatisticsList.get( repositoryStatisticsList.size() - 1 )
53 : null;
54 }
55
56 @Override
57 public void addStatisticsAfterScan( MetadataRepository metadataRepository, String repositoryId, Date startTime,
58 Date endTime, long totalFiles, long newFiles )
59 {
60 List<RepositoryStatistics> stats = getStatsList( repositoryId );
61
62 RepositoryStatistics repositoryStatistics = new RepositoryStatistics();
63 repositoryStatistics.setScanStartTime( startTime );
64 repositoryStatistics.setScanEndTime( endTime );
65 repositoryStatistics.setNewFileCount( newFiles );
66 repositoryStatistics.setTotalFileCount( totalFiles );
67 repositoryStatistics.setRepositoryId( repositoryId );
68
69 stats.add( repositoryStatistics );
70 }
71
72 @Override
73 public void deleteStatistics( MetadataRepository metadataRepository, String repositoryId )
74 {
75 repoStats.remove( repositoryId );
76 }
77
78 @Override
79 public List<RepositoryStatistics> getStatisticsInRange( MetadataRepository metadataRepository, String repositoryId,
80 Date startDate, Date endDate )
81 {
82 throw new UnsupportedOperationException();
83 }
84
85 private List<RepositoryStatistics> getStatsList( String repositoryId )
86 {
87 List<RepositoryStatistics> stats = repoStats.get( repositoryId );
88 if ( stats == null )
89 {
90 stats = new ArrayList<>();
91 repoStats.put( repositoryId, stats );
92 }
93 return stats;
94 }
95 }