Added an ISBN parsed result type courtesy of jbreiden.

git-svn-id: https://zxing.googlecode.com/svn/trunk@576 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
dswitkin 2008-09-08 20:54:52 +00:00
parent 853ab5cdaa
commit d45123da9e
5 changed files with 100 additions and 1 deletions

View file

@ -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;
}
}

View file

@ -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);
}
}

View 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;

View 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;
}

View 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);
}