/*
* 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.model;
import jp.co.nemuzuka.common.ProjectAuthority;
import net.arnx.jsonic.JSONHint;
import org.slim3.datastore.Attribute;
import org.slim3.datastore.Datastore;
import org.slim3.datastore.Model;
import com.google.appengine.api.datastore.Key;
/**
* プロジェクトメンバーを管理するModel.
* @author kazumune
*/
@Model(schemaVersion = 1)
public class ProjectMemberModel extends AbsModel {
/** プロジェクトメンバーKey. */
//プロジェクトKeyとプロジェクトメンバーKeyの複合Key
@Attribute(primaryKey=true)
private Key key;
/** プロジェクトKey. */
private Key projectKey;
/** メンバーKey. */
private Key memberKey;
/** プロジェクトメンバー権限. */
private ProjectAuthority projectAuthority;
/**
* Key生成.
* 引数の情報を元にKey情報を作成します。
* @param projectKey プロジェクトKey
* @param memberKey メンバーKey
* @return 生成Key
*/
public Key createKey(Key projectKey, Key memberKey) {
this.projectKey = projectKey;
this.memberKey = memberKey;
String projectKeyString = Datastore.keyToString(projectKey);
String memberKeyString = Datastore.keyToString(memberKey);
String keyString = projectKeyString + ":" + memberKeyString;
key = Datastore.createKey(ProjectMemberModel.class, keyString);
return key;
}
/**
* @return key
*/
@JSONHint(ignore=true)
public Key getKey() {
return key;
}
/**
* @return projectKey
*/
public Key getProjectKey() {
return projectKey;
}
/**
* @param projectKey セットする projectKey
*/
public void setProjectKey(Key projectKey) {
this.projectKey = projectKey;
}
/**
* @return memberKey
*/
public Key getMemberKey() {
return memberKey;
}
/**
* @param memberKey セットする memberKey
*/
public void setMemberKey(Key memberKey) {
this.memberKey = memberKey;
}
/**
* @return projectAuthority
*/
public ProjectAuthority getProjectAuthority() {
return projectAuthority;
}
/**
* @param projectAuthority セットする projectAuthority
*/
public void setProjectAuthority(ProjectAuthority projectAuthority) {
this.projectAuthority = projectAuthority;
}
/**
* @param key セットする key
*/
public void setKey(Key key) {
this.key = key;
}
}