Estou precisando de um metodo que limite o numero de inserção de uma determinada tela.
Exemplo: Preciso que o usuario não pode iserir mais de 5 dependentes, o maximo de dependetes cadastradados será de 5
No método que adiciona o dependente você faz uma validação, se já tem 5 dependentes, lança uma exceção.
Consegue me mandar um exemplo por favor ?
Posta o seu código de inserção atual.
public void novo() {
objetoAtual = instanciaNovoObjeto();
if (objetoAtual instanceof ProVO) {
((ProVO) objetoAtual).setDsSituacao(SITUACAO_DO_REGISTRO.EM_EDICAO);
((ProVO) objetoAtual).setStatusDoRegistro(StatusDoRegistro.INATIVO);
}
if (objetoAtual instanceof ProBaseVO) {
objetoAtual.setIpMovimentacao(Executions.getCurrent().getRemoteAddr());
objetoAtual.setTpOperacao("A");
objetoAtual.setTsMovimentacao(new Date());
}
configuraValoresPadroesParaObjeto();
if (objetoAtual.getId() != null) {
setObjetoAtual(objetoAtual);
}
try {
ajustarLayoutParaManutencao();
getHelperView().atualizaImagensDoVoParaTela(objetoAtual, getWindowAtual());
getMessagesHelper().limparMensagensCamposEspecificos();
} catch (Exception e) {
e.printStackTrace();
getMessagesHelper().emiteMensagemErro(e.getMessage());
}
getBinder().loadAll();
}
Você só tem uma variável para referenciar o objeto atual?
Deveria ter uma lista de objetos criados, aí verificar se o tamanho dessa lista é menor que 5.
Esse método é o padrão do framework.
Não estou falando do método, estou falando do atributo objetoAtual
.
Tudo bem se seu framework exige ele, mas você também deveria ter uma coleção com os objetos já cadastrados.
Como você faz para recuperar seus objetos salvos?
Seria isso ?
Não sei, isso aí é uma imagem recortada onde não dá pra analisar muita coisa.
Mas acredito que não seja isso aí não.
No método novo
você adiciona objetos do tipo ProVO
ou ProBaseVO
, nessa sua imagem não aparecem esses tipos de dado.
Qual é o método que retorna a lista de ProVO
ou ProBaseVO
cadastrados?
Estava tentando fazer dessa forma
public void novoDetalhe(DetBox detBox) {
for (int i = 1; i < 5; i++) {
super.novoDetalhe(detBox);
}
throw new ViolacaoDeRegraEx("NUMERO MAXIMO DE DEPENDENTES JÁ CADASTRADOS");
}
Deu errado porque quando clico no botão novo e ele percorre o for ele ja cria os 5 registros de uma vez.
e o meu objeto é ele ir criando um de cada vez, conforme o usuario vai clicando em novo e quando estiver com 5 registros ele roda a ViolacaoDeRegra
O que é que o ProVO
e ProBaseVO
tem a ver com esse DetBox
?
Esse método cadastra 4 DetBox
e em seguida sempre lança exceção.
Sua dúvida inicial é como limitar em 5 o cadastro de ProVO
e ProBaseVO
.
Já pedi para você mostrar como é o código que você tem atualmente para carregar esses objetos ProVO
e ProBaseVO
, mas você sempre posta algo diferente.
Por isso você precisa ver quantos objetos já estão cadastrados.
se (quantidadeDeObjetosCadastrados < 5) {
// Grava o objeto
} senão {
// Lança exceção
}
Se você não mostrar como você faz para trazer os ProVO
e ProBaseVO
já cadastrados, não vai ser possível ajudar.
@MappedSuperclass
public class ProVO extends ProBaseVO implements Comparable {
private static final long serialVersionUID = 2872638127758612957L;
private String dsSituacao = null;
private byte[] imagem;
public interface SITUACAO_DO_REGISTRO {
public String EM_EDICAO = "EM_EDICAO";
public String CONCLUIDO = "CONCLUIDO";
public String APROVADO = "APROVADO";
}
@Column(name="CD_LOGIN_MOVIMENTACAO",length = 255, nullable = false)
public String getCdLoginMovimentacao() {
return super.getCdLoginMovimentacao();
}
@Column(name="IP_MOVIMENTACAO",length = 40, nullable = false)
public String getIpMovimentacao() {
return super.getIpMovimentacao();
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name="TS_MOVIMENTACAO", nullable = false)
public Date getTsMovimentacao() {
return super.getTsMovimentacao();
}
@Column(name="TP_OPERACAO", length = 1, nullable = false)
public String getTpOperacao() {
return super.getTpOperacao();
}
@Column(name="DS_SITUACAO",length = 50, nullable = false)
public String getDsSituacao() {
return dsSituacao;
}
public void setDsSituacao(String dsSituacao) {
this.dsSituacao = dsSituacao;
}
@Transient
public byte[] getImagem() {
return imagem;
}
public void setImagem(byte[] imagem) {
this.imagem = imagem;
}
@Override
public boolean equals(Object obj) {
if(this == obj)
return true;
if (obj instanceof ProVO) {
if (this.getId() != null && obj != null) {
return this.getId().equals(((ProVO) obj).getId());
}
}
return false;
}
@Override
public int hashCode() {
if (getId() != null)
return getId().intValue();
return super.hashCode();
}
public int compareTo(ProVO o) {
if (getId() != null && o != null && o.getId() != null)
return getId().compareTo(o.getId());
return -1;
}
}
@MappedSuperclass
public class ProBaseVO implements Serializable {
private static final long serialVersionUID = -6878025554640409904L;
private Long id;
private String cdLoginMovimentacao;
private String ipMovimentacao;
private Date tsMovimentacao;
private String tpOperacao;
private int nrVersao;
private String titulo;
private StatusDoRegistro statusDoRegistro;
private Map<String, Object> atributosDeContexto = new HashMap<>();
private String nomeUsuarioMovimentacao;
@Transient
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Transient
public String getCdLoginMovimentacao() {
return cdLoginMovimentacao;
}
public void setCdLoginMovimentacao(String cdLoginMovimentacao) {
this.cdLoginMovimentacao = cdLoginMovimentacao;
}
@Transient
public String getIpMovimentacao() {
return ipMovimentacao;
}
public void setIpMovimentacao(String ipMovimentacao) {
this.ipMovimentacao = ipMovimentacao;
}
@Transient
public Date getTsMovimentacao() {
return tsMovimentacao;
}
public void setTsMovimentacao(Date tsMovimentacao) {
this.tsMovimentacao = tsMovimentacao;
}
@Transient
public String getTpOperacao() {
return tpOperacao;
}
public void setTpOperacao(String tpOperacao) {
this.tpOperacao = tpOperacao;
}
@Version
@Column(name = "NR_VERSAO")
public int getNrVersao() {
return nrVersao;
}
public void setNrVersao(int nrVersao) {
this.nrVersao = nrVersao;
}
@Transient
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
@Enumerated(EnumType.ORDINAL)
@Column(name = "ST_REGISTRO")
public StatusDoRegistro getStatusDoRegistro() {
return statusDoRegistro;
}
public void setStatusDoRegistro(StatusDoRegistro statusDoRegistro) {
this.statusDoRegistro = statusDoRegistro;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj.getClass().equals(this.getClass())) {
if (this.getId() != null && ((ProBaseVO) obj) != null) {
return this.getId().equals(((ProBaseVO) obj).getId());
}
}
return super.equals(obj);
}
@Override
public int hashCode() {
if (getId() != null)
return getId().intValue();
return super.hashCode();
}
@Transient
public void addAtributo(String key, Object value) {
this.atributosDeContexto.put(key, value);
}
@Transient
public Object getAtributo(String key) {
return this.atributosDeContexto.get(key);
}
@Transient
public Map<String, Object> getAtributosDeContexto() {
return Collections.unmodifiableMap(this.atributosDeContexto);
}
@Transient
public String getNomeUsuarioMovimentacao() {
return nomeUsuarioMovimentacao;
}
public void setNomeUsuarioMovimentacao(String nomeUsuarioMovimentacao) {
this.nomeUsuarioMovimentacao = nomeUsuarioMovimentacao;
}
@Transient
public void removerAtributo(String key) {
this.atributosDeContexto.remove(key);
}
}
Você postou o fonte das classes ProVO
e ProBaseVO
, ok.
Mas cadê o código que você utiliza atualmente para trazer, consultar, carregar ou sei lá como você chama o ato de buscar os registros no banco?
Seria minha classe controle ?
public class QuestionarioCtr extends CensoBaseCtr {
private static final long serialVersionUID = 1L;
private ListModelList<SexoEnum> sexoList;
private ListModelList<TipoLogradouroEnum> tipoLogradouroList;
private ListModelList<UFEnum> ufList;
private ListModelList<CondicaoConjugeEnum> condicaoConjugeList;
@Override
public void doAfterCompose(Component tela) throws Exception {
super.doAfterCompose(tela);
sexoList = new ListModelList<SexoEnum>(SexoEnum.values());
tipoLogradouroList = new ListModelList<TipoLogradouroEnum>(TipoLogradouroEnum.values());
ufList = new ListModelList<UFEnum>(UFEnum.values());
condicaoConjugeList = new ListModelList<CondicaoConjugeEnum>(CondicaoConjugeEnum.values());
pesquisar();
}
@Override
public void antesPesquisar(ProBaseVO pArg) throws Exception {
super.antesPesquisar(pArg);
ProtocoloVO protocoloVO = (ProtocoloVO) pArg;
if (isPapelOperador()) {
if (protocoloVO.getCpf() != null && !protocoloVO.getCpf().isEmpty() && protocoloVO.getCpf().length() < 12) {
String cpf = UtilCenso.formataCPF(protocoloVO.getCpf());
protocoloVO.setCpf(cpf);
}
} else if (isPapelOperadorOrgao()) {
protocoloVO.setCnpjOrgao(retornaCnpj());
} else {
String login = UtilCenso.formataCPF(getUsuarioVO().getLogin());
protocoloVO.setCpf(login);
}
}
private String retornaCnpj() throws Exception {
IUnidade unidade = (IUnidade) getTela().getAttribute(Constantes.UNIDADE_AUTENTICADA, Component.SESSION_SCOPE);
SscUnidadesCnpjVO sscUnidadesCnpjVO = new SscUnidadesCnpjVO();
sscUnidadesCnpjVO.setCodigoUnidade(unidade.getCodigo());
Set<SscUnidadesCnpjVO> listarBaseadoNoExemplo = repositorio().listarBaseadoNoExemplo(sscUnidadesCnpjVO, null, 0, 1, "cnpjOrgao");
if (listarBaseadoNoExemplo != null && listarBaseadoNoExemplo.size() > 0) {
SscUnidadesCnpjVO sscUnidadesCnpj = listarBaseadoNoExemplo.iterator().next();
return sscUnidadesCnpj.getCnpjOrgao();
} else {
throw new ViolacaoDeRegraEx("NÃO TEM REGISTRO PARA ESSE ORGÃO");
}
}
private boolean isPapelOperadorOrgao() {
return isTemPapel(ConstantesCenso.PAPEIS_SSC.OPERADORORGAO);
}
private boolean isPapelOperador() {
return isTemPapel(ConstantesCenso.PAPEIS_SSC.OPERADOR);
}
private boolean isTemPapel(String papel) {
UsuarioVO usuario = (UsuarioVO) getTela().getAttribute(Constantes.USUARIO_AUTENTICADO, Component.SESSION_SCOPE);
IUnidade unidade = (IUnidade) getTela().getAttribute(Constantes.UNIDADE_AUTENTICADA, Component.SESSION_SCOPE);
List<IPapel> papeis = usuario.getPapeis(unidade);
Iterator<IPapel> it = papeis.iterator();
while (it.hasNext()) {
IPapel papelSSC = it.next();
if (papelSSC.getCodigoPapel().equalsIgnoreCase(papel)) {
return true;
}
}
return false;
}
@Override
protected void antesSalvar(ProBaseVO objetoAtual) {
ProtocoloVO protocoloVO = (ProtocoloVO) objetoAtual;
super.antesSalvar(objetoAtual);
if (this.isPapelOperador() == true || isPapelOperadorOrgao() == true) {
String cpf = UtilCenso.formataCPF(protocoloVO.getCpf());
protocoloVO.setCpf(cpf);
} else {
protocoloVO.setCpf(UtilCenso.formataCPF(getUsuarioVO().getLogin()));
}
}
@Override
public void setObjetoAtual(Object objetoAtual) {
ProtocoloVO protocoloVO = (ProtocoloVO) objetoAtual;
EtapaVO etapaVO = protocoloVO.getEtapaVO();
TipoProtocoloVO tipoProtocoloVO = etapaVO.getTipoProtocoloVO();
if (ObjetoHelper.isCampoNaoPreenchido(etapaVO, "id")) {
throw new ViolacaoDeRegraEx("PERÍODO DE REALIZAÇÃO DO CENSO PREVIDENCIÁRIO NÃO INICIADO.");
}
if (this.isPapelOperador() == false && etapaVO.getId() == 1 && tipoProtocoloVO.getDescProtocolo().equals(ConstantesCenso.TIPOS_PROTOCOLO.PENSIONISTA)) {
if (!DataHelper.isDataInicioNulaAnteriorAtual(etapaVO.getDtInicio(), new Date())) {
throw new ViolacaoDeRegraEx("PERÍODO DE REALIZAÇÃO DO CENSO PREVIDENCIÁRIO NÃO INICIADO.");
}
}
super.setObjetoAtual(objetoAtual);
}
@Override
protected void antesAtualizaObjetoAtual(Object objetoAtual) {
super.antesAtualizaObjetoAtual(objetoAtual);
ProtocoloVO protocoloVO = (ProtocoloVO) objetoAtual;
EtapaVO etapaVO = protocoloVO.getEtapaVO();
TipoProtocoloVO tipoProtocoloVO = etapaVO.getTipoProtocoloVO();
controlaExibicaoMensagemCensoRealizado(protocoloVO);
controlaExibicaoBotaoImprimir(protocoloVO);
if (protocoloVO.getDadosPessoaisVO().getDadosFuncionaisVO() == null && tipoProtocoloVO.getDescProtocolo().equals(ConstantesCenso.TIPOS_PROTOCOLO.ATIVO)) {
DadosFuncionaisVO dadosFuncionaisVO = new DadosFuncionaisVO();
protocoloVO.getDadosPessoaisVO().setDadosFuncionaisVO(dadosFuncionaisVO);
}
}
@Override
protected void aposSalvar(ProBaseVO objetoAtual) {
ProtocoloVO protocoloVO = (ProtocoloVO) objetoAtual;
EtapaVO etapaVO = protocoloVO.getEtapaVO();
TipoProtocoloVO tipoProtocoloVO = etapaVO.getTipoProtocoloVO();
String dStr = DataHelper.converteData(DataHelper.retornaDataHoraAtual(), "dd/MM/yyyy");
String mensagem1 = "Confirmação de dados corretos: Censo realizado com sucesso: " + dStr + ".\n" + "Nro Protocolo: " + protocoloVO.getNumProtocolo()
+ ".\nPara saber mais sobre a Previdência acesse: \nhttp://www.fazenda.mg.gov.br/coprev/coprev/conheca-o-coprev/ ";
String mensagem2 = "Censo Cadastral Previdenciário de 2023 realizado com sucesso: " + dStr + ".\n"
+ "Entre em contato com 155, opção 3 (chamadas gratuitas originadas de qualquer região de Minas Gerais), ou (31)3069-6601, opção 3 (chamadas tarifadas originadas de localidades fora do Estado) ou procure as Unidades de Atendimento do Ipsemg e atualize seus dados.\nNro Protocolo: "
+ protocoloVO.getNumProtocolo() + ".\n" + "Para saber mais sobre a Previdência acesse: \nhttp://www.fazenda.mg.gov.br/coprev/coprev/conheca-o-coprev/";
/*
* if (protocoloVO.getDadosCorretos().equals(SimNaoEnum.S)) {
*
* if (!protocoloVO.getDescProtocolo().equals(ConstantesCenso.TIPOS_PROTOCOLO.PENSIONISTA) || (protocoloVO.getDescProtocolo().equals(ConstantesCenso.TIPOS_PROTOCOLO.PENSIONISTA) && protocoloVO.getEnderecoCorreto().equals(SimNaoEnum.S))) {
* Messagebox.show(mensagem1, "Informação", null, null, Messagebox.INFORMATION, null, null, null); } else { Messagebox.show(mensagem2, "Informação", null, null, Messagebox.INFORMATION, null, null, null); }
*
* } else { Messagebox.show(mensagem2, "Informação", null, null, Messagebox.INFORMATION, null, null, null); }
*/
if (protocoloVO.getDadosCorretos().equals(SimNaoEnum.S)) {
if (tipoProtocoloVO.getDescProtocolo().equals(ConstantesCenso.TIPOS_PROTOCOLO.PENSIONISTA)) {
if (protocoloVO.getEnderecoCorreto().equals(SimNaoEnum.S)) {
Messagebox.show(mensagem1, "Informação", null, null, Messagebox.INFORMATION, null, null, null);
} else {
Messagebox.show(mensagem2, "Informação", null, null, Messagebox.INFORMATION, null, null, null);
}
} else {
Messagebox.show(mensagem1, "Informação", null, null, Messagebox.INFORMATION, null, null, null);
}
} else {
Messagebox.show(mensagem2, "Informação", null, null, Messagebox.INFORMATION, null, null, null);
}
}
private void controlaExibicaoMensagemCensoRealizado(ProtocoloVO protocoloVO) {
if (ObjetoHelper.isCampoPreenchido(protocoloVO, "numProtocolo")) {
Messagebox.show("Censo realizado com sucesso !", "Informação", null, null, Messagebox.INFORMATION, null, null, null);
}
}
public ListModelList<SexoEnum> getSexoList() {
return sexoList;
}
public ListModelList<TipoLogradouroEnum> getTipoLogradouroList() {
return tipoLogradouroList;
}
public ListModelList<UFEnum> getUfList() {
return ufList;
}
public ListModelList<CondicaoConjugeEnum> getCondicaoConjugeList() {
return condicaoConjugeList;
}
public List<SexoEnum> filtraSexo(Bandboxbind bandbox) {
return this.getSexoList();
}
public List<TipoLogradouroEnum> filtraTipoLogradouro(Bandboxbind bandbox) {
return this.getTipoLogradouroList();
}
public List<UFEnum> filtraUF(Bandboxbind bandbox) {
return this.getUfList();
}
public List<CondicaoConjugeEnum> filtraCondicaoConjuge(Bandboxbind bandbox) {
return this.getCondicaoConjugeList();
}
public void gerarpdf() throws Exception {
byte[] objectReturn = null;
PdfWriter pdfWriter = null;
ProtocoloVO protocoloVO = (ProtocoloVO) objetoAtual;
EtapaVO etapaVO = protocoloVO.getEtapaVO();
TipoProtocoloVO tipoProtocoloVO = etapaVO.getTipoProtocoloVO();
String corpoPdf = StringUtils.EMPTY;
String texto = "<html><head><meta charset=\"UTF-8\" />" + " <style type=\"text/css\">" + " body {" + " font-family: arial;" + " font-size: 10px"
+ " position: top;}" + " td.cabecalhoDoc {" + " font-weight: bold; " + " font-size: 30px; " + " text-align: center; "
+ " position: relative;}" + " td.dados {" + " font-size: 18px; " + " text-align: left; " + " position: relative;}"
+ " td.confirmacao {" + " font-size: 14px; " + " color: #808080;" + " text-align: center; " + " position: relative;}"
+ " td.rodape {" + " font-size: 14px; " + " color: #808080;" + " text-align: center; " + " position: relative;}"
+ " </style>" + " </head>" + " <body>" + " <table width=\"1100\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">" + " <tr>"
+ " <td align=\"right\" width=\"700\">" + " <table>" + " <tr>" + " <td class=\"cabecalhoDoc\">"
+ " <p><font color=\"#04A9C4\">Protocolo: </font>" + protocoloVO.getNumProtocolo() + "</p>" + " </td>" + " </tr>"
+ " <tr>" + " <td class=\"dados\">" + " <p><font color=\"#04A9C4\">CPF: </font>" + protocoloVO.getCpf() + "</p>"
+ " <p><font color=\"#04A9C4\">Vinculo: </font>" + tipoProtocoloVO.getDescProtocolo() + "</p>" + " <p><font color=\"#04A9C4\">Nome: </font>"
+ protocoloVO.getNome() + "</p>" + " </td>" + " </tr>" + " <tr>" + " <td class=\"confirmacao\">"
+ " <p>Censo Cadastral Previdenciário de 2023 realizado com sucesso.</p>" + " </td>" + " </tr>" + " <tr>"
+ " <td class=\"rodape\">" + " <p>Para saber mais sobre a Previdência acesse: ipsemg.mg.gov.br.</p>" + " </td>"
+ " </tr>" + " </table>" + " </td>" + " </tr>" + " </table>" + " </body>" + " </html>";
String texto2 = "<html><head><meta charset=\"UTF-8\" />" + " <style type=\"text/css\">" + " body {" + " font-family: arial;" + " font-size: 10px"
+ " position: top;}" + " td.cabecalhoDoc {" + " font-weight: bold; " + " font-size: 30px; " + " text-align: center; "
+ " position: relative;}" + " td.dados {" + " font-size: 18px; " + " text-align: left; " + " position: relative;}"
+ " td.confirmacao {" + " font-size: 14px; " + " color: #808080;" + " text-align: center; " + " position: relative;}"
+ " td.rodape {" + " font-size: 14px; " + " color: #808080;" + " text-align: center; " + " position: relative;}"
+ " </style>" + " </head>" + " <body>" + " <table width=\"1100\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">" + " <tr>"
+ " <td align=\"right\" width=\"700\">" + " <table>" + " <tr>" + " <td class=\"cabecalhoDoc\">"
+ " <p><font color=\"#04A9C4\">Protocolo: </font>" + protocoloVO.getNumProtocolo() + "</p>" + " </td>" + " </tr>"
+ " <tr>" + " <td class=\"dados\">" + " <p><font color=\"#04A9C4\">CPF: </font>" + protocoloVO.getCpf() + "</p>"
+ " <p><font color=\"#04A9C4\">Vinculo: </font>" + tipoProtocoloVO.getDescProtocolo() + "</p>" + " <p><font color=\"#04A9C4\">Nome: </font>"
+ protocoloVO.getNome() + "</p>" + " </td>" + " </tr>" + " <tr>" + " <td class=\"confirmacao\">"
+ " <p>Censo Cadastral Previdenciário de 2023 realizado com sucessso. Entre em contato com 155, opção 3 (chamadas gratuitas originadas de qualquer região de Minas Gerais),ou (31)3069-6601, opção 3 (chamadas tarifadas originadas de localidades fora do Estado) ou procure as Unidades de Atendimento do IPSEMG e atualize seus dados.</p>"
+ " </td>" + " </tr>" + " <tr>" + " <td class=\"rodape\">"
+ " <p>Para saber mais sobre a Previdência acesse: ipsemg.mg.gov.br.</p>" + " </td>" + " </tr>" + " </table>"
+ " </td>" + " </tr>" + " </table>" + " </body>" + " </html>";
ByteArrayOutputStream out = new ByteArrayOutputStream();
Document document = new Document();
pdfWriter = PdfWriter.getInstance(document, out);
document.setPageSize(PageSize.A4);
document.setMargins(36, 36, 80, 70);
document.open();
if (protocoloVO.getDadosCorretos().equals(SimNaoEnum.S)) {
if (tipoProtocoloVO.getDescProtocolo().equals(ConstantesCenso.TIPOS_PROTOCOLO.PENSIONISTA)) {
if (protocoloVO.getEnderecoCorreto().equals(SimNaoEnum.S)) {
corpoPdf = texto;
} else {
corpoPdf = texto2;
}
} else {
corpoPdf = texto;
}
} else {
corpoPdf = texto2;
}
InputStream stream = new ByteArrayInputStream(corpoPdf.getBytes());
XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
worker.parseXHtml(pdfWriter, document, stream);
pdfWriter.close();
objectReturn = out.toByteArray();
try {
objectReturn = estampaImagemIpsemg(objectReturn, UtilCenso.retornaImagemIpsemg());
objectReturn = estampaImagemCoprev(objectReturn, UtilCenso.retornaImagemCoprev());
} catch (IOException ioException) {
ioException.printStackTrace();
}
super.download(objectReturn, "pdf", "Protocolo.pdf");
}
private byte[] estampaImagemIpsemg(byte[] objectReturn, Image image) throws IOException, DocumentException {
return estampaImagem(objectReturn, image, 108, 0, 0, 35, 30, 768);
}
private byte[] estampaImagemCoprev(byte[] objectReturn, Image image) throws IOException, DocumentException {
return estampaImagem(objectReturn, image, 90, 0, 0, 50, 492, 588);
}
private byte[] estampaImagem(byte[] objectReturn, Image image, int imageWidth, int a, int b, int imageHeight, int alinhamentoHorizontal, int alinhamentoVertical) throws IOException, DocumentException {
ByteArrayOutputStream outPage = new ByteArrayOutputStream();
PdfReader reader = new PdfReader(objectReturn);
int n = reader.getNumberOfPages();
PdfStamper stamper = new PdfStamper(reader, outPage);
// properties
PdfContentByte over;
for (int i = 1; i <= n; i++) {
over = stamper.getUnderContent(i);
over.saveState();
over.addImage(image, imageWidth, a, b, imageHeight, alinhamentoHorizontal, alinhamentoVertical);
over.restoreState();
}
stamper.close();
reader.close();
return outPage.toByteArray();
}
private void controlaExibicaoBotaoImprimir(ProtocoloVO protocoloVO) {
if (ObjetoHelper.isCampoPreenchido(protocoloVO, "numProtocolo")) {
((QuestionarioViewHelper) getHelperView()).controlaExibicaoBotaoImprimir(getWindowAtual(), true);
} else {
((QuestionarioViewHelper) getHelperView()).controlaExibicaoBotaoImprimir(getWindowAtual(), false);
}
}
public void verificaTipoDependente(Event event) {
Listcell listcell = (Listcell) event.getTarget().getParent();
controlaLiberacaoBloqueioCamposConjuge(listcell);
}
private void controlaLiberacaoBloqueioCamposConjuge(Listcell listcell) {
Listitem listitem = (Listitem) listcell.getParent();
int index = listitem.getIndex();
ListboxDet listboxdet = (ListboxDet) listitem.getParent();
ListModel<Object> model = listboxdet.getModel();
Object obj = model.getElementAt(index);
DependenteVO dependenteVO = (DependenteVO) obj;
TipoDependenteVO tipoDependenteVO = dependenteVO.getTipoDependenteVO();
if ((tipoDependenteVO.getDescricao() != null && tipoDependenteVO.getDescricao().equals(ConstantesCenso.TIPOS_DEPENDENTE.CONJUGEOUCOMPANHEIRO))) {
// ALTERANDO EXIBICAO DO TEXTBOXBIND TEMPO NUPCIAS PARA PERMITIR EDICAO
Listcell listcellTipoDependente = (Listcell) listitem.getChildren().get(3);
TextboxBind tipoDependente = (TextboxBind) listcellTipoDependente.getFirstChild();
tipoDependente.setReadonly(false);
// ALTERANDO EXIBICAO DO CONDICAO CONJUJE PARA PERMITIR EDICAO
Listcell cellCondicao = (Listcell) listitem.getChildren().get(4);
Bandboxbind comboCondicao = (Bandboxbind) cellCondicao.getFirstChild();
comboCondicao.setDisabled(false);
} else {
// ALTERANDO EXIBICAO DO TEXTBOXBIND TEMPO NUPCIAS PARA PERMITIR BLOQUEAR EDICAO
Listcell listcellTipoDependente = (Listcell) listitem.getChildren().get(3);
TextboxBind tipoDependente = (TextboxBind) listcellTipoDependente.getFirstChild();
tipoDependente.setReadonly(true);
tipoDependente.setValue(null);
// ALTERANDO EXIBICAO DO CONDICAO CONJUJE PARA PERMITIR BLOQUEAR EDICAO
Listcell cellCondicao = (Listcell) listitem.getChildren().get(4);
Bandboxbind comboCondicao = (Bandboxbind) cellCondicao.getFirstChild();
comboCondicao.setDisabled(true);
}
getBinder().loadComponent(listitem);
}
/**
* NECESSARIO PARA NÃO SALVAR O FORMULARIO QUANDO EXCLUI UM REGISTRO. O PADRAO DO COMPONENTE É AO EXCLUIR SALVAR O FORMULARIO, POREM NESTE PONTO AINDA NÃO PODE SER SALVO POIS O USUARIO AINDA NÃO TERMINOU DE PREENCHER O CENSO. E O SALVAR SOMENTE
* PODE SER REALIZADO AO CLICAR NO BOTÃO SALVAR.
*/
@Override
public boolean excluirDetalheNaLinha(DetBox detalhe) {
return false;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public List<EstadoCivilVO> estadoCivil(Bandboxbind bandboxbind) {
EstadoCivilVO estadoCivil = new EstadoCivilVO();
Set<EstadoCivilVO> estadoscivis = new HashSet<EstadoCivilVO>();
try {
estadoscivis = repositorio().listar(estadoCivil);
} catch (Exception e) {
throw new ViolacaoDeRegraEx("Erro ao carregar lista de estado Civil!" + e.getMessage());
}
List<EstadoCivilVO> estadosCivis = new ArrayList<EstadoCivilVO>();
estadosCivis.addAll(estadoscivis);
Collections.sort(estadosCivis);
return estadosCivis;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public List<TipoDependenteVO> filtraTipoDependente(Bandboxbind bandboxbind) {
TipoDependenteVO tipoDependente = new TipoDependenteVO();
Set<TipoDependenteVO> tipodependentes = new HashSet<TipoDependenteVO>();
try {
tipodependentes = repositorio().listar(tipoDependente);
} catch (Exception e) {
throw new ViolacaoDeRegraEx("Erro ao carregar lista Tipo de dependentes" + e.getMessage());
}
List<TipoDependenteVO> tipoDependentes = new ArrayList<TipoDependenteVO>();
tipoDependentes.addAll(tipodependentes);
Collections.sort(tipoDependentes);
return tipoDependentes;
}
private void controlaDataNascimento(Listcell listcell) {
Listitem listitem = (Listitem) listcell.getParent();
int index = listitem.getIndex();
ListboxDet listboxdet = (ListboxDet) listitem.getParent();
ListModel<Object> model = listboxdet.getModel();
Object obj = model.getElementAt(index);
DependenteVO dependenteVO = (DependenteVO) obj;
TipoDependenteVO tipoDependenteVO = dependenteVO.getTipoDependenteVO();
if (tipoDependenteVO.getDescricao().equals(ConstantesCenso.TIPOS_DEPENDENTE.CONJUGEOUCOMPANHEIRO)) {
Long idade = DataHelper.calculaDiferencaEntreDatas(dependenteVO.getDataNascimento(), new Date(), ChronoUnit.YEARS);
if (idade < 16) {
throw new ViolacaoDeRegraEx("IDADE MINIMA PARA CONJUGE OU COMPANHEIRO É DE 16 ANOS");
}
}
getBinder().loadComponent(listitem);
}
public void verificaData(Event event) {
Listcell listcell = (Listcell) event.getTarget().getParent();
controlaDataNascimento(listcell);
}
}
E essa abaixo é a ClasseVO onde fica os metodos get e set
@Entity
@Table(name = “TB_DEPENDENTES”)
public class DependenteVO extends CensoBaseVO {
private static final long serialVersionUID = 1L;
private DadosPessoaisVO dadosPessoaisVO;
private String nome;
private String cpf;
private Date dataNascimento;
private SexoEnum sexo;
private CondicaoConjugeEnum condicaoConjuge;
private String tempoNupcias;
private TipoDependenteVO tipoDependenteVO;
@Override
@Id
@SequenceGenerator(name = "SQ_DEPENDENTE", sequenceName = "SQ_DEPENDENTE", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SQ_DEPENDENTE")
public Long getId() {
return super.getId();
}
@ManyToOne
@JoinColumn(name = "ID_DADOS_PESSOAIS")
public DadosPessoaisVO getDadosPessoaisVO() {
return dadosPessoaisVO;
}
public void setDadosPessoaisVO(DadosPessoaisVO dadosPessoaisVO) {
this.dadosPessoaisVO = dadosPessoaisVO;
}
@ManyToOne
@JoinColumn(name = "ID_TIPO_DEPENDENTE")
public TipoDependenteVO getTipoDependenteVO() {
return tipoDependenteVO;
}
public void setTipoDependenteVO(TipoDependenteVO tipoDependenteVO) {
this.tipoDependenteVO = tipoDependenteVO;
}
@Column(name = "NOME")
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Column(name = "CPF")
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
@Column(name = "DT_NASCIMENTO")
@Temporal(TemporalType.DATE)
public Date getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(Date dataNascimento) {
this.dataNascimento = dataNascimento;
}
@Column(name = "SEXO")
@Enumerated(EnumType.STRING)
public SexoEnum getSexo() {
return sexo;
}
public void setSexo(SexoEnum sexo) {
this.sexo = sexo;
}
@Column(name = "COND_CONJUGE")
@Enumerated(EnumType.STRING)
public CondicaoConjugeEnum getCondicaoConjuge() {
return condicaoConjuge;
}
public void setCondicaoConjuge(CondicaoConjugeEnum condicaoConjuge) {
this.condicaoConjuge = condicaoConjuge;
}
@Column(name = "TEMPO_NUPCIAS")
public String getTempoNupcias() {
return tempoNupcias;
}
public void setTempoNupcias(String tempoNupcias) {
this.tempoNupcias = tempoNupcias;
}
@Transient
public String getDtNascimentoFormatada() {
if (getDataNascimento() != null) {
return DataHelper.converteData(dataNascimento, "dd/MM/YYYY");
}
return "";
}
}
Pôxa, se você não sabe onde você busca registros, eu é que não vou saber.
Olhando rapidamente o fonte dessa classe que você postou, não vi nenhum código usando as classes ProBase
e ProBaseVO
.
Esse código é para a empresa que você trabalha?
Se for, sugiro que peça ajuda para um colega, pois o que você quer fazer é simples, mas não estou conseguindo ajudar pois aparentemente nem você conhece ou sabe ao certo como seus fontes funcionam.