From d539107e471ef19dff04f6e1ba2f01f42d898198 Mon Sep 17 00:00:00 2001 From: "srowen@gmail.com" Date: Sat, 15 Jun 2013 13:08:17 +0000 Subject: [PATCH] Show used prices if no new price is available, and search for expanded UPC-A value from UPC-E git-svn-id: https://zxing.googlecode.com/svn/trunk@2817 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- .../supplement/AmazonInfoRetriever.java | 25 ++++++++++++++++--- .../supplement/SupplementalInfoRetriever.java | 8 +++--- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/android/src/com/google/zxing/client/android/result/supplement/AmazonInfoRetriever.java b/android/src/com/google/zxing/client/android/result/supplement/AmazonInfoRetriever.java index 6e38e392c..d07a4c7ca 100644 --- a/android/src/com/google/zxing/client/android/result/supplement/AmazonInfoRetriever.java +++ b/android/src/com/google/zxing/client/android/result/supplement/AmazonInfoRetriever.java @@ -65,7 +65,8 @@ final class AmazonInfoRetriever extends SupplementalInfoRetriever { String detailPageURL = null; Collection authors = new ArrayList(); String title = null; - String formattedPrice = null; + String formattedNewPrice = null; + String formattedUsedPrice = null; boolean error = false; try { @@ -73,6 +74,8 @@ final class AmazonInfoRetriever extends SupplementalInfoRetriever { boolean seenItem = false; boolean seenLowestNewPrice = false; + boolean seenLowestUsedPrice = false; + for (int eventType = xpp.getEventType(); eventType != XmlPullParser.END_DOCUMENT; eventType = xpp.next()) { if (eventType == XmlPullParser.START_TAG) { String name = xpp.getName(); @@ -93,11 +96,21 @@ final class AmazonInfoRetriever extends SupplementalInfoRetriever { title = xpp.getText(); } else if ("LowestNewPrice".equals(name)) { seenLowestNewPrice = true; + seenLowestUsedPrice = false; + } else if ("LowestUsedPrice".equals(name)) { + seenLowestNewPrice = false; + seenLowestUsedPrice = true; } else if ("FormattedPrice".equals(name)) { - if (seenLowestNewPrice) { + if (seenLowestNewPrice || seenLowestUsedPrice) { assertTextNext(xpp); - formattedPrice = xpp.getText(); + String theText = xpp.getText(); + if (seenLowestNewPrice) { + formattedNewPrice = theText; + } else { + formattedUsedPrice = theText; + } seenLowestNewPrice = false; + seenLowestUsedPrice = false; } } else if ("Errors".equals(name)) { error = true; @@ -117,7 +130,11 @@ final class AmazonInfoRetriever extends SupplementalInfoRetriever { Collection newTexts = new ArrayList(); maybeAddText(title, newTexts); maybeAddTextSeries(authors, newTexts); - maybeAddText(formattedPrice, newTexts); + if (formattedNewPrice != null) { + maybeAddText(formattedNewPrice, newTexts); + } else if (formattedUsedPrice != null) { + maybeAddText(formattedUsedPrice, newTexts); + } append(productID, "Amazon", newTexts.toArray(new String[newTexts.size()]), detailPageURL); } diff --git a/android/src/com/google/zxing/client/android/result/supplement/SupplementalInfoRetriever.java b/android/src/com/google/zxing/client/android/result/supplement/SupplementalInfoRetriever.java index 522a07071..a065044da 100644 --- a/android/src/com/google/zxing/client/android/result/supplement/SupplementalInfoRetriever.java +++ b/android/src/com/google/zxing/client/android/result/supplement/SupplementalInfoRetriever.java @@ -53,14 +53,16 @@ public abstract class SupplementalInfoRetriever extends AsyncTask