/*
* Copyright 2013 The Skfiy Open Association.
*
* 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 org.skfiy.typhon.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.skfiy.typhon.util.DomainUtils;
import com.alibaba.fastjson.annotation.JSONType;
/**
*
* @author Kevin Zou <kevinz@skfiy.org>
*/
@JSONType(ignores = {"parent", "player", "parentPropertyName"})
public class Role implements Changeable {
private int rid;
private String name;
private int level = 1;
private boolean enabled;
private long creationTime = -1L;
private long lastAccessedTime;
private long lastLoginedTime;
private int diamond;
private Changeable _parent;
private String _parentPropertyName;
@Override
public Player player() {
return _parent.player();
}
public int getRid() {
return rid;
}
public void setRid(int rid) {
this.rid = rid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
DomainUtils.firePropertyChange(this, "name", this.name);
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
if (_parent != null) {
DomainUtils.firePropertyChange(this, "level", this.level);
}
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public long getCreationTime() {
return creationTime;
}
public void setCreationTime(long creationTime) {
this.creationTime = creationTime;
DomainUtils.firePropertyChange(this, "creationTime", this.creationTime);
}
public long getLastAccessedTime() {
return lastAccessedTime;
}
public void setLastAccessedTime(long lastAccessedTime) {
this.lastAccessedTime = lastAccessedTime;
}
public long getLastLoginedTime() {
return lastLoginedTime;
}
public void setLastLoginedTime(long lastLoginedTime) {
this.lastLoginedTime = lastLoginedTime;
}
public int getDiamond() {
return diamond;
}
public void setDiamond(int diamond) {
this.diamond = diamond;
if (_parent != null) {
DomainUtils.firePropertyChange(this, "diamond", this.diamond);
}
}
@Override
public Changeable parent() {
return _parent;
}
@Override
public void set(Changeable parent, String parentPropertyName) {
this._parent = parent;
this._parentPropertyName = parentPropertyName;
}
@Override
public String parentPropertyName() {
return _parentPropertyName;
}
@Override
public String toString() {
ToStringBuilder builder = new ToStringBuilder(this);
builder.append("rid", rid).append("\n");
builder.append("level", level).append("\n");
builder.append("creationTime", creationTime).append("\n");
builder.append("diamond", diamond).append("\n");
builder.append("currentTimeMillis", System.currentTimeMillis()).append("\n");
return builder.toString();
}
}