package jp.agentec.sinaburocast.service;

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

import jp.agentec.sinaburocast.entity.AdminUser;
import jp.agentec.sinaburocast.entity.FileManage;
import jp.agentec.sinaburocast.form.admin.setting.ImageFileRegistForm;

import org.seasar.extension.jdbc.AutoSelect;
import org.seasar.framework.container.annotation.tiger.Component;
import org.seasar.framework.container.annotation.tiger.InstanceType;

@Component(instance=InstanceType.SINGLETON)
public class FileManageService extends AbstractService<FileManage> {

	public static final String ID_SEQ_NAME = "file_manage_id_seq";

	/**
	 * IDを発行して、登録する。
	 */
	public int inserFileManage(FileManage fileManage, AdminUser adminUserInfo) {
		fileManage.fileManageId =
			getSeqNextVal(Integer.class, ID_SEQ_NAME);
		return super.insert(fileManage, adminUserInfo.loginId);
	}

    public FileManage findById(Integer fileManageId) {
        return select().id(fileManageId).getSingleResult();
    }

    public List<FileManage> findAllOrderById() {
        return select().orderBy("file_manage_id asc").getResultList();
    }

    /**
     * 画像・ドキュメントファイル一覧を検索する。
     * @param imageFileRegistForm
     * @return ArrayList<FileManage>
     */
    public ArrayList<FileManage> findAllByPaging(ImageFileRegistForm imageFileRegistForm) {

    	//件数取得
    	AutoSelect<FileManage> counter = this.getAutoSelectForFindAllByPaging(imageFileRegistForm);
    	imageFileRegistForm.setPaging(null, imageFileRegistForm.pageNo, counter.getCount());

    	//結果取得
		return (ArrayList<FileManage>)this.getAutoSelectForFindAllByPaging(imageFileRegistForm).orderBy("uploadDate desc")
				                            .offset(imageFileRegistForm.getOffSet(""))
				                            .limit(imageFileRegistForm.getLimit(""))
				                            .getResultList();
    }

    /**
     * 画像・ドキュメントファイル一覧を検索するための、AutoSelectを返す。
     * @param imageFileSearchForm
     * @return AutoSelect<FileManage>
     */
    private AutoSelect<FileManage> getAutoSelectForFindAllByPaging(ImageFileRegistForm imageFileSearchForm){
    	return select();
    }

	/**
	 * 画像・ドキュメントファイルを削除する。
	 * @param fileManageId
	 * @param adminUserInfo
	 * @return 削除件数
	 */
	public int fileDelete(String fileManageId,AdminUser adminUserInfo) {

		FileManage fileManage = findById(Integer.parseInt(fileManageId));

		int cnt = delete(fileManage);

		return cnt;
	}

}