package org.webcat.outcomesmeasurement; import org.webcat.core.Semester; public class OutcomePairStatistic { private boolean dirtyCache = false; private int excellentCount = 0; private int adequateCount = 0; private int unsatisfactoryCount = 0; private int totalNumber = 0; private float excellentAsPercent = 0; private float adequateAsPercent = 0; private float unsatisfactoryAsPercent = 0; private int excellentCutoff = 70; private int adequateCutoff = 40; public int getExcellentCutoff() { return excellentCutoff; } public void setExcellentCutoff(int excellentCutoff) { this.excellentCutoff = excellentCutoff; } public int getAdequateCutoff() { return adequateCutoff; } public void setAdequateCutoff(int adequateCutoff) { this.adequateCutoff = adequateCutoff; } private Semester semester; private OutcomePair outcomePair; public int getExcellentCount() { return excellentCount; } public void setExcellentCount(int excellentCount) { this.excellentCount = excellentCount; } public int getAdequateCount() { return adequateCount; } public void setAdequateCount(int moderateCount) { this.adequateCount = moderateCount; } public int getUnsatisfactoryCount() { return unsatisfactoryCount; } public void setUnsatisfactoryCount(int poorCount) { this.unsatisfactoryCount = poorCount; } public int getTotalNumber() { return totalNumber; } public void setTotalNumber(int totalNumber) { this.totalNumber = totalNumber; } public OutcomePair getOutcomePair() { return outcomePair; } public void setOutcomePair(OutcomePair outcomePair) { this.outcomePair = outcomePair; } public void incrementExcellent(){ this.excellentCount++; this.totalNumber++; if (!dirtyCache) dirtyCache = true; } public void incrementAdequate(){ this.adequateCount++; this.totalNumber++; if (!dirtyCache) dirtyCache = true; } public void incrementUnsatisfactory(){ this.totalNumber++; this.unsatisfactoryCount++; if (!dirtyCache) dirtyCache = true; } private void resetPercents(){ setExcellentAsPercent(); setUnsatisfactoryAsPercent(); setAdequateAsPercent(); } private void setExcellentAsPercent(){ this.excellentAsPercent = doDivision(this.excellentCount); } private void setAdequateAsPercent(){ this.adequateAsPercent = doDivision(this.adequateCount); } private void setUnsatisfactoryAsPercent(){ this.unsatisfactoryAsPercent = doDivision(this.unsatisfactoryCount); } public float getExcellentAsPercent(){ if (dirtyCache) resetPercents(); return this.excellentAsPercent; } public float getAdequateAsPercent(){ if (dirtyCache) resetPercents(); return this.adequateAsPercent; } public float getUnsatisfactoryAsPercent(){ if (dirtyCache) resetPercents(); return this.unsatisfactoryAsPercent; } private float doDivision(float dividend){ if (this.totalNumber == 0 ) return 0; return dividend / this.totalNumber * 100; } public void setSemester(Semester semester) { this.semester = semester; } public Semester getSemester() { return semester; } }