mirror of
https://github.com/zxing/zxing.git
synced 2025-03-05 20:48:51 -08:00
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:
parent
853ab5cdaa
commit
d45123da9e
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -37,6 +37,7 @@ public final class ParsedResultType {
|
||||||
// "optional" types
|
// "optional" types
|
||||||
public static final ParsedResultType NDEF_SMART_POSTER = new ParsedResultType("NDEF_SMART_POSTER");
|
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 MOBILETAG_RICH_WEB = new ParsedResultType("MOBILETAG_RICH_WEB");
|
||||||
|
public static final ParsedResultType ISBN = new ParsedResultType("ISBN");
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,8 @@ public abstract class ResultParser {
|
||||||
return result;
|
return result;
|
||||||
} else if ((result = URIResultParser.parse(theResult)) != null) {
|
} else if ((result = URIResultParser.parse(theResult)) != null) {
|
||||||
return result;
|
return result;
|
||||||
|
} else if ((result = ISBNResultParser.parse(theResult)) != null) {
|
||||||
|
return result;
|
||||||
} else if ((result = UPCResultParser.parse(theResult)) != null) {
|
} else if ((result = UPCResultParser.parse(theResult)) != null) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,9 @@ final class UPCResultParser extends ResultParser {
|
||||||
!BarcodeFormat.EAN_8.equals(format) && !BarcodeFormat.EAN_13.equals(format)) {
|
!BarcodeFormat.EAN_8.equals(format) && !BarcodeFormat.EAN_13.equals(format)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
if (ISBNResultParser.parse(result) != null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
String rawText = result.getText();
|
String rawText = result.getText();
|
||||||
if (rawText == null) {
|
if (rawText == null) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -50,7 +53,7 @@ final class UPCResultParser extends ResultParser {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Not actually checking the checkusm again here
|
// Not actually checking the checksum again here
|
||||||
return new UPCParsedResult(rawText);
|
return new UPCParsedResult(rawText);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue