Blame |
Last modification |
View Log
| Download
| RSS feed
package br.com.ec.domain.util;
import org.apache.commons.lang3.StringUtils;
import br.edu.cesmac.core.exception.NegocioException;
import br.edu.cesmac.core.util.VerificadorUtil;
public class CodigoBarraEAN
{
public static Long ean13toLong
(String barcode,
String propertyName,
boolean required
) {
if(barcode==
null) {
if(required
) {
throw new NegocioException
("O campo " + propertyName +
" deve ser preenchido", propertyName
);
} else {
return null;
}
}
if(barcode.
length()==
13) {
throw new NegocioException
("O campo " + propertyName +
" deve estar no formato EAN13 e deve ter no máximo 13 caracteres", propertyName
);
}
int dif =
13 - barcode.
length();
for(int i=
0; i
< dif
; i++
) {
barcode =
"0" + barcode
;
}
int[] digitos =
new int[13];
for(int i=
0; i
< 13 ; i++
) {
try {
digitos
[i
] =
Integer.
parseInt(barcode.
substring(i, i+
1));
} catch(Exception ex
) {
throw new NegocioException
("O campo " + propertyName +
" deve ser composto apenas por números", propertyName
);
}
}
int aux1 = digitos
[1] + digitos
[3] + digitos
[5] + digitos
[7] + digitos
[9] + digitos
[11];
aux1 = aux1
* 3;
int aux2 = digitos
[0] + digitos
[2] + digitos
[4] + digitos
[6] + digitos
[8] + digitos
[10];
int aux3 = aux1 + aux2
;
int aux4 =
10 -
(aux3
% 10);
if(aux4 ==
10) {
aux4 =
1;
}
if(digitos
[12]!= aux4
) {
throw new NegocioException
("O digito verificador do campo " + propertyName +
" não confere", propertyName
);
}
return new Long(barcode.
substring(0,
12));
}
public static String longToEan13
(String codigo
) {
if(codigo==
null) {
return null;
}
String barcode = codigo.
toString();
int dif =
12 - barcode.
length();
for(int i=
0; i
< dif
; i++
) {
barcode =
"0" + barcode
;
}
int[] digitos =
new int[12];
for(int i=
0; i
< 12 ; i++
) {
digitos
[i
] =
Integer.
parseInt(barcode.
substring(i, i+
1));
}
int aux1 = digitos
[1] + digitos
[3] + digitos
[5] + digitos
[7] + digitos
[9] + digitos
[11];
aux1 = aux1
* 3;
int aux2 = digitos
[0] + digitos
[2] + digitos
[4] + digitos
[6] + digitos
[8] + digitos
[10];
int aux3 = aux1 + aux2
;
int aux4 =
10 -
(aux3
% 10);
if (aux4 ==
10) {
aux4 =
0;
}
return barcode + aux4
;
}
public static String gerarCodigoBarras
(String codigo
) {
codigo =
"9" +
String.
format("%011d",
new Long(codigo
));
return longToEan13
(codigo
);
}
public static String retornarCodigoDoCodigoBarras
(String codigoBarras
) {
if (VerificadorUtil.
naoEstaNuloOuVazio(codigoBarras
)) {
if (codigoBarras.
length() > 0) {
codigoBarras =
Long.
valueOf(StringUtils.
substring(codigoBarras,
1, codigoBarras.
length()-
1)).
toString();
return String.
format("%06d",
new Long(codigoBarras
));
}
}
return codigoBarras
;
}
public static Boolean validarCodigoBarras
(String filtro
) {
if (VerificadorUtil.
naoEstaNuloOuVazio(filtro
)) {
return filtro.
length() ==
13 && filtro.
startsWith("9");
}
return false;
}
public static void main
(String[] args
) {
System.
out.
println(retornarCodigoDoCodigoBarras
("9000000000018"));
// System.out.println(gerarCodigoBarras("1"));9000000000018
System.
out.
println(gerarCodigoBarras
("17"));
System.
out.
println(gerarCodigoBarras
("66"));
System.
out.
println(gerarCodigoBarras
("24"));
System.
out.
println(gerarCodigoBarras
("78"));
System.
out.
println(gerarCodigoBarras
("34"));
System.
out.
println(gerarCodigoBarras
("69"));
System.
out.
println(gerarCodigoBarras
("31"));
System.
out.
println(gerarCodigoBarras
("82"));
System.
out.
println(gerarCodigoBarras
("85"));
System.
out.
println(gerarCodigoBarras
("32"));
System.
out.
println(gerarCodigoBarras
("51"));
System.
out.
println(gerarCodigoBarras
("84"));
System.
out.
println(gerarCodigoBarras
("54"));
System.
out.
println(gerarCodigoBarras
("55"));
System.
out.
println(gerarCodigoBarras
("45"));
System.
out.
println(gerarCodigoBarras
("74"));
System.
out.
println(gerarCodigoBarras
("33"));
System.
out.
println(gerarCodigoBarras
("64"));
System.
out.
println(gerarCodigoBarras
("70"));
System.
out.
println(gerarCodigoBarras
("20"));
System.
out.
println(gerarCodigoBarras
("6"));
System.
out.
println(gerarCodigoBarras
("46"));
System.
out.
println(gerarCodigoBarras
("56"));
System.
out.
println(gerarCodigoBarras
("25"));
System.
out.
println(gerarCodigoBarras
("5"));
System.
out.
println(gerarCodigoBarras
("11"));
System.
out.
println(gerarCodigoBarras
("83"));
System.
out.
println(gerarCodigoBarras
("57"));
System.
out.
println(gerarCodigoBarras
("48"));
System.
out.
println(gerarCodigoBarras
("73"));
System.
out.
println(gerarCodigoBarras
("58"));
System.
out.
println(gerarCodigoBarras
("7"));
System.
out.
println(gerarCodigoBarras
("86"));
System.
out.
println(gerarCodigoBarras
("87"));
System.
out.
println(gerarCodigoBarras
("88"));
}
}