/* * 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.service; import java.util.ArrayList; import java.util.List; import jp.co.nemuzuka.core.entity.LabelValueBean; import jp.co.nemuzuka.core.entity.UserInfo; import jp.co.nemuzuka.entity.ProjectModelEx; import jp.co.nemuzuka.form.ProjectForm; import jp.co.nemuzuka.model.ProjectModel; /** * Projectに関するService. * @author kazumune */ public interface ProjectService { /** * 詳細情報取得. * @param keyString キー文字列 * @return 該当レコードがあれば更新用Form。該当レコードがなければ新規用Form */ ProjectForm get(String keyString); /** * put処理. * @param form put対象Form */ void put(ProjectForm form); /** * delete処理. * keyとバージョンNoが合致するデータを削除します。 * 本プロジェクトに紐付くメンバー情報も削除します。 * @param form delete対象Form */ void delete(ProjectForm form); /** * 該当レコード取得. * 一覧を取得します。 * @param projectName 検索条件:プロジェクト名 * @return 該当レコード */ List<ProjectModelEx> getList(String projectName); /** * 該当レコード取得. * ユーザ情報が参照可能なプロジェクト一覧を取得します。 * GAE管理者 or アプリケーション管理者であるかも設定します。 * @param email ユーザのメールアドレス * @param gaeAdmin GAE管理者の場合、true * @return 該当レコード */ TargetProjectResult getUserProjectList(String email, boolean gaeAdmin); /** * 所属プロジェクト取得. * ユーザが参照可能なプロジェクト一覧を取得します。 * @param email ユーザのメールアドレス * @return 該当レコード */ List<ProjectModelEx> getUserProjectList(String email); /** * 全件取得. * @return 該当レコード */ List<ProjectModel> getAllList(); /** * UserInfo情報更新. * プロジェクトKey、ログインユーザのメールアドレスを元に、UserInfoに権限を設定します。 * @param projectKeyString プロジェクトKey文字列 * @param mail ログインユーザのメールアドレス * @param userInfo 設定先UserInfoインスタンス */ void setUserInfo(String projectKeyString, String mail, UserInfo userInfo); /** * 戻り値. * @author kazumune */ class TargetProjectResult { /** 参照可能プロジェクトList. */ public List<LabelValueBean> projectList = new ArrayList<LabelValueBean>(); /** GAE管理者 or アプリケーション管理者であるか. */ public boolean admin = false; } }