StatisticsProxysOJ.java :  » Image » objectj » oj » project » results » statistics » Java Open Source

Java Open Source » Image » objectj 
objectj » oj » project » results » statistics » StatisticsProxysOJ.java
/*
 * StatisticsOJ.java
 */
package oj.project.results.statistics;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import oj.OJ;
import oj.project.BaseAdapterOJ;
import oj.project.IBaseOJ;
import oj.project.ResultsOJ;
import oj.processor.events.ImageChangedEventOJ;
import oj.processor.events.ImageChangedListener2OJ;

public class StatisticsProxysOJ extends BaseAdapterOJ implements ImageChangedListener2OJ {

    private static final long serialVersionUID = 7138288919785402141L;
    private ArrayList statistics = new ArrayList();

    public StatisticsProxysOJ() {
        init();
    }

    public StatisticsProxysOJ(String columnName) {
        addStatistics(columnName);
        setStatisticsDirty();

        for (int i = 0; i < statistics.size(); i++) {
            ((StatisticsProxyOJ) statistics.get(i)).setParent(this);
        }
        for (int i = 0; i < statistics.size(); i++) {
            ((StatisticsProxyOJ) statistics.get(i)).setColumnName(columnName);
        }
    }

    public void init(String columnName) {
        addStatistics(columnName);
        setStatisticsDirty();
    }

    public void initAfterUnmarshalling(IBaseOJ parent, String columnName) {
        super.initAfterUnmarshalling(parent);
        if (statistics == null) {
            statistics = new ArrayList();
        }

        addStatistics(columnName);
        setStatisticsDirty();

        for (int i = 0; i < statistics.size(); i++) {
            StatisticsProxyOJ statistic = (StatisticsProxyOJ) statistics.get(i);
            statistic.initAfterUnmarshalling(this, columnName);
        }
        OJ.getEventProcessor().addImageChangedListener(this);
    }

    public void setColumnName(String columnName) {
        for (int i = 0; i < statistics.size(); i++) {
            StatisticsProxyOJ statistic = (StatisticsProxyOJ) statistics.get(i);
            statistic.setColumnName(columnName);
        }
    }

    private void addStatistics(String columnName) {
        if ((parent != null) && (parent.getParent() != null) && (parent.getParent().getParent() != null)) {
            for (int i = 0; i < ((ResultsOJ) parent.getParent().getParent()).getStatistics().getStatisticsCount(); i++) {
                IStatisticsOJ statistic = ((ResultsOJ) parent.getParent().getParent()).getStatistics().getStatisticsByIndex(i);
                addStatistic(new StatisticsProxyOJ(statistic.getName(), columnName, statistic));
            }
        }
    }

    public boolean getChanged() {
        if (changed) {
            return true;
        } else {
            for (int i = 0; i < statistics.size(); i++) {
                if (((StatisticsProxyOJ) statistics.get(i)).getChanged()) {
                    return true;
                }
            }
        }
        return false;
    }

    public void setChanged(boolean changed) {
        super.setChanged(changed);
        for (int i = 0; i < statistics.size(); i++) {
            ((StatisticsProxyOJ) statistics.get(i)).setChanged(changed);
        }
    }

    public void addStatistic(StatisticsProxyOJ statistic) {
        if (getStatisticsByName(statistic.getName()) == null) {
            statistics.add(statistic);
            statistic.setParent(this);
            changed = true;
        }
    }

    public int indexOfStatistics(String name) {
        for (int i = 0; i < statistics.size(); i++) {
            if (name.equalsIgnoreCase(((StatisticsProxyOJ) statistics.get(i)).getName())) {
                return i;
            }
        }
        return -1;
    }

    public StatisticsProxyOJ getStatisticsByName(String name) {
        for (int i = 0; i < statistics.size(); i++) {
            if (name.equalsIgnoreCase(((StatisticsProxyOJ) statistics.get(i)).getName())) {
                return (StatisticsProxyOJ) statistics.get(i);
            }
        }
        return null;
    }

    public void removeStatisticsByName(String name) {
        int index = indexOfStatistics(name);
        if (index >= 0) {
            statistics.remove(index);
            changed = true;
        }
    }

    public void setStatistics(String name, StatisticsProxyOJ statistic) {
        for (int i = 0; i < statistics.size(); i++) {
            if (((StatisticsProxyOJ) statistics.get(i)).getName().equalsIgnoreCase(statistic.getName())) {
                statistics.set(i, statistic);
                changed = true;
                break;
            }
        }
    }

    public double getStatisticsValueByName(String name) {
        for (int i = 0; i < statistics.size(); i++) {
            if (name.equalsIgnoreCase(((StatisticsProxyOJ) statistics.get(i)).getName())) {
                return ((StatisticsProxyOJ) statistics.get(i)).getValue();
            }
        }
        return Double.NaN;
    }

    public double getStatisticsValueByIndex(int index) {
        return ((StatisticsProxyOJ) statistics.get(index)).getValue();
    }

    public void setStatisticsValueByName(String name, double value) {
        for (int i = 0; i < statistics.size(); i++) {
            if (name.equalsIgnoreCase(((StatisticsProxyOJ) statistics.get(i)).getName())) {
                ((StatisticsProxyOJ) statistics.get(i)).setValue(value);
                changed = true;
                break;
            }
        }
    }

    public void setStatisticsValueByIndex(int index, double value) {
        ((StatisticsProxyOJ) statistics.get(index)).setValue(value);
        changed = true;
    }

    public StatisticsProxyOJ getStatisticsByIndex(int index) {
        return (StatisticsProxyOJ) statistics.get(index);
    }

    public void removeStatisticsByIndex(int index) {
        statistics.remove(index);
        changed = true;
    }

    public int getStatisticsCount() {
        return statistics.size();
    }

    public void setStatisticsDirty() {
        for (int i = 0; i < statistics.size(); i++) {
            ((StatisticsProxyOJ) statistics.get(i)).setDirty(true);
        }
    }

    public void imageChanged(ImageChangedEventOJ evt) {
        if (evt.getOperation() == ImageChangedEventOJ.IMAGE_DELETED) {
            for (int i = 0; i < getStatisticsCount(); i++) {
                getStatisticsByIndex(i).setDirty(true);
            }
        }
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.