/*
* DataSourceNormalizer.java
*
* Created on January 24, 2001, 11:55 AM
*/
package jas.hist.normalization;
import jas.hist.DataSource;
import java.util.Observable;
import java.util.Observer;
/**
* A base class for Normalizers which depend upon a DataSource
* @author tonyj
* @version $Id: DataSourceNormalizer.java 11553 2007-06-05 22:06:23Z duns $
*/
public abstract class DataSourceNormalizer extends SimpleNormalizer implements Observer
{
/** Creates a new DataSourceNormalizer
* @param source The Data Source
*/
public DataSourceNormalizer(DataSource source)
{
super(1);
this.source = source;
String property = System.getProperty("hurry", "false");
hurry = property != null && property.equalsIgnoreCase("true");
}
/** To be called by superclasses, typically at the end of the constructor.
*/
protected void init()
{
if (source instanceof Observable) ((Observable) source).addObserver(this);
norm = calculateNormalization();
}
public void update(Observable obs,Object arg)
{
double newNorm = calculateNormalization();
if (newNorm != norm)
{
norm = newNorm;
normalizationChanged();
}
}
public double getNormalizationFactor()
{
return super.getNormalizationFactor()*norm;
}
/** Calculates the normalization factor.
* @return The normalization factor.
*/
protected abstract double calculateNormalization();
protected boolean hurry;
protected DataSource source;
private double norm;
}