From 8e157ad4eda7bebf5c5d04720f424447e2c71817 Mon Sep 17 00:00:00 2001 From: fabio Date: Tue, 24 Oct 2017 13:37:16 +0000 Subject: [PATCH] Fixes bug #9450 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@75610 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../utilerias/LocalizadorHelper.java | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/com/rjconsultores/ventaboletos/utilerias/LocalizadorHelper.java diff --git a/src/com/rjconsultores/ventaboletos/utilerias/LocalizadorHelper.java b/src/com/rjconsultores/ventaboletos/utilerias/LocalizadorHelper.java new file mode 100644 index 000000000..5e87a6115 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/utilerias/LocalizadorHelper.java @@ -0,0 +1,90 @@ +package com.rjconsultores.ventaboletos.utilerias; + +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class LocalizadorHelper { + private static Logger log = LoggerFactory.getLogger(LocalizadorHelper.class); + + private Map mapa = new HashMap(0); + + public LocalizadorHelper() { + mapa.put("1", "GO"); + mapa.put("2", "JM"); + mapa.put("3", "LQ"); + mapa.put("4", "HU"); + mapa.put("5", "NS"); + mapa.put("6", "RV"); + mapa.put("7", "XP"); + mapa.put("8", "IY"); + mapa.put("9", "KZ"); + mapa.put("0", "WT"); + } + + public String getLocalizadorAlfa(final String localizador) { + String valor = localizador.substring(2, localizador.length()); + String alfa = Long.toHexString(Integer.valueOf(valor)).toUpperCase(); + + String novo = ""; + + Random gerador = new Random(); + + for (int idx = 0; idx < alfa.length(); idx++) { + String digito = alfa.substring(idx, idx + 1); + + if (mapa.containsKey(digito)) { + String mascara = mapa.get(digito); + + int r = gerador.nextInt(2); + + novo += mascara.substring(r, r + 1); + } else { + novo += digito; + } + } + + return novo; + } + + public String getLocalizadorReal(final String localizador) { + + if (StringUtils.isBlank(localizador)){ + return localizador; + } + + try { + String novo = ""; + + for (int idx = 0; idx < localizador.length(); idx++) { + String digito = localizador.substring(idx, idx + 1); + digito = digito.toUpperCase(); + + if (!"ABCDEF1234567890".contains(digito)) { + for (Map.Entry entry : mapa.entrySet()) { + String chave = entry.getKey(); + String valor = entry.getValue(); + + if (valor.contains(digito)) { + novo += chave; + break; + } + } + } else { + novo += digito; + } + } + + return "01" + String.format("%010d", Long.parseLong(novo, 16)); + + } catch (Exception e) { + log.error("Localizador invalido: " + localizador, e); + + return "010000000000"; + } + } +}