Nesta seção, é apresentado um protótipo desenvolvido em Java baseado
em RESTful com padrão de troca de dados JSON, utilizando banco de dados
Postgresql. O caso em questão corresponde ao envio de dados a partir de um
módulo Arduíno para o WebService, simulando dados coletados dos sensores e
gravando estes no banco de dados para que posteriormente sejam feitas possíveis
consultas ou alertas a serem enviados ao agricultor.
Devido ao foco do trabalho não ser a parte do banco de dados e nem do
cliente que irá consumir o WebService, será abordado somente as partes básicas
destes dois elementos para que se possa entender e provar o pleno funcionamento
do WebService. Abaixo na Figura 19, o esquema do protótipo em questão.
Figura 19 - Esquema do Protótipo
Fonte: Própria (2014)
A tabela do banco de dados para gerar este modelo chama-se “leituras”,
aonde serão armazenados dados dos sensores que serão enviados ao coletor que
posteriormente enviará as mesmas para o WebService, que fará a persistência dos
dados nesta tabela. Sua estrutura é mostrada na Figura 20.
Figura 20 - Estrutura lógica da tabela leituras.
Em relação ao Cliente que consumirá o WebService, precisamos de uma
classe POJO com os atributos da tabela “leituras” para que possam ser criados os
objetos para enviar ao recurso desejado do WebService. Para o envio destes dados
é necessário uma classe aonde seja criado um Cliente, um recurso (caminho para
aonde enviar os dados), um método (create) para o qual se deseja enviar a
solicitação ao WebService (neste caso é um POST) e um método (close) que fecha
o Cliente após o envio dos dados. Na Figura 21, pode-se ver como ficou a classe
NewJerseyClient que executa estes procedimentos.
Figura 21 - Classe NewJerseyClient no Cliente.
Fonte: Própria (2014)
Estas duas classes descritas acima são chamadas pelo método mount
também no Cliente conforme ilustra na Figura 22, que tem a função de povoar a
classe POJO e chamar o método create da classe NewJerseyClient, afim de enviar
o arquivo no formato JSON ao WebService, e ao final fechar esta conexão do
Cliente.
Figura 22 - Método Mount no Cliente.
Como podemos obsevar na Figura 23, os dados enviados pelo Cliente
através do Arduíno estão sendo gravados com sucesso no banco de dados ao
passarem pelo recurso do WebService. Neste caso, está sendo feito um POST no
recurso Leituras que foi definido no Path do WebService.
Figura 23 - Retorno do Cliente ao Fazer POST no Recurso Leituras
Fonte: Própria (2014)
Constatou-se ainda, que ao fazer uma requisição via HTTP pelo browser no
recurso criado (Figura 24), retorna a lista em formato JSON dos dados inseridos na
tabela Leituras do banco de dados. Esta solicitação caracteriza uma consulta na
requisição GET.
Figura 24 - Consulta via HTTP GET no Recurso Leituras
Fonte: Própria (2014)
Com os códigos e os resultados apresentados acima, demonstra-se o pleno
funcionamento no WebService Leituras, o qual tem a finalidade de receber os dados
enviados pelos sensores ao coletor e este encaminhar ao WebService que
designará ao método create para fazer a inserção destas informações na tabela
Leituras do banco de dados.
CONCLUSÃO
Uma das atividades mais importantes na agricultura de precisão é o
acompanhamento do desenvolvimento da cultura em tempo real e a correção dos
fatores deficientes no instante em que é diagnosticado. A tecnologia possui técnicas
que podem auxiliar na identificação dos fatores que afetam a variação da
produtividade em áreas distintas da lavoura. Estes fatores podem ser a infestação
de pragas que atacam a plantação, de ervas daninhas que concorrem com a planta,
entre outros.
A agricultura de precisão é a nova tendência do mercado agrícola. As
vantagens que podem obter com ela são inúmeras, colheitas mais produtivas, uma
menor poluição devido ao uso reduzido de insumos e consequentemente uma
grande economia. Ela tende a se tornar cada vez mais comum nas propriedades
rurais. As tecnologias hoje existentes já permitem que se tenha um grande
conhecimento das variabilidades encontradas entre as diferentes áreas da
propriedade, o que já proporciona a tomada de decisões com base em dados mais
precisos.
Este trabalho demonstrou o desenvolvimento de uma aplicação na
linguagem de programação Java, baseada em WebServices aonde segue-se
padrões pré-definidos do RESTful juntamente com algumas tecnologias embutidas
como o framework Hibernate, a API Jersey com anotações do JAX-RS, dos quais
pode-se tirar o máximo de proveito no desenvolvimento, segurança e rapidez da
informação a fim de gerenciar o tráfego dos dados e fazer a sincronização entre os
módulos da arquitetura AgroMobile.
O padrão RESTful vem confirmar seu ótimo funcionamento em
WebServices, tornando sua utilização ideal em projetos que necessitam de agilidade
e eficiência na interoperabilidade entre as partes. Por utilizar métodos padrões
HTTP, torna-se amplamente acoplada a qualquer tipo de desenvolvimento em
diferentes linguagens de programação explorando toda arquitetura Web em seu
benefício.
Diante disto, com os recursos de WebServices desenvolvidos neste trabalho
a Arquitetura AgroMobile torna-se totalmente interligada entre seus diversos
módulos, proporcionando a interoperabilidade entre eles.
REFERÊNCIAS
ASSAD, Maria Leonor Lopes; ALMEIDA, Jalcione. Agricultura e sustentabilidade. Contexto, Desafios e Cenários. Artigo publicado Ciência & Ambiente, 2004.
AURÉLIO, Rafael; MORGENSTERN, Marcos; MARAN, Vinicius. UMA DEFINIÇÃO ONTOLÓGICA DO DOMÍNIO DE AGRICULTURA DE PRECISÃO PARA A ARQUITETURA AGROMOBILE. Salão do Conhecimento, 2013.
BAUER, Cristian; KING, Gavin. Java Persistence com Hibernate. Editora Ciência Moderna, 2005. BOEMO, Daniel, Desenvolvimento de Sistemas de Geoprocessamento e tecnologia móvel aplicados à agricultura de precisão. Santa Maria-RS, Abril 2011. Disponível em:
<http://cascavel.cpd.ufsm.br/tede/tde_busca/arquivo.php?codArquivo=3905> Acessado em 09/10/2013.
BRAY, Tim. et al. E.Extensible MarkupLanguage (XML) 1.0 (Fifth Edition), 2008. Disponível em: <http://www.w3.org/TR/REC-xml>, Acessado em 02/11/2013.
CAMPANHOLA, C. Novos significados e desafios. Brasília, DF: Embrapa Informação Tecnológica, 2004.
COMISSÃO DE QUÍMICA E FERTILIDADE DO SOLO. Manual de adubação e de calagem para os estados do Rio Grande do Sul e Santa Catarina. SBCS/NRS. Porto Alegre, 2004.
CROCKFORD, Douglas. JavaScript Object Notation (JSON), Julho 2006. Diponível em <http://www.ietf.org/rfc/rfc4627.txt?number=4627>, Acessado em 02/11/2013.
DUARTE, Katia C.; FALBO, Ricardo A. Uma ontologia de qualidade de software. In: Workshop de Qualidade de Software, João Pessoa. 2000.
EMBRAPA. Rede Agricultura de Precisão (AP 2). O que é Agricultura de Precisão?. Disponível em: <http://www.macroprograma1.cnptia.embrapa.br/redeap2/o-que-e-agricultura-de-precisao> Acessado em 20/11/2013.
GRUBER, Thomas R. Toward principles for the design of ontologies used for knowledge sharing?. International journal of human-computer studies,1995.
KIRSCHNER, S. F. ; MARAN, V. . Um Sistema de Auxílio à Coleta de Dados na Área de Agricultura de Precisão Baseada em Aplicações Móveis. In: XX Seminário de Iniciação Científica - Salão do Conhecimento 2012 - Unijuí, 2012, Ijuí.
MORGENSTERN, M. S. ; AURELIO, R. ; ALVES, R. ; MARAN, V. . Definição de uma Rede de Sensores para a Arquitetura AgroMobile. In: XII Simpósio de Informática da UNIFRA (SIRC), 2013, Santa Maria - RS. Anais do XII Simpósio de Informática da UNIFRA (SIRC), 2013.
OLIVEIRA, Leonardo Eloy. Estado da arte de banco de dados orientados a documento, 2009. Monografia (Conclusão do Curso de Graduação em Ciências Tecnológicas)–Universidade de Fortaleza –UNIFOR, Ceára, 2009.
SILVA, Grace Kelly de Castro; PEREIRA, Patrícia Maria; MAGALHÃES, Geovane. Disponibilização de Serviços Baseados em Localização via Web Services. In: Simpósio Brasileiro de
GeoInformática, GeoInfo. 2004.
SOAP, 2003, “Simple Object Access Protocol” (27 de abril, 2007); Disponível em <http://www.w3.org/TR/soap12 >. Acessado em 02/11/2013.
SUMRA, Rajesh. “Developing JAX-RPC-Based Web Services Using Axis and SOAP”, 2003. Disponível em: <http://www.developer.com/open/article.php/2237251/Developing-JAX-
RPCndashBased-Web-Services-Using-Axis-and-SOAP.htm>, Acessado em 01/11/2013. ZAVALIK, Claudimir. Integração de sistemas de informação através de web services. 2004. Dissertação de Mestrado (Programa de Pós Graduação em Computação)–Universidade Federal do Rio Grande do Sul. Porto Alegre, 2004.
APÊNDICE A
– Classes do Pacote Config
Classe AbstractFacade.java
package config; import java.util.List;
import javax.persistence.EntityManager;
public abstract class AbstractFacade<T> { private Class<T> entityClass;
public AbstractFacade(Class<T> entityClass) { this.entityClass = entityClass;
}
protected abstract EntityManager getEntityManager();
public void create(T entity) {
getEntityManager().persist(entity); }
public void edit(T entity) {
getEntityManager().merge(entity); }
public void remove(T entity) {
getEntityManager().remove(getEntityManager().merge(entity)); }
public T find(Object id) {
return getEntityManager().find(entityClass, id); }
public List<T> findAll() {
javax.persistence.criteria.CriteriaQuery cq =
getEntityManager().getCriteriaBuilder().createQuery(); cq.select(cq.from(entityClass));
return getEntityManager().createQuery(cq).getResultList(); }
public List<T> findRange(int[] range) {
javax.persistence.criteria.CriteriaQuery cq =
getEntityManager().getCriteriaBuilder().createQuery(); cq.select(cq.from(entityClass));
javax.persistence.Query q = getEntityManager().createQuery(cq); q.setMaxResults(range[1] - range[0] + 1);
q.setFirstResult(range[0]); return q.getResultList(); }
public int count() {
javax.persistence.criteria.CriteriaQuery cq =
getEntityManager().getCriteriaBuilder().createQuery(); javax.persistence.criteria.Root<T> rt = cq.from(entityClass); cq.select(getEntityManager().getCriteriaBuilder().count(rt)); javax.persistence.Query q = getEntityManager().createQuery(cq); return ((Long) q.getSingleResult()).intValue();
} }
Classe ApplicationConfig.java
package config; import java.util.Set;
import javax.ws.rs.core.Application;
@javax.ws.rs.ApplicationPath("webresources") public class ApplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<>(); addRestResourceClasses(resources);
return resources; }
private void addRestResourceClasses(Set<Class<?>> resources) { resources.add(recursos.AnoagricolaFacadeREST.class); resources.add(recursos.CidadeFacadeREST.class); resources.add(recursos.CultivaresFacadeREST.class); resources.add(recursos.CulturaFacadeREST.class); resources.add(recursos.EspeciemFacadeREST.class); resources.add(recursos.EstadioFacadeREST.class); resources.add(recursos.EventoscFacadeREST.class); resources.add(recursos.GlebaFacadeREST.class); resources.add(recursos.GlebasvinculadasFacadeREST.class); resources.add(recursos.ItemplanjFacadeREST.class); resources.add(recursos.LeiturasFacadeREST.class); resources.add(recursos.MonitoramentoFacadeREST.class); resources.add(recursos.PlanejamentoFacadeREST.class); resources.add(recursos.PontoamostraFacadeREST.class); resources.add(recursos.ProdutoFacadeREST.class); resources.add(recursos.ProdutorFacadeREST.class); resources.add(recursos.PropriedadeFacadeREST.class); resources.add(recursos.SafraFacadeREST.class); resources.add(recursos.TecnicoFacadeREST.class); resources.add(recursos.VariedadesFacadeREST.class); resources.add(recursos.VariedadesglebaFacadeREST.class); } }
APÊNDICE B – Classes do Pacote Entidades
Classe Anoagriola.java
package entidades; import java.io.Serializable; import java.util.Collection; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @Entity @Table(name = "anoagricola") @XmlRootElement @NamedQueries({@NamedQuery(name = "Anoagricola.findAll", query = "SELECT a FROM Anoagricola a"),
@NamedQuery(name = "Anoagricola.findByIdAnoagricola", query = "SELECT a FROM Anoagricola a WHERE a.idAnoagricola = :idAnoagri cola"), @NamedQuery(name = "Anoagricola.findByDescricao", query = "SELECT a FROM Anoagricola a WHERE a.descricao = :descricao"), @NamedQuery(name = "Anoagricola.findByAnoinicial", query = "SELECT a FROM Anoagricola a WHERE a.anoinicial = :anoinicial"), @NamedQuery(name = "Anoagricola.findByCondicao", query = "SELECT a FROM Anoagricola a WHERE a.condicao = :condicao"),
@NamedQuery(name = "Anoagricola.findByFlagSincronizacao", query = "SELECT a FROM Anoagricola a WHERE a.flagSincronizacao = :flagSincronizacao")})
public class Anoagricola implements Serializable {
private static final long serialVersionUID = 1L; @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false)
@Column(name = "id_anoagricola") private Integer idAnoagricola;
@Size(max = 25)
@Column(name = "descricao") private String descricao; @Size(max = 4)
@Column(name = "anoinicial") private String anoinicial; @Size(max = 1)
@Column(name = "condicao") private String condicao; @Size(max = 1)
@Column(name = "flag_sincronizacao") private String flagSincronizacao;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idAnoagricola") private Collection<Safra> safraCollection;
public Anoagricola() { }
public Anoagricola(Integer idAnoagricola) { this.idAnoagricola = idAnoagricola; }
public Integer getIdAnoagricola() { return idAnoagricola;
}
public void setIdAnoagricola(Integer idAnoagricola) { this.idAnoagricola = idAnoagricola;
}
public String getDescricao() { return descricao;
}
public void setDescricao(String descricao) { this.descricao = descricao;
}
public String getAnoinicial() { return anoinicial;
}
public void setAnoinicial(String anoinicial) { this.anoinicial = anoinicial;
}
public String getCondicao() { return condicao;
}
public void setCondicao(String condicao) { this.condicao = condicao;
}
public String getFlagSincronizacao() { return flagSincronizacao;
}
public void setFlagSincronizacao(String flagSincronizacao) { this.flagSincronizacao = flagSincronizacao;
}
@XmlTransient
public Collection<Safra> getSafraCollection() { return safraCollection;
}
public void setSafraCollection(Collection<Safra> safraCollection) { this.safraCollection = safraCollection;
}
@Override
public int hashCode() { int hash = 0;
hash += (idAnoagricola != null ? idAnoagricola.hashCode() : 0); return hash;
}
@Override
if (!(object instanceof Anoagricola)) { return false;
}
Anoagricola other = (Anoagricola) object;
if ((this.idAnoagricola == null && other.idAnoagricola != null) || (this.idAnoagricola != null && !this.idAnoagricola.equals(other.idAnoagricola))) { return false; } return true; } @Override
public String toString() {
return "entidades.Anoagricola[ idAnoagricola=" + idAnoagricola + " ]"; } }
Classe Cidade.java
package entidades; import java.io.Serializable; import java.util.Collection; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient;@Entity
@Table(name = "cidade") @XmlRootElement
@NamedQueries({
@NamedQuery(name = "Cidade.findAll", query = "SELECT c FROM Cidade c"),
@NamedQuery(name = "Cidade.findByIdCidade", query = "SELECT c FROM Cidade c WHERE c.idCidade = :idCidade"), @NamedQuery(name = "Cidade.findByCidade", query = "SELECT c FROM Cidade c WHERE c.cidade = :cidade"),
@NamedQuery(name = "Cidade.findByFlagSincronizacao", query = "SELECT c FROM Cidade c WHERE c.flagSincronizacao = :flagSincronizacao"), @NamedQuery(name = "Cidade.findByUf", query = "SELECT c FROM Cidade c WHERE c.uf = :uf")})
public class Cidade implements Serializable { private static final long serialVersionUID = 1L; @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false)
@Column(name = "id_cidade") private Integer idCidade; @Basic(optional = false) @NotNull
@Size(min = 1, max = 40) @Column(name = "cidade") private String cidade; @Size(max = 1)
@Column(name = "flag_sincronizacao") private String flagSincronizacao;
@Size(max = 2) @Column(name = "uf") private String uf;
@OneToMany(mappedBy = "idCidade")
private Collection<Produtor> produtorCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idCidade") private Collection<Gleba> glebaCollection;
public Cidade() { }
public Cidade(Integer idCidade) { this.idCidade = idCidade; }
public Cidade(Integer idCidade, String cidade) { this.idCidade = idCidade;
this.cidade = cidade; }
public Integer getIdCidade() { return idCidade;
}
public void setIdCidade(Integer idCidade) { this.idCidade = idCidade;
}
public String getCidade() { return cidade;
}
public void setCidade(String cidade) { this.cidade = cidade;
}
public String getFlagSincronizacao() { return flagSincronizacao;
}
public void setFlagSincronizacao(String flagSincronizacao) { this.flagSincronizacao = flagSincronizacao;
}
public String getUf() { return uf;
}
public void setUf(String uf) { this.uf = uf;
}
@XmlTransient
public Collection<Produtor> getProdutorCollection() { return produtorCollection;
public void setProdutorCollection(Collection<Produtor> produtorCollection) { this.produtorCollection = produtorCollection;
}
@XmlTransient
public Collection<Gleba> getGlebaCollection() { return glebaCollection;
}
public void setGlebaCollection(Collection<Gleba> glebaCollection) { this.glebaCollection = glebaCollection;
}
@Override
public int hashCode() { int hash = 0;
hash += (idCidade != null ? idCidade.hashCode() : 0); return hash;
}
@Override
public boolean equals(Object object) { if (!(object instanceof Cidade)) {
return false; }
Cidade other = (Cidade) object;
if ((this.idCidade == null && other.idCidade != null) || (this.idCidade != null && !this.idCidade.equals(other.idCidade))) { return false; } return true; } @Override
public String toString() {
return "entidades.Cidade[ idCidade=" + idCidade + " ]"; }
}
Classe Cultivares.java
package entidades; import java.io.Serializable; import java.util.Collection; import javax.persistence.Basic; 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.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @Entity @Table(name = "cultivares") @XmlRootElement @NamedQueries({@NamedQuery(name = "Cultivares.findAll", query = "SELECT c FROM Cultivares c"),
@NamedQuery(name = "Cultivares.findByIdCultivares", query = "SELECT c FROM Cultivares c WHERE c.idCultivares = :idCultivares"), @NamedQuery(name = "Cultivares.findByDatac", query = "SELECT c FROM Cultivares c WHERE c.datac = :datac"),
@NamedQuery(name = "Cultivares.findByObservacao", query = "SELECT c FROM Cultivares c WHERE c.observacao = :observacao"), @NamedQuery(name = "Cultivares.findByPestimada", query = "SELECT c FROM Cultivares c WHERE c.pestimada = :pestimada"), @NamedQuery(name = "Cultivares.findByEestimada", query = "SELECT c FROM Cultivares c WHERE c.eestimada = :eestimada"), @NamedQuery(name = "Cultivares.findBySituacao", query = "SELECT c FROM Cultivares c WHERE c.situacao = :situacao"),
@NamedQuery(name = "Cultivares.findByFlagSincronizacao", query = "SELECT c FROM Cultivares c WHERE c.flagSincronizacao = :flagSincronizacao")})
public class Cultivares implements Serializable { private static final long serialVersionUID = 1L; @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false)
@Column(name = "id_cultivares") private Integer idCultivares; @Size(max = 10)
private String datac; @Size(max = 100)
@Column(name = "observacao") private String observacao; @Column(name = "pestimada") private Integer pestimada; @Column(name = "eestimada") private Integer eestimada; @Size(max = 1)
@Column(name = "situacao") private String situacao; @Size(max = 1)
@Column(name = "flag_sincronizacao") private String flagSincronizacao;
@JoinColumn(name = "id_variedadesgleba", referencedColumnName = "id_variedadesgleba") @ManyToOne(optional = false)
private Variedadesgleba idVariedadesgleba;
@JoinColumn(name = "id_glebavinculada", referencedColumnName = "id_glebavinculada") @ManyToOne(optional = false)
private Glebasvinculadas idGlebavinculada;
@JoinColumn(name = "id_estadio", referencedColumnName = "id_estadio") @ManyToOne
private Estadio idEstadio;
@OneToMany(mappedBy = "idCultivares")
private Collection<Pontoamostra> pontoamostraCollection;
public Cultivares() { }
public Cultivares(Integer idCultivares) { this.idCultivares = idCultivares; }
public Integer getIdCultivares() { return idCultivares;
}
public void setIdCultivares(Integer idCultivares) { this.idCultivares = idCultivares;
public String getDatac() { return datac;
}
public void setDatac(String datac) { this.datac = datac;
}
public String getObservacao() { return observacao;
}
public void setObservacao(String observacao) { this.observacao = observacao;
}
public Integer getPestimada() { return pestimada;
}
public void setPestimada(Integer pestimada) { this.pestimada = pestimada;
}
public Integer getEestimada() { return eestimada;
}
public void setEestimada(Integer eestimada) { this.eestimada = eestimada;
}
public String getSituacao() { return situacao;
}
public void setSituacao(String situacao) { this.situacao = situacao;
public String getFlagSincronizacao() { return flagSincronizacao;
}
public void setFlagSincronizacao(String flagSincronizacao) { this.flagSincronizacao = flagSincronizacao;
}
public Variedadesgleba getIdVariedadesgleba() { return idVariedadesgleba;
}
public void setIdVariedadesgleba(Variedadesgleba idVariedadesgleba) { this.idVariedadesgleba = idVariedadesgleba;
}
public Glebasvinculadas getIdGlebavinculada() { return idGlebavinculada;
}
public void setIdGlebavinculada(Glebasvinculadas idGlebavinculada) { this.idGlebavinculada = idGlebavinculada;
}
public Estadio getIdEstadio() { return idEstadio;
}
public void setIdEstadio(Estadio idEstadio) { this.idEstadio = idEstadio;
}
@XmlTransient
public Collection<Pontoamostra> getPontoamostraCollection() { return pontoamostraCollection;
}
public void setPontoamostraCollection(Collection<Pontoamostra> pontoamostraCollection) { this.pontoamostraCollection = pontoamostraCollection;
}
@Override
public int hashCode() { int hash = 0;
hash += (idCultivares != null ? idCultivares.hashCode() : 0); return hash;
}
@Override
public boolean equals(Object object) { if (!(object instanceof Cultivares)) { return false;
}
Cultivares other = (Cultivares) object;
if ((this.idCultivares == null && other.idCultivares != null) || (this.idCultivares != null && !this.idCultivares.equals(other.idCultivares))) { return false; } return true; } @Override
public String toString() {
return "entidades.Cultivares[ idCultivares=" + idCultivares + " ]"; } }
Classe Cultura.java
package entidades; import java.io.Serializable; import java.util.Collection; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue;import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @Entity @Table(name = "cultura") @XmlRootElement @NamedQueries({
@NamedQuery(name = "Cultura.findAll", query = "SELECT c FROM Cultura c"),
@NamedQuery(name = "Cultura.findByIdCultura", query = "SELECT c FROM Cultura c WHERE c.idCultura = :idCultura"), @NamedQuery(name = "Cultura.findByNome", query = "SELECT c FROM Cultura c WHERE c.nome = :nome"), @NamedQuery(name = "Cultura.findByPoprec", query = "SELECT c FROM Cultura c WHERE c.poprec = :poprec"), @NamedQuery(name = "Cultura.findByEpocaplant", query = "SELECT c FROM Cultura c WHERE c.epocaplant = :epocaplant"), @NamedQuery(name = "Cultura.findByOrdimp", query = "SELECT c FROM Cultura c WHERE c.ordimp = :ordimp"),
@NamedQuery(name = "Cultura.findByFlagSincronizacao", query = "SELECT c FROM Cultura c WHERE c.flagSincronizacao = :flagSincronizacao")})
public class Cultura implements Serializable { private static final long serialVersionUID = 1L; @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false)
@Column(name = "id_cultura") private Integer idCultura; @Size(max = 40)
@Column(name = "nome") private String nome;
@Column(name = "poprec") private Integer poprec; @Size(max = 1)
@Column(name = "epocaplant") private String epocaplant; @Column(name = "ordimp") private Integer ordimp; @Size(max = 1)
@Column(name = "flag_sincronizacao") private String flagSincronizacao;
@OneToMany(mappedBy = "idCultura")
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idCultura") private Collection<Safra> safraCollection;
public Cultura() { }
public Cultura(Integer idCultura) { this.idCultura = idCultura; }
public Integer getIdCultura() { return idCultura;
}
public void setIdCultura(Integer idCultura) { this.idCultura = idCultura;
}
public String getNome() { return nome;
}
public void setNome(String nome) { this.nome = nome;
}
public Integer getPoprec() { return poprec;
}
public void setPoprec(Integer poprec) { this.poprec = poprec;
}
public String getEpocaplant() { return epocaplant;
}
public void setEpocaplant(String epocaplant) { this.epocaplant = epocaplant;
}
public Integer getOrdimp() { return ordimp;
}
public void setOrdimp(Integer ordimp) { this.ordimp = ordimp;
}
public String getFlagSincronizacao() { return flagSincronizacao;
}
public void setFlagSincronizacao(String flagSincronizacao) { this.flagSincronizacao = flagSincronizacao;
}
@XmlTransient
public Collection<Variedades> getVariedadesCollection() { return variedadesCollection;
}
public void setVariedadesCollection(Collection<Variedades> variedadesCollection) { this.variedadesCollection = variedadesCollection;
}
@XmlTransient
public Collection<Safra> getSafraCollection() { return safraCollection;
}
public void setSafraCollection(Collection<Safra> safraCollection) { this.safraCollection = safraCollection;
}
@Override
public int hashCode() { int hash = 0;
return hash; }
@Override
public boolean equals(Object object) { if (!(object instanceof Cultura)) { return false;
}
Cultura other = (Cultura) object;
if ((this.idCultura == null && other.idCultura != null) || (this.idCultura != null && !this.idCultura.equals(other.idCultura))) { return false; } return true; } @Override
public String toString() {
return "entidades.Cultura[ idCultura=" + idCultura + " ]"; } }
Classe Especiem.java
package entidades; import java.io.Serializable; import java.util.Collection; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.Size;import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @Entity @Table(name = "especiem") @XmlRootElement @NamedQueries({
@NamedQuery(name = "Especiem.findAll", query = "SELECT e FROM Especiem e"),
@NamedQuery(name = "Especiem.findByIdEspeciem", query = "SELECT e FROM Especiem e WHERE e.idEspeciem = :idEspeciem"), @NamedQuery(name = "Especiem.findByDescricao", query = "SELECT e FROM Especiem e WHERE e.descricao = :descricao"), @NamedQuery(name = "Especiem.findByTipo", query = "SELECT e FROM Especiem e WHERE e.tipo = :tipo"),
@NamedQuery(name = "Especiem.findByFlagSincronizacao", query = "SELECT e FROM Especiem e WHERE e.flagSincronizacao = :flagSincronizacao")})
public class Especiem implements Serializable { private static final long serialVersionUID = 1L; @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false)
@Column(name = "id_especiem") private Integer idEspeciem; @Size(max = 40)
@Column(name = "descricao") private String descricao; @Size(max = 1)
@Column(name = "tipo") private String tipo; @Size(max = 1)
@Column(name = "flag_sincronizacao") private String flagSincronizacao;
@OneToMany(mappedBy = "idEspeciem")
private Collection<Monitoramento> monitoramentoCollection;
public Especiem() { }
public Especiem(Integer idEspeciem) { this.idEspeciem = idEspeciem; }
public Integer getIdEspeciem() { return idEspeciem;
public void setIdEspeciem(Integer idEspeciem) { this.idEspeciem = idEspeciem;
}
public String getDescricao() { return descricao;
}
public void setDescricao(String descricao) { this.descricao = descricao;
}
public String getTipo() { return tipo;
}
public void setTipo(String tipo) { this.tipo = tipo;
}
public String getFlagSincronizacao() { return flagSincronizacao;
}
public void setFlagSincronizacao(String flagSincronizacao) { this.flagSincronizacao = flagSincronizacao;
}
@XmlTransient
public Collection<Monitoramento> getMonitoramentoCollection() { return monitoramentoCollection;
}
public void setMonitoramentoCollection(Collection<Monitoramento> monitoramentoCollection) {
this.monitoramentoCollection = monitoramentoCollection; }
@Override
int hash = 0;
hash += (idEspeciem != null ? idEspeciem.hashCode() : 0); return hash;
}
@Override
public boolean equals(Object object) { if (!(object instanceof Especiem)) { return false;
}
Especiem other = (Especiem) object;
if ((this.idEspeciem == null && other.idEspeciem != null) || (this.idEspeciem != null && !this.idEspeciem.equals(other.idEspeciem))) { return false; } return true; } @Override
public String toString() {
return "entidades.Especiem[ idEspeciem=" + idEspeciem + " ]"; } }
Classe Estadio.java
package entidades; import java.io.Serializable; import java.util.Collection; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany;import javax.persistence.Table; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; @Entity @Table(name = "estadio") @XmlRootElement @NamedQueries({
@NamedQuery(name = "Estadio.findAll", query = "SELECT e FROM Estadio e"),
@NamedQuery(name = "Estadio.findByIdEstadio", query = "SELECT e FROM Estadio e WHERE e.idEstadio = :idEstadio"),
@NamedQuery(name = "Estadio.findByNomeEsstadio", query = "SELECT e FROM Estadio e WHERE e.nomeEsstadio = :nomeEsstadio"), @NamedQuery(name = "Estadio.findByDescricao", query = "SELECT e FROM Estadio e WHERE e.descricao = :descricao"),
@NamedQuery(name = "Estadio.findByFlagSincronizacao", query = "SELECT e FROM Estadio e WHERE e.flagSincronizacao = :flagSincronizacao")})
public class Estadio implements Serializable { private static final long serialVersionUID = 1L; @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false)
@Column(name = "id_estadio") private Integer idEstadio; @Size(max = 40)
@Column(name = "nome_esstadio") private String nomeEsstadio;
@Size(max = 100)
@Column(name = "descricao") private String descricao; @Size(max = 1)
@Column(name = "flag_sincronizacao") private String flagSincronizacao;
@OneToMany(mappedBy = "idEstadio")
private Collection<Monitoramento> monitoramentoCollection; @OneToMany(mappedBy = "idEstadio")
private Collection<Cultivares> cultivaresCollection; @OneToMany(mappedBy = "idEstadio")
private Collection<Eventosc> eventoscCollection;
public Estadio() { }
public Estadio(Integer idEstadio) { this.idEstadio = idEstadio;
}
public Integer getIdEstadio() { return idEstadio;
}
public void setIdEstadio(Integer idEstadio) { this.idEstadio = idEstadio;
}
public String getNomeEsstadio() { return nomeEsstadio;
}
public void setNomeEsstadio(String nomeEsstadio) { this.nomeEsstadio = nomeEsstadio;
}
public String getDescricao() { return descricao;
}
public void setDescricao(String descricao) { this.descricao = descricao;
}
public String getFlagSincronizacao() { return flagSincronizacao;
}
public void setFlagSincronizacao(String flagSincronizacao) { this.flagSincronizacao = flagSincronizacao;
}
@XmlTransient
public Collection<Monitoramento> getMonitoramentoCollection() { return monitoramentoCollection;
public void setMonitoramentoCollection(Collection<Monitoramento> monitoramentoCollection) {
this.monitoramentoCollection = monitoramentoCollection; }
@XmlTransient
public Collection<Cultivares> getCultivaresCollection() { return cultivaresCollection;
}
public void setCultivaresCollection(Collection<Cultivares> cultivaresCollection) { this.cultivaresCollection = cultivaresCollection;
}
@XmlTransient
public Collection<Eventosc> getEventoscCollection() { return eventoscCollection;
}
public void setEventoscCollection(Collection<Eventosc> eventoscCollection) { this.eventoscCollection = eventoscCollection;
}
@Override
public int hashCode() { int hash = 0;
hash += (idEstadio != null ? idEstadio.hashCode() : 0); return hash;
}
@Override
public boolean equals(Object object) { if (!(object instanceof Estadio)) { return false;
}
Estadio other = (Estadio) object;
if ((this.idEstadio == null && other.idEstadio != null) || (this.idEstadio != null && !this.idEstadio.equals(other.idEstadio))) {
return false; }
return true; }
@Override
public String toString() {
return "entidades.Estadio[ idEstadio=" + idEstadio + " ]";