Android Open Source - android-store Market Item






From Project

Back to project page android-store.

License

The source code is released under:

Copyright (c) 2012 SOOMLA http://project.soom.la/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to...

If you think the Android project android-store 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 (C) 2012-2014 Soomla Inc./*from  ww  w .j  a  v  a2s.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.soomla.store.domain;

import com.soomla.SoomlaUtils;
import com.soomla.data.JSONConsts;
import com.soomla.store.data.StoreJSONConsts;

import org.json.JSONException;
import org.json.JSONObject;

/**
 * A representation of an item in the market.
 * <code>MarketItem</code> is only used for <code>PurchaseWithMarket</code> purchase type.
 */
public class MarketItem {

    /**
     * Constructor.
     *
     * @param mProductId the id of the current item in the market
     * @param mManaged the Managed type of the current item in the market
     * @param mPrice the actual $$ cost of the current item in the market
     */
    public MarketItem(String mProductId, Managed mManaged, double mPrice) {
        this.mProductId = mProductId;
        this.mManaged = mManaged;
        this.mPrice = mPrice;
    }

    /**
     * Constructor.
     * Generates an instance of <code>MarketItem</code> from a <code>JSONObject</code>.
     *
     * @param jsonObject a <code>JSONObject</code> representation of the wanted
     *                   <code>MarketItem</code>.
     * @throws JSONException
     */
    public MarketItem(JSONObject jsonObject) throws JSONException {
        if (jsonObject.has(StoreJSONConsts.MARKETITEM_MANAGED)) {
            this.mManaged = Managed.values()[jsonObject.getInt(StoreJSONConsts.MARKETITEM_MANAGED)];
        } else {
            this.mManaged = Managed.UNMANAGED;
        }
        if (jsonObject.has(StoreJSONConsts.MARKETITEM_ANDROID_ID)) {
            this.mProductId = jsonObject.getString(StoreJSONConsts.MARKETITEM_ANDROID_ID);
        } else {
            this.mProductId = jsonObject.getString(StoreJSONConsts.MARKETITEM_PRODUCT_ID);
        }
        this.mPrice = jsonObject.getDouble(StoreJSONConsts.MARKETITEM_PRICE);

        this.mMarketPriceAndCurrency = jsonObject.optString(StoreJSONConsts.MARKETITEM_MARKETPRICE);
        this.mMarketTitle = jsonObject.optString(StoreJSONConsts.MARKETITEM_MARKETTITLE);
        this.mMarketDescription = jsonObject.optString(StoreJSONConsts.MARKETITEM_MARKETDESC);
        this.mMarketCurrencyCode = jsonObject.optString(StoreJSONConsts.MARKETITEM_MARKETCURRENCYCODE);
        this.mMarketPriceMicros = jsonObject.optLong(StoreJSONConsts.MARKETITEM_MARKETPRICEMICROS);
    }

    /**
     * Converts the current <code>MarketItem</code> to a <code>JSONObject</code>.
     *
     * @return A <code>JSONObject</code> representation of the current <code>MarketItem</code>.
     */
    public JSONObject toJSONObject(){
        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject.put(JSONConsts.SOOM_CLASSNAME, SoomlaUtils.getClassName(this));

            jsonObject.put(StoreJSONConsts.MARKETITEM_MANAGED, mManaged.ordinal());
            jsonObject.put(StoreJSONConsts.MARKETITEM_ANDROID_ID, mProductId);
            jsonObject.put(StoreJSONConsts.MARKETITEM_PRICE, Double.valueOf(mPrice));

            jsonObject.put(StoreJSONConsts.MARKETITEM_MARKETPRICE, mMarketPriceAndCurrency);
            jsonObject.put(StoreJSONConsts.MARKETITEM_MARKETTITLE, mMarketTitle);
            jsonObject.put(StoreJSONConsts.MARKETITEM_MARKETDESC, mMarketDescription);
            jsonObject.put(StoreJSONConsts.MARKETITEM_MARKETCURRENCYCODE, mMarketCurrencyCode);
            jsonObject.put(StoreJSONConsts.MARKETITEM_MARKETPRICEMICROS, Long.valueOf(mMarketPriceMicros));
        } catch (JSONException e) {
            SoomlaUtils.LogError(TAG, "An error occurred while generating JSON object.");
        }

        return jsonObject;
    }

    /**
     * Each product in the catalog can be MANAGED, UNMANAGED, or SUBSCRIPTION.
     * MANAGED means that the product can be purchased only once per user (such as a new level in
     * a game). This purchase is remembered by the Market and can be restored if this
     * application is uninstalled and then re-installed.
     * UNMANAGED is used for products that can be used up and purchased multiple times (such as
     * "gold coins"). It is up to the application to keep track of UNMANAGED products for the user.
     * SUBSCRIPTION is just like MANAGED except that the user gets charged periodically (monthly
     * or yearly).
     */
    public static enum Managed { MANAGED, UNMANAGED, SUBSCRIPTION }


    /** Setters and Getters **/

    public void setMarketInformation(String marketPriceAndCurrency, String marketTitle, String marketDescription, String marketCurrencyCode, long marketPriceMicros) {
        this.mMarketPriceAndCurrency = marketPriceAndCurrency;
        this.mMarketTitle = marketTitle;
        this.mMarketDescription = marketDescription;
        this.mMarketCurrencyCode = marketCurrencyCode;
        this.mMarketPriceMicros = marketPriceMicros;
    }

    public String getProductId() {
        return mProductId;
    }

    public Managed getManaged() {
        return mManaged;
    }

    public void setManaged(Managed managed) {
        this.mManaged = managed;
    }

    public double getPrice() {
        return mPrice;
    }


    /** Realtime Infomation from the Google Play Store **/

    @Deprecated
    public String getMarketPrice() {
        return getMarketPriceAndCurrency();
    }

    public String getMarketPriceAndCurrency() { return mMarketPriceAndCurrency; }

    public String getMarketTitle() {
        return mMarketTitle;
    }

    public String getMarketDescription() {
        return mMarketDescription;
    }

    public String getMarketCurrencyCode() {
        return mMarketCurrencyCode;
    }

    public long getMarketPriceMicros() {
        return mMarketPriceMicros;
    }


    /** Private Members **/

    private static final String TAG = "SOOMLA MarketItem"; //used for Log messages

    private Managed mManaged; //the Managed type of the current item in the market.

    private String mProductId; //id of this VirtualGood in the market

    private double mPrice; //the actual $$ cost of the current item in the market.

    private String mMarketPriceAndCurrency;

    private String mMarketTitle;

    private String mMarketDescription;

    private String mMarketCurrencyCode;

    private long mMarketPriceMicros;
}




Java Source Code List

com.soomla.example.ExampleEventHandler.java
com.soomla.example.MuffinRushAssets.java
com.soomla.example.StoreExampleActivity.java
com.soomla.example.StoreGoodsActivity.java
com.soomla.example.StorePacksActivity.java
com.soomla.rewards.VirtualItemReward.java
com.soomla.store.IStoreAssets.java
com.soomla.store.SoomlaStore.java
com.soomla.store.StoreConfig.java
com.soomla.store.StoreForeground.java
com.soomla.store.StoreInventory.java
com.soomla.store.billing.IIabService.java
com.soomla.store.billing.IabCallbacks.java
com.soomla.store.billing.IabException.java
com.soomla.store.billing.IabHelper.java
com.soomla.store.billing.IabInventory.java
com.soomla.store.billing.IabPurchase.java
com.soomla.store.billing.IabResult.java
com.soomla.store.billing.IabSkuDetails.java
com.soomla.store.data.StorageManager.java
com.soomla.store.data.StoreInfo.java
com.soomla.store.data.StoreJSONConsts.java
com.soomla.store.data.VirtualCurrencyStorage.java
com.soomla.store.data.VirtualGoodsStorage.java
com.soomla.store.data.VirtualItemStorage.java
com.soomla.store.domain.MarketItem.java
com.soomla.store.domain.PurchasableVirtualItem.java
com.soomla.store.domain.VirtualCategory.java
com.soomla.store.domain.VirtualItem.java
com.soomla.store.domain.virtualCurrencies.VirtualCurrencyPack.java
com.soomla.store.domain.virtualCurrencies.VirtualCurrency.java
com.soomla.store.domain.virtualGoods.EquippableVG.java
com.soomla.store.domain.virtualGoods.LifetimeVG.java
com.soomla.store.domain.virtualGoods.SingleUsePackVG.java
com.soomla.store.domain.virtualGoods.SingleUseVG.java
com.soomla.store.domain.virtualGoods.UpgradeVG.java
com.soomla.store.domain.virtualGoods.VirtualGood.java
com.soomla.store.events.BillingNotSupportedEvent.java
com.soomla.store.events.BillingSupportedEvent.java
com.soomla.store.events.CurrencyBalanceChangedEvent.java
com.soomla.store.events.GoodBalanceChangedEvent.java
com.soomla.store.events.GoodEquippedEvent.java
com.soomla.store.events.GoodUnEquippedEvent.java
com.soomla.store.events.GoodUpgradeEvent.java
com.soomla.store.events.IabServiceStartedEvent.java
com.soomla.store.events.IabServiceStoppedEvent.java
com.soomla.store.events.ItemPurchaseStartedEvent.java
com.soomla.store.events.ItemPurchasedEvent.java
com.soomla.store.events.MarketItemsRefreshFinishedEvent.java
com.soomla.store.events.MarketItemsRefreshStartedEvent.java
com.soomla.store.events.MarketPurchaseCancelledEvent.java
com.soomla.store.events.MarketPurchaseEvent.java
com.soomla.store.events.MarketPurchaseStartedEvent.java
com.soomla.store.events.MarketRefundEvent.java
com.soomla.store.events.RestoreTransactionsFinishedEvent.java
com.soomla.store.events.RestoreTransactionsStartedEvent.java
com.soomla.store.events.SoomlaStoreInitializedEvent.java
com.soomla.store.events.UnexpectedStoreErrorEvent.java
com.soomla.store.exceptions.InsufficientFundsException.java
com.soomla.store.exceptions.NotEnoughGoodsException.java
com.soomla.store.exceptions.VirtualItemNotFoundException.java
com.soomla.store.purchaseTypes.PurchaseType.java
com.soomla.store.purchaseTypes.PurchaseWithMarket.java
com.soomla.store.purchaseTypes.PurchaseWithVirtualItem.java