package me.bello.rkenword;

import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.GridView;

import androidx.appcompat.app.AppCompatActivity;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

import me.bello.rkenword.adapter.CharAdapter;
import me.bello.rkenword.data.MainData;

public class EnglishActivity extends AppCompatActivity {
    private Context context;
    private GridView mGridView;
    private CharAdapter adapter;
    // 大集合
    ArrayList<MainData> mainList = new ArrayList<>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_english);
        context = this;

        mGridView = findViewById(R.id.grid_view);
        adapter = new CharAdapter(context, mainList);
        mGridView.setAdapter(adapter);

        readCSVFile();
        adapter.notifyDataSetChanged();

    }

    private void readCSVFile() {
        // 从csv中获取的词条
        ArrayList<HashMap<String, String>> strList = new ArrayList<>();
        // 首字母
        List<String> firstCharList = new ArrayList<>();

        InputStreamReader is = null;
        try {
            // 判断是否有SD上的文件
            File f = new File(Environment.getExternalStorageDirectory(), "en.CSV");
            if (f.exists()){
                is = new InputStreamReader(new FileInputStream(f), "GBK");
            } else {
                is = new InputStreamReader(getAssets().open("en.CSV"), "GBK");
            }
            BufferedReader reader = new BufferedReader(is);
            String line;
            while ((line = reader.readLine()) != null){
                Log.d("line --> ", line);
                // 取词条
                HashMap<String, String> map = new HashMap<>();
                String[] spt = line.split(",");
                if (spt.length != 3){
                    if (spt[0].startsWith("\"")){
                        map.put("w", (spt[0]+", "+spt[1]).replace("\"", "")); // word
                        map.put("s", spt[2]);  // simple
                        map.put("c", spt[3]);  // chinese
                        map.put("o", "0");     // open
                    } else {
                        map.put("w", spt[0]);
                        map.put("s", spt[1]);
                        map.put("c", (spt[2]+", "+spt[3]).replace("\"", ""));
                        map.put("o", "0");
                    }
                } else {
                    map.put("w", spt[0]);
                    map.put("s", spt[1]);
                    map.put("c", spt[2]);
                    map.put("o", "0");
                }
                strList.add(map);

                // 取首字母
                String w = map.get("w").substring(0, 1).toUpperCase();
                boolean exsit = false;
                for (int i = 0; i < firstCharList.size(); i++) {
                    if (w.equals(firstCharList.get(i))){
                        exsit = true;
                    }
                }
                if (!exsit) {
                    firstCharList.add(w);
                }
            }

            // 首字母排序
            Collections.sort(firstCharList);

            // 开始组合成大集合
            // 先插入首字母
            for (int i = 0; i < firstCharList.size(); i++) {
               MainData data = new MainData();
               data.setFirstChar(firstCharList.get(i));
               data.setCharList(new ArrayList<>());
               mainList.add(data);
            }
            // 遍历词条
            for (int i = 0; i < strList.size(); i++) {
                String first = strList.get(i).get("w").substring(0, 1).toUpperCase();
                for (int j = 0; j < mainList.size(); j++) {
                    if (first.equals(mainList.get(j).getFirstChar())){
                        mainList.get(j).getCharList().add(strList.get(i));
                    }
                }
            }
//            System.out.println(mainList);
        } catch (Exception e){
            System.out.println(e);
        }
    }


}