package pt.estgp.estgweb.services.courseunits;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import java.util.HashSet;
import java.util.Iterator;
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class UsersUnitsService
implements IService
{
private 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(UsersUnitsService.
class);
LoadCourseUnitService loadCourseUnitService =
new LoadCourseUnitService
();
public CourseUnitView addTeacher
(long teacherId,
long courseUnitId, UserSession userSession
) throws ServiceException
{
CourseUnit courseUnit = DaoFactory.
getCourseUnitDaoImpl().
get(courseUnitId
);
TeacherImpl t =
(TeacherImpl
) DaoFactory.
getTeacherDaoImpl().
get(teacherId
);
if(t
!=
null)
{
if(courseUnit.
getTeachers() !=
null)
courseUnit.
getTeachers().
remove(t
);
courseUnit.
getTeachers().
add(t
);
t.
addUnitLocaly(courseUnit
);
return loadCourseUnitService.
run(courseUnitId,
true,
true,
false,userSession
);
}
else
{
CourseUnitView cV = loadCourseUnitService.
run(courseUnitId,
true,
true,
false,userSession
);
cV.
setNotFound(true);
return cV
;
}
}
public CourseUnitView removeTeacher
(long teacherId,
long courseUnitId, UserSession userSession
) throws ServiceException
{
CourseUnit courseUnit = DaoFactory.
getCourseUnitDaoImpl().
get(courseUnitId
);
TeacherImpl t =
(TeacherImpl
) DaoFactory.
getTeacherDaoImpl().
get(teacherId
);
t.
removeUnitLocaly(courseUnit
);
courseUnit.
getTeachers().
remove(t
);
return loadCourseUnitService.
run(courseUnitId,
true,
true,
false,userSession
);
}
public CourseUnitView addStudent
(int code,
long courseUnitId,
1.5.0/docs/api/java/lang/String.html">String turmaCode,
1.5.0/docs/api/java/lang/String.html">String newTurmaCode,UserSession userSession
) throws ServiceException
{
CourseUnit courseUnit = DaoFactory.
getCourseUnitDaoImpl().
get(courseUnitId
);
StudentImpl s =
(StudentImpl
) DaoFactory.
getStudentDaoImpl().
loadBySigesCode(code
);
if(s
!=
null)
{
if(courseUnit.
getStudents() !=
null)
courseUnit.
getStudents().
remove(s
);
courseUnit.
getStudents().
add(s
);
s.
addUnitLocaly(courseUnit
);
addStudentToTurma
(turmaCode, newTurmaCode, courseUnit, s
);
return loadCourseUnitService.
run(courseUnitId,
true,
true,
false,userSession
);
}
else
{
CourseUnitView cV = loadCourseUnitService.
run(courseUnitId,
true,
true,
false,userSession
);
cV.
setNotFound(true);
return cV
;
}
}
private void addStudentToTurma
(1.5.0/docs/api/java/lang/String.html">String turmaCode,
1.5.0/docs/api/java/lang/String.html">String newTurmaCode, CourseUnit courseUnit, StudentImpl s
) {
boolean found =
false;
for(CourseUnitTurma turma: courseUnit.
getTurmas())
{
if(turma.
getTurma().
trim().
equals(turmaCode.
trim()) || turma.
getTurma().
trim().
equals(newTurmaCode.
trim()))
{
logger.
info("Adding student to turma: " + turma.
getTurma() +
" in courseunit: " + courseUnit.
getCode() +
" with id:" + courseUnit.
getId());
found =
true;
if(turma.
getStudents() ==
null)
turma.
setStudents(new HashSet
<StudentImpl
>());
if(!turma.
getStudents().
contains(s
))
turma.
getStudents().
add(s
);
//if(s.getTurmas() == null)
// s.setTurmas(new HashSet<CourseUnitTurmaImpl>());
//if(!s.getTurmas().contains(turma))
// s.getTurmas().add((CourseUnitTurmaImpl) turma);
break;
}
}
if(!found
&& newTurmaCode.
trim().
length() > 0)
{
logger.
info("Creating new turma to student: " + newTurmaCode +
" in courseunit: " + courseUnit.
getCode() +
" with id:" + courseUnit.
getId());
CourseUnitTurma courseUnitTurma = DomainObjectFactory.
createCourseUnitTurmaImpl();
courseUnitTurma.
setTurma(newTurmaCode
);
courseUnitTurma.
setCourseUnit(courseUnit
);
DaoFactory.
getCourseUnitTurmaDaoImpl().
save(courseUnitTurma
);
if(courseUnit.
getTurmas() ==
null)
courseUnit.
setTurmas(new HashSet
<CourseUnitTurma
>());
courseUnit.
getTurmas().
add(courseUnitTurma
);
courseUnitTurma.
setStudents(new HashSet
<StudentImpl
>());
courseUnitTurma.
getStudents().
add(s
);
}
}
public CourseUnitView removeStudent
(int code,
long courseUnitId, UserSession userSession
) throws ServiceException
{
CourseUnit courseUnit = DaoFactory.
getCourseUnitDaoImpl().
get(courseUnitId
);
StudentImpl s =
(StudentImpl
) DaoFactory.
getStudentDaoImpl().
loadBySigesCode(code
);
courseUnit.
getStudents().
remove(s
);
s.
removeUnitLocaly(courseUnit
);
removeStudentFromTurma
(courseUnit, s
);
return loadCourseUnitService.
run(courseUnitId,
true,
true,
false,userSession
);
}
private void removeStudentFromTurma
(CourseUnit courseUnit, StudentImpl s
) {
if(courseUnit.
getTurmas()!=
null)
{
Iterator
<CourseUnitTurmaImpl
> iter = s.
getTurmas().
iterator();
while(iter.
hasNext())
{
CourseUnitTurma turma=iter.
next();
if(turma.
getCourseUnit() == courseUnit
)
{
iter.
remove();
turma.
getStudents().
remove(s
);
}
}
}
}
}