/*
 * ICESOFT COMMERCIAL SOURCE CODE LICENSE V 1.1
 *
 * The contents of this file are subject to the ICEsoft Commercial Source
 * Code License Agreement V1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of the
 * License at
 * http://www.icesoft.com/license/commercial-source-v1.1.html
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations under
 * the License.
 *
 * Copyright 2009-2015 ICEsoft Technologies Canada, Corp. All Rights Reserved.
 */
package com.icesoft.faces.application.showcase.model.service;

import com.icesoft.faces.application.showcase.model.entity.Employee;

import java.util.List;

/**
 * <p>Simple Employee Service inteface.  This mock service layer is intended to
 * make our dataTable and other record based examples behave like real world
 * applications.<p>
 *
 * @since 1.7
 */
public interface EmployeeService {

    /**
     * Gets a list of Employee records that matches the supplied criteria.
     *
     * @param listSize     number of records that will be retreived from service layer
     * @param isDescending true indicates a descending order; otherwise, descending
     * @param sortColumn   column name set will be sorted on.
     * @return list of Employee objects.
     */
    public List<Employee> getEmployees(int listSize, boolean isDescending,
                                       final String sortColumn);

    /**
     * Gets a list of Employee records that matches the supplied criteria.
     *
     * @param listSize number of records that will be retreived from service layer
     * @return list of Employee objects.
     */
    public List<Employee> getEmployees(int listSize);

    public List<String> getDepartments();

    public List<String> getSubDepartments(String department);
}
