[Logo] Neo Framework Forum
  [Search] Busca   [Recent Topics] Tópicos Recentes   [Members]  Lista de Usuários   [Groups] De volta para a página principal 
[Register] Registrar / 
[Login] Entrar 
Duvida no Upload de Imagem[RESOLVIDO]  XML
Índice dos Fóruns -> Dúvidas Ir para a página: 1, 2 Próximo 
Autor Mensagem
robmsjr
MultiAction

Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline

Segui o tutorial de upload de arquivo e parece ter ocorrido tudo ok.
Só estou com algumas duvidas...

- A imagem salva no processo é gravada fisicamente aonde? Não encontrei...
- Tem como eu dimensionar a imagem antes de salvar (colocar altura e largura)?
- Na pagina de alteração tem como eu visualizar a imagem já salva em um tamanho pequeno?

Grato por toda ajuda,

abraços

pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

1. A imagem fica salva em disco no diretório home do seu usuário.
No caso do windows: C:\Documents and Settings\Usuario\dados\app
No linux: /home/usuario/dados/app

2. Sim, tem como, Uma maneira de fazer isso é pegar os bytes, que estão dentro do bean de arquivo, na propriedade content, manipular, por os dados novamente no bean e deixar com que o neo faça o resto.

3. Também tem.

primeiro passo é criar um servlet que le o arquivo, e gerencia os bytes redimensionando, ai o servlet joga os bytes da imagem e exibe.. no html faz algo assim:Code:
 <img  > 
entendeu. De uma olhada no seguinte arquivo para servir de exemplo para manipular os dados: (br.com.linkcom.neo.view.DownloadFileServlet - Está dentro do NEO).

Depois é necessário alterar o template do property de arquivo, o nome dele é InputTag-file.jsp.

Dentro do template tem um link para o arquivo, ai vai ser necessário que você exiba a imagem a partir deste link: ${tag.arquivoLink}

Té!

qualquer outra dúvida poste aqui


Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
robmsjr
MultiAction

Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline

Ok.

Valeu pelas respostas, só mais uma coisa... onde eu altero a pasta que o neo salva a imagem?

abraços
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Para fazer isto, você deve sobrescrever o método getDiretorioHome

ai poe a localização que você deseja!

teh!

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
robmsjr
MultiAction

Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline

O metodo getSaveDir no caso não?
alterei ele no meu ArquivoDao e funcionou.

Uma outra duvida meio desvirtuada do topico... No neo existe algum suporte a relacionamento many-to-many...por exemplo se eu colocar no meu bean as anotações do hibernate a minha tela de entrada.jsp fica pronto do modo normal ou tenho q fazer manualmente?

abraços.
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Você diz um registro ter n?

resumindo 1 para n?

pode ser o getSave dir tbm.. ele chama o diretório home =p...



Se for isso o neo tem suporte sim..

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
rogel.garcia
Xiita

Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline

robmsjr o NEO suporta many-to-many. Mas é recomendável utilizar um relacinamento many-to-one one-to-many. Isso evita problemas, e o hibernate, nesse tipo de relacionamento, possui alguns comportamentos que não podem ser modificados. Esses comportamentos as vezes são indesejáveis.

Na documentação do hibernate você encontrará a mesma recomendação...
robmsjr
MultiAction

Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline

valeu vou dar uma pesquisada.
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Se precisar de um tutorial, me da um toque..

teh

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
guilherme.pimentel
Template
[Avatar]

Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline

Eu implementei o tutorial, so que esta dando esse erro quando eu salvo a entidade:

Não foi possivel adquirir arquivo. Propriedade arquivo da classe class br.com.geoexplore.geoenterprise.geobarragem.bean.Estrutura
Method not found: isArquivo

Obs.: Eu criei a tabela de arquivo e colocoquei duas referencias ao arquivo:

Arquivo:
Code:
 package br.com.geoexplore.geoenterprise.geobarragem.bean;
 
 import java.sql.Timestamp;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 
 import br.com.linkcom.neo.bean.annotation.DescriptionProperty;
 import br.com.linkcom.neo.types.File;
 import br.com.linkcom.neo.validation.annotation.MaxLength;
 import br.com.linkcom.neo.validation.annotation.Required;
 
 @Entity
 @Table(name = "GD2ARQUT")
 @SequenceGenerator(name="S_GD2ARQUT", sequenceName="S_GD2ARQUT")
 public class Arquivo implements File {
 
 	protected Long id;
 	protected String nome;
 	protected String tipoConteudo;
 	protected Long tamanho;
 	protected byte[] conteudo;
 	protected Timestamp tsmodificacao;
 
 	public Arquivo() {
 	}
 
 	public Arquivo(Long id) {
 		this.id = id;
 	}
 
 	@Id
 	@GeneratedValue(strategy=GenerationType.AUTO, generator="S_GD2ARQUT")
 	@Column(name="GD2CODAR")
 	public Long getId() {
 		return id;
 	}
 
 	@MaxLength(50)
 	@Column(name="GD2TIPCN")
 	public String getTipoConteudo() {
 		return tipoConteudo;
 	}
 
 	@Transient
 	public byte[] getConteudo() {
 		return conteudo;
 	}
 
 	@MaxLength(100)
 	@DescriptionProperty
 	@Column(name="GD2NOMAR")
 	public String getNome() {
 		return nome;
 	}
 
 	@Column(name="GD2TAMAR")
 	@Required
 	public Long getTamanho() {
 		return tamanho;
 	}
 
 	@Column(name="GD2DATMD")
 	public Timestamp getTsmodificacao() {
 		return tsmodificacao;
 	}
 
 	public void setId(Long cdarquivo) {
 		this.id = cdarquivo;
 	}
 
 	public void setTipoConteudo(String tipoconteudo) {
 		this.tipoConteudo = tipoconteudo;
 	}
 
 	public void setConteudo(byte[] conteudo) {
 		this.conteudo = conteudo;
 	}
 
 	public void setNome(String nome) {
 		this.nome = nome;
 	}
 
 	public void setTamanho(Long tamanho) {
 		this.tamanho = tamanho;
 	}
 
 	public void setTsmodificacao(Timestamp tsmodificacao) {
 		this.tsmodificacao = tsmodificacao;
 	}
 
 //	-------------------------------------------------------
 
 	@Transient
 	public byte[] getContent() {
 		return getConteudo();
 	}
 
 	@Transient
 	public String getName() {
 		return getNome();
 	}
 
 	@Transient
 	public Long getCdfile() {
 		if(getId() == null){
 			return null;
 		}
 		return new Long(getId().intValue());
 	}
 
 	@Transient
 	public String getContenttype() {
 		return getTipoConteudo();
 	}
 
 	@Transient
 	public Long getSize() {
 		return getTamanho();
 	}
 
 	@Transient
 	public Timestamp getTsmodification() {
 		return getTsmodificacao();
 	}
 
 	public void setContenttype(String contenttype) {
 		setTipoConteudo(contenttype);
 	}
 
 	public void setContent(byte[] content) {
 		setConteudo(content);
 	}
 
 	public void setCdfile(Long cdfile) {
 		setId(cdfile);
 	}
 
 	public void setName(String name) {
 		setNome(name);
 	}
 
 	public void setSize(Long size) {
 		setTamanho(size);
 	}
 
 	public void setTsmodification(Timestamp tsmodification) {
 		setTsmodificacao(tsmodification);
 	}
 }
 


Estrutura:
Code:
 package br.com.geoexplore.geoenterprise.geobarragem.bean;
 
 import java.util.Date;
 import java.util.List;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
 import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 
 import br.com.geoexplore.geoenterprise.adm.bean.Area;
 import br.com.linkcom.neo.bean.annotation.DescriptionProperty;
 import br.com.linkcom.neo.validation.annotation.Required;
 
 @Entity
 @Table(name = "GB0ESTRT")
 @SequenceGenerator(name="S_GB0ESTRT", sequenceName="S_GB0ESTRT")
 public class Estrutura {
     private Long id;
     private String nome;
     private Arquivo nomeImagem;
     private Arquivo nomeImagemBaseTopografica;
     private Date dataInicioOperacao;
     private String observacao;
     private String tipoBarragem;
     private String tipoBarragemDesc;
     private String tipo;
     private String tipoDesc;
     private Float volumeOcupado;
     private Float volumeTotalDisponivel;
     private Area area;
     private List<Piezometro> piezometroList;
     private List<Regua> reguaList;
     
     
     @Id
     @GeneratedValue(strategy=GenerationType.AUTO,generator="S_GB0ESTRT")
     @Column(name="GB0NUMES", nullable = false)
     @Required
 	public Long getId() {
 		return id;
 	}
     @Column(name="GB0NOMES", nullable = false)
     @Required
     @DescriptionProperty
     public String getNome() {
 		return nome;
 	}
     @ManyToOne
     @JoinColumn(name = "GB0CODAE", referencedColumnName = "GD2CODAR")
     @Required
     public Arquivo getNomeImagem() {
 		return nomeImagem;
 	}
     @ManyToOne
     @JoinColumn(name = "GB0CODAB", referencedColumnName = "GD2CODAR")
     @Required
     public Arquivo getNomeImagemBaseTopografica() {
 		return nomeImagemBaseTopografica;
 	}
     @Column(name="GB0OBSES")
     public String getObservacao() {
 		return observacao;
 	}
     @Column(name="GB0TIPES")
     @Required
     public String getTipo() {
 		return tipo;
 	}
 	@Column(name="GB0TIPB")
     public String getTipoBarragem() {
 		return tipoBarragem;
 	}
 	@Column(name="GB0VALVO")
     public Float getVolumeOcupado() {
 		return volumeOcupado;
 	}
 	@Column(name="GB0VALVT")
     public Float getVolumeTotalDisponivel() {
 		return volumeTotalDisponivel;
 	}
 	@Column(name="GB0DATIO")
     public Date getDataInicioOperacao() {
 		return dataInicioOperacao;
 	}
     @ManyToOne
     @JoinColumn(name = "GB0NUMAR", referencedColumnName = "ADANUMAR")
     @Required
     public Area getArea() {
 		return area;
 	}
 	@OneToMany(mappedBy = "estrutura")
     public List<Piezometro> getPiezometroList() {
 		return piezometroList;
 	}
 	@OneToMany(mappedBy = "estrutura")
     public List<Regua> getReguaList() {
 		return reguaList;
 	}
 	@Transient
 	public String getTipoBarragemDesc() {
 		return tipoBarragemDesc;
 	}
 	@Transient
 	public String getTipoDesc() {
 		return tipoDesc;
 	}
 	
 	public void setArea(Area area) {
 		this.area = area;
 	}
 	public void setDataInicioOperacao(Date dataInicioOperacao) {
 		this.dataInicioOperacao = dataInicioOperacao;
 	}
 	public void setId(Long id) {
 		this.id = id;
 	}
 	public void setNome(String nome) {
 		this.nome = nome;
 	}
 	public void setNomeImagem(Arquivo nomeImagem) {
 		this.nomeImagem = nomeImagem;
 	}
 	public void setNomeImagemBaseTopografica(Arquivo nomeImagemBaseTopografica) {
 		this.nomeImagemBaseTopografica = nomeImagemBaseTopografica;
 	}
 	public void setObservacao(String observacao) {
 		this.observacao = observacao;
 	}
 	public void setTipo(String tipo) {
 		this.tipo = tipo;
 	}
 	public void setTipoBarragem(String tipoBarragem) {
 		this.tipoBarragem = tipoBarragem;
 	}
 	public void setVolumeOcupado(Float volumeOcupado) {
 		this.volumeOcupado = volumeOcupado;
 	}
 	public void setVolumeTotalDisponivel(Float volumeTotalDisponivel) {
 		this.volumeTotalDisponivel = volumeTotalDisponivel;
 	}
 	public void setPiezometroList(List<Piezometro> piezometroList) {
 		this.piezometroList = piezometroList;
 	}
 	public void setReguaList(List<Regua> reguaList) {
 		this.reguaList = reguaList;
 	}
 	public void setTipoBarragemDesc(String tipoBarragemDesc) {
 		this.tipoBarragemDesc = tipoBarragemDesc;
 	}
 	public void setTipoDesc(String tipoDesc) {
 		this.tipoDesc = tipoDesc;
 	}
 }
 


EstruturaDAO:

Code:
 package br.com.geoexplore.geoenterprise.geobarragem.dao;
 
 import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.support.TransactionCallback;
 
 import br.com.geoexplore.geoenterprise.geobarragem.bean.Estrutura;
 import br.com.linkcom.neo.persistence.GenericDAO;
 import br.com.linkcom.neo.persistence.QueryBuilder;
 import br.com.linkcom.neo.persistence.SaveOrUpdateStrategy;
 
 public class EstruturaDAO extends GenericDAO<Estrutura> {
 
 	ArquivoDAO arquivoDAO;
 
 	public void setArquivoDAO(ArquivoDAO arquivoDAO) {
 		this.arquivoDAO = arquivoDAO;
 	}
 
 	@Override
 	public void updateSaveOrUpdate(final SaveOrUpdateStrategy save) {
 		getTransactionTemplate().execute(new TransactionCallback(){
 			public Object doInTransaction(TransactionStatus status) {
 				arquivoDAO.saveFile(save.getEntity(), "arquivo");
 				return null;
 			} 
 		});
 	}
 	@Override
 	public void updateEntradaQuery(QueryBuilder query) {
 		query.leftOuterJoinFetch("estrutra.arquivo arquivo");
 	}
 }



Esta Faltando alguma coisa????

GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE
guilherme.pimentel
Template
[Avatar]

Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline

1000 desculpas .... no DAO eu coloquei o nome errado ao invez de colocar:
Code:
 arquivoDAO.saveFile(save.getEntity(), "arquivo");
 


eu coloquei agora:

Code:
 arquivoDAO.saveFile(save.getEntity(), "nomeImagem");
 arquivoDAO.saveFile(save.getEntity(), "nomeImagemBaseTopografica");
 



Valeu!!! Agora esta funcionando!!!

GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE
robmsjr
MultiAction

Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline

Oi de novo,

Já consegui salvar a imagem no local que queria, mas agora surgiu outra duvida...
Eu coloquei um campo caminho onde está o endereço da imagem.
Agora gostaria de na minha listagem de imagem exibir ela na tabela gerada pelo neo... Tentei colocar uma tag <img> mas ficou fora da tabela... e tentei tb o t:property type=image mas n funcionou exibia a string...

Se tiver alguma tag q exiba essa imagem e eu possa setar width e heigth como na tag <img agradeço.

grato pela ajuda

abraços,
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

faz assim...

Code:
                 <t:tabelaResultados>
 		<t:property name="c1"/>
 		<t:property name="c2"/>
                  <n:column header="tetse">
 			codigo html da imagem aqui
 		</n:column>
 		</t:tabelaResultados>
 
 

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
robmsjr
MultiAction

Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline

Show, funcionou...

Só uma duvida, na listagem de imagem por exemplo se eu tentar pegar imagem.arquivo.caminho dá erro... É porque não carrega os campos, é?
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Eu nao entendi a pergunta..!

desculpe

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
 
Índice dos Fóruns -> Dúvidas Ir para a página: 1, 2 Próximo 
Ir para:   
Powered by JForum 2.1.7 © JForum Team