package br.usp.ime.academicdevoir.controller; import br.com.caelum.vraptor.Get; import br.com.caelum.vraptor.Path; import br.com.caelum.vraptor.Post; import br.com.caelum.vraptor.Resource; import br.com.caelum.vraptor.interceptor.download.FileDownload; import br.com.caelum.vraptor.interceptor.multipart.UploadedFile; import br.usp.ime.academicdevoir.arquivos.Arquivos; import br.usp.ime.academicdevoir.infra.Permission; import br.usp.ime.academicdevoir.infra.Privilegio; import br.usp.ime.academicdevoir.infra.UsuarioSession; @Resource public class ArquivosController { private Arquivos arquivos; private UsuarioSession usuarioLogado; public ArquivosController(Arquivos arquivos, UsuarioSession usuarioLogado) { this.usuarioLogado = usuarioLogado; this.arquivos = arquivos; } @Post @Path("/questoes/{idDaQuestao}/envia") /** * Salva um arquivo enviado pelo usuário logado como resposta da questão de id fornecido no servidor. * @param arquivo * @param idDaQuestao */ public void envia(UploadedFile arquivo, Long idDaQuestao) { arquivos.salva(arquivo, idDaQuestao); } @Get @Path("/arquivos/{idDaQuestao}") /** * Baixa o arquivo enviado pelo usuário logado como resposta da questão de id fornecido. * @param idDaQuestao * @return FileDownload */ public FileDownload download(Long idDaQuestao) { return arquivos.carrega("//" + usuarioLogado.getUsuario().getLogin() + "//" + idDaQuestao); } @Get @Path("/arquivos/{loginDoaluno}/{idDaQuestao}") @Permission({ Privilegio.ADMINISTRADOR, Privilegio.PROFESSOR }) /** * Baixa o arquivo enviado pelo aluno de login fornecido enviado como resposta da questão de id fornecido. * @param loginDoAluno * @param idDaQuestao * @return FileDownload */ public FileDownload download(Long loginDoAluno, Long idDaQuestao) { return arquivos.carrega("//" + loginDoAluno + "//" + idDaQuestao); } }