<%@ page language="java" import="com.siap.*,org.prevayler.*" %>
<% Prevayler prevayler=(Prevayler)this.getServletContext().getAttribute("prevayler");
SistemaAcademico siap=(SistemaAcademico)prevayler.prevalentSystem();
Usuario usuario=(Usuario)session.getAttribute("usuario");
Turma[] turmas=siap.getTurmas();
String[] escolha=request.getParameterValues("turma");
Turma[] selecionadas=new Turma[escolha.length];
if(escolha!=null){
for(int i=0;i<turmas.length;i++){
for(int j=0;j<escolha.length;j++)
if(turmas[i].getIdTurma().equals(escolha[j]))
selecionadas[j++]=turmas[i];
}
MatriculaTransaction transacao=new MatriculaTransaction(usuario,selecionadas);
prevayler.execute(transacao);
}
%>
<html><head><title>SIAP2004</title>
</head>
<body bgcolor="white">
<CAPTION><font face="ariel" color="#000000"><marquee>
<b><i> SISTEMA DE INFORMAÇÕES ACADÊMICAS PREVALENTE </i></b></font></CAPTION></marquee>
<center><TABLE BORDER=0><caption>Disciplinas Matriculadas:</caption>
<tr><th></th><th> Turma</th><th> Matéria</th><th> Professor</th><th> Dia(s)</th><th> Horário</th><th> Sala</th><th> Campus</th></tr>
<% Turma t;
for(int i=0;i<siap.proximaMatriculaId();i++){
Matricula mat=siap.getMatricula(new Integer(i));
if(mat.aluno.matricula.equals(usuario.matricula)){
t=mat.turmas[i];
%>
<tr><th></th>
<th><%=t.idTurma%></th>
<th><%=t.nomeDaMateria%></th>
<th><%=t.nomeDoProfessor%></th>
<th><%=t.diaDaSemana%></th>
<th><%=t.horario%></th>
<th><%=t.nomeSala%></th>
<th><%=t.nomeCampus%></th>
</tr>
<% ;
}
}
%>
</TH></TR>
</TABLE></center>
<center>
<INPUT TYPE="button" VALUE="Voltar" onClick="history.back()">
</center>
</body>
</html>
Estouro de Array em diferentes Users
Nessa JSP:
Quando dois usuários diferentes escolhem a mesma turma,acaba dando um estouro do array em: t=mat.turmas[i];
Isso não é possível,pois cada usuário possui matrícula própria,e a turma escolhida por cada um é própria de cada Matrícula.
Ah,o proximaMatriculaId() é apenas um método que retorna o tamanho do HashMap de matrículas.
Se alguem conseguir ver algo...agradeço!!! :)
1 Resposta
Ah,esqueci de postar a MatriculaTransaction:
E a MAtricula em si:
package com.siap;
import java.io.Serializable;
import org.prevayler.*;
import org.prevayler.Transaction;
import java.util.Date;
public class MatriculaTransaction implements Serializable,Transaction{
private final String usuarioMat;
private final Turma[] turmasSelecionadas;
public MatriculaTransaction(Usuario usuario,Turma[] turmas){
usuarioMat=usuario.matricula;
turmasSelecionadas=turmas;
}
public void executeOn(Object system, Date data) {
Matricula mat=null;
SistemaAcademico siap=(SistemaAcademico)system;
int id=siap.proximaMatriculaId();
if(!Matricula.verificaMatricula(id,siap.getUsuario(usuarioMat),turmasSelecionadas,data)){
throw new IllegalArgumentException("Parâmetros Inválidos Para Matrícula!"); }
mat=new Matricula(id,siap.getUsuario(usuarioMat),turmasSelecionadas,data);
siap.adicionaMatricula(mat);
}
}
package com.siap;
import java.io.*;
import java.util.*;
import java.util.Date;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.Appender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.BasicConfigurator;
public class Matricula implements Serializable{
static final Logger LOGGER = Logger.getLogger(Matricula.class);
public final int id;
public final Usuario aluno;
public final Turma[] turmas;
private final Date data;
List listaMaterias=new ArrayList();
//construtor q mostrará s matrículas na Web
public Matricula(int id,Usuario aluno,Turma[] turmas,Date data){
BasicConfigurator.configure();
this.id=id;
this.aluno=aluno;
this.turmas=turmas;
this.data=data;
}
public static boolean verificaMatricula(int id,Usuario aluno,Turma[] turmas,Date data){
if(aluno==null)return true;
if(turmas==null)return false;
if(data==null)return false;
return true;
}
public void log() {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(this.aluno);
LOGGER.debug(this.turmas);
}
}
}//fim da classe Matricula
Criado 19 de novembro de 2004
Ultima resposta 19 de nov. de 2004
Respostas 1
Participantes 1