Blame |
Last modification |
View Log
| Download
| RSS feed
package br.com.ec.domain.util;
import org.apache.commons.lang3.StringUtils;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.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("114"));
// System.out.println(gerarCodigoBarras("113"));
// System.out.println(gerarCodigoBarras("117"));
// System.out.println(gerarCodigoBarras("116"));
// System.out.println(gerarCodigoBarras("115"));
// System.out.println(gerarCodigoBarras("122"));
// System.out.println(gerarCodigoBarras("126"));
// System.out.println(gerarCodigoBarras("124"));
// System.out.println(gerarCodigoBarras("21"));
// System.out.println(gerarCodigoBarras("128"));
// System.out.println(gerarCodigoBarras("120"));
// System.out.println(gerarCodigoBarras("122"));
// System.out.println(gerarCodigoBarras("97"));
// System.out.println(gerarCodigoBarras("56"));
// System.out.println(gerarCodigoBarras("57"));
// System.out.println(gerarCodigoBarras("86"));
// 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"));
}
}