net.sourceforge.jabm.report.CombiSeriesReportVariables.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.jabm.report.CombiSeriesReportVariables.java

Source

/*
 * JABM - Java Agent-Based Modeling Toolkit
 * Copyright (C) 2013 Steve Phelps
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU 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.
 */
package net.sourceforge.jabm.report;

import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import net.sourceforge.jabm.event.AbstractModel;
import net.sourceforge.jabm.event.ReportVariablesChangedEvent;
import net.sourceforge.jabm.event.SimEvent;

import org.springframework.beans.factory.InitializingBean;

public class CombiSeriesReportVariables extends AbstractModel implements Timeseries, InitializingBean {

    protected List<Timeseries> seriesList;

    protected String name;

    @Override
    public void compute(SimEvent event) {
        for (Timeseries series : seriesList) {
            series.compute(event);
        }
    }

    @Override
    public void dispose(SimEvent event) {
        for (Timeseries series : seriesList) {
            series.dispose(event);
        }
    }

    @Override
    public void initialise(SimEvent event) {
        for (Timeseries series : seriesList) {
            series.initialise(event);
        }
    }

    @Override
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public Map<Object, Number> getVariableBindings() {
        LinkedHashMap<Object, Number> result = new LinkedHashMap<Object, Number>();
        for (Timeseries series : seriesList) {
            result.putAll(series.getVariableBindings());
        }
        return result;
    }

    @Override
    public void eventOccurred(SimEvent event) {
        if (event instanceof ReportVariablesChangedEvent) {
            fireEvent(event);
        } else {
            for (Timeseries series : seriesList) {
                series.eventOccurred(event);
            }
        }
    }

    @Override
    public Number getX(int seriesIndex, int itemIndex) {
        return seriesList.get(seriesIndex).getX(0, itemIndex);
    }

    @Override
    public Number getY(int seriesIndex, int itemIndex) {
        return seriesList.get(seriesIndex).getY(0, itemIndex);
    }

    @Override
    public int size(int seriesIndex) {
        //      Timeseries series = seriesList.get(seriesIndex);
        //      int n = series.getNumberOfSeries();
        //      int result = 0;
        //      for(int i=0; i<n; i++) {
        //         result += series.size(i);
        //      }
        //      return result;
        return seriesList.get(seriesIndex).size(0);
    }

    @Override
    public int getNumberOfSeries() {
        return seriesList.size();
    }

    public List<Timeseries> getSeriesList() {
        return seriesList;
    }

    public void setSeriesList(List<Timeseries> seriesList) {
        this.seriesList = seriesList;
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        for (Timeseries series : seriesList) {
            series.addListener(this);
        }
    }

    @Override
    public List<Object> getyVariableNames() {
        LinkedList<Object> result = new LinkedList<Object>();
        for (Timeseries series : seriesList) {
            result.addAll(series.getyVariableNames());
        }
        return result;
    }

}