package fi.otavanopisto.muikku.plugins.schooldatapyramus; import java.io.IOException; import javax.inject.Inject; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.transaction.Transactional; import org.apache.commons.lang3.math.NumberUtils; import fi.otavanopisto.muikku.model.workspace.WorkspaceEntity; import fi.otavanopisto.muikku.schooldata.SchoolDataIdentifier; import fi.otavanopisto.muikku.schooldata.WorkspaceEntityController; import fi.otavanopisto.muikku.servlet.BaseUrl; @Transactional @WebServlet (urlPatterns = "/pyramusWorkspaceRedirect") public class PyramusWorkspaceRedirect extends HttpServlet { private static final long serialVersionUID = -4680974940617451L; @Inject private WorkspaceEntityController workspaceEntityController; @Inject private PyramusIdentifierMapper pyramusIdentifierMapper; @Inject @BaseUrl private String baseUrl; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { long courseId = NumberUtils.toLong(req.getParameter("courseId")); if (courseId == 0) { resp.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; } String workspaceIdentifier = pyramusIdentifierMapper.getWorkspaceIdentifier(courseId); SchoolDataIdentifier workspaceIdentier = new SchoolDataIdentifier(workspaceIdentifier, SchoolDataPyramusPluginDescriptor.SCHOOL_DATA_SOURCE); WorkspaceEntity workspaceEntity = workspaceEntityController.findWorkspaceByIdentifier(workspaceIdentier); if (workspaceEntity == null) { resp.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } resp.sendRedirect(String.format("%s/workspace/%s", baseUrl, workspaceEntity.getUrlName())); } }