/*
* Copyright (C) 2011 Laurent Caillette
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation, either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.novelang.nhovestone.report;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.novelang.KnownVersions;
import org.novelang.Version;
import org.novelang.common.FileTools;
import org.novelang.logger.Logger;
import org.novelang.logger.LoggerFactory;
import org.novelang.nhovestone.MeasurementBundle;
import org.novelang.nhovestone.Scenario;
import org.novelang.nhovestone.scenario.TimeMeasurement;
import org.novelang.nhovestone.scenario.TimeMeasurer;
/**
* @author Laurent Caillette
*/
public class GrapherDemo {
private static final Logger LOGGER = LoggerFactory.getLogger( GrapherDemo.class );
private GrapherDemo() { }
public static List< Long > buildUpsizings() {
final List< Long > list = Lists.newArrayList() ;
list.add( 455L ) ;
list.add( 525L ) ;
list.add( 435L ) ;
list.add( 400L ) ;
list.add( 388L ) ;
list.add( 482L ) ;
list.add( 451L ) ;
list.add( 478L ) ;
list.add( 448L ) ;
list.add( 411L ) ;
list.add( 490L ) ;
list.add( 476L ) ;
list.add( 434L ) ;
list.add( 472L ) ;
list.add( 410L ) ;
list.add( 460L ) ;
list.add( 415L ) ;
list.add( 463L ) ;
list.add( 410L ) ;
list.add( 409L ) ;
list.add( 437L ) ;
list.add( 501L ) ;
list.add( 409L ) ;
list.add( 404L ) ;
list.add( 384L ) ;
list.add( 442L ) ;
list.add( 461L ) ;
list.add( 438L ) ;
list.add( 418L ) ;
list.add( 419L ) ;
list.add( 460L ) ;
list.add( 470L ) ;
list.add( 438L ) ;
list.add( 472L ) ;
list.add( 420L ) ;
list.add( 430L ) ;
list.add( 450L ) ;
list.add( 418L ) ;
list.add( 493L ) ;
list.add( 449L ) ;
list.add( 434L ) ;
list.add( 411L ) ;
list.add( 490L ) ;
list.add( 476L ) ;
list.add( 472L ) ;
list.add( 463L ) ;
list.add( 410L ) ;
list.add( 410L ) ;
list.add( 460L ) ;
list.add( 415L ) ;
list.add( 409L ) ;
list.add( 437L ) ;
return ImmutableList.copyOf( list ) ;
}
public static Map< Version, MeasurementBundle< TimeMeasurement > > buildMap() {
final Map< Version, MeasurementBundle< TimeMeasurement > > map = Maps.newHashMap() ;
final List< TimeMeasurement > timeMeasurements1 = Lists.newArrayList() ;
timeMeasurements1.add( new TimeMeasurement( 137L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 160L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 368L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 221L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 249L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 182L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 533L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 805L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 511L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 351L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 341L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 279L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 329L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 496L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 445L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 524L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 172L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 374L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 810L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 1131L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 190L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 425L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 313L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 498L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 316L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 289L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 539L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 329L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 388L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 433L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 434L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 475L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 468L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 466L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 476L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 573L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 715L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 544L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 768L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 592L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 688L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 769L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 681L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 667L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 895L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 1188L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 1231L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 1319L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 1579L ) ) ;
timeMeasurements1.add( new TimeMeasurement( 3492L ) ) ;
final MeasurementBundle< TimeMeasurement > measurementBundle1 =
new MeasurementBundle< TimeMeasurement >(
timeMeasurements1, Scenario.Terminations.ITERATION_COUNT_EXCEEDED )
;
map.put( KnownVersions.VERSION_0_38_1, measurementBundle1 ) ;
final List< TimeMeasurement > timeMeasurements2 = Lists.newArrayList() ;
timeMeasurements2.add( new TimeMeasurement( 214L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 132L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 436L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 200L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 250L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 334L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 493L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 582L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 239L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 299L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 224L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 263L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 333L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 361L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 308L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 325L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 284L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 274L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 1127L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 315L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 380L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 237L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 357L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 327L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 300L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 270L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 286L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 329L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 311L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 307L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 411L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 295L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 308L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 502L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 344L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 484L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 637L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 588L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 486L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 545L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 735L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 825L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 1103L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 1192L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 1069L ) ) ;
timeMeasurements2.add( new TimeMeasurement( 1444L ) ) ;
final MeasurementBundle< TimeMeasurement > measurementBundle2 =
new MeasurementBundle< TimeMeasurement >(
timeMeasurements2, TimeMeasurer.Terminations.STRAIN )
;
map.put( KnownVersions.VERSION_0_41_0, measurementBundle2 ) ;
return map ;
}
public static void main( final String[] args ) throws IOException {
final File scenarioDirectory = FileTools.createFreshDirectory( "_scenario-demo" ) ;
final List< Long > upsizings = buildUpsizings() ;
final Map< Version, MeasurementBundle< TimeMeasurement > > versionMap = buildMap() ;
Grapher.writeBitmapImage( new File( scenarioDirectory, "graph.png" ), upsizings, versionMap ) ;
Grapher.exportChartAsSvg( new File( scenarioDirectory, "graph.svg" ), upsizings, versionMap ) ;
}
}