Método para limitar inserção

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 ?
8

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.

:person_shrugging:t2:

@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.