package jas2.hep;

import jas2.hist.*;
import jas2.hist.util.*;
import hepjas.analysis.*;
import hepjas.analysis.partition.*;

import java.util.*;

/**
 * Converts a hep.analysis.Partition to a jas2.hist.DataSource
 */

public abstract class PartitionAdapter extends ObserverAdapter implements DataSource, HasStatistics
{
	/**
	 * Create a DataSource from a Histogram
	 */
	public static DataSource create(Histogram h)
	{
		return PartitionAdapter.create(h.getPartition(),h.getName());
	}
	/**
	 * Create a DataSource from a Partition and a String (title)
	 */
	public static DataSource create(Partition partition, String title)
	{		
		PartitionAdapter result;
		
		if (partition instanceof Abstract1DPartition) 
			result = new Partition1DAdapter((Abstract1DPartition) partition);
		else if (partition instanceof Abstract2DPartition)
		{
			if (partition instanceof ScatterDataSource)
			{
				result = new ScatterAdapter((Abstract2DPartition) partition);
			}
			else
			{
				result = new Partition2DAdapter((Abstract2DPartition) partition);
			}
		}
		else throw new IllegalArgumentException("Argument is an unknown subtype of Partition");

		result.m_title = title;	
		result.m_partition = partition;
		return result;
	}
	PartitionAdapter(Observable obs)
	{
		super(obs);
	}
	public void notifyObservers(Object arg)
	{
		if (arg instanceof PartitionNotification) 
			arg = HistogramUpdateAdapter.create((PartitionNotification) arg);
		super.notifyObservers(arg);
	}
	public jas2.hist.Statistics getStatistics()
	{
		return new StatisticsAdapter(m_partition.getStatistics());
	}
	public String getTitle()
	{
		return m_title;
	}
	public String toString()
	{
		final hepjas.analysis.partition.Statistics stats = m_partition.getStatistics();
		if (stats != null) return getTitle()+": "+stats;
		else return getTitle()+": no statistics available";
	}
	private String m_title;
	private Partition m_partition;
}

 

Ads help maintain this website.