/*******************************************************************************
* 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;
}
}
}