use of com.soomla.store.domain.PurchasableVirtualItem in project android-store by soomla.
the class StoreInventory method buy.
/**
* Buys the item with the given <code>itemId</code>.
*
* @param itemId id of item to be purchased
* @param payload a string you want to be assigned to the purchase. This string
* is saved in a static variable and will be given bacl to you when the
* purchase is completed.
* @throws InsufficientFundsException
* @throws VirtualItemNotFoundException
*/
public static void buy(String itemId, String payload) throws InsufficientFundsException, VirtualItemNotFoundException {
PurchasableVirtualItem pvi = (PurchasableVirtualItem) StoreInfo.getVirtualItem(itemId);
pvi.buy(payload);
}
use of com.soomla.store.domain.PurchasableVirtualItem in project android-store by soomla.
the class StoreInfo method hasMarketIdDuplicates.
/** Private functions **/
/**
* Checks if given storeAssets is correct IStoreAssets instance
*
* @param assetsArray array of successors of PurchasableVirtualItem class.
* @return true if <code>marketId</code> duplicates exists and false otherwise.
*/
private static boolean hasMarketIdDuplicates(PurchasableVirtualItem[] assetsArray) {
HashSet<String> marketItemIds = new HashSet<String>();
for (PurchasableVirtualItem pvi : assetsArray) {
if (pvi.getPurchaseType() instanceof PurchaseWithMarket) {
String currentMarketId = ((PurchaseWithMarket) pvi.getPurchaseType()).getMarketItem().getProductId();
if (marketItemIds.contains(currentMarketId)) {
return true;
}
marketItemIds.add(currentMarketId);
}
}
return false;
}
use of com.soomla.store.domain.PurchasableVirtualItem in project android-store by soomla.
the class StoreInfo method fromJSONObject.
/**
* Transforms given jsonObject to StoreInfo
*
* @param jsonObject
* @throws JSONException
*/
private static void fromJSONObject(JSONObject jsonObject) throws JSONException {
mVirtualItems = new HashMap<String, VirtualItem>();
mPurchasableItems = new HashMap<String, PurchasableVirtualItem>();
mGoodsCategories = new HashMap<String, VirtualCategory>();
mGoodsUpgrades = new HashMap<String, List<UpgradeVG>>();
mCurrencyPacks = new LinkedList<VirtualCurrencyPack>();
mGoods = new LinkedList<VirtualGood>();
mCategories = new LinkedList<VirtualCategory>();
mCurrencies = new LinkedList<VirtualCurrency>();
if (jsonObject.has(StoreJSONConsts.STORE_CURRENCIES)) {
JSONArray virtualCurrencies = jsonObject.getJSONArray(StoreJSONConsts.STORE_CURRENCIES);
for (int i = 0; i < virtualCurrencies.length(); i++) {
JSONObject o = virtualCurrencies.getJSONObject(i);
VirtualCurrency c = new VirtualCurrency(o);
mCurrencies.add(c);
mVirtualItems.put(c.getItemId(), c);
}
}
if (jsonObject.has(StoreJSONConsts.STORE_CURRENCYPACKS)) {
JSONArray currencyPacks = jsonObject.getJSONArray(StoreJSONConsts.STORE_CURRENCYPACKS);
for (int i = 0; i < currencyPacks.length(); i++) {
JSONObject o = currencyPacks.getJSONObject(i);
VirtualCurrencyPack pack = new VirtualCurrencyPack(o);
mCurrencyPacks.add(pack);
mVirtualItems.put(pack.getItemId(), pack);
PurchaseType purchaseType = pack.getPurchaseType();
if (purchaseType instanceof PurchaseWithMarket) {
mPurchasableItems.put(((PurchaseWithMarket) purchaseType).getMarketItem().getProductId(), pack);
}
}
}
// For example: VGU and VGP depend on other VGs
if (jsonObject.has(StoreJSONConsts.STORE_GOODS)) {
JSONObject virtualGoods = jsonObject.getJSONObject(StoreJSONConsts.STORE_GOODS);
if (virtualGoods.has(StoreJSONConsts.STORE_GOODS_SU)) {
JSONArray suGoods = virtualGoods.getJSONArray(StoreJSONConsts.STORE_GOODS_SU);
for (int i = 0; i < suGoods.length(); i++) {
JSONObject o = suGoods.getJSONObject(i);
SingleUseVG g = new SingleUseVG(o);
addVG(g);
}
}
if (virtualGoods.has(StoreJSONConsts.STORE_GOODS_LT)) {
JSONArray ltGoods = virtualGoods.getJSONArray(StoreJSONConsts.STORE_GOODS_LT);
for (int i = 0; i < ltGoods.length(); i++) {
JSONObject o = ltGoods.getJSONObject(i);
LifetimeVG g = new LifetimeVG(o);
addVG(g);
}
}
if (virtualGoods.has(StoreJSONConsts.STORE_GOODS_EQ)) {
JSONArray eqGoods = virtualGoods.getJSONArray(StoreJSONConsts.STORE_GOODS_EQ);
for (int i = 0; i < eqGoods.length(); i++) {
JSONObject o = eqGoods.getJSONObject(i);
EquippableVG g = new EquippableVG(o);
addVG(g);
}
}
if (virtualGoods.has(StoreJSONConsts.STORE_GOODS_PA)) {
JSONArray paGoods = virtualGoods.getJSONArray(StoreJSONConsts.STORE_GOODS_PA);
for (int i = 0; i < paGoods.length(); i++) {
JSONObject o = paGoods.getJSONObject(i);
SingleUsePackVG g = new SingleUsePackVG(o);
addVG(g);
}
}
if (virtualGoods.has(StoreJSONConsts.STORE_GOODS_UP)) {
JSONArray upGoods = virtualGoods.getJSONArray(StoreJSONConsts.STORE_GOODS_UP);
for (int i = 0; i < upGoods.length(); i++) {
JSONObject o = upGoods.getJSONObject(i);
UpgradeVG g = new UpgradeVG(o);
addVG(g);
List<UpgradeVG> upgrades = mGoodsUpgrades.get(g.getGoodItemId());
if (upgrades == null) {
upgrades = new ArrayList<UpgradeVG>();
mGoodsUpgrades.put(g.getGoodItemId(), upgrades);
}
upgrades.add(g);
}
}
}
// Categories depend on virtual goods. That's why the have to be initialized after!
if (jsonObject.has(StoreJSONConsts.STORE_CATEGORIES)) {
JSONArray virtualCategories = jsonObject.getJSONArray(StoreJSONConsts.STORE_CATEGORIES);
for (int i = 0; i < virtualCategories.length(); i++) {
JSONObject o = virtualCategories.getJSONObject(i);
VirtualCategory category = new VirtualCategory(o);
mCategories.add(category);
for (String goodItemId : category.getGoodsItemIds()) {
mGoodsCategories.put(goodItemId, category);
}
}
}
// Remove this code when no longer needed.
if (mNonConsumableMigrationNeeded) {
SoomlaUtils.LogDebug(TAG, "NonConsumables balance migration is required. Doing it now.");
nonConsBalancesToLTVGs();
}
}
Aggregations