/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package Sirius.server.localserver.method;
import Sirius.server.newuser.permission.PermissionHolder;
import Sirius.server.newuser.permission.Policy;
import Sirius.util.Mapable;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.Collection;
/**
* DOCUMENT ME!
*
* @version $Revision$, $Date$
*/
public class Method implements java.io.Serializable, Cloneable, Mapable {
//~ Static fields/initializers ---------------------------------------------
private static final transient Logger LOG = Logger.getLogger(Method.class);
//~ Instance fields --------------------------------------------------------
protected int id;
protected PermissionHolder permissions;
protected ArrayList classKeys = new ArrayList();
// mapable by name
protected String plugin_id;
protected String method_id;
protected String description;
boolean o_multiple;
boolean c_multiple;
//~ Constructors -----------------------------------------------------------
/**
* Creates a new Method object.
*
* @param id DOCUMENT ME!
* @param plugin_id DOCUMENT ME!
* @param method_id DOCUMENT ME!
* @param c_multiple DOCUMENT ME!
* @param o_multiple DOCUMENT ME!
* @param policy DOCUMENT ME!
*/
public Method(final int id,
final String plugin_id,
final String method_id,
final boolean c_multiple,
final boolean o_multiple,
Policy policy) {
this.id = id;
this.plugin_id = plugin_id;
this.method_id = method_id;
if (policy == null) {
policy = Policy.createParanoidPolicy();
}
permissions = new PermissionHolder(policy);
description = ""; // NOI18N
this.c_multiple = c_multiple; // beliebig viele klassen beliebig viele Objekte
this.o_multiple = o_multiple; // 1 klasse mehrer Objekte
}
/**
* Creates a new Method object.
*
* @param id DOCUMENT ME!
* @param plugin_id DOCUMENT ME!
* @param method_id DOCUMENT ME!
* @param c_multiple DOCUMENT ME!
* @param o_multiple DOCUMENT ME!
* @param description DOCUMENT ME!
* @param policy DOCUMENT ME!
*/
public Method(final int id,
final String plugin_id,
final String method_id,
final boolean c_multiple,
final boolean o_multiple,
final String description,
final Policy policy) {
this(id, plugin_id, method_id, c_multiple, o_multiple, policy);
this.description = description;
}
//~ Methods ----------------------------------------------------------------
/**
* -----------------------------------------------------------------------------------
*
* @return DOCUMENT ME!
*/
public final String getDescription() {
return description;
}
/**
* ------------------------------------------------------------------------------
*
* @param description DOCUMENT ME!
*/
public void setDescription(final String description) {
this.description = description;
}
/**
* -----------------------------------------------------------------------------------
*
* @return DOCUMENT ME!
*/
public final PermissionHolder getPermissions() {
return permissions;
}
//-----------------------------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public final int getID() {
return id;
}
@Override
public Object getKey() {
return method_id + "@" + plugin_id; // NOI18N
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public final boolean isMultiple() {
return o_multiple;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public final boolean isClassMultiple() {
return c_multiple;
}
@Override
public String toString() {
return "Name ::" + getKey() + " id::" + id; // NOI18N
}
/**
* DOCUMENT ME!
*
* @param m DOCUMENT ME!
*/
public final void addPermission(final Mapable m) {
permissions.addPermission(m);
}
// final public void removePermission(String localServerName, int userGroupID)
// {
// permissions.addPermission(localServerName,userGroupID,false);
// }
@Override
public Object constructKey(final Mapable m) {
if (m instanceof Method) {
return m.getKey();
} else {
return null;
}
}
/**
* DOCUMENT ME!
*
* @param key DOCUMENT ME!
*/
public void addClassKey(final String key) {
if (LOG != null) {
if (LOG.isDebugEnabled()) {
LOG.debug("add class key" + key + " to method " + this); // NOI18N
}
}
classKeys.add(key);
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public Collection getClassKeys() {
return classKeys;
}
}