Tratamento de consistências em campos de usuário em Programação e Históricos
Em termos de customizações de campos, além da inclusão é necessário que, muitas vezes, sejam realizados tratamentos de regras de consistências referentes às implementações. Para realizar uma verificação ou operação junto à customização, é necessário da mesma forma, a inclusão de um tratamento na entidade selecionada, assim como no seniorcomponent criado.
Inserir um campo de data na tabela de programação de troca de horário, para que seja gravada a data de inserção de um novo registro.
- De inicio será criado um campo de usuário na tabela R064THR.
- Após criar o campo customizado, deve ser criada uma extensão da entidade ITrocaHorario, aqui chamado ITrocaHorarioCustom, tratando o campo criado no CBDS:
package custom.senior.entity;
import org.joda.time.LocalDate;
import com.senior.dataset.annotation.Entity;
import com.senior.dataset.annotation.Field;
import br.com.senior.rh.entity.ITrocaHorario;
@Entity
public interface ITrocaHorarioCustom extends ITrocaHorario {
@Field
LocalDate getUSU_DatAlt();
void setUSU_DatAlt(LocalDate USU_DatAlt);
}
- Deve ser criado um SystemComponent customizado. Neste exemplo, criado com o nome ScTrocaHorarioCustom estendendo o ScProgramacoes. Deve ser marcado o assinalamento de gerar o fonte Java conforme tela do assistente de criação no SeniorDeveloper:
{
extensionOf: "br.com.senior.gp.sc.programacoes.SCProgramacoes",
datasetExtensions : [{
id: "DsTrocaHorario",
entity : "custom.senior.entity.ITrocaHorarioCustom",
beforeApply : "verificarTrocaHorario",
storage : {
type : "DB",
fieldMapping : [{
field : "USU_DatAlt",
column : "R064THR.USU_DatAlt"
}]
}
}]
}
- Adicionar o systemcomponent criado no arquivo entities.json:
{
systemcomponents: [
{
extension: "custom.senior.trocahorario.ScTrocaHorarioCustom",
base: "br.com.senior.gp.sc.programacoes.SCProgramacoes"
}
]
}
- Efetuar o tratamento especifico para o campo criado, no fonte Java que foi gerado de forma automática na criação do systemcomponent. É possível observar que, é necessária a criação de um cursor para manipulação da entidade, assim como, uso de um bookmark. Em caso de dúvidas, acesse a documentação de Classes auxiliares. A criação de um constructor que não é gerado de forma automática pelo assistente de criação, também deve ser incluído.
package custom.senior.trocahorario;
import org.joda.time.LocalDate;
import com.senior.dataset.IBookmark;
import com.senior.dataset.ICursor;
import com.senior.entitysession.IEntitySession;
import com.senior.sc.AbstractSystemComponentExtension;
import com.senior.sc.annotation.SystemComponentExtension;
import br.com.senior.rh.entity.ITrocaHorario;
import br.com.senior.rh.util.CursorUtil;
import custom.senior.entity.ITrocaHorarioCustom;
@SystemComponentExtension("br.com.senior.gp.sc.programacoes.SCProgramacoes")
public class ScTrocaHorarioCustom extends AbstractSystemComponentExtension {
public ScTrocaHorarioCustom(IEntitySession entitySession) {
super(entitySession);
// TODO Stub de construtor gerado automaticamente
}
public void verificarTrocaHorario(IBookmark bookmark, ITrocaHorarioCustom trocaHorarioCustom) {
ICursor<ITrocaHorario> crR064thr = CursorUtil.getCursor(ITrocaHorario.class);
LocalDate data = new LocalDate();
trocaHorarioCustom.setUSU_DatAlt(data);
crR064thr.open();
try {
if (crR064thr.gotoBookmark(bookmark)) {
crR064thr.update(trocaHorarioCustom);
}
} finally {
crR064thr.close();
}
}
}
Observação
Para maiores detalhes de como efetuar tratamentos diferenciados nas entidades, bem como, variações e recursos possíveis de serem aplicados, acesse a documentação presente na ferramenta de customização SeniorDeveloper. Para verificar a documentação, basta acessar o SeniorDeveloper e ir no menu Ajuda > Conteúdo da Ajuda > Menu opção Senior.