--- /dev/null
+/*
+ * Copyright 2008 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.zxing.client.result;
+
+/**
+ * @author jbreiden@google.com (Jeff Breidenbach)
+ */
+public final class ISBNParsedResult extends ParsedResult {
+
+ private final String isbn;
+
+ ISBNParsedResult(String isbn) {
+ super(ParsedResultType.ISBN);
+ this.isbn = isbn;
+ }
+
+ public String getISBN() {
+ return isbn;
+ }
+
+ public String getDisplayResult() {
+ return isbn;
+ }
+
+}
--- /dev/null
+/*
+ * Copyright 2008 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.zxing.client.result;
+
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.Result;
+
+/**
+ * Parses strings of digits that represent a ISBN.
+ *
+ * @author jbreiden@google.com (Jeff Breidenbach)
+ */
+public class ISBNResultParser extends ResultParser {
+
+ private ISBNResultParser() {
+ }
+
+ // ISBN-13 For Dummies
+ // http://www.bisg.org/isbn-13/for.dummies.html
+ public static ISBNParsedResult parse(Result result) {
+ BarcodeFormat format = result.getBarcodeFormat();
+ if (!BarcodeFormat.EAN_13.equals(format)) {
+ return null;
+ }
+ String rawText = result.getText();
+ if (rawText == null) {
+ return null;
+ }
+ int length = rawText.length();
+ if (length != 13) {
+ return null;
+ }
+ if (!rawText.startsWith("978") && !rawText.startsWith("979")) {
+ return null;
+ }
+
+ return new ISBNParsedResult(rawText);
+ }
+
+}
// "optional" types
public static final ParsedResultType NDEF_SMART_POSTER = new ParsedResultType("NDEF_SMART_POSTER");
public static final ParsedResultType MOBILETAG_RICH_WEB = new ParsedResultType("MOBILETAG_RICH_WEB");
+ public static final ParsedResultType ISBN = new ParsedResultType("ISBN");
private final String name;
return result;
} else if ((result = URIResultParser.parse(theResult)) != null) {
return result;
+ } else if ((result = ISBNResultParser.parse(theResult)) != null) {
+ return result;
} else if ((result = UPCResultParser.parse(theResult)) != null) {
return result;
}
!BarcodeFormat.EAN_8.equals(format) && !BarcodeFormat.EAN_13.equals(format)) {
return null;
}
+ if (ISBNResultParser.parse(result) != null) {
+ return null;
+ }
String rawText = result.getText();
if (rawText == null) {
return null;
return null;
}
}
- // Not actually checking the checkusm again here
+ // Not actually checking the checksum again here
return new UPCParsedResult(rawText);
}