Autor |
Mensagem |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 29/06/2007 11:03:34
|
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
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 29/06/2007 13:06:01
|
pedro.goncalves
Equipe
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:
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
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 29/06/2007 18:21:10
|
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
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 29/06/2007 18:45:52
|
pedro.goncalves
Equipe
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
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/06/2007 10:44:20
|
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.
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/06/2007 12:20:03
|
pedro.goncalves
Equipe
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
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/06/2007 23:01:55
|
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...
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 01/07/2007 10:59:23
|
robmsjr
MultiAction
Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline
|
valeu vou dar uma pesquisada.
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 01/07/2007 11:05:53
|
pedro.goncalves
Equipe
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
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 02/07/2007 08:54:40
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
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 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 02/07/2007 09:35:32
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
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 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 02/07/2007 11:28:13
|
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,
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 02/07/2007 11:30:03
|
pedro.goncalves
Equipe
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
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 02/07/2007 12:03:50
|
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, é?
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 02/07/2007 12:49:53
|
pedro.goncalves
Equipe
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
 |
|
 |
|