Como agrupar ....duvida

9 respostas
P

Olá amigos,

vamos ver se podem me ajudar …

Vou ler uma informação do banco e dados e virá assim :

hora dia_semana

13:00 1
13:00 2
13:00 7
14:00 3
15:00 4

Onde dia_semana é :

1- domingo 2 - segunda …

e terá que mostrar na tela (jsp) assim :

hora domingo segunda terça quarta quinta sexta sabado domingo
13:00 x x x
14:00 x
15:00 x

Minha duvida é como agrupar em uma linha as informações que estão vindo
do banco de dados estou em duvida no java como fazer e passar para jsp depois

Se alguém puder me ajudar agradeceria

abs

9 Respostas

Roger75

Por que você não usa um Set? Aí não repete os elementos ao adicionar na coleção.

P

com certeza o que vc precisa fazer não é mto complicado, mas com o seu modelo do que vc precisa não da pra saber…

tem como explicar mais claramente?

bzanchet

Se for possível, dá pra fazer o agrupamento diretamente em sql:

SELECT hora, count(dia_semana) FROM tabela GROUP BY dia_semana;
P

vou tentar explicar então :

vou dar um select em uma tabela no banco de dados :

select hora,dia_semana
from tb
where codigo= ?

onde vai me retornar :

hora dia_semana
==== =========

13:00 1
13:00 2
14:00 3

*** dia_semana = 1-dom , 2-seg,3-ter …
e a saida no jsp será :

hor dom seg ter qua qui sex sab
== =================
13:00 x x
14:00 x

o que desejo é montar uma rotina qdo ler do banco que vel linha por linha isto é o horario se for igual como 13:00 vai vir em varias linhas e tenho que agrupar em uma unica linha no jsp …e que na tela aparece tudo desposicionado …

o quado acima

não sei se deu pra entender a agora

Leandro_BSB

Você poderia criar uma classe LinhaRelatorio:

public class LinhaRelatorio {

	private String hora;
	private String dom;
	private String seg;
	private String ter;
	private String qua;
	private String qui;
	private String sex;
	private String sab;
	
	public String getDom() {
		return dom;
	}
	public void setDom(String dom) {
		this.dom = dom;
	}
	public String getHora() {
		return hora;
	}
	public void setHora(String hora) {
		this.hora = hora;
	}
	public String getQua() {
		return qua;
	}
	public void setQua(String qua) {
		this.qua = qua;
	}
	public String getQui() {
		return qui;
	}
	public void setQui(String qui) {
		this.qui = qui;
	}
	public String getSab() {
		return sab;
	}
	public void setSab(String sab) {
		this.sab = sab;
	}
	public String getSeg() {
		return seg;
	}
	public void setSeg(String seg) {
		this.seg = seg;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getTer() {
		return ter;
	}
	public void setTer(String ter) {
		this.ter = ter;
	}
	
	
}

que você pode colocar em um TreeMap, no qual a chave é o horário e o valor é esta classe.

[]s

Leandro

P

Olá primeiramente obrigado pelo retorno ,

mas estou com o seguinte problema usei a classe abaixo Horario
pra alimentar os dados que vem do banco de dados que vem

da seguinte forma :

horario diasemana
13:00 1
13:00 2
13:00 3
14:00 2
14:00 7

onde dia da semana 1-domingo , 2-segunda …

abaixo coloquei um pedaço do codigo só que na segunda vez lendo o
regsitro do banco de dados :
horario 13:00 e diasemana 2

da que a chave do HashMap já existe estou usando campo do banco horario

Minha duvida teria outra forma de usar já que o objetivo depois é apresentar
no jsp :

horario dom seg ter qua qui sex sab
13:00 x x x
14:00 x x

Isto é horario 13:00 na coluna dom um x na coluna seg X na coluna ter X
Isto é horario 14:00 na coluna SEG um x na coluna sab X

Quem puder me ajudar agradeceria …

abs

public class Horario {

	
	  private String Horario;
	  private String domingo;
	  private String segunda;
	  private String terca;
	  private String quarta;
	  private String quinta;
	  private String sexta;
	  private String sabado;
	  
	  
	public String getDomingo() {
		return domingo;
	}
	public void setDomingo(String domingo) {
		this.domingo = domingo;
	}
	public String getHorario() {
		return Horario;
	}
	public void setHorario(String horario) {
		Horario = horario;
	}
	public String getQuarta() {
		return quarta;
	}
	public void setQuarta(String quarta) {
		this.quarta = quarta;
	}
	public String getQuinta() {
		return quinta;
	}
	public void setQuinta(String quinta) {
		this.quinta = quinta;
	}
	public String getSabado() {
		return sabado;
	}
	public void setSabado(String sabado) {
		this.sabado = sabado;
	}
	public String getSegunda() {
		return segunda;
	}
	public void setSegunda(String segunda) {
		this.segunda = segunda;
	}
	public String getSexta() {
		return sexta;
	}
	public void setSexta(String sexta) {
		this.sexta = sexta;
	}
	public String getTerca() {
		return terca;
	}
	public void setTerca(String terca) {
		this.terca = terca;
	}
	  
}


------------------------

		HashMap hora = new HashMap();
    	
	while (rs.next()) {
		
		//rs.getInt(1);
		    Horario horario = new Horario();
		    horario.setHorario(rs.getInt("horario"));
		
    		if (rs.getInt("diasemana") == 1 ){
		      horario.setDomingo("X");
	    	}

		if (rs.getInt("diasemana") == 2 ){
			    horario.setSegunda("X");
			}
			if (rs.getInt("diasemana") == 3 ){
			    horario.setTerca("X");
			}
			if (rs.getInt("diasemana") == 4 ){
			    horario.setQuarta("X");
			}
			if (rs.getInt("diasemana") == 5 ){
			    horario.setQuinta("X");
			}
			if (rs.getInt("diasemana") == 6 ){
			    horario.setSexta("X");
			}
			if (rs.getInt("diasemana") == 7 ){
			    horario.setSabado("X");
			}
			
			hora.put(horario.getHorario(),horario);

		
		
	}

}
Leandro_BSB

Tente fazer assim:

TreeMap hora = new TreeMap();

		while (rs.next()) {

			// rs.getInt(1);
			try {
				Horario horario = (Horario) hora.get(new Integer(rs
						.getInt("horario")));
				if (rs.getInt("diasemana") == 1) {
					horario.setDomingo("X");
				}

				if (rs.getInt("diasemana") == 2) {
					horario.setSegunda("X");
				}
				if (rs.getInt("diasemana") == 3) {
					horario.setTerca("X");
				}
				if (rs.getInt("diasemana") == 4) {
					horario.setQuarta("X");
				}
				if (rs.getInt("diasemana") == 5) {
					horario.setQuinta("X");
				}
				if (rs.getInt("diasemana") == 6) {
					horario.setSexta("X");
				}
				if (rs.getInt("diasemana") == 7) {
					horario.setSabado("X");
				}

				hora.put(horario.getHorario(), horario);
			} catch (Exception e) {

				Horario horario = new Horario();
				horario.setHorario(rs.getInt("horario"));

				if (rs.getInt("diasemana") == 1) {
					horario.setDomingo("X");
				}

				if (rs.getInt("diasemana") == 2) {
					horario.setSegunda("X");
				}
				if (rs.getInt("diasemana") == 3) {
					horario.setTerca("X");
				}
				if (rs.getInt("diasemana") == 4) {
					horario.setQuarta("X");
				}
				if (rs.getInt("diasemana") == 5) {
					horario.setQuinta("X");
				}
				if (rs.getInt("diasemana") == 6) {
					horario.setSexta("X");
				}
				if (rs.getInt("diasemana") == 7) {
					horario.setSabado("X");
				}

				hora.put(horario.getHorario(), horario);

			}

		}

[]s

Leandro

P

Mais uma vez obrigado pelo retorno,

estou respondendo só agora pois na empresa não da pra acessara
internet …

Tentei usar o seu codigo que me enviou mais está me dando um
erro que é o seguinte coloquei em um for pra testar mas na primeira
vez que diasemana = 7 qdo vai setar X no if do sabado ele
cai fora e printa com System.out.println não entendi porque ?

Se puder me ajudar …

ABS

public class Horario {

	
	  private String Horario;
	  private String domingo;
	  private String segunda;
	  private String terca;
	  private String quarta;
	  private String quinta;
	  private String sexta;
	  private String sabado;
	  
	  
	public String getDomingo() {
		return domingo;
	}
	public void setDomingo(String domingo) {
		this.domingo = domingo;
	}
	public String getHorario() {
		return Horario;
	}
	public void setHorario(String horario) {
		Horario = horario;
	}
	public String getQuarta() {
		return quarta;
	}
	public void setQuarta(String quarta) {
		this.quarta = quarta;
	}
	public String getQuinta() {
		return quinta;
	}
	public void setQuinta(String quinta) {
		this.quinta = quinta;
	}
	public String getSabado() {
		return sabado;
	}
	public void setSabado(String sabado) {
		this.sabado = sabado;
	}
	public String getSegunda() {
		return segunda;
	}
	public void setSegunda(String segunda) {
		this.segunda = segunda;
	}
	public String getSexta() {
		return sexta;
	}
	public void setSexta(String sexta) {
		this.sexta = sexta;
	}
	public String getTerca() {
		return terca;
	}
	public void setTerca(String terca) {
		this.terca = terca;
	}
	  
}
//

import java.util.Iterator;
import java.util.TreeMap;

public class Grava_Horario {

	
	
	public static void main(String[] args) {
		String horariodesc = "14:00";
        int diasemana = 1; 
		TreeMap hora = new TreeMap();
	   	
	   	Horario horario = new Horario();

			try {
				
				for (int i = 0; i < 5; i++) {
					
				
					    horario = (Horario) hora.get(new String("horariodesc"));	
					    diasemana =7;
					
			    		if (diasemana == 1 ){
					      horario.setDomingo("X");
				    	}
			
						if (diasemana == 2 ){
						    horario.setSegunda("X");
						}
						if (diasemana == 3 ){
						    horario.setTerca("X");
						}
						if (diasemana == 4 ){
						    horario.setQuarta("X");
						}
						if (diasemana == 5 ){
						    horario.setQuinta("X");
						}
						if (diasemana == 6 ){
						    horario.setSexta("X");
						}
						if (diasemana == 7 ){
						    horario.setSabado("X"); //qdo executa essa linha cai fora
						}
						
						hora.put(horario.getHorario(),horario);
				}
			
			} catch(Exception e) {
				
		    	 
		    	
			     horario = new Horario();
			    
			     horario.setHorario(horariodesc);
			
	    		if (diasemana == 1 ){
			      horario.setDomingo("");
		    	}

				if (diasemana == 2 ){
				    horario.setSegunda("");
				}
				if (diasemana == 3 ){
				    horario.setTerca("");
				}
				if (diasemana == 4 ){
				    horario.setQuarta("");
				}
				if (diasemana == 5 ){
				    horario.setQuinta("");
			 	}
				if (diasemana == 6 ){
				    horario.setSexta("");
				}
				if (diasemana == 7 ){
				    horario.setSabado("X");
				}
				
				 hora.put(horario.getHorario(),horario);
 
				
			}	
 			
			
			//
			for (Iterator i=hora.values().iterator(); i.hasNext(); ) {
	 			   Horario ok = (Horario) i.next();
	 			   System.out.println("hora :"+ok.getHorario());
	 			   System.out.println("Domingo :"+ok.getDomingo());
	 			   System.out.println("Segunda :"+ok.getSegunda());
	 			   System.out.println("Terca :"+ok.getTerca());
	 			   System.out.println("Quarta :"+ok.getQuarta()); 
	 			   System.out.println("Quinta :"+ok.getQuinta());
	 			   System.out.println("Sexta :"+ok.getSexta());
	 			   System.out.println("Sabado :"+ok.getSabado());
	 			   System.out.println("--------------------------");
			}
	 			//
	}

}
P

alguém pode me ajudar …

Criado 26 de maio de 2006
Ultima resposta 31 de mai. de 2006
Respostas 9
Participantes 5