package br.usp.ime.academicdevoir.entidade; import javax.persistence.Column; import javax.persistence.Entity; import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.NotEmpty; import br.usp.ime.academicdevoir.dao.TagDao; import br.usp.ime.academicdevoir.infra.Constantes; import br.usp.ime.academicdevoir.infra.TestadorDeCodigoJava; import br.usp.ime.academicdevoir.infra.TipoDeQuestao; @Entity public class QuestaoDeCodigo extends Questao { /** * @uml.property name="resposta" */ @Column(length = Constantes.MAX_TAM_CAMPO) @NotEmpty @NotNull private String codigoDeTeste; private String linguagem; public QuestaoDeCodigo() { linguagem = "java"; } /** * @return * @uml.property name="codigoDeTeste" */ public String getCodigoDeTeste() { return codigoDeTeste; } /** * @param codigoDeTeste * @uml.property name="codigoDeTeste" */ public void setCodigoDeTeste(String codigoDeTeste) { this.codigoDeTeste = codigoDeTeste; } /** * @return * @uml.property name="codigoDeTeste" */ public String getLinguagem() { return linguagem; } /** * @param codigoDeTeste * @uml.property name="codigoDeTeste" */ public void setLinguagem(String linguagem) { this.linguagem = linguagem; } public TipoDeQuestao getTipo() { return TipoDeQuestao.CODIGO; } public String getRenderizacao() { String htmlResult = ""; StringBuffer buffer = new StringBuffer(); buffer.append("<div><textarea id=\"resposta"); buffer.append(this.getId()); buffer.append("\" name=\"resposta.valor\""); buffer.append(" rows=\"10\" cols=\"50\"></textarea>"); buffer.append("</div>"); buffer.append("<input type=\"hidden\" name=\"idDaQuestao\" value=\""); buffer.append(this.getId()); buffer.append("\" />"); htmlResult = buffer.toString(); return htmlResult; } public String getRenderAlteracao(Resposta resposta) { if (resposta == null) return getRenderizacao(); String htmlResult = ""; StringBuffer buffer = new StringBuffer(); buffer.append("<div><textarea id=\"resposta"); buffer.append(this.getId()); buffer.append("\" name=\"resposta.valor\""); buffer.append(" rows=\"10\" cols=\"50\">"); buffer.append(resposta.getValor()); buffer.append("</textarea>"); buffer.append("</div>"); buffer.append("<input type=\"hidden\" name=\"idDaQuestao\" value=\""); buffer.append(this.getId()); buffer.append("\" />"); htmlResult = buffer.toString(); return htmlResult; } public Boolean respostaDoAlunoEhCorreta(Resposta respostaAluno) { String resultado; String caminho = respostaAluno.getCaminhoParaDiretorioDeTeste(); if (linguagem.equals("java")) { TestadorDeCodigoJava testador = new TestadorDeCodigoJava( caminho); try { resultado = testador.testaCodigoJava(respostaAluno.getValor(), codigoDeTeste); respostaAluno.setComentario(resultado); System.out.println(resultado); return resultado.startsWith("Executou corretamente. Parabens!"); } catch (Exception e) { e.printStackTrace(); } } return null; } public QuestaoDeCodigo copia(TagDao dao) { QuestaoDeCodigo questao = new QuestaoDeCodigo(); questao.enunciado = this.enunciado; questao.codigoDeTeste = this.codigoDeTeste; questao.linguagem = this.linguagem; questao.setTags(this.getTagsEmString(), dao); return questao; } }