/**
* Copyright © 2002 Instituto Superior Técnico
*
* This file is part of FenixEdu Academic.
*
* FenixEdu Academic is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* FenixEdu Academic is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with FenixEdu Academic. If not, see <http://www.gnu.org/licenses/>.
*/
package org.fenixedu.academic.dto.department;
import java.io.Serializable;
import java.text.Collator;
import java.util.Comparator;
import org.fenixedu.academic.domain.curriculum.IGrade;
import org.fenixedu.academic.util.Bundle;
import org.fenixedu.bennu.core.i18n.BundleUtil;
import org.fenixedu.commons.i18n.I18N;
public abstract class CourseStatisticsDTO implements Serializable, Comparable<CourseStatisticsDTO> {
private static final long serialVersionUID = 1L;
private String externalId;
private String name;
private int firstEnrolledCount;
private int firstApprovedCount;
private IGrade firstApprovedAverage;
private int restEnrolledCount;
private int restApprovedCount;
private IGrade restApprovedAverage;
private int totalEnrolledCount;
private int totalApprovedCount;
private IGrade totalApprovedAverage;
private String NOT_AVAILABLE;
public static final Comparator<CourseStatisticsDTO> COURSE_STATISTICS_COMPARATOR_BY_NAME =
new Comparator<CourseStatisticsDTO>() {
@Override
public int compare(CourseStatisticsDTO o1, CourseStatisticsDTO o2) {
return Collator.getInstance(I18N.getLocale()).compare(o1.getName(), o2.getName());
}
};
public CourseStatisticsDTO() {
NOT_AVAILABLE = BundleUtil.getString(Bundle.DEPARTMENT_MEMBER, "label.common.notAvailable");
}
public CourseStatisticsDTO(String externalId, String name, int firstEnrolledCount, int firstApprovedCount,
IGrade firstApprovedAverage, int restEnrolledCount, int restApprovedCount, IGrade restApprovedAverage,
int totalEnrolledCount, int totalApprovedCount, IGrade totalApprovedAverage) {
super();
this.externalId = externalId;
this.name = name;
this.firstEnrolledCount = firstEnrolledCount;
this.firstApprovedCount = firstApprovedCount;
this.firstApprovedAverage = firstApprovedAverage;
this.restEnrolledCount = restEnrolledCount;
this.restApprovedCount = restApprovedCount;
this.restApprovedAverage = restApprovedAverage;
this.totalEnrolledCount = totalEnrolledCount;
this.totalApprovedCount = totalApprovedCount;
this.totalApprovedAverage = totalApprovedAverage;
}
public IGrade getFirstApprovedAverage() {
return firstApprovedAverage;
}
public String getFirstApprovedAveragex() {
return (firstApprovedCount != 0) ? firstApprovedAverage.getGradeValue().toString() : NOT_AVAILABLE;
}
public void setFirstApprovedAverage(IGrade firstApprovedAverage) {
this.firstApprovedAverage = firstApprovedAverage;
}
public int getFirstApprovedCount() {
return firstApprovedCount;
}
public void setFirstApprovedCount(int firstApprovedCount) {
this.firstApprovedCount = firstApprovedCount;
}
public int getFirstEnrolledCount() {
return firstEnrolledCount;
}
public void setFirstEnrolledCount(int firstEnrolledCount) {
this.firstEnrolledCount = firstEnrolledCount;
}
public String getExternalId() {
return externalId;
}
public void setExternalId(String externalId) {
this.externalId = externalId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IGrade getRestApprovedAverage() {
return restApprovedAverage;
}
public String getRestApprovedAveragex() {
return (restApprovedCount != 0) ? restApprovedAverage.getGradeValue().toString() : NOT_AVAILABLE;
}
public void setRestApprovedAverage(IGrade restApprovedAverage) {
this.restApprovedAverage = restApprovedAverage;
}
public int getRestApprovedCount() {
return restApprovedCount;
}
public void setRestApprovedCount(int restApprovedCount) {
this.restApprovedCount = restApprovedCount;
}
public int getRestEnrolledCount() {
return restEnrolledCount;
}
public void setRestEnrolledCount(int restEnrolledCount) {
this.restEnrolledCount = restEnrolledCount;
}
public IGrade getTotalApprovedAverage() {
return totalApprovedAverage;
}
public String getTotalApprovedAveragex() {
return (totalApprovedCount != 0) ? totalApprovedAverage.getGradeValue().toString() : NOT_AVAILABLE;
}
public void setTotalApprovedAverage(IGrade totalApprovedAverage) {
this.totalApprovedAverage = totalApprovedAverage;
}
public int getTotalApprovedCount() {
return totalApprovedCount;
}
public void setTotalApprovedCount(int totalApprovedCount) {
this.totalApprovedCount = totalApprovedCount;
}
public int getTotalEnrolledCount() {
return totalEnrolledCount;
}
public void setTotalEnrolledCount(int totalEnrolledCount) {
this.totalEnrolledCount = totalEnrolledCount;
}
public String getApprovedPercentage() {
if (totalEnrolledCount == 0) {
return NOT_AVAILABLE;
}
String result = "";
result = String.format("%.2f%%", totalApprovedCount * 100.0 / totalEnrolledCount);
return result;
}
@Override
public int compareTo(CourseStatisticsDTO o) {
return Collator.getInstance(I18N.getLocale()).compare(this.getName(), o.getName());
}
}