package com.applicasa.VirtualGood;
import java.util.ArrayList;
import java.util.List;
import java.util.GregorianCalendar;
import applicasa.LiCore.communication.LiUtility;
import applicasa.LiCore.communication.LiCallback.LiCallbackAction;
import com.applicasa.ApplicasaManager.LiCallbackQuery.LiVirtualGoodGetByIDCallback;
import com.applicasa.ApplicasaManager.LiCallbackQuery.LiVirtualGoodGetArrayCallback;
import com.applicasa.ApplicasaManager.LiManager.LiObject;
import android.database.Cursor;
import applicasa.LiCore.sqlDB.database.LiDbObject;
import applicasa.LiCore.communication.LiRequestConst.QueryKind;
import applicasa.LiCore.communication.LiUtility;
import applicasa.LiCore.LiErrorHandler;
import applicasa.LiCore.LiErrorHandler.ApplicasaResponse;
import applicasa.LiCore.communication.LiRequestConst.RequestAction;
import applicasa.LiCore.communication.LiObjRequest;
import applicasa.LiCore.communication.LiRequestConst.RequestCallback;
import applicasa.LiCore.communication.LiRequestConst.LiObjResponse;
import applicasa.LiCore.communication.LiFilters;
import applicasa.LiCore.communication.LiQuery;
import applicasa.LiCore.communication.LiFilters.Operation;
import applicasa.LiCore.sqlDB.database.LiCoreDBmanager;
import applicasa.LiJson.LiJSONException;
import applicasa.LiJson.LiJSONObject;
import applicasa.kit.IAP.Callbacks.LiCallbackIAPPurchase;
import android.app.Activity;
import com.applicasa.VirtualGoodCategory.VirtualGoodCategory;
import applicasa.kit.IAP.IAP;
import applicasa.kit.IAP.IAP.GetVirtualGoodKind;
import applicasa.kit.IAP.IAP.LiCurrency;
import applicasa.kit.IAP.Callbacks.LiCallbackVirtualGoodRequest;
public class VirtualGood extends VirtualGoodData {
/** End of Basic SDK **/
/** End of Basic SDK **/
/**
* VirtualGood is a Special In App Billing class.
*
*
*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// //////////////////////////////////////
////////////////////////////////// In App Method //////////////////////////////////////
////////////////////////////////// //////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Consume The Product with specific quantity
* @param quantity
* @return
*/
public boolean useVirtualGoods(int quantity, LiCallbackVirtualGoodRequest liCallbackVirtualGoodRequest)
{
return IAP.useVirtualGoods(this, quantity,liCallbackVirtualGoodRequest);
}
/**
* Buys specific quantity of this product, credit balance will decrease quantity * credit
* @param quantity
* @return
*/
public boolean buyVirtualGoods(int quantity, LiCurrency licurrency, LiCallbackVirtualGoodRequest liCallbackVirtualGoodRequest)
{
return IAP.buyVirtualGoods(this, quantity, licurrency,liCallbackVirtualGoodRequest);
}
/**
* Buys specific quantity of this product, With real money
* @param quantity
* @return
*/
public boolean buyVirtualGoods(Activity activity, LiCallbackIAPPurchase liCallbackIAPPurchase)
{
return IAP.buyVirtualGoods(activity, this, liCallbackIAPPurchase);
}
/**
* Gives specific quantity of this product without any cost
* @param quantity
* @return
*/
public boolean giveVirtualGoods(int quantity, LiCallbackVirtualGoodRequest liCallbackVirtualGoodRequest)
{
return IAP.giveVirtualGoods(this, quantity,liCallbackVirtualGoodRequest);
}
/**
* Consumes 1 quantity of The Product
* @param quantity
* @return
*/
public boolean useVirtualGoods(LiCallbackVirtualGoodRequest liCallbackVirtualGoodRequest)
{
return IAP.useVirtualGoods(this, 1,liCallbackVirtualGoodRequest);
}
/**
* Buy 1 quantity of this product, credit balance will decrease quantity * credit
* @param quantity
* @return
*/
public boolean buyVirtualGoods(LiCurrency licurrency, LiCallbackVirtualGoodRequest liCallbackVirtualGoodRequest)
{
return IAP.buyVirtualGoods(this, 1, licurrency,liCallbackVirtualGoodRequest);
}
/**
* Gives 1 quantity of this product without any cost
* @param quantity
* @return
*/
public boolean giveVirtualGoods(LiCallbackVirtualGoodRequest liCallbackVirtualGoodRequest)
{
return IAP.giveVirtualGoods(this, 1,liCallbackVirtualGoodRequest);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// ///////////////////////////////////////
////////////////////////////////// GET ///////////////////////////////////////
////////////////////////////////// ///////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* A- Synchronized Method to returns an object from server by filters
* @param ID
* @return
* @throws applicasa.LiCore.LiErrorHandler
*/
public static void getArrayWithQuery(LiQuery query, LiVirtualGoodGetArrayCallback liVirtualGoodGetArrayCallback)
{
LiObjRequest request = new LiObjRequest();
request.setClassName(kClassName);
request.setAction(RequestAction.GET_ARRAY);
request.setGet(QueryKind.LOCAL);
request.setQueryToRequest(query);
request.setCallback(callbackHandler);
setGetCallback(liVirtualGoodGetArrayCallback,request.requestID);
request.startASync();
}
/**
* Get all virtual good by get kind
* ALL - return all virtual Good
* HasInventory - returns all Virtual product with a positive inventory
* NoInventory - returns all Virtual product with a 0 inventory
* @param getVirtualGoodKind
* @return
*/
public static List<VirtualGood> getAllVirtualGoods(GetVirtualGoodKind getVirtualGoodKind)
{
return IAP.getAllVirtualGoods(getVirtualGoodKind);
}
/**
* Get all virtual good by get kind
* ALL - return all virtual Good
* HasInventory - returns all Virtual product with a positive inventory
* NoInventory - returns all Virtual product with a 0 inventory
* @param getVirtualGoodKind
* @return
*/
public static List<VirtualGood> getVirtualGoodByCategory(VirtualGoodCategory virtualGoodCategory, GetVirtualGoodKind getVirtualGoodKind) throws LiErrorHandler
{
return IAP.getVirtualGoodByCategory(virtualGoodCategory, getVirtualGoodKind );
}
/**
* Get all virtual good by Category Position
* ALL - return all virtual Good
* HasInventory - returns all Virtual product with a positive inventory
* NoInventory - returns all Virtual product with a 0 inventory
* @param position must be > 0
* @return
*/
public static List<VirtualGood> getVirtualGoodByCategoryPosition(int position, GetVirtualGoodKind getVirtualGoodKind) throws LiErrorHandler
{
return IAP.getVirtualGoodByCategoryPosition(position, getVirtualGoodKind);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// //////////////////////////////////////
////////////////////////////////// SAVE //////////////////////////////////////
////////////////////////////////// //////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Saves the Object to Applicasa's Servers
* The method saves all of the item's value to the server
* If the Object has an ID the operation will update existing object in applicasa's server; otherwise an add operation will be called
*
* In Order to Update a specific field Use the method saveFields
* @param actionCallback
* @return
* @throws applicasa.LiCore.LiErrorHandler
*/
public void saveForCurrentUser(LiCallbackAction liCallbackAction)
{
LiObjRequest request = new LiObjRequest();
// If Id is of hex representation and not 0, then the itemId is Mongo id
if (VirtualGoodID!= "0" && LiUtility.isHex(VirtualGoodID))
{
request.setAction(RequestAction.UPDATE_ACTION);
request.setRecordID(VirtualGoodID);
request.setIncrementedFields(incrementedFields);
resetIncrementedFields();
}
else
{
if (liCallbackAction != null)
liCallbackAction.onFailure(new LiErrorHandler(ApplicasaResponse.RESPONSE_ERROR, "Can't add new Virtual Good from SDK only from CMS"));
return;
}
request.setClassName(kClassName);
request.setCallback(callbackHandler);
request.setEnableOffline(EnableOffline);
setActionCallback(liCallbackAction,request.requestID);
// add the Values of the Object Item to the Request
try
{
request = addValuesToLiObjRequest(this, request);
}catch (LiErrorHandler error)
{
if (liCallbackAction != null)
liCallbackAction.onFailure(error);
return;
}
request.startASync();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// /////////////////////////////////////
////////////////////////////////// Callback Handler /////////////////////////////////////
////////////////////////////////// /////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static RequestCallback callbackHandler = new RequestCallback() {
public void onCompleteGet(String requestID, Cursor cursor) {
// TODO Auto-generated method stub
List<VirtualGood> returnList = new ArrayList<VirtualGood>();
returnList = BuildVirtualGoodFromCursor( cursor);
Object callback = virtualGoodCallbacks.get(requestID);
if (callback != null && callback instanceof LiVirtualGoodGetArrayCallback )
{
virtualGoodCallbacks.remove(requestID);
((LiVirtualGoodGetArrayCallback)callback).onGetVirtualGoodComplete(returnList);
}
if (callback != null && callback instanceof LiVirtualGoodGetByIDCallback )
{
virtualGoodCallbacks.remove(requestID);
((LiVirtualGoodGetByIDCallback)callback).onGetVirtualGoodComplete(returnList.get(0));
}
}
public void LiException(String requestID,LiErrorHandler ex) {
// TODO Auto-generated method stub
Object callback = virtualGoodCallbacks.get(requestID);
if (callback != null && callback instanceof LiVirtualGoodGetArrayCallback )
{
virtualGoodCallbacks.remove(requestID);
((LiVirtualGoodGetArrayCallback)callback).onGetVirtualGoodFailure(ex);
}
else if (callback != null && callback instanceof LiVirtualGoodGetByIDCallback )
{
virtualGoodCallbacks.remove(requestID);
((LiVirtualGoodGetByIDCallback)callback).onGetVirtualGoodFailure(ex);
}
else if (callback != null && callback instanceof LiCallbackAction )
{
virtualGoodCallbacks.remove(requestID);
((LiCallbackAction)callback).onFailure(ex);
}
}
public void onCompleteAction(String requestID, LiObjResponse response) {
// TODO Auto-generated method stub
}
};
public static List<VirtualGood> BuildVirtualGoodFromCursor(Cursor cursor)
{
List<VirtualGood> returnList = new ArrayList<VirtualGood>();
if (cursor.getCount() == 0 ) {}// nothing received
else
{
cursor.moveToFirst();
while (!cursor.isAfterLast())
{
returnList.add(new VirtualGood(cursor));
cursor.moveToNext();
}
}
cursor.close();
return returnList;
}
private static void setGetCallback(LiVirtualGoodGetArrayCallback virtualGoodGetArrayCallback, String reqID) {
// TODO Auto-generated method stub
virtualGoodCallbacks.put(reqID, virtualGoodGetArrayCallback);
}
private static void setActionCallback(LiCallbackAction liCallbackAction, String reqID) {
// TODO Auto-generated method stub
virtualGoodCallbacks.put(reqID, liCallbackAction);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// ////////////////////////////////////////
/////////////////////////////////// Init Method ////////////////////////////////////////
/////////////////////////////////// Don't ALTER ////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public VirtualGood()
{
this.VirtualGoodID = "0";
this.VirtualGoodTitle = "";
this.VirtualGoodDescription = "";
this.VirtualGoodAppleIdentifier = "";
this.VirtualGoodGoogleIdentifier = "";
this.VirtualGoodMainCurrency = 0;
this.VirtualGoodSecondaryCurrency = 0;
this.VirtualGoodRelatedVirtualGood = "";
this.VirtualGoodStoreItemPrice = 0f;
this.VirtualGoodIOSBundleMin = 0f;
this.VirtualGoodIOSBundleMax = 0f;
this.VirtualGoodAndroidBundleMin = 0f;
this.VirtualGoodAndroidBundleMax = 0f;
this.VirtualGoodPos = 1;
this.VirtualGoodMaxForUser = 0;
this.VirtualGoodUserInventory = 0;
this.VirtualGoodQuantity = 0;
this.VirtualGoodImageA = "";
this.VirtualGoodImageB = "";
this.VirtualGoodImageC = "";
this.VirtualGoodIsDeal = false;
this.VirtualGoodConsumable = true;
this.VirtualGoodIsStoreItem = false;
this.VirtualGoodInAppleStore = false;
this.VirtualGoodInGoogleStore = false;
(this.VirtualGoodLastUpdate = new GregorianCalendar()).setTimeInMillis(0);
this.VirtualGoodMainCategory = new VirtualGoodCategory("0");
}
public VirtualGood(Cursor cursor)
{
initWithCursor(cursor);
}
public VirtualGood(Cursor cursor,String header,int level)
{
initWithCursor(cursor,header,level);
}
public VirtualGood(String VirtualGoodID)
{
this.VirtualGoodID = VirtualGoodID;
}
public VirtualGood(VirtualGood item)
{
initWithObject(item);
}
/**
* Init Object with Cursor
* @param corsor
* @return
*/
public VirtualGood initWithCursor(Cursor cursor)
{
return initWithCursor(cursor,"",0);
}
/**
* Init Object with Cursor
* @param corsor
* @return
*/
public VirtualGood initWithCursor(Cursor cursor,String header,int level)
{
int columnIndex;
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodID.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodID = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodTitle.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodTitle = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodDescription.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodDescription = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodAppleIdentifier.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodAppleIdentifier = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodGoogleIdentifier.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodGoogleIdentifier = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodMainCurrency.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodMainCurrency = cursor.getInt(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodSecondaryCurrency.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodSecondaryCurrency = cursor.getInt(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodRelatedVirtualGood.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodRelatedVirtualGood = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header +LiFieldVirtualGood.VirtualGoodStoreItemPrice.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodStoreItemPrice = cursor.getFloat(columnIndex);
columnIndex = cursor.getColumnIndex(header +LiFieldVirtualGood.VirtualGoodIOSBundleMin.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodIOSBundleMin = cursor.getFloat(columnIndex);
columnIndex = cursor.getColumnIndex(header +LiFieldVirtualGood.VirtualGoodIOSBundleMax.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodIOSBundleMax = cursor.getFloat(columnIndex);
columnIndex = cursor.getColumnIndex(header +LiFieldVirtualGood.VirtualGoodAndroidBundleMin.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodAndroidBundleMin = cursor.getFloat(columnIndex);
columnIndex = cursor.getColumnIndex(header +LiFieldVirtualGood.VirtualGoodAndroidBundleMax.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodAndroidBundleMax = cursor.getFloat(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodPos.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodPos = cursor.getInt(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodMaxForUser.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodMaxForUser = cursor.getInt(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodUserInventory.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodUserInventory = cursor.getInt(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodQuantity.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodQuantity = cursor.getInt(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodImageA.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodImageA = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodImageB.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodImageB = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodImageC.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualGoodImageC = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodIsDeal.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
{
this.VirtualGoodIsDeal = cursor.getInt(columnIndex)==1?true:false;
}
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodConsumable.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
{
this.VirtualGoodConsumable = cursor.getInt(columnIndex)==1?true:false;
}
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodIsStoreItem.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
{
this.VirtualGoodIsStoreItem = cursor.getInt(columnIndex)==1?true:false;
}
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodInAppleStore.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
{
this.VirtualGoodInAppleStore = cursor.getInt(columnIndex)==1?true:false;
}
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodInGoogleStore.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
{
this.VirtualGoodInGoogleStore = cursor.getInt(columnIndex)==1?true:false;
}
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodLastUpdate.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
{
long dateStr = cursor.getLong(columnIndex);
GregorianCalendar gc= new GregorianCalendar();
gc.setTimeInMillis(dateStr);
this.VirtualGoodLastUpdate = gc;
}
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualGood.VirtualGoodMainCategory.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST && level==0)
{
this.VirtualGoodMainCategory = new VirtualGoodCategory(cursor,LiFieldVirtualGood.VirtualGoodMainCategory.toString(),level+1);
}
else if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST){
this.VirtualGoodMainCategory = new VirtualGoodCategory(cursor.getString(columnIndex));
}
return this;
}
/**
* Initialize values with Object
* @param item
* @return
*/
public String initWithObject(VirtualGood item)
{
this.VirtualGoodID = item.VirtualGoodID;
this.VirtualGoodTitle = item.VirtualGoodTitle;
this.VirtualGoodDescription = item.VirtualGoodDescription;
this.VirtualGoodAppleIdentifier = item.VirtualGoodAppleIdentifier;
this.VirtualGoodGoogleIdentifier = item.VirtualGoodGoogleIdentifier;
this.VirtualGoodMainCurrency = item.VirtualGoodMainCurrency;
this.VirtualGoodSecondaryCurrency = item.VirtualGoodSecondaryCurrency;
this.VirtualGoodRelatedVirtualGood = item.VirtualGoodRelatedVirtualGood;
this.VirtualGoodStoreItemPrice = item.VirtualGoodStoreItemPrice;
this.VirtualGoodIOSBundleMin = item.VirtualGoodIOSBundleMin;
this.VirtualGoodIOSBundleMax = item.VirtualGoodIOSBundleMax;
this.VirtualGoodAndroidBundleMin = item.VirtualGoodAndroidBundleMin;
this.VirtualGoodAndroidBundleMax = item.VirtualGoodAndroidBundleMax;
this.VirtualGoodPos = item.VirtualGoodPos;
this.VirtualGoodMaxForUser = item.VirtualGoodMaxForUser;
this.VirtualGoodUserInventory = item.VirtualGoodUserInventory;
this.VirtualGoodQuantity = item.VirtualGoodQuantity;
this.VirtualGoodImageA = item.VirtualGoodImageA;
this.VirtualGoodImageB = item.VirtualGoodImageB;
this.VirtualGoodImageC = item.VirtualGoodImageC;
this.VirtualGoodIsDeal = item.VirtualGoodIsDeal;
this.VirtualGoodConsumable = item.VirtualGoodConsumable;
this.VirtualGoodIsStoreItem = item.VirtualGoodIsStoreItem;
this.VirtualGoodInAppleStore = item.VirtualGoodInAppleStore;
this.VirtualGoodInGoogleStore = item.VirtualGoodInGoogleStore;
this.VirtualGoodLastUpdate = item.VirtualGoodLastUpdate;
this.VirtualGoodMainCategory = item.VirtualGoodMainCategory;
return VirtualGoodID;
}
/**
* Function to add the given object fields to the request parameters list
* @param item
* @param request
* @return
*/
public static LiObjRequest addValuesToLiObjRequest(VirtualGood item, LiObjRequest request) throws LiErrorHandler
{
if (item == null)
throw new LiErrorHandler(ApplicasaResponse.NULL_ITEM);
request.addParametersArrayValue(LiFieldVirtualGood.VirtualGoodUserInventory, item.VirtualGoodUserInventory);
return request;
}
/**
* Initialize Dictionary with VirtualGood item instance
* @param dictionary
* @return
*/
public LiJSONObject dictionaryRepresentation(boolean withFK) throws LiErrorHandler {
try{
LiJSONObject dictionary = new LiJSONObject();
dictionary.put(LiFieldVirtualGood.VirtualGoodID, VirtualGoodID);
dictionary.put(LiFieldVirtualGood.VirtualGoodTitle, VirtualGoodTitle);
dictionary.put(LiFieldVirtualGood.VirtualGoodDescription, VirtualGoodDescription);
dictionary.put(LiFieldVirtualGood.VirtualGoodAppleIdentifier, VirtualGoodAppleIdentifier);
dictionary.put(LiFieldVirtualGood.VirtualGoodGoogleIdentifier, VirtualGoodGoogleIdentifier);
dictionary.put(LiFieldVirtualGood.VirtualGoodMainCurrency, VirtualGoodMainCurrency);
dictionary.put(LiFieldVirtualGood.VirtualGoodSecondaryCurrency, VirtualGoodSecondaryCurrency);
dictionary.put(LiFieldVirtualGood.VirtualGoodRelatedVirtualGood, VirtualGoodRelatedVirtualGood);
dictionary.put(LiFieldVirtualGood.VirtualGoodStoreItemPrice, VirtualGoodStoreItemPrice);
dictionary.put(LiFieldVirtualGood.VirtualGoodIOSBundleMin, VirtualGoodIOSBundleMin);
dictionary.put(LiFieldVirtualGood.VirtualGoodIOSBundleMax, VirtualGoodIOSBundleMax);
dictionary.put(LiFieldVirtualGood.VirtualGoodAndroidBundleMin, VirtualGoodAndroidBundleMin);
dictionary.put(LiFieldVirtualGood.VirtualGoodAndroidBundleMax, VirtualGoodAndroidBundleMax);
dictionary.put(LiFieldVirtualGood.VirtualGoodPos, VirtualGoodPos);
dictionary.put(LiFieldVirtualGood.VirtualGoodMaxForUser, VirtualGoodMaxForUser);
dictionary.put(LiFieldVirtualGood.VirtualGoodUserInventory, VirtualGoodUserInventory);
dictionary.put(LiFieldVirtualGood.VirtualGoodQuantity, VirtualGoodQuantity);
dictionary.put(LiFieldVirtualGood.VirtualGoodImageA, VirtualGoodImageA);
dictionary.put(LiFieldVirtualGood.VirtualGoodImageB, VirtualGoodImageB);
dictionary.put(LiFieldVirtualGood.VirtualGoodImageC, VirtualGoodImageC);
dictionary.put(LiFieldVirtualGood.VirtualGoodIsDeal, VirtualGoodIsDeal);
dictionary.put(LiFieldVirtualGood.VirtualGoodConsumable, VirtualGoodConsumable);
dictionary.put(LiFieldVirtualGood.VirtualGoodIsStoreItem, VirtualGoodIsStoreItem);
dictionary.put(LiFieldVirtualGood.VirtualGoodInAppleStore, VirtualGoodInAppleStore);
dictionary.put(LiFieldVirtualGood.VirtualGoodInGoogleStore, VirtualGoodInGoogleStore);
dictionary.put(LiFieldVirtualGood.VirtualGoodLastUpdate, LiUtility.convertDateToDictionaryRepresenataion(VirtualGoodLastUpdate));
if (withFK)
dictionary.put(LiFieldVirtualGood.VirtualGoodMainCategory, VirtualGoodMainCategory.dictionaryRepresentation(true));
else
dictionary.put(LiFieldVirtualGood.VirtualGoodMainCategory, VirtualGoodMainCategory.VirtualGoodCategoryID);
return dictionary;
}
catch (LiJSONException ex)
{
throw new LiErrorHandler(ApplicasaResponse.INPUT_VALUES_ERROR, ex.getMessage());
}
}
public static LiDbObject createDB() throws LiJSONException{
LiDbObject dbObject = new LiDbObject();
dbObject.put("LiClassName", kClassName);
dbObject.put(LiFieldVirtualGood.VirtualGoodID, LiCoreDBmanager.PRIMARY_KEY,-1);
dbObject.put(LiFieldVirtualGood.VirtualGoodTitle, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualGood.VirtualGoodDescription, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualGood.VirtualGoodAppleIdentifier, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualGood.VirtualGoodGoogleIdentifier, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualGood.VirtualGoodMainCurrency, LiCoreDBmanager.INTEGER,0);
dbObject.put(LiFieldVirtualGood.VirtualGoodSecondaryCurrency, LiCoreDBmanager.INTEGER,0);
dbObject.put(LiFieldVirtualGood.VirtualGoodRelatedVirtualGood, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualGood.VirtualGoodStoreItemPrice, LiCoreDBmanager.REAL,0f);
dbObject.put(LiFieldVirtualGood.VirtualGoodIOSBundleMin, LiCoreDBmanager.REAL,0f);
dbObject.put(LiFieldVirtualGood.VirtualGoodIOSBundleMax, LiCoreDBmanager.REAL,0f);
dbObject.put(LiFieldVirtualGood.VirtualGoodAndroidBundleMin, LiCoreDBmanager.REAL,0f);
dbObject.put(LiFieldVirtualGood.VirtualGoodAndroidBundleMax, LiCoreDBmanager.REAL,0f);
dbObject.put(LiFieldVirtualGood.VirtualGoodPos, LiCoreDBmanager.INTEGER,1);
dbObject.put(LiFieldVirtualGood.VirtualGoodMaxForUser, LiCoreDBmanager.INTEGER,0);
dbObject.put(LiFieldVirtualGood.VirtualGoodUserInventory, LiCoreDBmanager.INTEGER,0);
dbObject.put(LiFieldVirtualGood.VirtualGoodQuantity, LiCoreDBmanager.INTEGER,0);
dbObject.put(LiFieldVirtualGood.VirtualGoodImageA, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualGood.VirtualGoodImageB, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualGood.VirtualGoodImageC, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualGood.VirtualGoodMainCategory, LiCoreDBmanager.FOREIGN_KEY+"_VirtualGoodCategory","0");
dbObject.put(LiFieldVirtualGood.VirtualGoodIsDeal, LiCoreDBmanager.BOOL,false);
dbObject.put(LiFieldVirtualGood.VirtualGoodConsumable, LiCoreDBmanager.BOOL,true);
dbObject.put(LiFieldVirtualGood.VirtualGoodIsStoreItem, LiCoreDBmanager.BOOL,false);
dbObject.put(LiFieldVirtualGood.VirtualGoodInAppleStore, LiCoreDBmanager.BOOL,false);
dbObject.put(LiFieldVirtualGood.VirtualGoodInGoogleStore, LiCoreDBmanager.BOOL,false);
dbObject.put(LiFieldVirtualGood.VirtualGoodLastUpdate, LiCoreDBmanager.DATE,0);
return dbObject;
}
public void increment(LiFieldVirtualGood liFieldVirtualGood) throws LiErrorHandler
{
increment(liFieldVirtualGood, 1);
}
public void increment(LiFieldVirtualGood liFieldVirtualGood, Object value) throws LiErrorHandler
{
String key = liFieldVirtualGood.toString();
float oldValueFloat = 0;
int oldValueInt = 0;
Object incrementedField = getVirtualGoodFieldbySortType(liFieldVirtualGood);
try {
if (incrementedField instanceof Integer)
{
int incInt;
if (value instanceof Integer)
incInt = (Integer)value;
else
throw new LiErrorHandler(ApplicasaResponse.INPUT_VALUES_ERROR, "Incremented Value isn't of the same type as the requested field");
int total = (Integer)incrementedField+incInt;
setVirtualGoodFieldbySortType(liFieldVirtualGood, total);
if (incrementedFields.has(liFieldVirtualGood.toString()))
oldValueInt = (Integer)incrementedFields.remove(key);
incrementedFields.put(key, (oldValueInt+incInt));
}
else if (incrementedField instanceof Float)
{
float incFloat;
if (value instanceof Float)
incFloat = (Float)value;
else
incFloat = Float.valueOf((Integer)value);
float total = (Float)incrementedField+incFloat;
setVirtualGoodFieldbySortType(liFieldVirtualGood, total);
if (incrementedFields.has(liFieldVirtualGood.toString()))
oldValueFloat = (Float)incrementedFields.remove(key);
incrementedFields.put(key, (oldValueFloat+incFloat));
}
else
throw new LiErrorHandler(ApplicasaResponse.INPUT_VALUES_ERROR,"Can't increase, Specified field is not Int or Float");
} catch (LiJSONException e) {
// TODO Auto-generated catch block
throw new LiErrorHandler(ApplicasaResponse.INPUT_VALUES_ERROR,"Can't increase, Recheck inserted Values");
}
}
private void resetIncrementedFields() {
// TODO Auto-generated method stub
incrementedFields = new LiJSONObject();
}
}