00001 package net.threebit.utils.sosc ;
00002
00008 public class UPC extends Validatable
00009 {
00017 public UPC(final String upc)
00018 {
00019 super(upc, "UPC");
00020 }
00021
00030 public boolean equals(Object o)
00031 {
00032 if (!(o instanceof UPC))
00033 {
00034 return (false);
00035 }
00036 return (super.equals(o));
00037 }
00038
00048 protected boolean checkDigits(final int[] digits)
00049 {
00050 int sumEven;
00051 int sumOdd;
00052 int sum;
00053
00054 sumEven = 0;
00055 sumOdd = 0;
00056 sum = 0;
00057
00058 for(int i = 0; i < (number.length() - 1); i++)
00059 {
00060 if((i % 2) == 0)
00061 {
00062 sumEven += Utils.add(digits[i]);
00063 }
00064 else
00065 {
00066 sumOdd += digits[i];
00067 }
00068 }
00069
00070 sumEven *= 3;
00071 sum = (sumEven + sumOdd);
00072
00073 while ((sum % 10) != 0)
00074 {
00075 sum++;
00076 }
00077
00078 if ((sum - (sumEven + sumOdd)) == digits[number.length() - 1])
00079 {
00080 return(true);
00081 }
00082 return (false);
00083 }
00084
00092 public static boolean validate(String num)
00093 {
00094 return (new UPC(num).validate());
00095 }
00096
00103 protected boolean checkSize()
00104 {
00105 return (12 == number.length());
00106 }
00107 }
00108