/* * Copyright 2012 Kazumune Katagiri. (http://d.hatena.ne.jp/nemuzuka) * * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package jp.co.nemuzuka.controller.project.management.ajax; import jp.co.nemuzuka.common.ProjectAuthority; import jp.co.nemuzuka.core.annotation.ProjectAdmin; import jp.co.nemuzuka.core.annotation.TokenCheck; import jp.co.nemuzuka.core.controller.JsonController; import jp.co.nemuzuka.core.entity.JsonResult; import jp.co.nemuzuka.form.ProjectMemberForm; import jp.co.nemuzuka.service.ProjectMemberService; import jp.co.nemuzuka.service.TicketMstService; import jp.co.nemuzuka.service.impl.ProjectMemberServiceImpl; import jp.co.nemuzuka.service.impl.TicketMstServiceImpl; import org.slim3.util.ApplicationMessage; /** * ProjectMember設定Controller. * @author kazumune */ public class MemberSettingController extends JsonController { /** ActionForm. */ //本メソッド内でインスタンス生成. protected ProjectMemberForm form; protected ProjectMemberService projectMemberService = ProjectMemberServiceImpl.getInstance(); protected TicketMstService ticketMstService = TicketMstServiceImpl.getInstance(); /* (非 Javadoc) * @see jp.co.nemuzuka.core.controller.JsonController#execute() */ @Override @TokenCheck @ProjectAdmin protected Object execute() throws Exception { JsonResult result = validate(); if(result != null) { return result; } //登録・更新する projectMemberService.updateProjectMember(getUserInfo().selectedProject, form); //キャッシュの初期化 ticketMstService.initRefreshStartTime(getUserInfo().selectedProject); result = new JsonResult(); result.getInfoMsg().add(ApplicationMessage.get("info.success")); return result; } /** * 自前validate. * ActionFormにデータを設定して、入力チェックを行います。 * ajaxで配列パラメータを受ける際の処理がslim3の通常の仕組みでは想定通りの振る舞いをしないので * 個別対応をしています。 * @return エラーが存在する場合、JsonResultのインスタンス。エラーが存在しない場合、null */ private JsonResult validate() { form = new ProjectMemberForm(); form.memberKeyArray = paramValues("memberKeyArray[]"); form.authorityCodeArray = paramValues("authorityCodeArray[]"); //チェックボックスは1つ以上選択すること if(form.memberKeyArray == null || form.memberKeyArray.length == 0 || form.authorityCodeArray == null || form.authorityCodeArray.length == 0) { return createErrorMsg("validator.check.required", "プロジェクトメンバー"); } //サイズが合致しないのは不正 if(form.memberKeyArray.length != form.authorityCodeArray.length) { return createErrorMsg("validator.error.size", "プロジェクトメンバー", "権限"); } //管理者が1件も存在しないのは、不正 boolean admin = false; for(String target : form.authorityCodeArray) { if(ProjectAuthority.type1.getCode().equals(target)) { admin = true; break; } } if(admin == false) { return createErrorMsg("validator.check.required", "プロジェクト管理者"); } return null; } }