Subversion Repositories bacoAlunos

Rev

Rev 1781 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.domain;

import jomm.utils.StringsUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.utils.Globals;
import pt.estgp.estgweb.utils.RoleManager;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Jorge Machado
 * @date 28/Fev/2008
 * @time 12:51:32
 * @see pt.estgp.estgweb
 */

public class StudentImpl extends Student
{

    public static final 1.5.0/docs/api/java/lang/String.html">String STUDENT_ROLE = Globals.STUDENT_ROLE;

    public static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(StudentImpl.class);

    private List<CourseUnit> subscribedUnitsView = null;
    private List<CourseUnit> subscribedUnitsCurrentYearView = null;
    private List<CourseUnit> subscribedUnitsOldYearsView = null;
    private List<CourseUnitAnnouncementImpl> courseUnitAnnouncementsView = null;
    private List<Course> subscribedCoursesView = null;
    private List<Course> subscribedCoursesCurrentYearView = null;
    private List<Course> subscribedCoursesOldYearsView = null;

    public List<Course> getSubscribedCoursesView()
    {
        getSubscribedUnitsView();
        return subscribedCoursesView;
    }

    public List<Course> getSubscribedCoursesCurrentYearView()
    {
        getSubscribedUnitsCurrentYearView();
        return subscribedCoursesCurrentYearView;
    }

    public List<Course> getSubscribedCoursesOldYearsView()
    {
        getSubscribedUnitsOldYearsView();
        return subscribedCoursesOldYearsView;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getManagedRole()
    {
        List<String> roles = new ArrayList<String>();
        roles.add(STUDENT_ROLE);
        return RoleManager.getSerialRoles(roles);
    }

    public List<CourseUnit> getSubscribedUnitsViewS1()
    {
        return getUnitsSemestre("S1",getSubscribedUnitsView());
    }
    public List<CourseUnit> getSubscribedUnitsViewS2()
    {
        return getUnitsSemestre("S2",getSubscribedUnitsView());
    }

    public List<CourseUnit> getSubscribedUnitsViewA()
    {
        return getUnitsSemestre("A",getSubscribedUnitsView());
    }

    public List<CourseUnit> getSubscribedUnitsViewT1()
    {
        return getUnitsSemestre("T1",getSubscribedUnitsView());
    }

    public List<CourseUnit> getSubscribedUnitsViewT2()
    {
        return getUnitsSemestre("T2",getSubscribedUnitsView());
    }

    public List<CourseUnit> getSubscribedUnitsViewT3()
    {
        return getUnitsSemestre("T3",getSubscribedUnitsView());
    }

    public List<CourseUnit> getSubscribedUnitsViewT4()
    {
        return getUnitsSemestre("T4",getSubscribedUnitsView());
    }

    public List<CourseUnit> getSubscribedUnitsView()
    {
        if(subscribedUnitsView == null)
        {
            subscribedCoursesView = new ArrayList<Course>();
            try
            {
                IServiceManager sm = ServiceManager.getInstance();
                1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
                5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{getId()};
                subscribedUnitsView = (List<CourseUnit>) sm.execute(null, "LoadSubscribedUnits", args, names);
                if(subscribedUnitsView == null)
                    subscribedUnitsView = new ArrayList<CourseUnit>();
                for(CourseUnit c: subscribedUnitsView)
                {
                    if(!subscribedCoursesView.contains(c.getCourse()))
                    {
                        subscribedCoursesView.add(c.getCourse());
                    }
                }
            }
            catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
            {
                logger.error(e,e);
            }
        }
        return subscribedUnitsView;
    }

    public List<CourseUnit> getSubscribedUnitsCurrentYearViewT1()
    {
        return getUnitsSemestre("T1",getSubscribedUnitsCurrentYearView());
    }
    public List<CourseUnit> getSubscribedUnitsCurrentYearViewT2()
    {
        return getUnitsSemestre("T2",getSubscribedUnitsCurrentYearView());
    }
    public List<CourseUnit> getSubscribedUnitsCurrentYearViewT3()
    {
        return getUnitsSemestre("T3",getSubscribedUnitsCurrentYearView());
    }
    public List<CourseUnit> getSubscribedUnitsCurrentYearViewT4()
    {
        return getUnitsSemestre("T4",getSubscribedUnitsCurrentYearView());
    }

    public List<CourseUnit> getSubscribedUnitsCurrentYearViewS1()
    {
        return getUnitsSemestre("S1",getSubscribedUnitsCurrentYearView());
    }
    public List<CourseUnit> getSubscribedUnitsCurrentYearViewS2()
    {
        return getUnitsSemestre("S2",getSubscribedUnitsCurrentYearView());
    }
    public List<CourseUnit> getSubscribedUnitsCurrentYearViewA()
    {
        return getUnitsSemestre("A",getSubscribedUnitsCurrentYearView());
    }

    public List<CourseUnit> getSubscribedUnitsCurrentYearView()
    {
        if(subscribedUnitsCurrentYearView == null)
        {
            subscribedCoursesCurrentYearView = new ArrayList<Course>();
            try
            {
                IServiceManager sm = ServiceManager.getInstance();
                1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
                5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{getId()};
                subscribedUnitsCurrentYearView = (List<CourseUnit>) sm.execute(null, "LoadSubscribedUnitsCurrentYear", args, names);
                if(subscribedUnitsCurrentYearView == null)
                    subscribedUnitsCurrentYearView = new ArrayList<CourseUnit>();
                for(CourseUnit c: subscribedUnitsCurrentYearView)
                {
                    if(!subscribedCoursesCurrentYearView.contains(c.getCourse()))
                    {
                        subscribedCoursesCurrentYearView.add(c.getCourse());
                    }
                }
            }
            catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
            {
                logger.error(e,e);
            }
        }
        return subscribedUnitsCurrentYearView;
    }

    Map<String,List<CourseUnit>> subscribedUnitsYear = new HashMap<String,List<CourseUnit>>();

    public List<CourseUnit> getSubscribedUnitsView(1.5.0/docs/api/java/lang/String.html">String year)
    {
        List<CourseUnit> cuYear = subscribedUnitsYear.get(year);
        if(cuYear == null)
        {
            try
            {
                IServiceManager sm = ServiceManager.getInstance();
                1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable","year"};
                5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{getId(),year};
                cuYear = (List<CourseUnit>) sm.execute(null, "LoadSubscribedUnitsGivenYear", args, names);

                                if(cuYear != null)
                                        subscribedUnitsYear.put(year,cuYear);
                                else
                                        subscribedUnitsYear.put(year,new ArrayList<CourseUnit>());
            }
            catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
            {
                logger.error(e,e);
            }
        }
        return cuYear;
    }
    public List<CourseUnit> getSubscribedUnitsViewA(1.5.0/docs/api/java/lang/String.html">String year)
    {
        return getUnitsSemestre("A", getSubscribedUnitsView(year));
    }
    public List<CourseUnit> getSubscribedUnitsViewS1(1.5.0/docs/api/java/lang/String.html">String year)
    {
        return getUnitsSemestre("S1",getSubscribedUnitsView(year));
    }
    public List<CourseUnit> getSubscribedUnitsViewS2(1.5.0/docs/api/java/lang/String.html">String year)
    {
        return getUnitsSemestre("S2",getSubscribedUnitsView(year));
    }
    public List<CourseUnit> getSubscribedUnitsViewT1(1.5.0/docs/api/java/lang/String.html">String year)
    {
        return getUnitsSemestre("T1",getSubscribedUnitsView(year));
    }
    public List<CourseUnit> getSubscribedUnitsViewT2(1.5.0/docs/api/java/lang/String.html">String year)
    {
        return getUnitsSemestre("T2",getSubscribedUnitsView(year));
    }
    public List<CourseUnit> getSubscribedUnitsViewT3(1.5.0/docs/api/java/lang/String.html">String year)
    {
        return getUnitsSemestre("T3",getSubscribedUnitsView(year));
    }
    public List<CourseUnit> getSubscribedUnitsViewT4(1.5.0/docs/api/java/lang/String.html">String year)
    {
        return getUnitsSemestre("T4",getSubscribedUnitsView(year));
    }

    public List<CourseUnit> getSubscribedUnitsOldYearsViewS1()
    {
        return getUnitsSemestre("S1",getSubscribedUnitsOldYearsView());
    }
    public List<CourseUnit> getSubscribedUnitsOldYearsViewS2()
    {
        return getUnitsSemestre("S2",getSubscribedUnitsOldYearsView());
    }
    public List<CourseUnit> getSubscribedUnitsOldYearsView()
    {
        if(subscribedUnitsOldYearsView == null)
        {
            subscribedCoursesOldYearsView = new ArrayList<Course>();
            try
            {
                IServiceManager sm = ServiceManager.getInstance();
                1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
                5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{getId()};
                subscribedUnitsOldYearsView = (List<CourseUnit>) sm.execute(null, "LoadSubscribedUnitsOldYears", args, names);
                if(subscribedUnitsOldYearsView == null)
                    subscribedUnitsOldYearsView = new ArrayList<CourseUnit>();
                for(CourseUnit c: subscribedUnitsOldYearsView)
                {
                    if(!subscribedCoursesOldYearsView.contains(c.getCourse()))
                    {
                        subscribedCoursesOldYearsView.add(c.getCourse());
                    }
                }
            }
            catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
            {
                logger.error(e,e);
            }
        }
        return subscribedUnitsOldYearsView;
    }



    public List<CourseUnitAnnouncementImpl> getCourseUnitAnnouncementsView()
    {
        if(courseUnitAnnouncementsView == null)
        {
            try
            {
                IServiceManager sm = ServiceManager.getInstance();
                1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
                5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{getId()};
                courseUnitAnnouncementsView = (List<CourseUnitAnnouncementImpl>) sm.execute(null, "LoadSubscribedUnitsAnnouncements", args, names);
                if(courseUnitAnnouncementsView == null)
                    courseUnitAnnouncementsView = new ArrayList<CourseUnitAnnouncementImpl>();
            }
            catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
            {
                logger.error(e,e);
            }
        }
        return courseUnitAnnouncementsView;
    }






    public boolean hasCourseUnit(CourseUnit courseUnit)
    {
        return hasCourseUnit(courseUnit.getId(),false);
    }

    public boolean hasCourseUnit(long unitId, boolean transaction)
    {
        List<CourseUnit> cUnits;
        if(transaction)
            cUnits = new ArrayList<CourseUnit>(getSubscribedUnits());
        else
            cUnits = getSubscribedUnitsView();
        if(cUnits == null)
            return false;
        for(CourseUnit c: cUnits)
        {
            if(c.getId() == unitId)
                return true;
        }
        return false;
    }

    public void removeUnitLocaly(CourseUnit unit)
    {
        setLocalRemovedSubscribedUnits(StringsUtils.addElement(getLocalRemovedSubscribedUnits(),"" + unit.getId(),","));
        setLocalSubscribedUnits(StringsUtils.removeElement(getLocalSubscribedUnits(),"" + unit.getId(),","));
    }

    public void addUnitLocaly(CourseUnit unit)
    {
        setLocalRemovedSubscribedUnits(StringsUtils.removeElement(getLocalRemovedSubscribedUnits(),"" + unit.getId(),","));
        setLocalSubscribedUnits(StringsUtils.removeElement(getLocalSubscribedUnits(),"" + unit.getId(),","));
        setLocalSubscribedUnits(StringsUtils.addElement(getLocalSubscribedUnits(),"" + unit.getId(),","));
    }

    public boolean isLocalRemovedUnit(CourseUnit unit)
    {
        return StringsUtils.hasElement(getLocalRemovedSubscribedUnits(),"" + unit.getId(),",");
    }


    public boolean isLocalUnit(CourseUnit unit)
    {
        return StringsUtils.hasElement(getLocalSubscribedUnits(),""+unit.getId(),",");
    }



    private List<String> excludedGenericJsonMethodsWithOpenTransactions = null;

    @1.5.0/docs/api/java/lang/Override.html">Override
    public synchronized List<String> getJsonExcludedProperties() {
        if(excludedGenericJsonMethodsWithOpenTransactions == null)
        {
            excludedGenericJsonMethodsWithOpenTransactions = new ArrayList<String>();
            searchMyMethodsStartingWith("subscribedUnits",excludedGenericJsonMethodsWithOpenTransactions);
            //searchMyMethodsStartingWith("subscribedCourses",excludedGenericJsonMethodsWithOpenTransactions);
            excludedGenericJsonMethodsWithOpenTransactions.add("courseUnitAnnouncementsView");
        }
        return excludedGenericJsonMethodsWithOpenTransactions;
    }

}