/*
 * Copyright
 *   2009 axYus - www.axyus.com
 *   2009 C.Marchand - christophe.marchand@axyus.com
 *
 * This file is part of XEMELIOS.
 *
 * XEMELIOS is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * XEMELIOS is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with XEMELIOS; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
package fr.gouv.finances.dgfip.xemelios.web.gwt.client.dto;

import com.google.gwt.user.client.rpc.IsSerializable;
import java.util.ArrayList;

/**
 *
 * @author chm
 */
public class ListResultatDTO implements IsSerializable {
    private ArrayList<DisplayableFieldDTO> fields;
    private ArrayList<DisplayableFieldDTO> sortFields;

    public ListResultatDTO() {
        super();
        fields=new ArrayList<DisplayableFieldDTO>();
        sortFields=new ArrayList<DisplayableFieldDTO>();
    }
    public void addField(DisplayableFieldDTO field) {
        if(!fields.contains(field)) fields.add(field);
    }
    public void mountField(int index) {
        if(index>0) {
            DisplayableFieldDTO field = fields.remove(index);
            fields.add(index-1, field);
        }
    }
    public void lowField(int index) {
        if(index<fields.size()-1) {
            DisplayableFieldDTO field = fields.remove(index);
            fields.add(index+1, field);
        }
    }
    public boolean addSortField(DisplayableFieldDTO field) {
        if(!field.isDisplay() || field.getSortOrder()==DisplayableFieldDTO.SORT_ORDER_NO_SORT || field.getSortPosition()==DisplayableFieldDTO.SORT_POSITION_NO_SORT) return false;
        sortFields.add(field.getSortPosition(), field);
        return true;
    }
    public DisplayableFieldDTO removeSortField(int position) {
        return sortFields.remove(position);
    }
    public ArrayList<DisplayableFieldDTO> getDisplayableFields() {
        return fields;
    }
    public ArrayList<DisplayableFieldDTO> getSortedFields() {
        return sortFields;
    }

    @Override
    public String toString() {
        StringBuffer sb = new StringBuffer();
        sb.append("<lr>\n");
        sb.append("\t<fields>\n");
        for(DisplayableFieldDTO field:fields) {
            sb.append("\t\t").append(field.toString()).append("\n");
        }
        sb.append("\t</fields>\n");
        sb.append("\t<sort>\n");
        for(DisplayableFieldDTO field:sortFields) {
            sb.append("\t\t").append(field.toString()).append("\n");
        }
        sb.append("\t</sort>\n</lr>\n");
        return sb.toString();
    }

}
