/* * Copyright (C) 2008 Digital Sundhed (SDSD) * * All source code and information supplied as part of chronos * is copyright to its contributers. * * The source code has been released under a dual license - meaning you can * use either licensed version of the library with your code. * * It is released under the Common Public License 1.0, a copy of which can * be found at the link below. * http://www.opensource.org/licenses/cpl.php * * It is released under the LGPL (GNU Lesser General Public License), either * version 2.1 of the License, or (at your option) any later version. A copy * of which can be found at the link below. * http://www.gnu.org/copyleft/lesser.html */ package org.codehaus.mojo.chronos.responsetime; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** * A grouping collection of samples (grouped by the name of the samples). * * @author ksr@lakeside.dk */ public final class GroupedResponsetimeSamples extends ResponsetimeSamples { private static final long serialVersionUID = 5054656881107118329L; private final Map sampleGroupsByName = new LinkedHashMap(); /** * Add a sample (and group it). * * @see ResponsetimeSamples#add(ResponsetimeSample,String) */ public void add(ResponsetimeSample sample, String sampleName) { super.add(sample, sampleName); ResponsetimeSamples sampleGroup = getSampleGroup(sampleName); if(sampleGroup == null) { sampleGroup = new ResponsetimeSampleGroup(sampleName); sampleGroupsByName.put(sampleName, sampleGroup); } sampleGroup.add(sample, sampleName); } private ResponsetimeSamples getSampleGroup(String sampleName) { return (ResponsetimeSamples)sampleGroupsByName.get(sampleName); } /** * @return a list of {@link ResponsetimeSampleGroup} */ public List getSampleGroups() { return new ArrayList(sampleGroupsByName.values()); } }