package com.commonsensenet.realfarm;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.commonsensenet.realfarm.dataaccess.RealFarmDatabase;
import com.commonsensenet.realfarm.model.Resource;
import com.commonsensenet.realfarm.utils.ActionDataFactory;
import com.commonsensenet.realfarm.utils.ApplicationTracker;
import com.commonsensenet.realfarm.utils.ApplicationTracker.EventType;
/**
* Yield tool. Acts as a search engine.
*
* @author Andrea Navares
*/
public class YieldActivity extends TopSelectorActivity implements
OnClickListener {
private static final int DISEASE = 16;
private static final int FERTILIZER = 14;
private static final int IRRIGATION = 13;
private static final int PEST = 15;
private static final int SOIL_TYPE = 10;
private static final int SOWING_DATE = 12;
private static final int SPRAY = 17;
private static final int VARIETY = 11;
private TextView avgLabel;
private TextView dateLabel;
private Resource dateSelectorData;
private TextView diseaseLabel;
private ImageView diseaseSelector;
private Resource diseaseSelectorData;
private TextView fertilizerLabel;
private ImageView fertilizeSelector;
private Resource fertilizeSelectorData;
private TextView irrigationLabel;
private ImageView irrigationSelector;
private Resource irrigationSelectorData;
private Resource locationSelectorData;
private int mActionTypeId = RealFarmDatabase.ACTION_TYPE_SELL_ID;
private TextView maxLabel;
private TextView minLabel;
private TextView number;
private TextView pestLabel;
private ImageView pestSelector;
private Resource pestSelectorData;
private TextView soilTypeLabel;
private ImageView soilTypeSelector;
private Resource soilTypeSelectorData;
private ImageView sowingDateSelector;
private TextView sprayLabel;
private ImageView spraySelector;
private Resource spraySelectorData;
private TextView varietyLabel;
private ImageView varietySelector;
private Resource varietySelectorData;
private Resource yearSelectorData;
public void onClick(View v) {
// tracks the application usage.
ApplicationTracker.getInstance().logEvent(EventType.CLICK,
Global.userId, getLogTag(),
getResources().getResourceEntryName(v.getId()));
if (v.getId() == R.id.button_back) {
onBackPressed();
} else if (v.getId() == R.id.selector_location) {
List<Resource> data = mDataProvider
.getResources(RealFarmDatabase.RESOURCE_TYPE_LOCATION);
displayDialog(v, data, "Select the place", R.raw.problems, null, 3);
} else if (v.getId() == R.id.aggr_crop) {
final ImageView img_1 = (ImageView) findViewById(R.id.aggr_crop_img);
List<Resource> data = ActionDataFactory.getTopSelectorList(
mActionTypeId, mDataProvider);
displayDialog(v, data, "Select the variety", R.raw.problems, img_1,
2);
} else if (v.getId() == R.id.selector_year) {
List<Resource> data = mDataProvider
.getResources(RealFarmDatabase.RESOURCE_TYPE_YEAR);
displayDialog(v, data, "Select the year", R.raw.problems, null, 4);
} else { // selectors
if (v.getId() == R.id.selector_soil_type) {
List<Resource> data = mDataProvider
.getResources(RealFarmDatabase.RESOURCE_TYPE_SOIL_TYPE);
displayDialog(v, data, "Select the soil type", R.raw.problems,
null, SOIL_TYPE);
} else if (v.getId() == R.id.selector_variety) {
List<Resource> data = mDataProvider
.getResources(RealFarmDatabase.RESOURCE_TYPE_VARIETY);
displayDialog(v, data, "Select the variety", R.raw.problems,
null, VARIETY);
} else if (v.getId() == R.id.selector_sowing_date) {
List<Resource> data = mDataProvider
.getResources(RealFarmDatabase.RESOURCE_TYPE_SOWING_WINDOW);
displayDialog(v, data, "Select the sowing window",
R.raw.problems, null, SOWING_DATE);
} else if (v.getId() == R.id.selector_irrigation) {
// TODO: update audio
List<Resource> data = mDataProvider
.getResources(RealFarmDatabase.RESOURCE_TYPE_IRRIGATION_SELECTOR);
displayDialog(v, data, "Selec the irrigation state", -1, null,
IRRIGATION);
} else if (v.getId() == R.id.selector_fertilizer) {
// TODO: update audio
List<Resource> data = mDataProvider
.getResources(RealFarmDatabase.RESOURCE_TYPE_FERTILIZE_SELECTOR);
displayDialog(v, data, "Select the fertilizer state", -1, null,
FERTILIZER);
} else if (v.getId() == R.id.selector_pest) {
// TODO: update audio
List<Resource> data = mDataProvider
.getResources(RealFarmDatabase.RESOURCE_TYPE_PEST_SELECTOR);
displayDialog(v, data, "Select the pest state", -1, null, PEST);
} else if (v.getId() == R.id.selector_disease) {
// TODO: update audio
List<Resource> data = mDataProvider
.getResources(RealFarmDatabase.RESOURCE_TYPE_DISEASE_SELECTOR);
displayDialog(v, data, "Select the disease state", -1, null,
DISEASE);
} else if (v.getId() == R.id.selector_spray) {
// TODO: update audio
List<Resource> data = mDataProvider
.getResources(RealFarmDatabase.RESOURCE_TYPE_SPRAYING_SELECTOR);
displayDialog(v, data, "Select the spray state", -1, null,
SPRAY);
}
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState, R.layout.yielddetails);
setList();
soilTypeSelector = (ImageView) findViewById(R.id.selector_soil_type);
varietySelector = (ImageView) findViewById(R.id.selector_variety);
sowingDateSelector = (ImageView) findViewById(R.id.selector_sowing_date);
irrigationSelector = (ImageView) findViewById(R.id.selector_irrigation);
fertilizeSelector = (ImageView) findViewById(R.id.selector_fertilizer);
pestSelector = (ImageView) findViewById(R.id.selector_pest);
diseaseSelector = (ImageView) findViewById(R.id.selector_disease);
spraySelector = (ImageView) findViewById(R.id.selector_spray);
number = (TextView) findViewById(R.id.number);
maxLabel = (TextView) findViewById(R.id.max_label);
avgLabel = (TextView) findViewById(R.id.avg_label);
minLabel = (TextView) findViewById(R.id.min_label);
dateLabel = (TextView) findViewById(R.id.selector_sowing_date_label);
varietyLabel = (TextView) findViewById(R.id.selector_variety_label);
soilTypeLabel = (TextView) findViewById(R.id.selector_soil_type_label);
irrigationLabel = (TextView) findViewById(R.id.selector_irrigation_label);
fertilizerLabel = (TextView) findViewById(R.id.selector_fertilizer_label);
pestLabel = (TextView) findViewById(R.id.selector_pest_label);
diseaseLabel = (TextView) findViewById(R.id.selector_disease_label);
sprayLabel = (TextView) findViewById(R.id.selector_spray_label);
final ImageView soilTypeSelector = (ImageView) findViewById(R.id.selector_soil_type);
final ImageView varietySelector = (ImageView) findViewById(R.id.selector_variety);
final ImageView sowingDateSelector = (ImageView) findViewById(R.id.selector_sowing_date);
final ImageView irrigationSelector = (ImageView) findViewById(R.id.selector_irrigation);
final ImageView fertilizeSelector = (ImageView) findViewById(R.id.selector_fertilizer);
final ImageView pestSelector = (ImageView) findViewById(R.id.selector_pest);
final ImageView diseaseSelector = (ImageView) findViewById(R.id.selector_disease);
final ImageView spraySelector = (ImageView) findViewById(R.id.selector_spray);
final LinearLayout maxRow = (LinearLayout) findViewById(R.id.max_row);
final LinearLayout avgRow = (LinearLayout) findViewById(R.id.avg_row);
final LinearLayout minRow = (LinearLayout) findViewById(R.id.min_row);
final View crop = findViewById(R.id.aggr_crop);
final View locationSelector = findViewById(R.id.selector_location);
final View yearSelector = findViewById(R.id.selector_year);
Button back = (Button) findViewById(R.id.button_back);
maxRow.setOnLongClickListener(this);
avgRow.setOnLongClickListener(this);
minRow.setOnLongClickListener(this);
number.setOnLongClickListener(this);
soilTypeSelector.setOnLongClickListener(this);
sowingDateSelector.setOnLongClickListener(this);
varietySelector.setOnLongClickListener(this);
irrigationSelector.setOnLongClickListener(this);
fertilizeSelector.setOnLongClickListener(this);
pestSelector.setOnLongClickListener(this);
diseaseSelector.setOnLongClickListener(this);
spraySelector.setOnLongClickListener(this);
locationSelector.setOnLongClickListener(this);
yearSelector.setOnLongClickListener(this);
back.setOnLongClickListener(this);
crop.setOnLongClickListener(this);
back.setOnClickListener(this);
crop.setOnClickListener(this);
locationSelector.setOnClickListener(this);
yearSelector.setOnClickListener(this);
soilTypeSelector.setOnClickListener(this);
sowingDateSelector.setOnClickListener(this);
varietySelector.setOnClickListener(this);
irrigationSelector.setOnClickListener(this);
fertilizeSelector.setOnClickListener(this);
pestSelector.setOnClickListener(this);
diseaseSelector.setOnClickListener(this);
spraySelector.setOnClickListener(this);
}
// TODO AUDIO: check the right audio.
// TODO AUDIO: See the farmbook description for which sentences to compose.
// All the needed data is in the Resources or in the TextView labels
public boolean onLongClick(View v) {
playAudio(R.raw.problems);
ApplicationTracker.getInstance().logEvent(EventType.LONG_CLICK,
Global.userId, getLogTag(),
getResources().getResourceEntryName(v.getId()));
if (v.getId() == R.id.button_back) {
} else if (v.getId() == R.id.selector_location) {
} else if (v.getId() == R.id.aggr_crop) {
} else if (v.getId() == R.id.selector_year) {
} else if (v.getId() == R.id.selector_soil_type) {
} else if (v.getId() == R.id.selector_variety) {
} else if (v.getId() == R.id.selector_sowing_date) {
} else if (v.getId() == R.id.selector_irrigation) {
} else if (v.getId() == R.id.selector_fertilizer) {
} else if (v.getId() == R.id.selector_pest) {
} else if (v.getId() == R.id.selector_disease) {
} else if (v.getId() == R.id.selector_spray) {
} else if (v.getId() == R.id.number) {
} else if (v.getId() == R.id.max_row) {
} else if (v.getId() == R.id.avg_row) {
} else if (v.getId() == R.id.min_row) {
}
return true;
}
public void setList() {
mTopSelectorData = ActionDataFactory.getTopSelectorData(mActionTypeId,
mDataProvider, Global.userId);
// default: CK Pura
locationSelectorData = mDataProvider.getResources(
RealFarmDatabase.RESOURCE_TYPE_LOCATION).get(0);
// default: most recent
yearSelectorData = mDataProvider.getResources(
RealFarmDatabase.RESOURCE_TYPE_YEAR).get(0);
dateSelectorData = mDataProvider.getResources(
RealFarmDatabase.RESOURCE_TYPE_SOWING_WINDOW).get(0);
diseaseSelectorData = mDataProvider.getResources(
RealFarmDatabase.RESOURCE_TYPE_DISEASE_SELECTOR).get(0);
pestSelectorData = mDataProvider.getResources(
RealFarmDatabase.RESOURCE_TYPE_PEST_SELECTOR).get(0);
irrigationSelectorData = mDataProvider.getResources(
RealFarmDatabase.RESOURCE_TYPE_IRRIGATION_SELECTOR).get(0);
spraySelectorData = mDataProvider.getResources(
RealFarmDatabase.RESOURCE_TYPE_SPRAYING_SELECTOR).get(0);
fertilizeSelectorData = mDataProvider.getResources(
RealFarmDatabase.RESOURCE_TYPE_FERTILIZE_SELECTOR).get(0);
varietySelectorData = mDataProvider.getResources(
RealFarmDatabase.RESOURCE_TYPE_VARIETY).get(0);
soilTypeSelectorData = mDataProvider.getResources(
RealFarmDatabase.RESOURCE_TYPE_SOIL_TYPE).get(0);
if (mTopSelectorData != null) {
setTopSelector(mActionTypeId);
}
if (locationSelectorData != null) {
setLocationSelector();
}
if (yearSelectorData != null) {
setYearSelector();
}
/*
* if(dateSelectorData != null) updateSelector(dateLabel,
* sowingDateSelector, dateSelectorData); if(soilTypeSelectorData !=
* null) updateSelector(soilTypeLabel, soilTypeSelector,
* soilTypeSelectorData); if(varietySelectorData != null)
* updateSelector(varietyLabel, varietySelector, varietySelectorData);
* if(irrigationSelectorData != null) updateSelector(irrigationLabel,
* irrigationSelector, irrigationSelectorData); if(fertilizeSelectorData
* != null) updateSelector(fertilizerLabel, fertilizeSelector,
* fertilizeSelectorData); if(diseaseSelectorData != null)
* updateSelector(diseaseLabel, diseaseSelector, diseaseSelectorData);
* if(pestSelectorData != null) updateSelector(pestLabel, pestSelector,
* pestSelectorData); if(spraySelectorData != null)
* updateSelector(sprayLabel, spraySelector, spraySelectorData);
*/
}
// change the query
public void setList(int type, Resource choice) {
switch (type) {
case 2:
mTopSelectorData = choice;
setTopSelector(mActionTypeId);
// TODO: reinitialize the variety selector below according to the
// new crop?
break;
case 3:
locationSelectorData = choice;
setLocationSelector();
break;
case 4:
yearSelectorData = choice;
setYearSelector();
break;
case SOIL_TYPE:
soilTypeSelectorData = choice;
updateSelector(soilTypeLabel, soilTypeSelector, choice);
break;
case VARIETY:
varietySelectorData = choice;
updateSelector(varietyLabel, varietySelector, choice);
break;
case SOWING_DATE:
dateSelectorData = choice;
updateSelector(dateLabel, sowingDateSelector, choice);
break;
case IRRIGATION:
irrigationSelectorData = choice;
updateSelector(irrigationLabel, irrigationSelector, choice);
break;
case FERTILIZER:
fertilizeSelectorData = choice;
updateSelector(fertilizerLabel, fertilizeSelector, choice);
break;
case PEST:
pestSelectorData = choice;
updateSelector(pestLabel, pestSelector, choice);
break;
case DISEASE:
diseaseSelectorData = choice;
updateSelector(diseaseLabel, diseaseSelector, choice);
break;
case SPRAY:
spraySelectorData = choice;
updateSelector(sprayLabel, spraySelector, choice);
break;
default:
break;
}
updateValues();
}
private void setLocationSelector() {
final TextView selectorText = (TextView) findViewById(R.id.location_selector_label);
selectorText.setText(locationSelectorData.getShortName());
}
private void setYearSelector() {
final TextView selectorText = (TextView) findViewById(R.id.year_selector_label);
selectorText.setText(yearSelectorData.getShortName());
}
private void updateSelector(TextView label, ImageView selector,
Resource data) {
label.setText(data.getShortName());
// this image should come from the data. It is set in the auety to
// compose the selector
selector.setImageResource(data.getImage1());
}
private void updateValues() {
List<String> resources = new ArrayList<String>();
// String place = "placeid = " + locationSelectorData.toString();
if (dateSelectorData.getName() != "All") {
resources.add(" AND sowingWindowid = '"
+ dateSelectorData.getName() + "'");
}
if (diseaseSelectorData.getName() != "All") {
resources.add(" AND hadDisease = '" + diseaseSelectorData.getName()
+ "'");
}
if (pestSelectorData.getName() != "All") {
resources.add(" AND hadPest = '"
+ pestSelectorData.getName().toString() + "'");
}
if (irrigationSelectorData.getName() != "All") {
resources.add(" AND hasIrrigated = '"
+ irrigationSelectorData.getName() + "'");
}
if (spraySelectorData.getName() != "All") {
resources.add(" AND hasSprayed = '" + spraySelectorData.getName()
+ "'");
}
if (fertilizeSelectorData.getName() != "All") {
resources.add(" AND hasFertilized = '"
+ fertilizeSelectorData.getName() + "'");
}
if (varietySelectorData.getName() != "All") {
resources.add(" AND seedTypeId = '" + varietySelectorData.getName()
+ "'");
}
if (soilTypeSelectorData.getName() != "All") {
resources.add(" AND soilTypeId = '"
+ soilTypeSelectorData.getName() + "'");
}
String[] data = mDataProvider.getYieldData(resources);
if (data.length > 0) {
if (data[0] != null) {
double max = Double.parseDouble(data[0]);
minLabel.setText(max + "");
}
if (data[1] != null) {
double min = Double.parseDouble(data[1]);
maxLabel.setText(min + "");
}
if (data[3] != null || data[1] != null) {
double avg = Double.parseDouble(data[3])
/ Double.parseDouble(data[1]);
avgLabel.setText(avg + "");
}
}
}
}