nl.uva.vlet.util
Class VAttribute

java.lang.Object
  extended by nl.uva.vlet.util.VAttribute
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable

public final class VAttribute
extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable

This class provides a high level interface to resource Attributes.
It is implemented using a {type, name value} tuple, so that runtime type and name checking can be performed.
The VAttributes does not do any type checking, so casting is possible. a getValue() after a setValue(int) will return the string representation of the int. Currently the attributes are stored as (java) Strings.

TODO: add Serialization and/or XML support.

See Also:
Serialized Form

Nested Class Summary
static class VAttribute.VAttributeType
          Overview of ALL used Attribute names.
 
Field Summary
static java.lang.String ATTR_ALLOW_3RD_PARTY
           
static java.lang.String ATTR_ATTEMPTS
           
static java.lang.String ATTR_CREATION_TIME
           
static java.lang.String ATTR_DATA_TYPE
           
static java.lang.String ATTR_DEST_DIRNAME
           
static java.lang.String ATTR_DEST_FILENAME
           
static java.lang.String ATTR_DEST_HOSTNAME
           
static java.lang.String ATTR_DEST_PATH
           
static java.lang.String ATTR_DEST_URL
           
static java.lang.String ATTR_DIRNAME
          For files this is the parent directory, but for directories, SRB regards this a the dame directory name !
static java.lang.String ATTR_EXISTS
           
static java.lang.String ATTR_FAULT
           
static java.lang.String ATTR_GROUP
           
static java.lang.String ATTR_HOSTNAME
           
static java.lang.String ATTR_ICON
           
static java.lang.String ATTR_ICONURL
           
static java.lang.String ATTR_ID
           
static java.lang.String ATTR_ISDIR
           
static java.lang.String ATTR_ISFILE
           
static java.lang.String ATTR_ISHIDDEN
           
static java.lang.String ATTR_ISREADABLE
           
static java.lang.String ATTR_ISSOFTLINK
           
static java.lang.String ATTR_ISVLINK
          Whether this node is a VLink
static java.lang.String ATTR_ISWRITABLE
           
static java.lang.String ATTR_LENGTH
          Length or size of resource if applicable
static java.lang.String ATTR_LINKTARGET
           
static java.lang.String ATTR_LOCATION
           
static java.lang.String ATTR_MODIFICATION_TIME
           
static java.lang.String ATTR_NAME
           
static java.lang.String ATTR_NRACLENTRIES
           
static java.lang.String ATTR_NRCHILDS
          VAttribute name for the nr of childs nodes (Only for VComposite and subclasses)
static java.lang.String ATTR_OWNER
           
static java.lang.String ATTR_PARENT_DIRNAME
          Unambigous Parent directory attribute for both files and directores
static java.lang.String ATTR_PASSIVE_MODE
          Make sure Global.PASSIVE_MODE and ATTR_PASSIVE_MODE are the same !
static java.lang.String ATTR_PASSPHRASE
           
static java.lang.String ATTR_PASSWORD
           
static java.lang.String ATTR_PATH
           
static java.lang.String ATTR_PERMISSIONS_STRING
          Unix style permissions string: drwxr-xr-x+ etc, enhanced with '[]' attributes
static java.lang.String ATTR_PERSISTANT
           
static java.lang.String ATTR_PORT
           
static java.lang.String ATTR_RECURSIVE
           
static java.lang.String ATTR_SCHEME
           
static java.lang.String ATTR_SHOW_SHORTCUT_ICON
           
static java.lang.String ATTR_SOURCE_DIRNAME
           
static java.lang.String ATTR_SOURCE_FILENAME
           
static java.lang.String ATTR_SOURCE_HOSTNAME
           
static java.lang.String ATTR_SOURCE_PATH
           
static java.lang.String ATTR_SOURCE_URL
           
static java.lang.String ATTR_STATUS
           
static java.lang.String ATTR_TRANSFERS_ACTIVE
           
static java.lang.String ATTR_TRANSFERS_CANCELLED
           
static java.lang.String ATTR_TRANSFERS_FAILED
           
static java.lang.String ATTR_TRANSFERS_FINISHED
           
static java.lang.String ATTR_TRANSFERS_PENDING
           
static java.lang.String ATTR_TRANSFERS_RESTARTED
           
static java.lang.String ATTR_TYPE
           
static java.lang.String ATTR_UNIQUE
           
static java.lang.String ATTR_USERNAME
           
static java.lang.String AUTH_SCHEME
           
static java.lang.String GSI_AUTH
           
static java.lang.String NO_AUTH
           
static java.lang.String PASSWORD_AUTH
           
 
Constructor Summary
VAttribute(double val)
          Constructor to create a 'double' typed,but nameless(!), VAttribute
VAttribute(float val)
          Constructor to create a 'float' typed,but nameless(!), VAttribute
VAttribute(int val)
          Constructor to create a 'int' typed,but nameless(!), VAttribute
VAttribute(long val)
          Constructor to create a 'long' typed,but nameless(!), VAttribute
VAttribute(java.lang.String name, boolean val)
          Constructor to create a 'boolean' typed and named VAttribute
VAttribute(java.lang.String name, double val)
          Constructor to create a 'double' typed and named VAttribute
VAttribute(java.lang.String name, float val)
          Constructor to create a 'float' typed and named VAttribute
VAttribute(java.lang.String name, int val)
          Constructor to create a 'int' typed and named VAttribute
VAttribute(java.lang.String name, long val)
          Constructor to create a 'long' typed and named VAttribute
VAttribute(java.lang.String name, java.lang.String value)
          Named String typed Value
VAttribute(java.lang.String name, java.lang.String[] enumValues, int enumVal)
          Constructor to create a enum list of string
VAttribute(java.lang.String name, java.lang.String[] enumVals, java.lang.String defaultVal)
          Create new Enumerated VAttribute with enumVals as possible values and defaultVal (which must be element of enumVals) as default
VAttribute(java.lang.String name, VRL url)
           
VAttribute(VAttribute.VAttributeType type, java.lang.String name, long value)
          Custom named & typed Attibute
VAttribute(VAttribute.VAttributeType type, java.lang.String name, java.lang.String value)
          Custom named & typed Attibute
VAttribute(VAttribute source)
          Copy Constructor
 
Method Summary
 VAttribute clone()
          Return duplicate of this object.
 int compareTo(VAttribute attr)
          Compares this value to value of other VAttribute 'attr'.
static VAttribute[] convertVectorToArray(java.util.Vector<VAttribute> attributes)
           
 VAttribute duplicate()
           
static VAttribute[] duplicateArray(VAttribute[] attrs)
          Create copy of Attribute Array
 boolean getBooleanValue()
           
 double getDoubleValue()
           
 int getEnumIndex()
          Return enum order of current value
 java.lang.String[] getEnumValues()
           
 float getFloatValue()
           
 java.lang.String getHelpText()
          Return (mini) help text for ToolTip text
 int getIntValue()
           
 long getLongValue()
           
 java.lang.String getName()
           
 VAttribute.VAttributeType getType()
           
 java.lang.String getValue()
           
 VRL getVRL()
           
 boolean hasChanged()
          Whether the value has changed since the last setNotChanged()
 boolean hasName(java.lang.String nname)
          public static VAttribute[] merge(VAttribute[] attrs1, VAttribute[] attrs2) { Vector v1=new Vector(); Hashtable names=new Hashtable(); if (attrs1!=null) { for(VAttribute attr:attrs1) { if (attr!=null) { String name=attr.getName(); // bug ? if (name==null) continue; Integer index=names.get(name); // when already added, replace with new value ! if (index!=null) v1.set(index,attr); else { index=v1.size(); v1.add(attr); names.put(attr.getName(),index); } } } } for(VAttribute attr:attrs2) { if (attr!=null) { String name=attr.getName(); // bug ? if (name==null) continue; Integer index=names.get(name); // when already added, replace with new value ! if (index!=null) v1.set(index,attr); else { index=v1.size(); v1.add(attr); names.put(attr.getName(),index); } } } VAttribute arr[]=new VAttribute[v1.size()]; arr=v1.toArray(arr); return arr; }
 boolean isEditable()
           
static java.lang.String[] mergeAttributeNames(java.lang.String[] list1, java.lang.String[] list2)
          Add names in list2 to list1.
static java.lang.String[] mergeAttributeNames(java.lang.String[] list1, java.lang.String[] list2, java.lang.String[] list3)
          Merge(A,B,C) = Merge(Merge(A,B),C)
static VAttribute parseAssignment(java.lang.String stat)
          Parses a name=value statement Optionally this supports a type
 void setEditable(boolean b)
           
 void setHelpText(java.lang.String str)
           
 void setNotChanged()
          Reset changes value to false
 void setValue(boolean b)
           
 void setValue(int val)
           
 void setValue(java.lang.String val)
          This is the only method which really changes the value.
 java.lang.String toString()
          Formatters/Stringifiers *** /** For printing to stdout only.
 java.lang.String toXML()
          Very,very simple example implementation TODO: find some XML serializer class for this.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ATTR_TYPE

public static final java.lang.String ATTR_TYPE
See Also:
Constant Field Values

ATTR_LOCATION

public static final java.lang.String ATTR_LOCATION
See Also:
Constant Field Values

ATTR_NAME

public static final java.lang.String ATTR_NAME
See Also:
Constant Field Values

ATTR_HOSTNAME

public static final java.lang.String ATTR_HOSTNAME
See Also:
Constant Field Values

ATTR_PORT

public static final java.lang.String ATTR_PORT
See Also:
Constant Field Values

ATTR_PATH

public static final java.lang.String ATTR_PATH
See Also:
Constant Field Values

ATTR_EXISTS

public static final java.lang.String ATTR_EXISTS
See Also:
Constant Field Values

ATTR_ISREADABLE

public static final java.lang.String ATTR_ISREADABLE
See Also:
Constant Field Values

ATTR_ISWRITABLE

public static final java.lang.String ATTR_ISWRITABLE
See Also:
Constant Field Values

ATTR_ISHIDDEN

public static final java.lang.String ATTR_ISHIDDEN
See Also:
Constant Field Values

ATTR_ISSOFTLINK

public static final java.lang.String ATTR_ISSOFTLINK
See Also:
Constant Field Values

ATTR_ISFILE

public static final java.lang.String ATTR_ISFILE
See Also:
Constant Field Values

ATTR_ISDIR

public static final java.lang.String ATTR_ISDIR
See Also:
Constant Field Values

ATTR_ICON

public static final java.lang.String ATTR_ICON
See Also:
Constant Field Values

ATTR_NRCHILDS

public static final java.lang.String ATTR_NRCHILDS
VAttribute name for the nr of childs nodes (Only for VComposite and subclasses)

See Also:
Constant Field Values

ATTR_LENGTH

public static final java.lang.String ATTR_LENGTH
Length or size of resource if applicable

See Also:
Constant Field Values

ATTR_ISVLINK

public static final java.lang.String ATTR_ISVLINK
Whether this node is a VLink

See Also:
Constant Field Values

ATTR_MODIFICATION_TIME

public static final java.lang.String ATTR_MODIFICATION_TIME
See Also:
Constant Field Values

ATTR_CREATION_TIME

public static final java.lang.String ATTR_CREATION_TIME
See Also:
Constant Field Values

ATTR_PERMISSIONS_STRING

public static final java.lang.String ATTR_PERMISSIONS_STRING
Unix style permissions string: drwxr-xr-x+ etc, enhanced with '[]' attributes

See Also:
Constant Field Values

ATTR_PARENT_DIRNAME

public static final java.lang.String ATTR_PARENT_DIRNAME
Unambigous Parent directory attribute for both files and directores

See Also:
Constant Field Values

ATTR_DIRNAME

public static final java.lang.String ATTR_DIRNAME
For files this is the parent directory, but for directories, SRB regards this a the dame directory name !

See Also:
Constant Field Values

ATTR_OWNER

public static final java.lang.String ATTR_OWNER
See Also:
Constant Field Values

ATTR_PERSISTANT

public static final java.lang.String ATTR_PERSISTANT
See Also:
Constant Field Values

ATTR_SCHEME

public static final java.lang.String ATTR_SCHEME
See Also:
Constant Field Values

ATTR_USERNAME

public static final java.lang.String ATTR_USERNAME
See Also:
Constant Field Values

ATTR_PASSWORD

public static final java.lang.String ATTR_PASSWORD
See Also:
Constant Field Values

ATTR_PASSPHRASE

public static final java.lang.String ATTR_PASSPHRASE
See Also:
Constant Field Values

AUTH_SCHEME

public static final java.lang.String AUTH_SCHEME
See Also:
Constant Field Values

ATTR_ID

public static final java.lang.String ATTR_ID
See Also:
Constant Field Values

ATTR_NRACLENTRIES

public static final java.lang.String ATTR_NRACLENTRIES
See Also:
Constant Field Values

ATTR_GROUP

public static final java.lang.String ATTR_GROUP
See Also:
Constant Field Values

ATTR_UNIQUE

public static final java.lang.String ATTR_UNIQUE
See Also:
Constant Field Values

ATTR_DEST_URL

public static final java.lang.String ATTR_DEST_URL
See Also:
Constant Field Values

ATTR_ATTEMPTS

public static final java.lang.String ATTR_ATTEMPTS
See Also:
Constant Field Values

ATTR_STATUS

public static final java.lang.String ATTR_STATUS
See Also:
Constant Field Values

ATTR_FAULT

public static final java.lang.String ATTR_FAULT
See Also:
Constant Field Values

ATTR_SOURCE_URL

public static final java.lang.String ATTR_SOURCE_URL
See Also:
Constant Field Values

ATTR_TRANSFERS_PENDING

public static final java.lang.String ATTR_TRANSFERS_PENDING
See Also:
Constant Field Values

ATTR_TRANSFERS_ACTIVE

public static final java.lang.String ATTR_TRANSFERS_ACTIVE
See Also:
Constant Field Values

ATTR_TRANSFERS_FINISHED

public static final java.lang.String ATTR_TRANSFERS_FINISHED
See Also:
Constant Field Values

ATTR_TRANSFERS_FAILED

public static final java.lang.String ATTR_TRANSFERS_FAILED
See Also:
Constant Field Values

ATTR_TRANSFERS_RESTARTED

public static final java.lang.String ATTR_TRANSFERS_RESTARTED
See Also:
Constant Field Values

ATTR_TRANSFERS_CANCELLED

public static final java.lang.String ATTR_TRANSFERS_CANCELLED
See Also:
Constant Field Values

ATTR_DEST_PATH

public static final java.lang.String ATTR_DEST_PATH
See Also:
Constant Field Values

ATTR_DEST_DIRNAME

public static final java.lang.String ATTR_DEST_DIRNAME
See Also:
Constant Field Values

ATTR_DEST_HOSTNAME

public static final java.lang.String ATTR_DEST_HOSTNAME
See Also:
Constant Field Values

ATTR_DEST_FILENAME

public static final java.lang.String ATTR_DEST_FILENAME
See Also:
Constant Field Values

ATTR_SOURCE_PATH

public static final java.lang.String ATTR_SOURCE_PATH
See Also:
Constant Field Values

ATTR_SOURCE_DIRNAME

public static final java.lang.String ATTR_SOURCE_DIRNAME
See Also:
Constant Field Values

ATTR_SOURCE_HOSTNAME

public static final java.lang.String ATTR_SOURCE_HOSTNAME
See Also:
Constant Field Values

ATTR_SOURCE_FILENAME

public static final java.lang.String ATTR_SOURCE_FILENAME
See Also:
Constant Field Values

ATTR_PASSIVE_MODE

public static final java.lang.String ATTR_PASSIVE_MODE
Make sure Global.PASSIVE_MODE and ATTR_PASSIVE_MODE are the same !

See Also:
Constant Field Values

ATTR_ALLOW_3RD_PARTY

public static final java.lang.String ATTR_ALLOW_3RD_PARTY
See Also:
Constant Field Values

ATTR_DATA_TYPE

public static final java.lang.String ATTR_DATA_TYPE
See Also:
Constant Field Values

PASSWORD_AUTH

public static final java.lang.String PASSWORD_AUTH
See Also:
Constant Field Values

GSI_AUTH

public static final java.lang.String GSI_AUTH
See Also:
Constant Field Values

NO_AUTH

public static final java.lang.String NO_AUTH
See Also:
Constant Field Values

ATTR_LINKTARGET

public static final java.lang.String ATTR_LINKTARGET
See Also:
Constant Field Values

ATTR_ICONURL

public static final java.lang.String ATTR_ICONURL
See Also:
Constant Field Values

ATTR_SHOW_SHORTCUT_ICON

public static final java.lang.String ATTR_SHOW_SHORTCUT_ICON
See Also:
Constant Field Values

ATTR_RECURSIVE

public static final java.lang.String ATTR_RECURSIVE
See Also:
Constant Field Values
Constructor Detail

VAttribute

public VAttribute(VAttribute source)
Copy Constructor


VAttribute

public VAttribute(int val)
Constructor to create a 'int' typed,but nameless(!), VAttribute


VAttribute

public VAttribute(long val)
Constructor to create a 'long' typed,but nameless(!), VAttribute


VAttribute

public VAttribute(float val)
Constructor to create a 'float' typed,but nameless(!), VAttribute


VAttribute

public VAttribute(double val)
Constructor to create a 'double' typed,but nameless(!), VAttribute


VAttribute

public VAttribute(java.lang.String name,
                  boolean val)
Constructor to create a 'boolean' typed and named VAttribute


VAttribute

public VAttribute(java.lang.String name,
                  int val)
Constructor to create a 'int' typed and named VAttribute


VAttribute

public VAttribute(java.lang.String name,
                  long val)
Constructor to create a 'long' typed and named VAttribute


VAttribute

public VAttribute(java.lang.String name,
                  float val)
Constructor to create a 'float' typed and named VAttribute


VAttribute

public VAttribute(java.lang.String name,
                  double val)
Constructor to create a 'double' typed and named VAttribute


VAttribute

public VAttribute(java.lang.String name,
                  java.lang.String[] enumValues,
                  int enumVal)
Constructor to create a enum list of string


VAttribute

public VAttribute(java.lang.String name,
                  java.lang.String[] enumVals,
                  java.lang.String defaultVal)
Create new Enumerated VAttribute with enumVals as possible values and defaultVal (which must be element of enumVals) as default


VAttribute

public VAttribute(java.lang.String name,
                  java.lang.String value)
Named String typed Value


VAttribute

public VAttribute(VAttribute.VAttributeType type,
                  java.lang.String name,
                  java.lang.String value)
Custom named & typed Attibute


VAttribute

public VAttribute(VAttribute.VAttributeType type,
                  java.lang.String name,
                  long value)
Custom named & typed Attibute


VAttribute

public VAttribute(java.lang.String name,
                  VRL url)
Method Detail

clone

public VAttribute clone()
Return duplicate of this object. This method returns the same class instead of the object.clone() method All values are copied.

Overrides:
clone in class java.lang.Object
Returns:

duplicate

public VAttribute duplicate()

getName

public java.lang.String getName()

getType

public VAttribute.VAttributeType getType()

getValue

public java.lang.String getValue()

getEnumValues

public java.lang.String[] getEnumValues()

getEnumIndex

public int getEnumIndex()
Return enum order of current value


toString

public java.lang.String toString()
Formatters/Stringifiers *** /** For printing to stdout only. This is NOT a serializer

Overrides:
toString in class java.lang.Object

toXML

public java.lang.String toXML()
Very,very simple example implementation TODO: find some XML serializer class for this.


setValue

public void setValue(java.lang.String val)
              throws AttributeNotEditableException
This is the only method which really changes the value. Other setValue methods convert the value to a String value and use this one. Developers node: All other setValue methods must call this.

Parameters:
val -
Throws:
AttributeNotEditableException

setNotChanged

public void setNotChanged()
Reset changes value to false


hasChanged

public boolean hasChanged()
Whether the value has changed since the last setNotChanged()


setValue

public void setValue(int val)
              throws AttributeNotEditableException
Throws:
AttributeNotEditableException

isEditable

public boolean isEditable()

setEditable

public void setEditable(boolean b)

mergeAttributeNames

public static java.lang.String[] mergeAttributeNames(java.lang.String[] list1,
                                                     java.lang.String[] list2)
Add names in list2 to list1. Only addes new names from second list if they are NOT in list1. The order is kept.


mergeAttributeNames

public static java.lang.String[] mergeAttributeNames(java.lang.String[] list1,
                                                     java.lang.String[] list2,
                                                     java.lang.String[] list3)
Merge(A,B,C) = Merge(Merge(A,B),C)


duplicateArray

public static VAttribute[] duplicateArray(VAttribute[] attrs)
Create copy of Attribute Array


convertVectorToArray

public static VAttribute[] convertVectorToArray(java.util.Vector<VAttribute> attributes)

getIntValue

public int getIntValue()

getLongValue

public long getLongValue()

getVRL

public VRL getVRL()
           throws VlException
Throws:
VlException

getDoubleValue

public double getDoubleValue()

getFloatValue

public float getFloatValue()

getBooleanValue

public boolean getBooleanValue()

parseAssignment

public static VAttribute parseAssignment(java.lang.String stat)
Parses a name=value statement Optionally this supports a type

Parameters:
stat -
Returns:

compareTo

public int compareTo(VAttribute attr)
Compares this value to value of other VAttribute 'attr'. The type of this attribute is used and the other attribute is converted (casted) to this type.

Parameters:
attr -
Returns:

hasName

public boolean hasName(java.lang.String nname)
public static VAttribute[] merge(VAttribute[] attrs1, VAttribute[] attrs2) { Vector v1=new Vector(); Hashtable names=new Hashtable(); if (attrs1!=null) { for(VAttribute attr:attrs1) { if (attr!=null) { String name=attr.getName(); // bug ? if (name==null) continue; Integer index=names.get(name); // when already added, replace with new value ! if (index!=null) v1.set(index,attr); else { index=v1.size(); v1.add(attr); names.put(attr.getName(),index); } } } } for(VAttribute attr:attrs2) { if (attr!=null) { String name=attr.getName(); // bug ? if (name==null) continue; Integer index=names.get(name); // when already added, replace with new value ! if (index!=null) v1.set(index,attr); else { index=v1.size(); v1.add(attr); names.put(attr.getName(),index); } } } VAttribute arr[]=new VAttribute[v1.size()]; arr=v1.toArray(arr); return arr; }


setValue

public void setValue(boolean b)
              throws AttributeNotEditableException
Throws:
AttributeNotEditableException

setHelpText

public void setHelpText(java.lang.String str)

getHelpText

public java.lang.String getHelpText()
Return (mini) help text for ToolTip text