/******************************************************************************* * Copyright (c) 2007, 2011 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.charts.editor; import org.simantics.databoard.annotations.Optional; import org.simantics.db.Resource; import org.simantics.history.Collector; import org.simantics.history.HistoryManager; import org.simantics.simulation.data.Datasource; import org.simantics.simulation.experiment.IExperiment; /** * @author Tuukka Lehtonen */ public final class ChartData { /** * The model for which this ChartData is valid, i.e. the model that contains * {@link #run} if {@link #run} is nonnon-null */ @Optional public Resource model; /** * If just reading data from file system, not the database, this may be * null. */ @Optional public Resource run; /** * Used for giving the chart access to the active experiment state. */ @Optional public IExperiment experiment; /** * May be null if the chart data is not connected to a running experiment. */ @Optional public Datasource datasource; @Optional public HistoryManager history; /** * Optional collector, Chart uses this to flush data right before drawing it */ @Optional public Collector collector; public ChartData(Resource model, Resource run, IExperiment experiment, Datasource datasource, HistoryManager history, Collector collector) { this.model = model; this.run = run; this.experiment = experiment; this.datasource = datasource; this.history = history; this.collector = collector; } public void readFrom(ChartData other) { if (other==null) { this.model = null; this.run = null; this.experiment = null; this.datasource = null; this.history = null; this.collector = null; } else { this.model = other.model; this.run = other.run; this.experiment = other.experiment; this.datasource = other.datasource; this.history = other.history; this.collector = other.collector; } } /** * Dispose by closing history */ public void dispose() { model = null; run = null; experiment = null; datasource = null; if (history != null) { history.close(); history = null; } } }