Coverage Report - net.admin4j.timer.TaskTimerRegistry
 
Classes in this File Line Coverage Branch Coverage Complexity
TaskTimerRegistry
89%
26/29
50%
1/2
1.125
 
 1  
 /*
 2  
  * This software is licensed under the Apache License, Version 2.0
 3  
  * (the "License") agreement; you may not use this file except in compliance with
 4  
  * the License.  You may obtain a copy of the License at
 5  
  * 
 6  
  *      http://www.apache.org/licenses/LICENSE-2.0
 7  
  * 
 8  
  * Unless required by applicable law or agreed to in writing, software
 9  
  * distributed under the License is distributed on an "AS IS" BASIS,
 10  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11  
  * See the License for the specific language governing permissions and
 12  
  * limitations under the License.
 13  
  */
 14  
 package net.admin4j.timer;
 15  
 
 16  
 import java.util.HashSet;
 17  
 import java.util.Map;
 18  
 import java.util.Set;
 19  
 import java.util.concurrent.ConcurrentHashMap;
 20  
 
 21  
 import net.admin4j.config.Admin4JConfiguration;
 22  
 import net.admin4j.dao.DAOFactory;
 23  
 import net.admin4j.util.Daemon;
 24  
 import net.admin4j.vo.DataMeasurementSummaryVO;
 25  
 
 26  
 import org.slf4j.Logger;
 27  
 import org.slf4j.LoggerFactory;
 28  
 
 29  
 /**
 30  
  * Registry for all performance timer metrics.
 31  
  * @author D. Ashmore
 32  
  *
 33  
  */
 34  
 class TaskTimerRegistry  {
 35  
     
 36  21
     private static final TaskTimerRegistry singleton = new TaskTimerRegistry();
 37  21
     private Map<String, TaskTimer> registeredDataMeasures = new ConcurrentHashMap<String, TaskTimer>();
 38  21
     private static Logger log = LoggerFactory.getLogger(TaskTimerRegistry.class);
 39  
     
 40  
     static {
 41  21
         if (Admin4JConfiguration.isPerformanceInfoStored()) {
 42  
             try {
 43  3
                 for (TaskTimer timer: DAOFactory.getTaskTimerDAO().findAll()) {
 44  0
                     register(timer);
 45  
                 }
 46  
             }
 47  3
             catch (Throwable t) {
 48  3
                 log.error("Error reading stored performance info", t);
 49  0
             }
 50  
         }
 51  
     }
 52  
     
 53  
     @SuppressWarnings("unused")
 54  21
     private static final Daemon CLEANUP_DAEMON = new Daemon(new TaskTimerCleanupTask(), "Admin4J-TaskTimerCleanupTask", 300000);
 55  
     static {
 56  21
         Runtime.getRuntime().addShutdownHook(new TaskTimerShutdownHook());
 57  21
     }
 58  
     
 59  21
     private TaskTimerRegistry() {
 60  
         // Prevent unauthorized instantiation
 61  21
     }
 62  
     
 63  
     public static void register(TaskTimer timer) {
 64  24
         singleton.registeredDataMeasures.put(timer.getLabel(), timer);
 65  24
     }
 66  
     
 67  
     public static TaskTimer findTaskTimer(String label) {
 68  3000033
         return singleton.registeredDataMeasures.get(label);
 69  
     }
 70  
     
 71  
     public static void delete(String label) {
 72  3
         singleton.registeredDataMeasures.remove(label);
 73  3
         saveAll();
 74  3
     }
 75  
 
 76  
     private static void saveAll() {
 77  9
         if (Admin4JConfiguration.isPerformanceInfoStored()) {
 78  0
             DAOFactory.getTaskTimerDAO().saveAll(
 79  
                     new HashSet<TaskTimer>(
 80  
                             TaskTimerRegistry.getRegisteredDataMeasures().values()));
 81  
         }
 82  9
     }
 83  
     
 84  
     public static void clearAll() {
 85  6
         singleton.registeredDataMeasures.clear();
 86  6
         saveAll();
 87  6
     }
 88  
     
 89  
     public static Map<String,Set<DataMeasurementSummaryVO>> getDataSummaryMap() {
 90  15
         Map<String, Set<DataMeasurementSummaryVO>> summaryMap 
 91  
             = TaskTimerUtils.produceDataSummaryMap(singleton.registeredDataMeasures.values());
 92  
         
 93  15
         return summaryMap;
 94  
     }
 95  
 
 96  
     public static Map<String, TaskTimer> getRegisteredDataMeasures() {
 97  3
         return singleton.registeredDataMeasures;
 98  
     }
 99  
 
 100  
 }