package jp.gihyo.mitoma.android.p014gdpmanagement;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    ArrayList<CountryDTO> countryList;
    CountryDAO dao;
    ArrayAdapter<CountryDTO> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView listView = findViewById(R.id.lvCountry);
        // GDPリストの取得と表示
        this.dao = CountryDAO.getInstance(this);
        this.countryList = dao.select();
        // GDPリスト未作成の時作成
        if(this.countryList.size() == 0){
            this.countryList = dbInitialize(dao);
        }
        this.adapter = new ArrayAdapter<>(
                this,R.layout.custom_list_item,countryList);
        listView.setAdapter(adapter);
        // クリックリスナーのセット
        listView.setOnItemClickListener(new OnItemClick());
    }
    protected void onResume() {
        super.onResume();
        // DBから最新データ読込
        ArrayList<CountryDTO> latestList = this.dao.select();
        this.countryList.clear();
        this.countryList.addAll(latestList);
        // 再表示
        this.adapter.notifyDataSetChanged();
    }
    private class OnItemClick implements AdapterView.OnItemClickListener {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            CountryDTO dto = (CountryDTO) parent.getItemAtPosition(position);
            // インテントの生成とDTOの添付
            Intent intent = new Intent(MainActivity.this, SubActivity.class);
            Bundle bundle = new Bundle();
            bundle.putInt("cNo", dto.cNo);
            bundle.putString("name", dto.countryName);
            bundle.putDouble("gdp",dto.gdp);
            bundle.putDouble("pop",dto.population);
            intent.putExtras(bundle);
            // インテント発行（遷移）
            startActivity(intent);
        }
    }
    private ArrayList<CountryDTO> dbInitialize(CountryDAO dao){
        ArrayList<CountryDTO> list = new ArrayList<CountryDTO>();
        CountryDTO dto;
        dto = new CountryDTO(840,"アメリカ合衆国",30.5,3.47);
        list.add(dto);
        dto = new CountryDTO(156,"中華人民共和国",19.2,14.16);
        list.add(dto);
        dto = new CountryDTO(276,"ドイツ",4.74,0.84);
        list.add(dto);
        dto = new CountryDTO(392,"日本",4.19,1.24);
        list.add(dto);
        dto = new CountryDTO(356,"インド",4.19,14.64);
        list.add(dto);
        dto = new CountryDTO(826,"イギリス",3.84,0.69);
        list.add(dto);
        dto = new CountryDTO(250,"フランス",3.21,0.66);
        list.add(dto);
        dto = new CountryDTO(643,"ロシア連邦",2.54,1.45);
        list.add(dto);
        dto = new CountryDTO(380,"イタリア",2.42,0.6);
        list.add(dto);
        dto = new CountryDTO(124,"カナダ",2.23,0.4);
        list.add(dto);
        dto = new CountryDTO(724,"スペイン",1.86,0.48);
        list.add(dto);
        dto = new CountryDTO(036,"オーストラリア",1.57,0.26);
        list.add(dto);
        dto = new CountryDTO(484,"メキシコ",1.44,1.31);
        list.add(dto);
        dto = new CountryDTO(528,"オランダ",1.32,0.18);
        list.add(dto);
        dto = new CountryDTO(682,"サウジアラビア",1.32,0.35);
        list.add(dto);
        for(CountryDTO dtoEx:list){
            dao.insert(dtoEx);
        }
        return list;
    }
}