package fi.otavanopisto.pyramus.json.studentfiles; import org.apache.commons.fileupload.FileItem; import fi.internetix.smvc.controllers.JSONRequestContext; import fi.otavanopisto.pyramus.dao.DAOFactory; import fi.otavanopisto.pyramus.dao.file.FileTypeDAO; import fi.otavanopisto.pyramus.dao.file.StudentFileDAO; import fi.otavanopisto.pyramus.dao.students.StudentDAO; import fi.otavanopisto.pyramus.dao.users.StaffMemberDAO; import fi.otavanopisto.pyramus.domainmodel.file.FileType; import fi.otavanopisto.pyramus.domainmodel.students.Student; import fi.otavanopisto.pyramus.domainmodel.users.User; import fi.otavanopisto.pyramus.framework.JSONRequestController; import fi.otavanopisto.pyramus.framework.UserRole; /** * The controller responsible of modifying an existing student group. * * @see fi.otavanopisto.pyramus.views.students.EditStudentGroupViewController */ public class UploadStudentFileJSONRequestController extends JSONRequestController { /** * Processes the request to edit a student group. * * @param requestContext * The JSON request context */ public void process(JSONRequestContext requestContext) { StudentDAO studentDAO = DAOFactory.getInstance().getStudentDAO(); StaffMemberDAO userDAO = DAOFactory.getInstance().getStaffMemberDAO(); StudentFileDAO studentFileDAO = DAOFactory.getInstance().getStudentFileDAO(); FileTypeDAO fileTypeDAO = DAOFactory.getInstance().getFileTypeDAO(); Long userId = requestContext.getLoggedUserId(); User loggedUser = userDAO.findById(userId); Long studentId = requestContext.getLong("studentId"); String name = requestContext.getString("fileName"); Long fileTypeId = requestContext.getLong("fileType"); FileItem fileItem = requestContext.getFile("file"); Student student = studentDAO.findById(studentId); FileType fileType = fileTypeId != null ? fileTypeDAO.findById(fileTypeId) : null; if (fileItem != null) { byte[] data = fileItem.get(); studentFileDAO.create(student, name, fileItem.getName(), fileType, fileItem.getContentType(), data, loggedUser); } } public UserRole[] getAllowedRoles() { return new UserRole[] { UserRole.MANAGER, UserRole.STUDY_PROGRAMME_LEADER, UserRole.ADMINISTRATOR }; } }