package io.whz.synapse.pojo.multiple.item;

import android.support.annotation.NonNull;

import com.github.mikephil.charting.data.Entry;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

import io.whz.synapse.pojo.neural.Model;
import io.whz.synapse.util.Precondition;

public class TrainedModelItem {
    private final Model mModel;
    private List<Entry> mEntries;

    public TrainedModelItem(@NonNull Model model) {
        mModel = Precondition.checkNotNull(model);
    }

    private List<Entry> format() {
        final double[] doubles = getModel().getAccuracies();
        final List<Entry> list = new ArrayList<>();

        for (int i = 0, len = doubles.length; i < len; ++i) {
            list.add(new Entry(i, (float) doubles[i]));
        }

        return list;
    }

    public Model getModel() {
        return mModel;
    }

    public List<Entry> getEntries() {
        if (mEntries == null) {
            mEntries = format();
        }

        return mEntries;
    }

    @Override
    public boolean equals(Object obj) {
        return (obj instanceof TrainedModelItem)
                && Objects.equals(((TrainedModelItem) obj).getModel().getId(), this.getModel().getId());
    }
}