package com.folioreader.model;

import com.folioreader.util.MultiLevelExpIndListAdapter;

import org.readium.r2_streamer.model.tableofcontents.TOCLink;

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

/**
 * Created by Mahavir on 3/10/17.
 */

public class TOCLinkWrapper implements MultiLevelExpIndListAdapter.ExpIndData{
    private TOCLink tocLink;
    private int indentation;
    private ArrayList<TOCLinkWrapper> tocLinkWrappers;
    private boolean mIsGroup;
    private int mGroupSize;

    public TOCLinkWrapper(TOCLink tocLink, int indentation) {
        this.tocLink = tocLink;
        this.indentation = indentation;
        this.tocLinkWrappers = new ArrayList<>();
        this.mIsGroup = (tocLink.getTocLinks()!=null && tocLink.getTocLinks().size()>0);
    }

    @Override
    public String toString() {
        return "TOCLinkWrapper{" +
                "tocLink=" + tocLink +
                ", indentation=" + indentation +
                ", tocLinkWrappers=" + tocLinkWrappers +
                ", mIsGroup=" + mIsGroup +
                ", mGroupSize=" + mGroupSize +
                '}';
    }

    public int getIndentation() {
        return indentation;
    }

    public void setIndentation(int indentation) {
        this.indentation = indentation;
    }

    public TOCLink getTocLink() {
        return tocLink;
    }

    public void setTocLink(TOCLink tocLink) {
        this.tocLink = tocLink;
    }

    public ArrayList<TOCLinkWrapper> getTocLinkWrappers() {
        return tocLinkWrappers;
    }

    public void setTocLinkWrappers(ArrayList<TOCLinkWrapper> tocLinkWrappers) {
        this.tocLinkWrappers = tocLinkWrappers;
    }

    public void addChild(TOCLinkWrapper tocLinkWrapper) {
        getTocLinkWrappers().add(tocLinkWrapper);
        //tocLinkWrapper.setIndentation(getIndentation() + 1);
    }

    @Override
    public List<? extends MultiLevelExpIndListAdapter.ExpIndData> getChildren() {
        return tocLinkWrappers;
    }

    @Override
    public boolean isGroup() {
        return mIsGroup;
    }

    @Override
    public void setIsGroup(boolean value) {
        mIsGroup = value;
    }

    @Override
    public void setGroupSize(int groupSize) {
        mGroupSize = groupSize;
    }

    public int getGroupSize() {
        return mGroupSize;
    }
}
