Package systextil.dao

Class TraducaoDeCadastro

java.lang.Object
systextil.dao.TraducaoDeCadastro

public class TraducaoDeCadastro extends Object
Representa a tabela ERP_TRANSLATION

Tabela genérica de tradução manual de cadastros (Estágio, Produto, Operação, ...). É polimórfica: não há FK física para a tabela de origem, a chave de negócio é espelhada em CHAVE_1..4. Cada chamada preenche de 1 a 4 posições de chave, sempre começando por CHAVE_1, conforme o que aquele caso específico precisa — a mesma tabela de origem pode ser referenciada com menos partes da chave em cenários diferentes (ex.: Produto hoje usa nivel+grupo+subgrupo+item, mas nada impede um cadastro futuro do mesmo domínio usar só parte disso). Não há validação de quantidade nesta classe; alinhar a posição certa e decidir quantas usar é responsabilidade de quem chama getTraduzido(br.com.intersys.systextil.connection.AppConnection, br.com.intersys.systextil.global.Mdi, systextil.dao.TraducaoDeCadastro.Dominio, java.lang.Object, systextil.dao.TraducaoDeCadastro.Campo, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) e salvarTraduzido(br.com.intersys.systextil.connection.AppConnection, br.com.intersys.systextil.global.Mdi, systextil.dao.TraducaoDeCadastro.Dominio, java.lang.Object, systextil.dao.TraducaoDeCadastro.Campo, java.lang.String, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object).

O NXJ não resolve varargs nem converte FIELD/NullableString para String; por isso getTraduzido/salvarTraduzido têm aridade fixa (sempre as 4 posições de chave) e usam Object, convertido internamente via str(Object).

Fachada HTTP do systextil-backend. getTraduzido(br.com.intersys.systextil.connection.AppConnection, br.com.intersys.systextil.global.Mdi, systextil.dao.TraducaoDeCadastro.Dominio, java.lang.Object, systextil.dao.TraducaoDeCadastro.Campo, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) chama GET /v1/erp-translations, salvarTraduzido(br.com.intersys.systextil.connection.AppConnection, br.com.intersys.systextil.global.Mdi, systextil.dao.TraducaoDeCadastro.Dominio, java.lang.Object, systextil.dao.TraducaoDeCadastro.Campo, java.lang.String, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) chama PUT /v1/erp-translations e agendarBatch(br.com.intersys.systextil.connection.AppConnection, br.com.intersys.systextil.global.Mdi, int) chama POST /v1/erp-translations/agendar-batch. A sessão é a mesma do RfidEpcClient: JWT em POST /auth (managerId + login) e URL do parâmetro rfid.urlBackend. O texto traduzido fica em bytes UTF-8 (coluna BLOB) porque o charset do banco não suporta mandarim em VARCHAR2/CHAR.

getTraduzido(br.com.intersys.systextil.connection.AppConnection, br.com.intersys.systextil.global.Mdi, systextil.dao.TraducaoDeCadastro.Dominio, java.lang.Object, systextil.dao.TraducaoDeCadastro.Campo, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) devolve vazio quando o backend responde 404 (BLOB vazio, ou status diferente de TRADUZIDO e de nulo). salvarTraduzido(br.com.intersys.systextil.connection.AppConnection, br.com.intersys.systextil.global.Mdi, systextil.dao.TraducaoDeCadastro.Dominio, java.lang.Object, systextil.dao.TraducaoDeCadastro.Campo, java.lang.String, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) grava o BLOB e marca status TRADUZIDO; o usuário gravado é o do JWT. agendarBatch(br.com.intersys.systextil.connection.AppConnection, br.com.intersys.systextil.global.Mdi, int) agenda o OPER_001 com o usuário do JWT como solicitante.

  • Method Details

    • getTraduzido

      public static Optional<String> getTraduzido(br.com.intersys.systextil.connection.AppConnection conn, Mdi mdi, TraducaoDeCadastro.Dominio domain, Object language, TraducaoDeCadastro.Campo campo, Object chave1, Object chave2, Object chave3, Object chave4)
      Busca o texto traduzido gravado para o domínio/idioma/campo informados.

      chave1..chave4 são posicionais: chave1 vai para CHAVE_1, chave2 para CHAVE_2, e assim por diante. Informe apenas as posições realmente usadas naquele caso, deixando null as demais:

      • Estágio (MQOP_005) costuma usar só CHAVE_1: getTraduzido(conn, mdi, Dominio.MQOP_005, lang, Campo.DESCRICAO, codigoEstagio, null, null, null)
      • Operação (MQOP_040) costuma usar CHAVE_1..3: getTraduzido(conn, mdi, Dominio.MQOP_040, lang, Campo.NOME_OPERACAO, codigoOperacao, grupoMaquinas, subMaquina, null)
      • Produto (BASI_010) costuma usar as 4 posições (nivel, grupo, subgrupo, item): getTraduzido(conn, mdi, Dominio.BASI_010, lang, Campo.DESCRICAO_15, nivel, grupo, subgrupo, item)
      Esses são exemplos de uso comum, não uma regra imposta pelo código — nada aqui valida quantas posições um domínio "deveria" usar.
      Parameters:
      mdi - sessão do legado: empresa e login usados na URL do backend e no JWT
      Returns:
      o texto traduzido, ou Optional.empty() se o backend responder 404 (sem tradução utilizável); cabe ao chamador decidir o fallback (em geral, o texto original em PT do cadastro).
    • salvarTraduzido

      public static void salvarTraduzido(br.com.intersys.systextil.connection.AppConnection conn, Mdi mdi, TraducaoDeCadastro.Dominio domain, Object language, TraducaoDeCadastro.Campo campo, String texto, String usuario, Object chave1, Object chave2, Object chave3, Object chave4)
      Grava (insere ou atualiza) o texto traduzido para o domínio/idioma/campo/chaves informados. O contrato posicional de chave1..chave4 é o mesmo de getTraduzido(br.com.intersys.systextil.connection.AppConnection, br.com.intersys.systextil.global.Mdi, systextil.dao.TraducaoDeCadastro.Dominio, java.lang.Object, systextil.dao.TraducaoDeCadastro.Campo, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object).

      usuario permanece na assinatura para os chamadores atuais. O endpoint grava o usuário do JWT (mdi), não este argumento.

      Parameters:
      mdi - sessão do legado: empresa e login usados na URL do backend e no JWT
    • agendarBatch

      public static void agendarBatch(br.com.intersys.systextil.connection.AppConnection conn, Mdi mdi, int codigoEmpresa)
      Agenda o primeiro ciclo do job de tradução (OPER_001) para a empresa. Execução imediata. O solicitante gravado é o usuário do JWT. O service ignora empresa inelegível e não cria segundo processo pendente da mesma ação: nesses casos o endpoint responde 200 com lista vazia.
      Parameters:
      mdi - sessão do legado: empresa e login usados na URL do backend e no JWT. A empresa do corpo é codigoEmpresa, que pode ser outra filial.