package kr.kdev.dg1s.biowiki.ui.info.classification;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import kr.kdev.dg1s.biowiki.Constants;
import kr.kdev.dg1s.biowiki.R;
import kr.kdev.dg1s.biowiki.ui.BIActionBarActivity;
import kr.kdev.dg1s.biowiki.ui.info.classification.fragments.AttributeSelectionFragment;
import kr.kdev.dg1s.biowiki.ui.info.viewer.SearchResultsViewerActivity;
import kr.kdev.dg1s.biowiki.util.ToastUtils;
public class SearchByAttributeActivity extends BIActionBarActivity implements AttributeSelectionFragment.OnAttributeDecidedListener {
Menu menu;
AttributeSelectionFragment selectionFragment = null;
@Override
public void onCreate(Bundle savedInstanceState) {
title = getString(R.string.dictionaryItem);
super.onCreate(savedInstanceState);
createMenuDrawer(R.layout.blank_linearlayout);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
selectionFragment = new AttributeSelectionFragment();
transaction.add(R.id.selector_category, selectionFragment);
transaction.commit();
}
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu createdMenu) {
menu = createdMenu;
getSupportMenuInflater().inflate(R.menu.attribute_menus, menu);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
int itemId = item.getItemId();
switch (itemId) {
case android.R.id.home:
if (mMenuDrawer != null) {
mMenuDrawer.toggleMenu();
return true;
}
case R.id.selection_finished:
selectionFragment.getSelectedAttributes();
break;
}
return false;
}
public void onBackPressed() {
/**
if (getSupportFragmentManager().getFragments().get(0).equals(informationFragment)) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.selector_category, selectionFragment);
transaction.commit();
} else {
super.onBackPressed();
}
*/
super.onBackPressed();
}
public void onAttributeDecided(ArrayList<Integer> ids, int logLevel) {
ToastUtils.showToast(getApplicationContext(), "Switching...\n" + ids);
List<ArrayList<String>> correspondingPlants = getCorrespondingPlants(ids);
ArrayList<String> unfilteredPlants = correspondingPlants.get(0);
ArrayList<String> filteredPlants = new ArrayList<String>();
for (ArrayList<String> plantList : correspondingPlants) {
if (logLevel > LOG_LEVEL_LOW)
Log.d("COMPARISION", "Comparing \n" + plantList + "\nto\n" + unfilteredPlants);
for (String plant : plantList) {
if (unfilteredPlants.contains(plant)) {
if (logLevel > LOG_LEVEL_MEDIUM)
Log.d("COMPARISION", plant + " is included within array");
filteredPlants.add(plant);
} else {
if (logLevel > LOG_LEVEL_MEDIUM)
Log.d("COMPARISION", plant + " ISN'T included within array");
}
}
unfilteredPlants = new ArrayList<String>(filteredPlants);
filteredPlants.clear();
if (logLevel > LOG_LEVEL_NONE)
Log.d("COMPARISION", "Filtered : \n" + unfilteredPlants);
}
if (logLevel > LOG_LEVEL_NONE)
Log.d("COMPARISION", "----------------------END OF COMPARISION----------------------");
Intent intent = new Intent(this, SearchResultsViewerActivity.class);
intent.putExtra("plants", unfilteredPlants);
startActivity(intent);
}
List<ArrayList<String>> getCorrespondingPlants(ArrayList<Integer> integers) {
ArrayList<ArrayList<String>> plants = new ArrayList<ArrayList<String>>();
for (int id : integers) {
Log.d("LIST", "Current elements : \n" + plants);
ArrayList<String> arrayList = new ArrayList<String>();
switch (id) {
//FLOWERS
case R.drawable.d1101:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.OPTITULUM));
break;
case R.drawable.d1102:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.CATKIN));
break;
case R.drawable.d1103:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.CYATHIUM));
break;
case R.drawable.d1104:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.CORYMB));
break;
case R.drawable.d1105:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.UMBEL));
break;
case R.drawable.d1106:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.RHIPIDIUM));
break;
case R.drawable.d1107:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.SPIKE));
break;
case R.drawable.d1108:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.PANICLE));
break;
case R.drawable.d1109:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.SPEDIX)); // 오타: SPEDIX -> SPADIX
break;
case R.drawable.d1110:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.RECEME)); // 오타: RECEME -> RACEME
break;
case R.drawable.d1111_1:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.CYME));
break;
case R.drawable.d1111_2:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.ORDER.CYME));
break;
case R.drawable.d1201:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.OVERY.SUPERIOR_OVERY));
break;
case R.drawable.d1202:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.OVERY.HALFINFERIOR_OVERY));
break;
case R.drawable.d1203:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.OVERY.INFERIOR_OVARY));
break;
case R.drawable.d1301:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.PERSONATE));
break;
case R.drawable.d1302:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.TUBULAR));
break;
case R.drawable.d1303:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.PALATE));
break;
case R.drawable.d1304:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.SACCATE));
break;
case R.drawable.d1305:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.FUNNEL));
break;
case R.drawable.d1306:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.ACTINOMORPHIC));
break;
case R.drawable.d1307:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.SALVER));
break;
case R.drawable.d1308:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.LIGULATE));
break;
case R.drawable.d1309:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.BILABIATE));
break;
case R.drawable.d1310:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.CRUCIFORM));
break;
case R.drawable.d1311:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.CORONATE));
break;
case R.drawable.d1312:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.PAPILLIONACEOUS));
break;
case R.drawable.d1313:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.CAMPANULATE));
break;
case R.drawable.d1314:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.GIBBOUS));
break;
case R.drawable.d1315:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.GALEATE));
break;
case R.drawable.d1316:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.ROTATE));
break;
case R.drawable.d1317:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Flowers.CorollaType.URCEOLATE));
break;
//LEAF
case R.drawable.d2101:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.TIPS.MUCRONATE));
break;
case R.drawable.d2102:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.TIPS.OBTUSE));
break;
case R.drawable.d2103:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.TIPS.CAUDATE));
break;
case R.drawable.d2104:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.TIPS.ACUTE));
break;
case R.drawable.d2105:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.TIPS.CUSPIDATE));
break;
case R.drawable.d2106:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.TIPS.EMARGINATE));
break;
case R.drawable.d2107:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.TIPS.ROUNDED));
break;
case R.drawable.d2108:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.TIPS.ACUMINATE));
break;
case R.drawable.d2109:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.TIPS.TRUNCATE));
break;
case R.drawable.d2201:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.ENTIRE));
break;
case R.drawable.d2202:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.CRENATE));
break;
case R.drawable.d2203:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.CRENULATE));
break;
case R.drawable.d2204:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.SERRATE));
break;
case R.drawable.d2205:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.SERRULATE));
break;
case R.drawable.d2206:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.BISERRATE));
break;
case R.drawable.d2207:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.DENTATE));
break;
case R.drawable.d2208:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.DENTICULATE));
break;
case R.drawable.d2209:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.UNDULATE));
break;
case R.drawable.d2210:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.REVOLUTE));
break;
case R.drawable.d2211:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.INVOLUTE));
break;
case R.drawable.d2212:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.PLANE));
break;
case R.drawable.d2213:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.LOBED));
break;
case R.drawable.d2214:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.CLEFT));
break;
case R.drawable.d2215:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.PARTED));
break;
case R.drawable.d2216:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.PINNATIFID));
break;
case R.drawable.d2217:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.MARGINS.PALMATIFID));
break;
case R.drawable.d2301:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.PERPOLIATE));
break;
case R.drawable.d2302:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.HASTATE));
break;
case R.drawable.d2303:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.OBTUSE));
break;
case R.drawable.d2304:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.CUNEATE));
break;
case R.drawable.d2305:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.PELTATE));
break;
case R.drawable.d2306:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.CORDATE));
break;
case R.drawable.d2307:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.ACUTE));
break;
case R.drawable.d2308:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.OBLIQUE));
break;
case R.drawable.d2309:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.ROUNDED));
break;
case R.drawable.d2310:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.ATTEUATE));
break;
case R.drawable.d2311:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.AURICULATE));
break;
case R.drawable.d2312:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.BASE.TRUNCATE));
break;
case R.drawable.d2401:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.OVAL));
break;
case R.drawable.d2402:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.HASTATE));
break;
case R.drawable.d2403:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.OVATE));
break;
case R.drawable.d2404:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.OBOVATE));
break;
case R.drawable.d2405:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.OBLANCEOLATE));
break;
case R.drawable.d2406:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.RUNCINATE));
break;
case R.drawable.d2407:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.DELTOID));
break;
case R.drawable.d2408:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.LINEAR));
break;
case R.drawable.d2409:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.RENIFORM));
break;
case R.drawable.d2410:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.CORDATE));
break;
case R.drawable.d2411:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.ORBICULAR));
break;
case R.drawable.d2412:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.OBLONG));
break;
case R.drawable.d2413:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.SAGITTATE));
break;
case R.drawable.d2414:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.SPATULATE));
break;
case R.drawable.d2415:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.ACICULAR));
break;
case R.drawable.d2416:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.ELLIPTICAL));
break;
case R.drawable.d2417:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.SHAPES.LANCEOLATE));
break;
case R.drawable.d2501:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.PINNATELY_COMPOUND.ODD_PINNATE_UNIJUGATE));
break;
case R.drawable.d2502:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.PINNATELY_COMPOUND.ODD_PINNATE));
break;
case R.drawable.d2503:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.PINNATELY_COMPOUND.ODD_BIPINNATE));
break;
case R.drawable.d2504:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.PINNATELY_COMPOUND.EVEN_PINNATE));
break;
case R.drawable.d2505:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.PINNATELY_COMPOUND.EVEN_BIPINNATE));
break;
case R.drawable.d2601:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.ORDER_COMPOUND.VERTICILLATE));
break;
case R.drawable.d2602:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.ORDER_COMPOUND.SIMPLE_OPPOSITE));
break;
case R.drawable.d2603:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.ORDER_COMPOUND.SIMPLE_ALTERNATIVE));
break;
case R.drawable.d2701:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.PALMATELY_COMPOUND.BITERNATE));
break;
case R.drawable.d2702:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.PALMATELY_COMPOUND.TRIFOLIOLATE));
break;
case R.drawable.d2703:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.PALMATELY_COMPOUND.TRITERNATE));
break;
case R.drawable.d2704:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Leaves.PALMATELY_COMPOUND.PENTAFOLIOLATE));
break;
//FRUITS
case R.drawable.d3001:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.PYXIS));
break;
case R.drawable.d3002:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.NUT));
break;
case R.drawable.d3003:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.LOMENT));
break;
/* 3004: 분열과는 갖다 버리면 됨.
case R.drawable.d3004:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.));
break;
*/
case R.drawable.d3005:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.CAPSULE));
break;
case R.drawable.d3006:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.ACHENE));
break;
case R.drawable.d3007:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.POME));
break;
case R.drawable.d3008:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.SEMARA)); //오타: SEMARA -> SAMARA
break;
case R.drawable.d3009:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.BERRY));
break;
case R.drawable.d3010:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.AGGREGATE));
break;
case R.drawable.d3011:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.DRUPE));
break;
case R.drawable.d3012:
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.LEGUME));
break;
case R.drawable.dg1s: //이거 영과. 사진 추가하던가 해야 할 듯 싶음..;;
arrayList.addAll(Arrays.asList(Constants.PlantsAttributes.Fruits.CARYOPSIS));
break;
}
plants.add(arrayList);
}
return plants;
}
}