Median.java

package progen.output.plugins;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Plugin que calcula que elemento de todos los añadidos está justo en el medio.
 * 
 * @author jirsis
 * @since 2.0
 * 
 */
public class Median implements Plugin {

  /** Elementos de los que se calculará la mediana. */
  @SuppressWarnings("rawtypes")
  private List<Comparable> medianCollection;

  /**
   * Constructor por defecto.
   */
  public Median() {
    initialValue();
  }

  @SuppressWarnings("rawtypes")
  public void addValue(Comparable value) {
    medianCollection.add(value);

  }

  /**
   * Devuelve el elemento que está en la posición de la mitad de la colección, o
   * en la inmediatamente inferior en caso de que el número de elementos sea
   * impar.
   */
  @SuppressWarnings("unchecked")
  public Object getValue() {
    Collections.sort(medianCollection);
    Object value = null;
    if (medianCollection.size() > 0) {
      value = medianCollection.get((int) (medianCollection.size() / 2 - 1));
    }
    return value;
  }

  @SuppressWarnings("rawtypes")
  public void initialValue() {
    medianCollection = new ArrayList<Comparable>();
  }

  public String getName() {
    return "median";
  }

  public int getPriority() {
    return 0;
  }

  public void initPlugin(String propertyFamily) {
    // do nothing
  }

  public Plugin getPlugin(String name) {
    Plugin plugin;
    if (getName().compareTo(name) == 0) {
      plugin = this;
    } else {
      plugin = new NullPlugin();
    }
    return plugin;
  }

  public void checkDependeces(List<Plugin> pluginCollection) {
    // do nothing
  }

}