Skip to content

Commit e91226d

Browse files
committed
Cleanup EAN13 code parsing
1 parent 5e971c9 commit e91226d

File tree

2 files changed

+22
-28
lines changed

2 files changed

+22
-28
lines changed

core/src/main/java/io/snabble/sdk/codes/EAN13.java

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,33 @@ public EAN13(String code, String[] weighPrefixes, String[] pricePrefixes, String
1818
throw new IllegalArgumentException("Not a valid EAN13 code");
1919
}
2020

21-
if(isEmbeddedDataOk()) {
22-
for (String prefix : weighPrefixes) {
23-
if (code.startsWith(prefix)) {
24-
hasWeighData = true;
25-
}
21+
for (String prefix : weighPrefixes) {
22+
if (code.startsWith(prefix)) {
23+
hasWeighData = true;
2624
}
25+
}
2726

28-
for (String prefix : pricePrefixes) {
29-
if (code.startsWith(prefix)) {
30-
hasPriceData = true;
31-
}
27+
for (String prefix : pricePrefixes) {
28+
if (code.startsWith(prefix)) {
29+
hasPriceData = true;
3230
}
31+
}
3332

34-
for (String prefix : amountPrefixes) {
35-
if (code.startsWith(prefix)) {
36-
hasAmountData = true;
37-
}
33+
for (String prefix : amountPrefixes) {
34+
if (code.startsWith(prefix)) {
35+
hasAmountData = true;
3836
}
37+
}
3938

39+
if(isEmbeddedDataOk()) {
4040
lookupCode = code.substring(0, 6) + "0000000";
41+
embeddedData = Integer.parseInt(code.substring(7, 12));
4142
} else {
4243
lookupCode = code;
44+
hasWeighData = false;
45+
hasAmountData = false;
46+
hasPriceData = false;
4347
}
44-
45-
embeddedData = Integer.parseInt(code.substring(7, 12));
4648
}
4749

4850
@Override
@@ -78,7 +80,7 @@ public boolean hasEmbeddedData(){
7880
@Override
7981
public boolean isEmbeddedDataOk() {
8082
if(!hasEmbeddedData()){
81-
return true;
83+
return false;
8284
}
8385

8486
String code = getCode();
@@ -109,9 +111,7 @@ public static int checksum(String ean) {
109111
public static boolean checkChecksum(String ean) {
110112
if (isValidString(ean)) {
111113
int d = Character.digit(ean.charAt(ean.length() - 1), 10);
112-
if (d == checksum(ean.substring(0, ean.length() - 1))) {
113-
return true;
114-
}
114+
return d == checksum(ean.substring(0, ean.length() - 1));
115115
}
116116

117117
return false;
@@ -153,19 +153,13 @@ private static boolean allDigits(String str) {
153153
}
154154

155155
private static boolean isValidString(String ean) {
156-
if (ean != null && ean.length() == 13 && allDigits(ean)) {
157-
return true;
158-
}
156+
return ean != null && ean.length() == 13 && allDigits(ean);
159157

160-
return false;
161158
}
162159

163160
public static boolean isEan13(String ean) {
164-
if (isValidString(ean) && checkChecksum(ean)) {
165-
return true;
166-
}
161+
return isValidString(ean) && checkChecksum(ean);
167162

168-
return false;
169163
}
170164

171165
private static SparseIntArray check5plus = new SparseIntArray();

ui/src/main/java/io/snabble/sdk/ui/scanner/SelfScanningView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ public void onShow(DialogInterface dialog) {
153153
public void lookupAndShowProduct(final ScannableCode scannedCode) {
154154
productDialog.dismiss();
155155

156-
if(!scannedCode.isEmbeddedDataOk()){
156+
if(scannedCode.hasEmbeddedData() && !scannedCode.isEmbeddedDataOk()){
157157
delayNextScan();
158158

159159
Telemetry.event(Telemetry.Event.ScannedUnknownCode, scannedCode.getCode());

0 commit comments

Comments
 (0)