Added an ISBN parsed result type courtesy of jbreiden.
authordswitkin <dswitkin@59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Mon, 8 Sep 2008 20:54:52 +0000 (20:54 +0000)
committerdswitkin <dswitkin@59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Mon, 8 Sep 2008 20:54:52 +0000 (20:54 +0000)
git-svn-id: http://zxing.googlecode.com/svn/trunk@576 59b500cc-1b3d-0410-9834-0bbf25fbcc57

core/src/com/google/zxing/client/result/ISBNParsedResult.java [new file with mode: 0644]
core/src/com/google/zxing/client/result/ISBNResultParser.java [new file with mode: 0644]
core/src/com/google/zxing/client/result/ParsedResultType.java
core/src/com/google/zxing/client/result/ResultParser.java
core/src/com/google/zxing/client/result/UPCResultParser.java

diff --git a/core/src/com/google/zxing/client/result/ISBNParsedResult.java b/core/src/com/google/zxing/client/result/ISBNParsedResult.java
new file mode 100644 (file)
index 0000000..8f0fe89
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * 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;
+  }
+
+}
diff --git a/core/src/com/google/zxing/client/result/ISBNResultParser.java b/core/src/com/google/zxing/client/result/ISBNResultParser.java
new file mode 100644 (file)
index 0000000..943dd14
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * 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);
+  }
+
+}
index 9449b03..4106671 100644 (file)
@@ -37,6 +37,7 @@ public final class ParsedResultType {
   // "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;
 
index b1363b8..fdac7c7 100644 (file)
@@ -65,6 +65,8 @@ public abstract class ResultParser {
       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;
     }
index d29b9bc..b2ab387 100644 (file)
@@ -36,6 +36,9 @@ final class UPCResultParser extends ResultParser {
         !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;
@@ -50,7 +53,7 @@ final class UPCResultParser extends ResultParser {
         return null;
       }
     }
-    // Not actually checking the checkusm again here
+    // Not actually checking the checksum again here
     return new UPCParsedResult(rawText);
   }