Description.java
/*
** Module : Description.java
** Abstract : This class represents the items of the access rights.
**
** Copyright (c) 2004-2017, Golden Code Development Corporation.
**
** -#- -I- --Date-- -T- --JPRM-- ----------------Description-----------------
** 001 NVS 20050208 NEW @19702 Created the initial implementation.
** 002 CA 20090615 CA @42692 Added Serializable marker.
** 003 EVL 20160224 Javadoc fixes to make compatible with Oracle Java 8 for
** Solaris 10.
** 004 HC 20170612 Changes related to implementation of new GWT-based Admin client.
*/
/*
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU Affero General Public License as
** published by the Free Software Foundation, either version 3 of the
** License, or (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU Affero General Public License for more details.
**
** You may find a copy of the GNU Affero GPL version 3 at the following
** location: https://www.gnu.org/licenses/agpl-3.0.en.html
**
** Additional terms under GNU Affero GPL version 3 section 7:
**
** Under Section 7 of the GNU Affero GPL version 3, the following additional
** terms apply to the works covered under the License. These additional terms
** are non-permissive additional terms allowed under Section 7 of the GNU
** Affero GPL version 3 and may not be removed by you.
**
** 0. Attribution Requirement.
**
** You must preserve all legal notices or author attributions in the covered
** work or Appropriate Legal Notices displayed by works containing the covered
** work. You may not remove from the covered work any author or developer
** credit already included within the covered work.
**
** 1. No License To Use Trademarks.
**
** This license does not grant any license or rights to use the trademarks
** Golden Code, FWD, any Golden Code or FWD logo, or any other trademarks
** of Golden Code Development Corporation. You are not authorized to use the
** name Golden Code, FWD, or the names of any author or contributor, for
** publicity purposes without written authorization.
**
** 2. No Misrepresentation of Affiliation.
**
** You may not represent yourself as Golden Code Development Corporation or FWD.
**
** You may not represent yourself for publicity purposes as associated with
** Golden Code Development Corporation, FWD, or any author or contributor to
** the covered work, without written authorization.
**
** 3. No Misrepresentation of Source or Origin.
**
** You may not represent the covered work as solely your work. All modified
** versions of the covered work must be marked in a reasonable way to make it
** clear that the modified work is not originating from Golden Code Development
** Corporation or FWD. All modified versions must contain the notices of
** attribution required in this license.
*/
package com.goldencode.p2j.security;
import java.io.Serializable;
/**
* This class describes an item of the access rights.
*/
public class Description
implements Serializable
{
/** reports the P2J directory primitive data type */
private int primitiveType = 0;
/** item is optional or mandatory */
private boolean flagOptional = false;
/** item is variable or fixed size */
private boolean flagVariable = false;
/** item's size */
private int size = 0;
/** item's label */
private String label = null;
/** item's description */
private String description = null;
/** bitfield only - array of bit names */
private String[] bitNames = null;
/** bitfield only - BitSet of unassigned bits */
private BitSet bitMask = null;
/**
* The default constructor.
*/
public Description()
{
}
/**
* Convenience constructor for all types except bitfield based ones.
*
* @param primitiveType
* The primitive data type
* @param flagOptional
* Defines an item to be optional or mandatory
* @param flagVariable
* Defines an item to be variable or fixed size
* @param size
* The size
* @param label
* The label
* @param description
* The description
*/
public Description(int primitiveType,
boolean flagOptional,
boolean flagVariable,
int size,
String label,
String description)
{
this(primitiveType, flagOptional, flagVariable, size, label, description, null, null);
}
/**
* Regular constructor for all types of items.
*
* @param primitiveType
* The primitive data type
* @param flagOptional
* Defines an item to be optional or mandatory
* @param flagVariable
* Defines an item to be variable or fixed size
* @param size
* The size
* @param label
* The label
* @param description
* The description
* @param bitNames
* The array of bit field names
* @param bitMask
* The bit mask
*/
public Description(int primitiveType,
boolean flagOptional,
boolean flagVariable,
int size,
String label,
String description,
String[] bitNames,
BitSet bitMask)
{
this.primitiveType = primitiveType;
this.flagOptional = flagOptional;
this.flagVariable = flagVariable;
this.size = size;
this.label = label;
this.description = description;
this.bitNames = bitNames;
this.bitMask = bitMask;
}
/**
* Gets the primitive data type of this item.
*
* @return The encoded primitive data type, one of the ATTR_* constants defined
* in <code>PrimitiveTypes</code> interface
*/
public int getPrimitiveType()
{
return primitiveType;
}
/**
* Gets the optional vs mandatory item's profile.
*
* @return <code>true</code> if the item is optional
*/
public boolean isOptional()
{
return flagOptional;
}
/**
* Gets the variable vs fixed size item's profile.
*
* @return <code>true</code> if the item's size is variable
*/
public boolean isVariableSize()
{
return flagVariable;
}
/**
* Gets the fixed size of this item.
*
* @return The size for fixed size items or 0
*/
public int getSize()
{
return size;
}
/**
* Gets the label of this item.
*
* @return The label
*/
public String getLabel()
{
return label;
}
/**
* Gets the description of this item.
*
* @return The description
*/
public String getDescription()
{
return description;
}
/**
* Gets the bit names of this item.
*
* @return The array of bit names; <code>null</code> if not a bitfield
*/
public String[] getBitNames()
{
return bitNames;
}
/**
* Gets the mask uf unused bits of this item.
*
* @return The BitSet of unused bits; <code>null</code> if not a bitfield
*/
public BitSet getUnusedBits()
{
return bitMask;
}
}