Gerar numero a partir de outros dados, e gravar no banco de dados

2 respostas
J

Bom dia pessoal.

Estou com um seguinte proglema e gostaria de contar com a ajuda de voces ai para que eu poss achar uma boa solução.

Negócio é o seguinte.

Estou desenvolvendo um projeto aqui para o lugar que eu trabalho, e estou criando um formulario, via web, simples, que faz o cadastro, de um processoSRD(um registro interno da minha instituição). esse tabela do cadastro do meu banco de dados, esta ligada, a minha tabela aluno, atravéz de uma chave estrangeira e talz. pois bem qual o problema.
Quero que quando o usuario do sistema clicar em cadastra o processo SRD, o sistema gere um numeto, com ((codigo do aluno) + (curso do aluno) + (ano corrente)), que ja foram cadastrados antes, e armazene num campo do meu banco de dados, da tabela processo, que chama processosrd. exemplo do numero: 001.002.2009.

vou colocar embaixo os codigos das minhas classe, e formularios, e gostaria de contar com a ajuda de todos, atenciosamente.

João Victor.

Códigos.

DAO.java

package br.edu.fsj.registrodediplomas.dao;

import java.util.List;

import org.hibernate.Session;

public class Dao<T> {
	private Session session;
	private final Class classe;
	
	public Dao(Session session, Class classe) {
		this.session =session;
		this.classe=classe;
	}
	
	public void adiciona(T u){
		this.session.save(u);
	}
	
	public void remove(T u){
		this.session.delete(u);
	}
	
	public void atualiza (T u){
		
		this.session.merge(u);
	}
	
	public List<T> listaTudo(){
		return this.session.createCriteria(this.classe).list();
	}
	
	public T procuranome(String nome) {
		return (T) session.load(this.classe, nome);

	}
	
	public T procura(Long id) {
		return (T) session.load(this.classe, id);
	}
	
	protected Session getSession(){
		return session;
	}
}

ProcessosrdLogic.java

package br.edu.fsj.registrodediplomas.logic;

import java.util.List;

import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;

import br.edu.fsj.registrodediplomas.dao.DaoFactory;
import br.edu.fsj.registrodediplomas.modelo.Aluno;
import br.edu.fsj.registrodediplomas.modelo.Processosrd;
import br.edu.fsj.registrodediplomas.registro.DaoInterceptor;

@Component("processosrd")
@InterceptedBy(DaoInterceptor.class)
public class ProcessosrdLogic {
	private final DaoFactory daoFactory;
	private Processosrd processosrd;
	private List<Processosrd> processosrds;

	public ProcessosrdLogic(DaoFactory daoFactory) {
		this.daoFactory = daoFactory;
	}

	// formulario para adicao
	public void formulario() {

	}

	// formulario para edicaos

	public void editar(Processosrd processosrd) {
		// carrega os dados no banco para edicao

		this.processosrd = this.daoFactory.getProcessoSRDDao().procura(processosrd.getId());
	}

	// Adiciona um processosrd novo ou atualiza se for edicao
	public void armazena(Processosrd processosrd) {
		
		this.daoFactory.beginTransaction();
	//	this.processosrd.teste();
		this.daoFactory.getProcessoSRDDao().atualiza(processosrd);
		this.daoFactory.comit();
	}

	// remove um processosrd
	public void remove(Processosrd processosrd) {
		this.daoFactory.beginTransaction();
		this.daoFactory.getProcessoSRDDao().remove(processosrd);
		this.daoFactory.comit();
	}

	// lista todos os processosrds
	public void lista() {
		this.processosrds = this.daoFactory.getProcessoSRDDao().listaTudo();
	}

	// lista todos os processosrds
	public void listaprincipal() {
		this.processosrds = this.daoFactory.getProcessoSRDDao().listaTudo();
	}
	// getter pro processosrd
	public Processosrd getProcessosrd() {
		return processosrd;
	}

	// getter pra lista de processosrds
	public List<Processosrd> getProcessosrds() {
		return processosrds;
	}
	
	public List<Aluno> getListadealunos() {
	     return this.daoFactory.getAlunoDao().listaTudo();
	}
	
	
	
}
Processosrd.java
package br.edu.fsj.registrodediplomas.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OrderBy;

@Entity
public class Processosrd {

	@Id
	@GeneratedValue
	private Long id;
	private String processosrd;
	private String numeroregistro;
	private String dataregistro;
	
	@ManyToOne
	@OrderBy("nome")
	private Aluno aluno;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getProcessosrd() {
		return processosrd;
	}

	public void setProcessosrd(String processosrd) {
		this.processosrd = processosrd;
	}

	public String getNumeroregistro() {
		return numeroregistro;
	}

	public void setNumeroregistro(String numeroregistro) {
		this.numeroregistro = numeroregistro;
	}

	public String getDataregistro() {
		return dataregistro;
	}

	public void setDataregistro(String dataregistro) {
		this.dataregistro = dataregistro;
	}

	public Aluno getAluno() {
		return aluno;
	}

	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}
		
	public void teste(){
		this.processosrd = "" + this.getDataregistro();
	}
	
	
	
}

DaoInterceptor.java

package br.edu.fsj.registrodediplomas.registro;

import org.vraptor.Interceptor;
import org.vraptor.LogicException;
import org.vraptor.LogicFlow;
import org.vraptor.annotations.Out;
import org.vraptor.view.ViewException;

import br.edu.fsj.registrodediplomas.dao.DaoFactory;

public class DaoInterceptor implements Interceptor{
	private final DaoFactory factory = new DaoFactory();
	public void intercept(LogicFlow flow) throws LogicException, ViewException {
		//executa a logica
		flow.execute();
		
		//se sobrou transsacao sem comitar faz rollback
		if (factory.hasTransaction()){
			factory.rollback();
		}
		
		factory.close();
	}
	
	@Out(key="br.edu.fsj.registrodediplomas.dao.DaoFactory")
	public DaoFactory getFactory(){
		return factory;
	}
	
}

formulario.ok.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title></title>
</head>
<body bgcolor="#CCCCCC">

<h1>Cadastro de Processo</h1>
<form action="processosrd.armazena.logic" method="post">
      <input type="hidden" name="processosrd.id" value="${processosrd.id}"/>
      Data de Registro:
      <input type="text" size="30" name="processosrd.dataregistro" value="${processosrd.dataregistro}"/><br/>
      ProcessoSRD:
      <input type="text" size="30" name="processosrd.processosrd" value="${processosrd.processosrd}"/><br/>
      
      Aluno:
      <select name="processosrd.aluno.id">
  	  <c:forEach var="aluno" items="${listadealunos}">
      <option value="${aluno.id}" 
      		<c:if test="${processosrd.aluno.id == aluno.id}">selected="true"</c:if>
      >
            ${aluno.nome}     00${aluno.id} . 2009 . 00${aluno.curso.id} 
      </option>
      </c:forEach>
           
	</select>
	<br />
	N&uacute;mero do Registro:
	<input type="text" size="30" name="processosrd.numeroregistro" value="${processosrd.numeroregistro}"/><br/>
      
<br>	
    
    
      <input type="submit" onClick="alert()"/>
</form>
<IFRAME frameborder="0" scrolling="no" src="processosrd.listaprincipal.logic" width="100%" height="550"></IFRAME>
</body>
</html>

Atenciosamente

João Victor

Me de uma força ai galera.

2 Respostas

proteus_adi

Oxe…
e, é necessário gravar este cód?
Num é uma informação redundante?
Num era mais fácil simplesmente criar uma funçãozinha no processo que retornasse o dado formatado?
Ou isso não resolve?

J

proteus_adi:
Oxe…
e, é necessário gravar este cód?
Num é uma informação redundante?
Num era mais fácil simplesmente criar uma funçãozinha no processo que retornasse o dado formatado?
Ou isso não resolve?

Pois não cara… acho que não resolve.

Pois o que acontece é o seguinte.

Antes de fazer esse cadastro do processo srd. eu cadastro o aluno, separadamente. com os dados, como curso e talz…

Ai no caso, quando vou cadastrar esse processo, eu seleciono o aluno desejado, no caso. eu precisaria pegar algumas informações desse aluno, concatenar, e armazenar em um campo da tabela processosrd.

Atenciosamente.

João victor.

Criado 13 de julho de 2009
Ultima resposta 13 de jul. de 2009
Respostas 2
Participantes 2