import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;

import com.plusmpm.util.form.datachooser.DataChooser;

/**
 * KROTKI OPIS...
 *
 * @author @BPMN_JAVA_CLASS_AUTHOR_TAG@ @BPMN_JAVA_CLASS_DATE_TAG@
 */
public class @BPMN_JAVA_CLASS_NAME_TAG@
    implements DataChooser
{
    public static Logger log = Logger.getLogger( @BPMN_JAVA_CLASS_NAME_TAG@.class );

    // calkowita liczba rezultatow dynamicznej listy
    private static int size;

    // zwraca rezultaty jednej strony dla dynamicznej listy
    public List<Map<String, String>> getDataChooserResult( int nStartItem, int nLimit, String sOrderProperty, String sOrder,
                                                           Map<String, String> mCriteria, Map<String, String> mCustomKeys )
    {
        log.trace( "*** @BPMN_JAVA_CLASS_NAME_TAG@ - getDataChooserResult ***" );

        // lista wszystkich wynikow
        List<Map<String, String>> results = null;

        // pojedynczy rekord w wyniku
        Map<String, String> oneResult = null;

        try
        {
            results = new ArrayList<Map<String, String>>();

            // uzupelnienie jednego rekordu w wyniku, podaj wartosci dla mappingow w miejsce .....
            // skopiuj sekcje w celu dodania kolejnego rekordu do wyniku
            // *** poczatek sekcji ***
            @BPMN_JAVA_CLASS_DCMAPPINGS_TAG@
            // *** koniec sekcji ***

            // ustawienie calkowitej liczby rezultatow dynamicznej listy
            size = results.size();

            // pobranie okreslonej strony rezultatow
            int nEndItem = nStartItem + nLimit;
            int startItem = nStartItem;

            if ( nEndItem > results.size() )
            {
                nEndItem = results.size();
            }
            if ( startItem > nEndItem )
            {
                startItem = 0;
            }

            return results.subList( startItem, nEndItem );
        }
        catch ( Exception e )
        {
            // blad w obsludze dynamicznej listy
            log.error( e.getMessage(), e );

            return null;
        }
    }

    // zwraca calkowita ilosc rezultatow dynamicznej listy
    public int getDataChooserResultSize( Map<String, String> mCriteria, Map<String, String> mCustomKeys )
    {
        log.trace( "*** @BPMN_JAVA_CLASS_NAME_TAG@ - getDataChooserResultSize ***" );

        return size;
    }
}