Coverage report

  %line %branch
net.sf.infrared.web.action.PerfDataSummaryAction
0% 
0% 

 1  
 /*
 2  
  *
 3  
  * Copyright 2005 Tavant Technologies and Contributors
 4  
  * 
 5  
  * Licensed under the Apache License, Version 2.0 (the "License")
 6  
  * you may not use this file except in compliance with the License.
 7  
  * You may obtain a copy of the License at
 8  
  *
 9  
  *     http://www.apache.org/licenses/LICENSE-2.0
 10  
  *
 11  
  * Unless required by applicable law or agreed to in writing, software
 12  
  * distributed under the License is distributed on an "AS IS" BASIS,
 13  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14  
  * See the License for the specific language governing permissions and
 15  
  * limitations under the License.
 16  
  *
 17  
  *
 18  
  *
 19  
  * Original Author: kaushal.kumar (Tavant Technologies)
 20  
  * Contributor(s):  prashant.nair;
 21  
  *
 22  
  */
 23  
 package net.sf.infrared.web.action;
 24  
 
 25  
 import java.text.SimpleDateFormat;
 26  
 import java.util.ArrayList;
 27  
 import java.util.Date;
 28  
 import java.util.HashMap;
 29  
 import java.util.HashSet;
 30  
 import java.util.Iterator;
 31  
 import java.util.Map;
 32  
 import java.util.Set;
 33  
 
 34  
 import javax.servlet.http.HttpServletRequest;
 35  
 import javax.servlet.http.HttpServletResponse;
 36  
 import javax.servlet.http.HttpSession;
 37  
 
 38  
 import net.sf.infrared.base.model.LayerTime;
 39  
 import net.sf.infrared.web.formbean.ConfigureFormBean;
 40  
 import net.sf.infrared.web.formbean.LayerTimeBean;
 41  
 import net.sf.infrared.web.formbean.PerfDataSummaryBean;
 42  
 import net.sf.infrared.web.util.DataFetchUtil;
 43  
 import net.sf.infrared.web.util.PerformanceDataSnapshot;
 44  
 import net.sf.infrared.web.util.ViewUtil;
 45  
 
 46  
 import org.apache.commons.beanutils.BeanUtils;
 47  
 import org.apache.struts.action.Action;
 48  
 import org.apache.struts.action.ActionForm;
 49  
 import org.apache.struts.action.ActionForward;
 50  
 import org.apache.struts.action.ActionMapping;
 51  
 
 52  0
 public class PerfDataSummaryAction extends Action {
 53  
 	
 54  
     public ActionForward execute(ActionMapping mapping, ActionForm form,
 55  
                     HttpServletRequest request, HttpServletResponse response) throws Exception {
 56  
         
 57  0
     	ConfigureFormBean configBean = (ConfigureFormBean) form;
 58  
     	
 59  0
         HttpSession session = request.getSession();
 60  0
         Set selectedApplications = new HashSet();
 61  0
         boolean ascending = true;
 62  0
         boolean ascendingAbs = true;
 63  
 
 64  0
         PerfDataSummaryBean perfBean = new PerfDataSummaryBean();
 65  
         Map hierarchicalLayerTimes;
 66  
         Map absoluteLayerTimes;
 67  0
         LayerTime [] hierarchicalLayerTimeArr = null;
 68  0
         LayerTime [] absoluteLayerTimeArr = null;
 69  
 
 70  0
         if (configBean.isLiveData()) {
 71  0
             session.setAttribute("isInActiveMode", "true");
 72  0
             Set applicationNames = DataFetchUtil.getApplicationNames();
 73  0
             PerformanceDataSnapshot currentPerfData = 
 74  
                             (PerformanceDataSnapshot) session.getAttribute("perfData");
 75  0
             if (request.getParameterValues("applicationName") != null) {
 76  0
                 String[] parameterValues = request.getParameterValues("applicationName");
 77  0
                 for (int i = 0; i < parameterValues.length; i++){
 78  0
                     selectedApplications.add(parameterValues[i]);
 79  
                 }                    
 80  
             } 
 81  0
             else if (currentPerfData != null) {
 82  0
                 selectedApplications = currentPerfData.getApplicationNames();
 83  
             } 
 84  0
             else if (applicationNames.size() > 0) {
 85  0
                 selectedApplications.add(applicationNames.iterator().next());
 86  
             }
 87  
 
 88  0
             Set instances = DataFetchUtil.getInstanceNames(selectedApplications);
 89  0
             Set selectedInstances = new HashSet();
 90  0
             if (request.getParameter("instanceName") != null) {
 91  0
                 String[] parameterValues = request.getParameterValues("instanceName");
 92  0
                 for (int i = 0; i < parameterValues.length; i++){
 93  0
                     selectedInstances.add(parameterValues[i]);
 94  
                 }                    
 95  
             } 
 96  0
             else if (currentPerfData != null) {
 97  0
                 selectedInstances = currentPerfData.getInstanceNames();
 98  
             } 
 99  0
             else if (instances.size() > 0) {
 100  0
                 selectedInstances.add(instances.iterator().next());
 101  
             }
 102  
 
 103  0
             if ("true".equals(request.getParameter("reset"))) {
 104  0
                 selectedApplications.clear();
 105  0
                 selectedInstances.clear();
 106  0
                 applicationNames.clear();
 107  0
                 instances.clear();
 108  0
                 session.setAttribute("perfData", DataFetchUtil.reset());
 109  
             }
 110  
 
 111  
             // -- creating a application-name to instance-name map --//
 112  0
             String map[][] = new String[applicationNames.size()][];
 113  0
             getAppNameToInstNameMapping(applicationNames, map);
 114  0
             request.setAttribute("map", map);
 115  
             
 116  0
             PerformanceDataSnapshot perfData = 
 117  
                                 DataFetchUtil.getPerfData(selectedApplications, selectedInstances);
 118  
 
 119  0
             perfBean.setApplicationName(applicationNames);
 120  0
             perfBean.setInstanceName(instances);
 121  0
             perfBean.setSelectedApplications(selectedApplications);
 122  0
             perfBean.setSelectedInstances(selectedInstances);
 123  
 
 124  0
             session.setAttribute("perfData", perfData);
 125  
             
 126  0
             hierarchicalLayerTimes = getHierarchicalLayerTimesMap(perfData);  
 127  0
             absoluteLayerTimes = getAbsoluteLayerTimesMap(perfData);
 128  0
             String sortBy = getSortBy(request.getParameter("sortBy"));
 129  0
             ascending = getSortDir(request.getParameter("sortDir"));
 130  
             
 131  0
             String sortByAbs = getSortBy(request.getParameter("sortByAbs"));
 132  0
             ascendingAbs = getSortDir(request.getParameter("sortDirAbs"));
 133  
 
 134  0
             hierarchicalLayerTimeArr = new LayerTime[hierarchicalLayerTimes.size()];
 135  0
             absoluteLayerTimeArr = new LayerTime[absoluteLayerTimes.size()];
 136  
             
 137  0
             int count = 0;
 138  0
             for(Iterator itr = hierarchicalLayerTimes.values().iterator(); itr.hasNext();){
 139  0
             	hierarchicalLayerTimeArr[count] = (LayerTime)itr.next();
 140  0
             	count++;
 141  
             }
 142  0
             count = 0;
 143  0
             for(Iterator itr = absoluteLayerTimes.values().iterator(); itr.hasNext();){
 144  0
                 absoluteLayerTimeArr[count] = (LayerTime)itr.next();
 145  0
                 count++;
 146  
             }
 147  
 
 148  0
             ViewUtil.sort(hierarchicalLayerTimeArr,sortBy, ascending);
 149  0
             ViewUtil.sort(absoluteLayerTimeArr,sortByAbs, ascendingAbs);
 150  
         } 
 151  
         else {
 152  0
         	String start = configBean.getStartDate();
 153  0
         	String end = configBean.getEndDate()+" 23:59:59";
 154  0
             session.setAttribute("isInActiveMode", "false");
 155  0
             PerformanceDataSnapshot perfData = 
 156  
                 (PerformanceDataSnapshot) session.getAttribute("perfData");
 157  0
             if(perfData == null){
 158  0
             	perfData = new PerformanceDataSnapshot();
 159  
             }
 160  0
         	SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
 161  0
             SimpleDateFormat endFormatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
 162  0
             Date startDate = formatter.parse(start);
 163  0
             Date endDate = endFormatter.parse(end);
 164  0
             Set applicationNames = perfData.getApplicationNames();
 165  0
             Set instanceNames = perfData.getInstanceNames();
 166  
             
 167  0
             perfData = DataFetchUtil.getDataFromDB(applicationNames, instanceNames,
 168  
             								startDate, endDate);
 169  
             
 170  0
             session.setAttribute("perfData", perfData);
 171  0
             perfBean.setApplicationName(applicationNames);
 172  0
             perfBean.setInstanceName(instanceNames);
 173  0
             perfBean.setSelectedApplications(applicationNames);
 174  0
             perfBean.setSelectedInstances(instanceNames);
 175  
 
 176  0
             hierarchicalLayerTimes = getHierarchicalLayerTimesMap(perfData);
 177  0
             absoluteLayerTimes = getAbsoluteLayerTimesMap(perfData);
 178  
             
 179  0
             String sortBy = getSortBy(request.getParameter("sortBy"));
 180  0
             ascending = getSortDir(request.getParameter("sortDir"));
 181  
             
 182  0
             String sortByAbs = getSortBy(request.getParameter("sortByAbs"));
 183  0
             ascendingAbs = getSortDir(request.getParameter("sortDirAbs"));
 184  0
             hierarchicalLayerTimeArr = new LayerTime[hierarchicalLayerTimes.size()];
 185  0
             absoluteLayerTimeArr = new LayerTime[absoluteLayerTimes.size()];
 186  0
             int count = 0;
 187  0
             for(Iterator itr = hierarchicalLayerTimes.values().iterator(); itr.hasNext();){
 188  0
             	hierarchicalLayerTimeArr[count] = (LayerTime)itr.next();
 189  0
             	count++;
 190  
             }
 191  0
             count = 0;
 192  0
             for(Iterator itr = absoluteLayerTimes.values().iterator(); itr.hasNext();){
 193  0
                 absoluteLayerTimeArr[count] = (LayerTime)itr.next();
 194  0
                 count++;
 195  
             }
 196  
 
 197  0
             ViewUtil.sort(hierarchicalLayerTimeArr, sortBy, ascending);
 198  0
             ViewUtil.sort(absoluteLayerTimeArr, sortByAbs, ascendingAbs);
 199  
         }
 200  
 
 201  0
         ArrayList hierarchicalLayerTimeBean = new ArrayList();    
 202  
 
 203  0
 		for (int i = 0; i < hierarchicalLayerTimeArr.length; i++) {
 204  0
             LayerTimeBean layerBean = new LayerTimeBean();
 205  0
             BeanUtils.copyProperties(layerBean, hierarchicalLayerTimeArr[i]);
 206  0
             hierarchicalLayerTimeBean.add(layerBean);			
 207  
 		}
 208  
 
 209  0
         ArrayList absoluteLayerTimeBean = new ArrayList();
 210  0
         for (int i = 0; i < absoluteLayerTimeArr.length; i++) {
 211  0
             LayerTimeBean layerBean = new LayerTimeBean();
 212  0
             BeanUtils.copyProperties(layerBean, absoluteLayerTimeArr[i]);
 213  0
             absoluteLayerTimeBean.add(layerBean);           
 214  
         }
 215  
 
 216  0
         perfBean.setLayerTimes(hierarchicalLayerTimeBean);
 217  0
         perfBean.setAbsoluteLayerTimes(absoluteLayerTimeBean);
 218  0
         request.setAttribute("perfBean", perfBean);
 219  0
         return (mapping.findForward("continue"));
 220  
     }
 221  
 
 222  
 	private void getAppNameToInstNameMapping(Set applicationNames, String [][] map) {
 223  0
 		Set appName = new HashSet();
 224  0
 		int i = 0;
 225  0
 		for (Iterator itr1 = applicationNames.iterator(); itr1.hasNext();) {
 226  0
 		    int j = 0;
 227  0
 		    String app = (String) itr1.next();       
 228  0
 		    appName.add(app);
 229  0
 		    Set tempInstance = DataFetchUtil.getInstanceNames(appName);
 230  0
 		    appName.remove(app);
 231  0
 		    map[i] = new String[tempInstance.size()];
 232  0
 		    for (Iterator itr2 = tempInstance.iterator(); itr2.hasNext();) {
 233  0
 		        String instanceName = (String)itr2.next();
 234  0
 		        map[i][j++] = instanceName;
 235  
 		    }
 236  0
 		    i++;
 237  
 		}
 238  0
 	}
 239  
 
 240  
     private Map getHierarchicalLayerTimesMap(PerformanceDataSnapshot perfData) {
 241  0
         Map layerTimes = new HashMap();
 242  0
         String[] layers = perfData.getStats().getHierarchicalLayers();
 243  0
         for (int j = 0; j < layers.length; j++) {
 244  0
             String aLayer = layers[j];
 245  0
             long itsTime = perfData.getStats().getTimeInHierarchicalLayer(aLayer);
 246  0
             LayerTime lt = new LayerTime(aLayer);
 247  0
             lt.setTime(itsTime);
 248  0
             layerTimes.put(aLayer, lt);
 249  
         }
 250  0
         return layerTimes;
 251  
     }
 252  
 
 253  
     private Map getAbsoluteLayerTimesMap(PerformanceDataSnapshot perfData) {
 254  0
         Map layerTimes = new HashMap();
 255  0
         String[] layers = perfData.getStats().getAbsoluteLayers();
 256  0
         for (int j = 0; j < layers.length; j++) {
 257  0
             String aLayer = layers[j];
 258  0
             long itsTime = perfData.getStats().getTimeInAbsoluteLayer(aLayer);
 259  0
             LayerTime lt = new LayerTime(aLayer);
 260  0
             lt.setTime(itsTime);
 261  0
             layerTimes.put(aLayer, lt);
 262  
         }
 263  0
         return layerTimes;
 264  
     }
 265  
 
 266  
     private String getSortBy(String sortBy){
 267  0
         if (sortBy == null) {
 268  0
             sortBy = "time";
 269  
         }
 270  0
         return sortBy;
 271  
     }
 272  
     
 273  
     private boolean getSortDir(String sortDir){
 274  0
         boolean dir = true;
 275  0
         if (sortDir != null && sortDir.equals("desc")) {
 276  0
             dir = false;
 277  
         }
 278  0
         if (sortDir == null) {
 279  0
             sortDir = "desc";
 280  0
             dir = false;
 281  
         }
 282  0
         return dir;
 283  
     }
 284  
 
 285  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.