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;

/**
 * SHORT DESCRIPTION...
 *
 * @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 );

    // data choooser total size of results
    private static int size;

    // returns data chooser one page results
    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 ***" );

        // all results list
        List<Map<String, String>> results = null;

        // single record in result
        Map<String, String> oneResult = null;

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

            // filling single record in results, type values for mappings in place of .....
            // copy section to add next record to results
            // *** beginning of section ***
            @BPMN_JAVA_CLASS_DCMAPPINGS_TAG@
            // *** end of section ***

            // setting of data chooser total size of results
            size = results.size();

            // getting proper results page
            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 )
        {
            // error in data chooser handling
            log.error( e.getMessage(), e );

            return null;
        }
    }

    // returns data chooser total size of results
    public int getDataChooserResultSize( Map<String, String> mCriteria, Map<String, String> mCustomKeys )
    {
        log.trace( "*** @BPMN_JAVA_CLASS_NAME_TAG@ - getDataChooserResultSize ***" );

        return size;
    }
}