Fixes bug #9450
git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@75610 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
21dd44dc45
commit
8e157ad4ed
|
@ -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<String, String> mapa = new HashMap<String, String>(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<String, String> 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";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue