Android Open Source - final_app Amazon Info Retriever






From Project

Back to project page final_app.

License

The source code is released under:

CC0 1.0 Universal Statement of Purpose The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent...

If you think the Android project final_app listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2013 ZXing authors// w w  w . j a  va 2  s  . c o  m
 *
 * 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.android.result.supplement;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Locale;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import android.content.Context;
import android.widget.TextView;

import com.google.zxing.client.android.HttpHelper;
import com.google.zxing.client.android.LocaleManager;
import com.google.zxing.client.android.history.HistoryManager;

/**
 * @author Sean Owen
 */
final class AmazonInfoRetriever extends SupplementalInfoRetriever {

  private final String type;
  private final String productID;
  private final String country;

  AmazonInfoRetriever(TextView textView, String type, String productID, HistoryManager historyManager, Context context) {
    super(textView, historyManager);
    String country = LocaleManager.getCountry(context);
    if ("ISBN".equals(type) && !Locale.US.getCountry().equals(country)) {
      type = "EAN";
    }
    this.type = type;
    this.productID = productID;
    this.country = country;
  }

  @Override
  void retrieveSupplementalInfo() throws IOException {
    boolean success = doRetrieveForCountry(country);
    if (!success && !"US".equals(country)) {
      // Also show US results to expand scope of results
      doRetrieveForCountry("US");
    }
  }

  private boolean doRetrieveForCountry(String theCountry) throws IOException {

    CharSequence contents = HttpHelper.downloadViaHttp("https://bsplus.srowen.com/ss?c=" + theCountry + "&t=" + type + "&i=" + productID,
        HttpHelper.ContentType.XML);

    String detailPageURL = null;
    Collection<String> authors = new ArrayList<String>();
    String title = null;
    String formattedNewPrice = null;
    String formattedUsedPrice = null;
    boolean error = false;

    try {
      XmlPullParser xpp = buildParser(contents);

      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();
          if ("Item".equals(name)) {
            if (seenItem) {
              break;
            } else {
              seenItem = true;
            }
          } else if ("DetailPageURL".equals(name)) {
            assertTextNext(xpp);
            detailPageURL = xpp.getText();
          } else if ("Author".equals(name)) {
            assertTextNext(xpp);
            authors.add(xpp.getText());
          } else if ("Title".equals(name)) {
            assertTextNext(xpp);
            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 || seenLowestUsedPrice) {
              assertTextNext(xpp);
              String theText = xpp.getText();
              if (seenLowestNewPrice) {
                formattedNewPrice = theText;
              } else {
                formattedUsedPrice = theText;
              }
              seenLowestNewPrice = false;
              seenLowestUsedPrice = false;
            }
          } else if ("Errors".equals(name)) {
            error = true;
            break;
          }
        }
      }

    } catch (XmlPullParserException xppe) {
      throw new IOException(xppe);
    }

    if (error || detailPageURL == null) {
      return false;
    }

    Collection<String> newTexts = new ArrayList<String>();
    maybeAddText(title, newTexts);
    maybeAddTextSeries(authors, newTexts);
    if (formattedNewPrice != null) {
      maybeAddText(formattedNewPrice, newTexts);
    } else if (formattedUsedPrice != null) {
      maybeAddText(formattedUsedPrice, newTexts);
    }

    append(productID, "Amazon " + theCountry, newTexts.toArray(new String[newTexts.size()]), detailPageURL);
    return true;
  }

  private static void assertTextNext(XmlPullParser xpp) throws XmlPullParserException, IOException {
    if (xpp.next() != XmlPullParser.TEXT) {
      throw new IOException();
    }
  }

  private static XmlPullParser buildParser(CharSequence contents) throws XmlPullParserException {
    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
    factory.setNamespaceAware(true);
    XmlPullParser xpp = factory.newPullParser();
    xpp.setInput(new StringReader(contents.toString()));
    return xpp;
  }

}




Java Source Code List

com.google.zxing.client.android.AmbientLightManager.java
com.google.zxing.client.android.BeepManager.java
com.google.zxing.client.android.CaptureActivityHandler.java
com.google.zxing.client.android.CaptureActivity.java
com.google.zxing.client.android.Contents.java
com.google.zxing.client.android.DecodeFormatManager.java
com.google.zxing.client.android.DecodeHandler.java
com.google.zxing.client.android.DecodeHintManager.java
com.google.zxing.client.android.DecodeThread.java
com.google.zxing.client.android.FinishListener.java
com.google.zxing.client.android.HelpActivity.java
com.google.zxing.client.android.HttpHelper.java
com.google.zxing.client.android.InactivityTimer.java
com.google.zxing.client.android.IntentSource.java
com.google.zxing.client.android.Intents.java
com.google.zxing.client.android.LocaleManager.java
com.google.zxing.client.android.PreferencesActivity.java
com.google.zxing.client.android.PreferencesFragment.java
com.google.zxing.client.android.ScanFromWebPageManager.java
com.google.zxing.client.android.ViewfinderResultPointCallback.java
com.google.zxing.client.android.ViewfinderView.java
com.google.zxing.client.android.book.BrowseBookListener.java
com.google.zxing.client.android.book.SearchBookContentsActivity.java
com.google.zxing.client.android.book.SearchBookContentsAdapter.java
com.google.zxing.client.android.book.SearchBookContentsListItem.java
com.google.zxing.client.android.book.SearchBookContentsResult.java
com.google.zxing.client.android.camera.AutoFocusManager.java
com.google.zxing.client.android.camera.CameraConfigurationManager.java
com.google.zxing.client.android.camera.CameraManager.java
com.google.zxing.client.android.camera.FrontLightMode.java
com.google.zxing.client.android.camera.PreviewCallback.java
com.google.zxing.client.android.camera.open.OpenCameraInterface.java
com.google.zxing.client.android.clipboard.ClipboardInterface.java
com.google.zxing.client.android.encode.ContactEncoder.java
com.google.zxing.client.android.encode.EncodeActivity.java
com.google.zxing.client.android.encode.Formatter.java
com.google.zxing.client.android.encode.MECARDContactEncoder.java
com.google.zxing.client.android.encode.QRCodeEncoder.java
com.google.zxing.client.android.encode.VCardContactEncoder.java
com.google.zxing.client.android.history.DBHelper.java
com.google.zxing.client.android.history.HistoryActivity.java
com.google.zxing.client.android.history.HistoryItemAdapter.java
com.google.zxing.client.android.history.HistoryItem.java
com.google.zxing.client.android.history.HistoryManager.java
com.google.zxing.client.android.result.AddressBookResultHandler.java
com.google.zxing.client.android.result.CalendarResultHandler.java
com.google.zxing.client.android.result.EmailAddressResultHandler.java
com.google.zxing.client.android.result.GeoResultHandler.java
com.google.zxing.client.android.result.ISBNResultHandler.java
com.google.zxing.client.android.result.ProductResultHandler.java
com.google.zxing.client.android.result.ResultButtonListener.java
com.google.zxing.client.android.result.ResultHandlerFactory.java
com.google.zxing.client.android.result.ResultHandler.java
com.google.zxing.client.android.result.SMSResultHandler.java
com.google.zxing.client.android.result.TelResultHandler.java
com.google.zxing.client.android.result.TextResultHandler.java
com.google.zxing.client.android.result.URIResultHandler.java
com.google.zxing.client.android.result.WifiResultHandler.java
com.google.zxing.client.android.result.supplement.AmazonInfoRetriever.java
com.google.zxing.client.android.result.supplement.BookResultInfoRetriever.java
com.google.zxing.client.android.result.supplement.ProductResultInfoRetriever.java
com.google.zxing.client.android.result.supplement.SupplementalInfoRetriever.java
com.google.zxing.client.android.result.supplement.TitleRetriever.java
com.google.zxing.client.android.result.supplement.URIResultInfoRetriever.java
com.google.zxing.client.android.share.AppInfo.java
com.google.zxing.client.android.share.AppPickerActivity.java
com.google.zxing.client.android.share.BookmarkAdapter.java
com.google.zxing.client.android.share.BookmarkPickerActivity.java
com.google.zxing.client.android.share.LoadPackagesAsyncTask.java
com.google.zxing.client.android.share.ShareActivity.java
com.google.zxing.client.android.wifi.NetworkType.java
com.google.zxing.client.android.wifi.WifiConfigManager.java
com.google.zxing.integration.android.IntentIntegrator.java
com.google.zxing.integration.android.IntentResult.java
edu.cascadia.campusdirections.InstructionsFragment.java
edu.cascadia.campusdirections.MainActivity.java
edu.cascadia.campusdirections.SearchFragment.java
edu.cascadia.campusdirections.SplashScreen.java