Personalizar os IDs usados em suas páginas pelos caracteres do nome da sua empresa.
Ex:
EMPRESA: XYZ
Antes…
[code]--------------------
CRUD VEICULOS
ID | CARRO
1 | Fusca
2 | Chevet
3 | Brásilia
4 | Monza
5 | D20
6 | D10
7 | C20
8 | C10
9 | Uno
10 | Celta
[/code]
Depois…
[code]--------------------
CRUD VEICULOS
ID | CARRO
y | Fusca
z | Chevet
yx | Brásilia
yy | Monza
yz | D20
zx | D10
zy | C20
zz | C10
yxx | Uno
yxy | Celta
[/code]
Classe necessária
[code]/**
- Codificação personalizada de inteiros longos
- @version 1.01 @date 14/12/2012
-
@author Marcelo Junior
*/
package meupacote;
import java.util.Arrays;
public class Codificacao {
private String[] personalizados;
private String[] padraoJava;
public Codificacao(String... caracteresPersonalizados) {
personalizados = caracteresPersonalizadosReduzidos(caracteresPersonalizados);
int tamanho = personalizados.length;
padraoJava = new String[tamanho];
int bytes = tamanho;
for (int i = 0; i < tamanho; i++) {
padraoJava[i] = Long.toString(i, bytes);
}
}
public String codifica(Long numero) {
int bytes = padraoJava.length;
String codigo = Long.toString(numero, bytes);
int tamanho = bytes;
for (int i = 0; i < tamanho; i++) {
codigo = codigo.replaceAll(padraoJava[i], personalizados[i]);
}
return codigo;
}
public Long descodifica(String codigo) {
codigo = codigo.toLowerCase();
validaCodigo(codigo);
int tamanho = personalizados.length;
int bytes = tamanho;
for (int i = 0; i < tamanho; i++) {
codigo = codigo.replaceAll(personalizados[i], padraoJava[i]);
}
return Long.valueOf(codigo, bytes);
}
private String[] caracteresPersonalizadosReduzidos(
String[] caracteresPersonalizados) {
StringBuffer codigo = new StringBuffer();
for (String caractere : caracteresPersonalizados) {
codigo.append(caractere.toLowerCase());
}
return codidoReduzido(codigo.toString());
}
private String[] codidoReduzido(String codigo) {
String[] reduzido = new String[codigo.length()];
int quantidade = 0;
while (!codigo.isEmpty()) {
String caractere = codigo.charAt(0) + "";
codigo = codigo.replaceAll(caractere, "");
reduzido[quantidade++] = caractere;
}
return Arrays.copyOfRange(reduzido, 0, quantidade);
}
private void validaCodigo(String codigo) {
String[] reduzido = codidoReduzido(codigo);
int quantidade = reduzido.length;
int tamanho = personalizados.length;
for (int i = 0; i < quantidade; i++) {
int invalido = i;
for (int j = 0; j < tamanho; j++) {
if (reduzido[i].equals(personalizados[j])) {
invalido = -1;
break;
}
}
if (invalido != -1) {
throw new NumberFormatException(
String.format(
"caracter inválido: [%s]. Os caracteres válidos são: %s",
reduzido[invalido], toString()));
}
}
}
@Override
public String toString() {
return Arrays.toString(personalizados);
}
public static void main(String[] args) {
Codificacao codificacao = new Codificacao("E", "m", "p", "r", "e",
"s", "a");
Long numero = 1234567890L;
System.out.println(numero);
String codigo = codificacao.codifica(numero);
System.out.println(codigo);
numero = codificacao.descodifica(codigo);
System.out.println(numero);
codigo = codigo + "x";
System.out.println(codigo);
numero = codificacao.descodifica(codigo);
}
}[/code]