package _VisualDVM.ProjectData.SapforData.Regions;
import Common.Database.Tables.DataSet;
import Common.Visual.DataSetControlForm;
import _VisualDVM.Current;

import java.math.BigInteger;

import static Common.Visual.Tables.TableRenderers.RendererMultiline;
import static Common.Visual.Tables.TableRenderers.RendererTopLeft;
public class RegionsSet extends DataSet<BigInteger, ParallelRegion> {
    //суррогат. нужен только для сохры столбцов. во всяком случае пока.
    public RegionsSet() {
        super(BigInteger.class, ParallelRegion.class);
    }
    @Override
    public Current CurrentName() {
        return Current.ParallelRegionInfo;
    }
    @Override
    public String getSingleDescription() {
        return "область распараллеливания";
    }
    @Override
    public String getPluralDescription() {
        return "области распараллеливания";
    }
    @Override
    protected DataSetControlForm createUI() {
        return new DataSetControlForm(this) {
            @Override
            protected void AdditionalInitColumns() {
                columns.get(0).setVisible(false);
                for (int i = 1; i < 7; ++i)
                    columns.get(i).setRenderer(RendererTopLeft);
                columns.get(7).setRenderer(RendererMultiline);
            }
        };
    }
    @Override
    public Object getFieldAt(ParallelRegion object, int columnIndex) {
        switch (columnIndex) {
            case 1:
                return object.originalName;
            case 2:
                return object.lines_count;
            case 3:
                return object.arrays_count;
            case 4:
                return object.loops_count;
            case 5:
                return object.fd_count;
            case 6:
                return object.fc_count;
            case 7:
                return object.fragments;
            default:
                return null;
        }
    }
    @Override
    public String[] getUIColumnNames() {
        return new String[]{"Имя", "Строк кода", "Массивов", "Циклов", "Объявлений процедур", "Вызовов процедур", "Фрагменты"};
    }
    @Override
    public Class getMenuBarClass() {
        return RegionsMenuBar.class;
    }
}
