From 4166bfcc94c0aa6365be15b73aa7dda767ef240a Mon Sep 17 00:00:00 2001 From: srowen Date: Tue, 8 Jul 2008 04:11:24 +0000 Subject: [PATCH] Add iCal support, plus many small changes suggested by code inspection -- mostly making things less visible for now git-svn-id: http://zxing.googlecode.com/svn/trunk@502 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- .../result/AddressBookAUResultParser.java | 2 +- .../result/AddressBookDoCoMoResultParser.java | 2 +- .../client/result/BizcardResultParser.java | 2 +- .../result/BookmarkDoCoMoResultParser.java | 2 +- .../client/result/CalendarParsedResult.java | 26 +++++++++ .../result/EmailAddressResultParser.java | 2 +- .../result/EmailDoCoMoResultParser.java | 2 +- .../zxing/client/result/GeoResultParser.java | 2 +- .../zxing/client/result/ParsedResult.java | 7 ++- .../zxing/client/result/ResultParser.java | 6 ++- .../client/result/SMSMMSResultParser.java | 2 +- .../zxing/client/result/TelResultParser.java | 2 +- .../zxing/client/result/UPCResultParser.java | 2 +- .../zxing/client/result/URIResultParser.java | 5 +- .../client/result/URLTOResultParser.java | 2 +- .../client/result/VCardResultParser.java | 6 +-- .../client/result/VEventResultParser.java | 54 +++++++++++++++++++ .../optional/MobileTagMMSResultParser.java | 2 +- .../MobileTagRichWebResultParser.java | 2 +- .../optional/MobileTagSMSResultParser.java | 2 +- .../MobileTagSimpleCalendarResultParser.java | 8 ++- .../MobileTagSimpleContactResultParser.java | 2 +- .../MobileTagSimpleWebResultParser.java | 2 +- .../optional/MobileTagTelResultParser.java | 2 +- .../optional/NDEFSmartPosterParsedResult.java | 6 +-- .../optional/NDEFSmartPosterResultParser.java | 2 +- .../result/optional/NDEFTextResultParser.java | 2 +- .../result/optional/NDEFURIResultParser.java | 2 +- .../com/google/zxing/common/GridSampler.java | 2 +- .../zxing/datamatrix/decoder/DataBlock.java | 2 +- .../decoder/DecodedBitStreamParser.java | 7 ++- .../google/zxing/oned/AbstractOneDReader.java | 2 +- .../result/ParsedReaderResultTestCase.java | 11 +++- 33 files changed, 138 insertions(+), 44 deletions(-) create mode 100644 core/src/com/google/zxing/client/result/VEventResultParser.java diff --git a/core/src/com/google/zxing/client/result/AddressBookAUResultParser.java b/core/src/com/google/zxing/client/result/AddressBookAUResultParser.java index 4ed8967b..7eb8ec88 100644 --- a/core/src/com/google/zxing/client/result/AddressBookAUResultParser.java +++ b/core/src/com/google/zxing/client/result/AddressBookAUResultParser.java @@ -28,7 +28,7 @@ import java.util.Vector; * * @author srowen@google.com (Sean Owen) */ -public final class AddressBookAUResultParser extends ResultParser { +final class AddressBookAUResultParser extends ResultParser { public static AddressBookParsedResult parse(Result result) { String rawText = result.getText(); diff --git a/core/src/com/google/zxing/client/result/AddressBookDoCoMoResultParser.java b/core/src/com/google/zxing/client/result/AddressBookDoCoMoResultParser.java index 4d70ac11..7bf88e69 100644 --- a/core/src/com/google/zxing/client/result/AddressBookDoCoMoResultParser.java +++ b/core/src/com/google/zxing/client/result/AddressBookDoCoMoResultParser.java @@ -28,7 +28,7 @@ import com.google.zxing.Result; * * @author srowen@google.com (Sean Owen) */ -public final class AddressBookDoCoMoResultParser extends AbstractDoCoMoResultParser { +final class AddressBookDoCoMoResultParser extends AbstractDoCoMoResultParser { public static AddressBookParsedResult parse(Result result) { String rawText = result.getText(); diff --git a/core/src/com/google/zxing/client/result/BizcardResultParser.java b/core/src/com/google/zxing/client/result/BizcardResultParser.java index 45d9ceb0..16809c6c 100644 --- a/core/src/com/google/zxing/client/result/BizcardResultParser.java +++ b/core/src/com/google/zxing/client/result/BizcardResultParser.java @@ -27,7 +27,7 @@ import java.util.Vector; * * @author srowen@google.com (Sean Owen) */ -public final class BizcardResultParser extends AbstractDoCoMoResultParser { +final class BizcardResultParser extends AbstractDoCoMoResultParser { // Yes, we extend AbstractDoCoMoResultParser since the format is very much // like the DoCoMo MECARD format, but this is not technically one of diff --git a/core/src/com/google/zxing/client/result/BookmarkDoCoMoResultParser.java b/core/src/com/google/zxing/client/result/BookmarkDoCoMoResultParser.java index 3b5069b5..e5f4cf27 100644 --- a/core/src/com/google/zxing/client/result/BookmarkDoCoMoResultParser.java +++ b/core/src/com/google/zxing/client/result/BookmarkDoCoMoResultParser.java @@ -21,7 +21,7 @@ import com.google.zxing.Result; /** * @author srowen@google.com (Sean Owen) */ -public final class BookmarkDoCoMoResultParser extends AbstractDoCoMoResultParser { +final class BookmarkDoCoMoResultParser extends AbstractDoCoMoResultParser { private BookmarkDoCoMoResultParser() { } diff --git a/core/src/com/google/zxing/client/result/CalendarParsedResult.java b/core/src/com/google/zxing/client/result/CalendarParsedResult.java index 5dbcb7b3..9978d9fb 100644 --- a/core/src/com/google/zxing/client/result/CalendarParsedResult.java +++ b/core/src/com/google/zxing/client/result/CalendarParsedResult.java @@ -35,6 +35,8 @@ public final class CalendarParsedResult extends ParsedResult { String attendee, String title) { super(ParsedResultType.CALENDAR); + validateDate(start); + validateDate(end); this.summary = summary; this.start = start; this.end = end; @@ -88,4 +90,28 @@ public final class CalendarParsedResult extends ParsedResult { return result.toString(); } + private static void validateDate(String date) { + if (date != null) { + if (date.length() != 16) { + throw new IllegalArgumentException(); + } + for (int i = 0; i < 8; i++) { + if (!Character.isDigit(date.charAt(i))) { + throw new IllegalArgumentException(); + } + } + if (date.charAt(8) != 'T') { + throw new IllegalArgumentException(); + } + for (int i = 9; i < 15; i++) { + if (!Character.isDigit(date.charAt(i))) { + throw new IllegalArgumentException(); + } + } + if (date.charAt(15) != 'Z') { + throw new IllegalArgumentException(); + } + } + } + } \ No newline at end of file diff --git a/core/src/com/google/zxing/client/result/EmailAddressResultParser.java b/core/src/com/google/zxing/client/result/EmailAddressResultParser.java index a83aa180..941ea528 100644 --- a/core/src/com/google/zxing/client/result/EmailAddressResultParser.java +++ b/core/src/com/google/zxing/client/result/EmailAddressResultParser.java @@ -26,7 +26,7 @@ import java.util.Hashtable; * * @author srowen@google.com (Sean Owen) */ -public final class EmailAddressResultParser extends ResultParser { +final class EmailAddressResultParser extends ResultParser { public static EmailAddressParsedResult parse(Result result) { String rawText = result.getText(); diff --git a/core/src/com/google/zxing/client/result/EmailDoCoMoResultParser.java b/core/src/com/google/zxing/client/result/EmailDoCoMoResultParser.java index 52e287d8..bfa10c26 100644 --- a/core/src/com/google/zxing/client/result/EmailDoCoMoResultParser.java +++ b/core/src/com/google/zxing/client/result/EmailDoCoMoResultParser.java @@ -25,7 +25,7 @@ import com.google.zxing.Result; * * @author srowen@google.com (Sean Owen) */ -public final class EmailDoCoMoResultParser extends AbstractDoCoMoResultParser { +final class EmailDoCoMoResultParser extends AbstractDoCoMoResultParser { public static EmailAddressParsedResult parse(Result result) { String rawText = result.getText(); diff --git a/core/src/com/google/zxing/client/result/GeoResultParser.java b/core/src/com/google/zxing/client/result/GeoResultParser.java index 02b9b3a8..0335cd0c 100644 --- a/core/src/com/google/zxing/client/result/GeoResultParser.java +++ b/core/src/com/google/zxing/client/result/GeoResultParser.java @@ -26,7 +26,7 @@ import com.google.zxing.Result; * * @author srowen@google.com (Sean Owen) */ -public final class GeoResultParser extends ResultParser { +final class GeoResultParser extends ResultParser { private GeoResultParser() { } diff --git a/core/src/com/google/zxing/client/result/ParsedResult.java b/core/src/com/google/zxing/client/result/ParsedResult.java index dac625e8..d7911e99 100644 --- a/core/src/com/google/zxing/client/result/ParsedResult.java +++ b/core/src/com/google/zxing/client/result/ParsedResult.java @@ -21,7 +21,7 @@ import com.google.zxing.Result; /** *

Abstract class representing the result of decoding a barcode, as more than * a String -- as some type of structured data. This might be a subclass which represents - * a URL, or an e-mail address. {@link #parseReaderResult(Result)} will turn a raw + * a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw * decoded string into the most appropriate type of structured representation.

* *

Thanks to Jeff Griffin for proposing rewrite of these classes that relies less @@ -43,12 +43,11 @@ public abstract class ParsedResult { public abstract String getDisplayResult(); - public String toString() { return getDisplayResult(); } - protected static void maybeAppend(String value, StringBuffer result) { + static void maybeAppend(String value, StringBuffer result) { if (value != null) { // Don't add a newline before the first value if (result.length() > 0) { @@ -58,7 +57,7 @@ public abstract class ParsedResult { } } - protected static void maybeAppend(String[] value, StringBuffer result) { + static void maybeAppend(String[] value, StringBuffer result) { if (value != null) { for (int i = 0; i < value.length; i++) { if (result.length() > 0) { diff --git a/core/src/com/google/zxing/client/result/ResultParser.java b/core/src/com/google/zxing/client/result/ResultParser.java index 0f928c7d..b1363b8d 100644 --- a/core/src/com/google/zxing/client/result/ResultParser.java +++ b/core/src/com/google/zxing/client/result/ResultParser.java @@ -53,6 +53,8 @@ public abstract class ResultParser { return result; } else if ((result = BizcardResultParser.parse(theResult)) != null) { return result; + } else if ((result = VEventResultParser.parse(theResult)) != null) { + return result; } else if ((result = TelResultParser.parse(theResult)) != null) { return result; } else if ((result = SMSMMSResultParser.parse(theResult)) != null) { @@ -108,7 +110,7 @@ public abstract class ResultParser { return escaped; } - protected static String urlDecode(String escaped) { + static String urlDecode(String escaped) { // No we can't use java.net.URLDecoder here. JavaME doesn't have it. if (escaped == null) { @@ -199,7 +201,7 @@ public abstract class ResultParser { return true; } - protected static Hashtable parseNameValuePairs(String uri) { + static Hashtable parseNameValuePairs(String uri) { int paramStart = uri.indexOf('?'); if (paramStart < 0) { return null; diff --git a/core/src/com/google/zxing/client/result/SMSMMSResultParser.java b/core/src/com/google/zxing/client/result/SMSMMSResultParser.java index 83d1e2b5..a4ad3d45 100644 --- a/core/src/com/google/zxing/client/result/SMSMMSResultParser.java +++ b/core/src/com/google/zxing/client/result/SMSMMSResultParser.java @@ -31,7 +31,7 @@ import java.util.Hashtable; * * @author srowen@google.com (Sean Owen) */ -public final class SMSMMSResultParser extends ResultParser { +final class SMSMMSResultParser extends ResultParser { private SMSMMSResultParser() { } diff --git a/core/src/com/google/zxing/client/result/TelResultParser.java b/core/src/com/google/zxing/client/result/TelResultParser.java index 2eb3b87f..8a55759b 100644 --- a/core/src/com/google/zxing/client/result/TelResultParser.java +++ b/core/src/com/google/zxing/client/result/TelResultParser.java @@ -23,7 +23,7 @@ import com.google.zxing.Result; * * @author srowen@google.com (Sean Owen) */ -public final class TelResultParser extends ResultParser { +final class TelResultParser extends ResultParser { private TelResultParser() { } diff --git a/core/src/com/google/zxing/client/result/UPCResultParser.java b/core/src/com/google/zxing/client/result/UPCResultParser.java index 7236b338..d29b9bc3 100644 --- a/core/src/com/google/zxing/client/result/UPCResultParser.java +++ b/core/src/com/google/zxing/client/result/UPCResultParser.java @@ -24,7 +24,7 @@ import com.google.zxing.Result; * * @author dswitkin@google.com (Daniel Switkin) */ -public final class UPCResultParser extends ResultParser { +final class UPCResultParser extends ResultParser { private UPCResultParser() { } diff --git a/core/src/com/google/zxing/client/result/URIResultParser.java b/core/src/com/google/zxing/client/result/URIResultParser.java index 7be06359..1f4b8f47 100644 --- a/core/src/com/google/zxing/client/result/URIResultParser.java +++ b/core/src/com/google/zxing/client/result/URIResultParser.java @@ -23,7 +23,7 @@ import com.google.zxing.Result; * * @author srowen@google.com (Sean Owen) */ -public final class URIResultParser extends ResultParser { +final class URIResultParser extends ResultParser { private URIResultParser() { } @@ -64,7 +64,8 @@ public final class URIResultParser extends ResultParser { * need to know when a string is obviously not a URI. */ static boolean isBasicallyValidURI(String uri) { - return uri != null && uri.indexOf(' ') < 0 && (uri.indexOf(':') >= 0 || uri.indexOf('.') >= 0); + return uri != null && uri.indexOf(' ') < 0 && uri.indexOf('\n') < 0 && + (uri.indexOf(':') >= 0 || uri.indexOf('.') >= 0); } } \ No newline at end of file diff --git a/core/src/com/google/zxing/client/result/URLTOResultParser.java b/core/src/com/google/zxing/client/result/URLTOResultParser.java index 719cdaa4..03979538 100644 --- a/core/src/com/google/zxing/client/result/URLTOResultParser.java +++ b/core/src/com/google/zxing/client/result/URLTOResultParser.java @@ -25,7 +25,7 @@ import com.google.zxing.Result; * * @author srowen@google.com (Sean Owen) */ -public final class URLTOResultParser { +final class URLTOResultParser { private URLTOResultParser() { } diff --git a/core/src/com/google/zxing/client/result/VCardResultParser.java b/core/src/com/google/zxing/client/result/VCardResultParser.java index 834db4c1..c0717dbe 100644 --- a/core/src/com/google/zxing/client/result/VCardResultParser.java +++ b/core/src/com/google/zxing/client/result/VCardResultParser.java @@ -26,7 +26,7 @@ import java.util.Vector; * * @author srowen@google.com (Sean Owen) */ -public final class VCardResultParser extends ResultParser { +final class VCardResultParser extends ResultParser { private VCardResultParser() { } @@ -65,7 +65,7 @@ public final class VCardResultParser extends ResultParser { if (i < 0) { break; } - if (rawText.charAt(i - 1) != '\n') { + if (i > 0 && rawText.charAt(i - 1) != '\n') { // then this didn't start a new token, we matched in the middle of something i++; continue; @@ -103,7 +103,7 @@ public final class VCardResultParser extends ResultParser { return toStringArray(matches); } - private static String matchSingleVCardPrefixedField(String prefix, String rawText) { + static String matchSingleVCardPrefixedField(String prefix, String rawText) { String[] values = matchVCardPrefixedField(prefix, rawText); return values == null ? null : values[0]; } diff --git a/core/src/com/google/zxing/client/result/VEventResultParser.java b/core/src/com/google/zxing/client/result/VEventResultParser.java new file mode 100644 index 00000000..188e2d0b --- /dev/null +++ b/core/src/com/google/zxing/client/result/VEventResultParser.java @@ -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.Result; + +/** + * Partially implements the iCalendar format's "VEVENT" format for specifying a + * calendar event. See RFC 2445. This supports SUMMARY, DTSTART and DTEND fields. + * + * @author srowen@google.com (Sean Owen) + */ +final class VEventResultParser extends ResultParser { + + private VEventResultParser() { + } + + public static CalendarParsedResult parse(Result result) { + String rawText = result.getText(); + if (rawText == null) { + return null; + } + int vEventStart = rawText.indexOf("BEGIN:VEVENT"); + int vEventEnd = rawText.indexOf("END:VEVENT"); + if (vEventStart < 0 || vEventEnd < 0) { + return null; + } + rawText = rawText.substring(vEventStart + 14, vEventEnd); // skip over BEGIN:VEVENT\r\n at start + + String summary = VCardResultParser.matchSingleVCardPrefixedField("SUMMARY", rawText); + String start = VCardResultParser.matchSingleVCardPrefixedField("DTSTART", rawText); + String end = VCardResultParser.matchSingleVCardPrefixedField("DTEND", rawText); + try { + return new CalendarParsedResult(summary, start, end, null, null, null); + } catch (IllegalArgumentException iae) { + return null; + } + } + +} \ No newline at end of file diff --git a/core/src/com/google/zxing/client/result/optional/MobileTagMMSResultParser.java b/core/src/com/google/zxing/client/result/optional/MobileTagMMSResultParser.java index 17d97d98..9a13c5eb 100644 --- a/core/src/com/google/zxing/client/result/optional/MobileTagMMSResultParser.java +++ b/core/src/com/google/zxing/client/result/optional/MobileTagMMSResultParser.java @@ -26,7 +26,7 @@ import com.google.zxing.client.result.SMSParsedResult; * * @author srowen@google.com (Sean Owen) */ -public final class MobileTagMMSResultParser extends AbstractMobileTagResultParser { +final class MobileTagMMSResultParser extends AbstractMobileTagResultParser { public static final String SERVICE_TYPE = "05"; diff --git a/core/src/com/google/zxing/client/result/optional/MobileTagRichWebResultParser.java b/core/src/com/google/zxing/client/result/optional/MobileTagRichWebResultParser.java index 99d3361d..2d1996fa 100644 --- a/core/src/com/google/zxing/client/result/optional/MobileTagRichWebResultParser.java +++ b/core/src/com/google/zxing/client/result/optional/MobileTagRichWebResultParser.java @@ -25,7 +25,7 @@ import com.google.zxing.Result; * * @author srowen@google.com (Sean Owen) */ -public final class MobileTagRichWebResultParser extends AbstractMobileTagResultParser { +final class MobileTagRichWebResultParser extends AbstractMobileTagResultParser { public static final String SERVICE_TYPE = "54"; diff --git a/core/src/com/google/zxing/client/result/optional/MobileTagSMSResultParser.java b/core/src/com/google/zxing/client/result/optional/MobileTagSMSResultParser.java index e5ee3bf8..107ac7f6 100644 --- a/core/src/com/google/zxing/client/result/optional/MobileTagSMSResultParser.java +++ b/core/src/com/google/zxing/client/result/optional/MobileTagSMSResultParser.java @@ -26,7 +26,7 @@ import com.google.zxing.client.result.SMSParsedResult; * * @author srowen@google.com (Sean Owen) */ -public final class MobileTagSMSResultParser extends AbstractMobileTagResultParser { +final class MobileTagSMSResultParser extends AbstractMobileTagResultParser { public static final String SERVICE_TYPE = "03"; diff --git a/core/src/com/google/zxing/client/result/optional/MobileTagSimpleCalendarResultParser.java b/core/src/com/google/zxing/client/result/optional/MobileTagSimpleCalendarResultParser.java index 34f70935..e3af27fd 100644 --- a/core/src/com/google/zxing/client/result/optional/MobileTagSimpleCalendarResultParser.java +++ b/core/src/com/google/zxing/client/result/optional/MobileTagSimpleCalendarResultParser.java @@ -26,7 +26,7 @@ import com.google.zxing.client.result.CalendarParsedResult; * * @author srowen@google.com (Sean Owen) */ -public final class MobileTagSimpleCalendarResultParser extends AbstractMobileTagResultParser { +final class MobileTagSimpleCalendarResultParser extends AbstractMobileTagResultParser { public static final String SERVICE_TYPE = "07"; @@ -50,7 +50,11 @@ public final class MobileTagSimpleCalendarResultParser extends AbstractMobileTag String attendee = matches[4]; String title = matches[5]; - return new CalendarParsedResult(summary, start, end, location, attendee, title); + try { + return new CalendarParsedResult(summary, start, end, location, attendee, title); + } catch (IllegalArgumentException iae) { + return null; + } } private static String expandDateString(String date) { diff --git a/core/src/com/google/zxing/client/result/optional/MobileTagSimpleContactResultParser.java b/core/src/com/google/zxing/client/result/optional/MobileTagSimpleContactResultParser.java index 261ebb46..fa6eacce 100644 --- a/core/src/com/google/zxing/client/result/optional/MobileTagSimpleContactResultParser.java +++ b/core/src/com/google/zxing/client/result/optional/MobileTagSimpleContactResultParser.java @@ -26,7 +26,7 @@ import com.google.zxing.client.result.AddressBookParsedResult; * * @author srowen@google.com (Sean Owen) */ -public final class MobileTagSimpleContactResultParser extends AbstractMobileTagResultParser { +final class MobileTagSimpleContactResultParser extends AbstractMobileTagResultParser { public static final String SERVICE_TYPE = "02"; diff --git a/core/src/com/google/zxing/client/result/optional/MobileTagSimpleWebResultParser.java b/core/src/com/google/zxing/client/result/optional/MobileTagSimpleWebResultParser.java index 6abc7236..c805a9d2 100644 --- a/core/src/com/google/zxing/client/result/optional/MobileTagSimpleWebResultParser.java +++ b/core/src/com/google/zxing/client/result/optional/MobileTagSimpleWebResultParser.java @@ -26,7 +26,7 @@ import com.google.zxing.client.result.URIParsedResult; * * @author srowen@google.com (Sean Owen) */ -public final class MobileTagSimpleWebResultParser extends AbstractMobileTagResultParser { +final class MobileTagSimpleWebResultParser extends AbstractMobileTagResultParser { public static final String SERVICE_TYPE = "04"; private static final String[] URI_PREFIXES = { diff --git a/core/src/com/google/zxing/client/result/optional/MobileTagTelResultParser.java b/core/src/com/google/zxing/client/result/optional/MobileTagTelResultParser.java index 0c8a674f..8ac31e22 100644 --- a/core/src/com/google/zxing/client/result/optional/MobileTagTelResultParser.java +++ b/core/src/com/google/zxing/client/result/optional/MobileTagTelResultParser.java @@ -26,7 +26,7 @@ import com.google.zxing.client.result.TelParsedResult; * * @author srowen@google.com (Sean Owen) */ -public final class MobileTagTelResultParser extends AbstractMobileTagResultParser { +final class MobileTagTelResultParser extends AbstractMobileTagResultParser { public static final String SERVICE_TYPE = "01"; diff --git a/core/src/com/google/zxing/client/result/optional/NDEFSmartPosterParsedResult.java b/core/src/com/google/zxing/client/result/optional/NDEFSmartPosterParsedResult.java index 2ea126c0..4ed5bac4 100644 --- a/core/src/com/google/zxing/client/result/optional/NDEFSmartPosterParsedResult.java +++ b/core/src/com/google/zxing/client/result/optional/NDEFSmartPosterParsedResult.java @@ -29,9 +29,9 @@ public final class NDEFSmartPosterParsedResult extends ParsedResult { public static final int ACTION_SAVE = 1; public static final int ACTION_OPEN = 2; - private String title; - private String uri; - private int action; + private final String title; + private final String uri; + private final int action; NDEFSmartPosterParsedResult(int action, String uri, String title) { super(ParsedResultType.NDEF_SMART_POSTER); diff --git a/core/src/com/google/zxing/client/result/optional/NDEFSmartPosterResultParser.java b/core/src/com/google/zxing/client/result/optional/NDEFSmartPosterResultParser.java index ee9a9bab..00b97555 100644 --- a/core/src/com/google/zxing/client/result/optional/NDEFSmartPosterResultParser.java +++ b/core/src/com/google/zxing/client/result/optional/NDEFSmartPosterResultParser.java @@ -29,7 +29,7 @@ import com.google.zxing.Result; * * @author srowen@google.com (Sean Owen) */ -public final class NDEFSmartPosterResultParser extends AbstractNDEFResultParser { +final class NDEFSmartPosterResultParser extends AbstractNDEFResultParser { public static NDEFSmartPosterParsedResult parse(Result result) { byte[] bytes = result.getRawBytes(); diff --git a/core/src/com/google/zxing/client/result/optional/NDEFTextResultParser.java b/core/src/com/google/zxing/client/result/optional/NDEFTextResultParser.java index 02dd65d4..02ad6cd7 100644 --- a/core/src/com/google/zxing/client/result/optional/NDEFTextResultParser.java +++ b/core/src/com/google/zxing/client/result/optional/NDEFTextResultParser.java @@ -25,7 +25,7 @@ import com.google.zxing.client.result.TextParsedResult; * * @author srowen@google.com (Sean Owen) */ -public final class NDEFTextResultParser extends AbstractNDEFResultParser { +final class NDEFTextResultParser extends AbstractNDEFResultParser { public static TextParsedResult parse(Result result) { byte[] bytes = result.getRawBytes(); diff --git a/core/src/com/google/zxing/client/result/optional/NDEFURIResultParser.java b/core/src/com/google/zxing/client/result/optional/NDEFURIResultParser.java index 3337fee3..87b94025 100644 --- a/core/src/com/google/zxing/client/result/optional/NDEFURIResultParser.java +++ b/core/src/com/google/zxing/client/result/optional/NDEFURIResultParser.java @@ -25,7 +25,7 @@ import com.google.zxing.client.result.URIParsedResult; * * @author srowen@google.com (Sean Owen) */ -public final class NDEFURIResultParser extends AbstractNDEFResultParser { +final class NDEFURIResultParser extends AbstractNDEFResultParser { private static final String[] URI_PREFIXES = { null, diff --git a/core/src/com/google/zxing/common/GridSampler.java b/core/src/com/google/zxing/common/GridSampler.java index 92ae233a..c99140c1 100644 --- a/core/src/com/google/zxing/common/GridSampler.java +++ b/core/src/com/google/zxing/common/GridSampler.java @@ -111,7 +111,7 @@ public abstract class GridSampler { * @param points actual points in x1,y1,...,xn,yn form * @throws ReaderException if an endpoint is lies outside the image boundaries */ - protected static void checkAndNudgePoints(MonochromeBitmapSource image, float[] points) throws ReaderException { + static void checkAndNudgePoints(MonochromeBitmapSource image, float[] points) throws ReaderException { int width = image.getWidth(); int height = image.getHeight(); // Check and nudge points from start until we see some that are OK: diff --git a/core/src/com/google/zxing/datamatrix/decoder/DataBlock.java b/core/src/com/google/zxing/datamatrix/decoder/DataBlock.java index 038b8e07..9a1b4e29 100644 --- a/core/src/com/google/zxing/datamatrix/decoder/DataBlock.java +++ b/core/src/com/google/zxing/datamatrix/decoder/DataBlock.java @@ -71,7 +71,7 @@ final class DataBlock { // (where n may be 0) have 1 less byte. Figure out where these start. // TODO(bbrown): There is only one case where there is a difference for Data Matrix for size 144 int longerBlocksTotalCodewords = result[0].codewords.length; - int shorterBlocksTotalCodewords = longerBlocksTotalCodewords - 1; + //int shorterBlocksTotalCodewords = longerBlocksTotalCodewords - 1; int longerBlocksNumDataCodewords = longerBlocksTotalCodewords - ecBlocks.getECCodewords(); int shorterBlocksNumDataCodewords = longerBlocksNumDataCodewords - 1; diff --git a/core/src/com/google/zxing/datamatrix/decoder/DecodedBitStreamParser.java b/core/src/com/google/zxing/datamatrix/decoder/DecodedBitStreamParser.java index 91e4d504..c2c42c32 100644 --- a/core/src/com/google/zxing/datamatrix/decoder/DecodedBitStreamParser.java +++ b/core/src/com/google/zxing/datamatrix/decoder/DecodedBitStreamParser.java @@ -231,7 +231,7 @@ final class DecodedBitStreamParser { result.append((char) (cValues[i] + 224)); upperShift = false; } else { - result.append((char) cValues[i] + 96); + result.append((char) (cValues[i] + 96)); } } else { throw new ReaderException("Invalid shift value"); @@ -296,7 +296,7 @@ final class DecodedBitStreamParser { result.append((char) (cValues[i] + 128)); upperShift = false; } else { - result.append((char) cValues[i]); + result.append(cValues[i]); } } else if (shift == 2) { // Shift 2 for Text is the same encoding as C40 @@ -406,7 +406,7 @@ final class DecodedBitStreamParser { if ((edifactValue & 32) == 0) { // no 1 in the leading (6th) bit edifactValue |= 64; // Add a leading 01 to the 6 bit binary value } - result.append((char) edifactValue); + result.append(edifactValue); } } } while (!unlatch && bits.available() > 0); @@ -428,7 +428,6 @@ final class DecodedBitStreamParser { } else { count = 250 * (d1 - 249) + bits.readBits(8); } - char[] readBytes = new char[count]; for (int i = 0; i < count; i++) { result.append(unrandomize255State((char) bits.readBits(8), count)); } diff --git a/core/src/com/google/zxing/oned/AbstractOneDReader.java b/core/src/com/google/zxing/oned/AbstractOneDReader.java index 63d4ce87..0b69b346 100644 --- a/core/src/com/google/zxing/oned/AbstractOneDReader.java +++ b/core/src/com/google/zxing/oned/AbstractOneDReader.java @@ -36,7 +36,7 @@ import java.util.Hashtable; public abstract class AbstractOneDReader implements OneDReader { private static final int INTEGER_MATH_SHIFT = 8; - public static final int PATTERN_MATCH_RESULT_SCALE_FACTOR = 1 << INTEGER_MATH_SHIFT; + static final int PATTERN_MATCH_RESULT_SCALE_FACTOR = 1 << INTEGER_MATH_SHIFT; public final Result decode(MonochromeBitmapSource image) throws ReaderException { return decode(image, null); diff --git a/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java b/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java index 8e06a1f7..9cde0330 100644 --- a/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java +++ b/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java @@ -111,7 +111,14 @@ public final class ParsedReaderResultTestCase extends TestCase { doTestResult("BEGIN:VCARD\r\nN:Owen;Sean\r\nEND:VCARD", ParsedResultType.ADDRESSBOOK); doTestResult("BEGIN:VCARD\r\nVERSION:2.1\r\nN:Owen;Sean\r\nEND:VCARD", ParsedResultType.ADDRESSBOOK); doTestResult("BEGIN:VCARD\r\nADR;HOME:123 Main St\r\nVERSION:2.1\r\nN:Owen;Sean\r\nEND:VCARD", ParsedResultType.ADDRESSBOOK); - doTestResult("BEGIN:VCARD", ParsedResultType.URI); + doTestResult("BEGIN:VCARD", ParsedResultType.URI); // yeah we end up guessing "URI" here + } + + public void testVEvent() { + doTestResult("BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nSUMMARY:foo\r\nDTSTART:20080504T123456Z\r\nDTEND:20080505T234555Z\r\nEND:VEVENT\r\nEND:VCALENDAR", ParsedResultType.CALENDAR); + doTestResult("BEGIN:VEVENT\r\nSUMMARY:foo\r\nDTSTART:20080504T123456Z\r\nDTEND:20080505T234555Z\r\nEND:VEVENT", ParsedResultType.CALENDAR); + doTestResult("BEGIN:VEVENT\r\nDTEND:20080505T\r\nEND:VEVENT", ParsedResultType.TEXT); + doTestResult("BEGIN:VEVENT", ParsedResultType.URI); // See above note on why this is URI } public void testSMS() { @@ -174,11 +181,13 @@ public final class ParsedReaderResultTestCase extends TestCase { assertEquals(type, result.getType()); } + /* private static void doTestResult(byte[] rawBytes, ParsedResultType type) { Result fakeResult = new Result(null, rawBytes, null, null); ParsedResult result = ResultParser.parseResult(fakeResult); assertNotNull(result); assertEquals(type, result.getType()); } + */ } \ No newline at end of file -- 2.20.1