package com.commonsensenet.realfarm.utils;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.commonsensenet.realfarm.R;
import com.commonsensenet.realfarm.TopSelectorActivity;
import com.commonsensenet.realfarm.dataaccess.RealFarmDatabase;
import com.commonsensenet.realfarm.dataaccess.RealFarmProvider;
import com.commonsensenet.realfarm.model.Resource;
import com.commonsensenet.realfarm.model.aggregate.AggregateItem;
import com.commonsensenet.realfarm.model.aggregate.UserAggregateItem;
import com.commonsensenet.realfarm.view.AggregateItemAdapter;
import com.commonsensenet.realfarm.view.AggregateItemWrapper;
import com.commonsensenet.realfarm.view.GeneralAggregateItemWrapper;
import com.commonsensenet.realfarm.view.MarketItemAdapter;
/**
*
* @author Oscar Bola�os <@oscarbolanos>
*
*/
public final class ActionDataFactory {
public static AggregateItemAdapter getAdapter(int currentAction,
int mActionTypeId, TopSelectorActivity topEnabledActivity,
List<AggregateItem> mItems, RealFarmProvider mDataProvider,
RealFarmProvider mDataProvider2) {
switch (currentAction) {
case TopSelectorActivity.LIST_WITH_TOP_SELECTOR_TYPE_MARKET:
return new MarketItemAdapter(topEnabledActivity, mItems,
mDataProvider);
case TopSelectorActivity.LIST_WITH_TOP_SELECTOR_TYPE_AGGREGATE:
return new AggregateItemAdapter(topEnabledActivity, mItems,
mActionTypeId, mDataProvider);
default:
return null;
}
}
public static List<AggregateItem> getAggregateData(int actionTypeId,
RealFarmProvider dataProvider, int seedTypeId) {
switch (actionTypeId) {
case RealFarmDatabase.ACTION_TYPE_SOW_ID:
return dataProvider.getAggregateItemsSow(actionTypeId, seedTypeId);
case RealFarmDatabase.ACTION_TYPE_FERTILIZE_ID:
return dataProvider.getAggregateItemsFertilize(actionTypeId,
seedTypeId);
case RealFarmDatabase.ACTION_TYPE_IRRIGATE_ID:
return dataProvider.getAggregateItemsIrrigate(actionTypeId,
seedTypeId);
case RealFarmDatabase.ACTION_TYPE_REPORT_ID:
return dataProvider.getAggregateItemsReport(actionTypeId,
seedTypeId);
case RealFarmDatabase.ACTION_TYPE_HARVEST_ID:
return dataProvider.getAggregateItemsHarvest(actionTypeId,
seedTypeId);
case RealFarmDatabase.ACTION_TYPE_SPRAY_ID:
return dataProvider
.getAggregateItemsSpray(actionTypeId, seedTypeId);
case RealFarmDatabase.ACTION_TYPE_SELL_ID:
// here the seedTypeId is cropTypeId
return dataProvider.getAggregateItemsSell(actionTypeId, seedTypeId);
default:
return null;
}
}
public static AggregateItemWrapper getAggregateWrapper(Context context,
View row, ViewGroup parent, int actionTypeId) {
// item to return
AggregateItemWrapper wrapper;
// layout inflator service.
LayoutInflater li = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// for now all the wrappers use the same layout.
row = li.inflate(R.layout.tpl_aggregate_item, parent, false);
// gets the appropriate type of AggregateItemWrapper
wrapper = getAggregateWrapper(row, actionTypeId);
return wrapper;
}
public static AggregateItemWrapper getAggregateWrapper(View row,
int actionTypeId) {
return new GeneralAggregateItemWrapper(row);
}
public static List<AggregateItem> getData(int currentAction,
RealFarmProvider mDataProvider, int mActionTypeId,
int cropSeedTypeId, Resource daysSelectorData) {
switch (currentAction) {
case TopSelectorActivity.LIST_WITH_TOP_SELECTOR_TYPE_MARKET:
return mDataProvider.getMarketData(cropSeedTypeId,
-daysSelectorData.getValue());
case TopSelectorActivity.LIST_WITH_TOP_SELECTOR_TYPE_AGGREGATE:
return ActionDataFactory.getAggregateData(mActionTypeId,
mDataProvider, cropSeedTypeId);
default:
return null;
}
}
public static Resource getTopSelectorData(int actionTypeId,
RealFarmProvider dataProvider, long userId) {
Resource res;
switch (actionTypeId) {
case RealFarmDatabase.ACTION_TYPE_SELL_ID:
// if user does not have a plot, select ground nut (id = 1)
res = dataProvider.getTopSelectorDataCrop(userId, 1);
return res;
default:
// if user doesn't have a plot, select TMV2 (id = 4)
res = dataProvider.getTopSelectorDataVar(userId, 4);
return res;
}
}
// TODO: get varieties and crops THIS SEASON
public static List<Resource> getTopSelectorList(int actionTypeId,
RealFarmProvider dataProvider) {
switch (actionTypeId) {
case RealFarmDatabase.ACTION_TYPE_SELL_ID:
return dataProvider.getCropTypes();
default:
return dataProvider.getVarieties();
}
}
public static List<UserAggregateItem> getUserAggregateData(
AggregateItem aggregateItem, RealFarmProvider dataProvider) {
System.out.println(aggregateItem.getActionTypeId());
switch (aggregateItem.getActionTypeId()) {
case RealFarmDatabase.ACTION_TYPE_SOW_ID:
return dataProvider.getUserAggregateItemSow(
aggregateItem.getActionTypeId(),
aggregateItem.getSelector1(), aggregateItem.getSelector2());
case RealFarmDatabase.ACTION_TYPE_FERTILIZE_ID:
return dataProvider.getUserAggregateItemFertilize(
aggregateItem.getActionTypeId(),
aggregateItem.getSelector1(), aggregateItem.getSelector2());
case RealFarmDatabase.ACTION_TYPE_IRRIGATE_ID:
return dataProvider.getUserAggregateItemIrrigate(
aggregateItem.getActionTypeId(),
aggregateItem.getSelector1(), aggregateItem.getSelector2());
case RealFarmDatabase.ACTION_TYPE_REPORT_ID:
return dataProvider.getUserAggregateItemReport(
aggregateItem.getActionTypeId(),
aggregateItem.getSelector1(), aggregateItem.getSelector2());
case RealFarmDatabase.ACTION_TYPE_HARVEST_ID:
return dataProvider.getUserAggregateItemHarvest(
aggregateItem.getActionTypeId(),
aggregateItem.getSelector1());
case RealFarmDatabase.ACTION_TYPE_SPRAY_ID:
return dataProvider.getUserAggregateItemSpray(
aggregateItem.getActionTypeId(),
aggregateItem.getSelector1(), aggregateItem.getSelector2(),
aggregateItem.getSelector3());
case RealFarmDatabase.ACTION_TYPE_SELL_ID:
return dataProvider.getUserAggregateItemSell(
aggregateItem.getActionTypeId(),
aggregateItem.getSelector1(), aggregateItem.getSelector2(),
aggregateItem.getSelector3());
default:
return null;
}
}
public static List<UserAggregateItem> getUserList(int currentAction,
int cropSeedTypeId, AggregateItem selectedItem,
Resource daysSelectorData, RealFarmProvider mDataProvider) {
switch (currentAction) {
case TopSelectorActivity.LIST_WITH_TOP_SELECTOR_TYPE_MARKET:
return mDataProvider.getUserMarketData(cropSeedTypeId,
selectedItem.getSelector1(), -daysSelectorData.getValue());
case TopSelectorActivity.LIST_WITH_TOP_SELECTOR_TYPE_AGGREGATE:
return getUserAggregateData(selectedItem, mDataProvider);
default:
return null;
}
}
/**
* This class can not be instantiated.
*/
private ActionDataFactory() {
}
}