package pt.estgp.estgweb.domain;
import jomm.utils.StringsUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.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(),
",");
}
}