package fi.otavanopisto.pyramus.binary.students;
import java.io.IOException;
import javax.servlet.ServletOutputStream;
import fi.internetix.smvc.controllers.BinaryRequestContext;
import fi.otavanopisto.pyramus.dao.DAOFactory;
import fi.otavanopisto.pyramus.dao.students.StudentDAO;
import fi.otavanopisto.pyramus.dao.students.StudentImageDAO;
import fi.otavanopisto.pyramus.domainmodel.students.Student;
import fi.otavanopisto.pyramus.domainmodel.students.StudentImage;
import fi.otavanopisto.pyramus.framework.BinaryRequestController;
import fi.otavanopisto.pyramus.framework.UserRole;
/** A binary request controller responsible for serving images of students.
*
*/
public class ViewStudentImage extends BinaryRequestController {
/** Processes a binary request.
* The request should contain the following parameters:
* <dl>
* <dt><code>studentId</code></dt>
* <dd>The ID of the student.</dd>
* </dl>
*
* @param binaryRequestContext The context of the binary request.
*/
public void process(BinaryRequestContext binaryRequestContext) {
StudentDAO studentDAO = DAOFactory.getInstance().getStudentDAO();
StudentImageDAO imageDAO = DAOFactory.getInstance().getStudentImageDAO();
Long studentId = binaryRequestContext.getLong("studentId");
Student student = studentDAO.findById(studentId);
StudentImage studentImage = imageDAO.findByStudent(student);
if (studentImage != null) {
binaryRequestContext.getResponse().setContentType(studentImage.getContentType());
try {
ServletOutputStream outputStream = binaryRequestContext.getResponse().getOutputStream();
outputStream.write(studentImage.getData());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/** Returns the user roles allowed to access this controller.
*
* @return The user roles allowed to access this controller.
*/
public UserRole[] getAllowedRoles() {
return new UserRole[] { UserRole.USER, UserRole.MANAGER, UserRole.STUDY_PROGRAMME_LEADER, UserRole.ADMINISTRATOR };
}
}