/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* SimpleAttributeRestriction.java
*
* Created on 4. Mai 2004, 18:00
*/
package Sirius.navigator.types.iterator;
import Sirius.navigator.types.treenode.*;
import Sirius.server.middleware.types.*;
import java.util.Collection;
/**
* DOCUMENT ME!
*
* @author pascal
* @version $Revision$, $Date$
*/
public class SimpleAttributeRestriction implements AttributeRestriction {
//~ Instance fields --------------------------------------------------------
private final long typeRestriction;
private final int visible;
private final String id;
private final String name;
private final Class instance;
//~ Constructors -----------------------------------------------------------
/**
* Restrict to any visible object attributes.
*/
public SimpleAttributeRestriction() {
this(OBJECT, TRUE, null, null, null);
}
/**
* Creates a new SimpleAttributeRestriction object.
*
* @param typeRestriction DOCUMENT ME!
* @param visible DOCUMENT ME!
*/
public SimpleAttributeRestriction(final long typeRestriction, final int visible) {
this(typeRestriction, visible, null, null, null);
}
/**
* Creates a new SimpleAttributeRestriction object.
*
* @param typeRestriction DOCUMENT ME!
* @param visible DOCUMENT ME!
* @param id DOCUMENT ME!
* @param name DOCUMENT ME!
* @param instance DOCUMENT ME!
*/
public SimpleAttributeRestriction(final long typeRestriction,
final int visible,
final String id,
final String name,
final Class instance) {
this.typeRestriction = typeRestriction;
this.visible = visible;
this.id = id;
this.name = name;
this.instance = instance;
}
//~ Methods ----------------------------------------------------------------
/*public AttributeRestriction(long typeRestriction, int visible, int coordinate, int id, String name)
* { this.typeRestriction = typeRestriction; this.visible = visible; this.coordinate = coordinate; this.id = id;
* this.name = name;}*/
/*public Sirius.server.localserver.attribute.Attribute
* applyRestriction(Sirius.server.localserver.attribute.Attribute attribute) { if( ((this.visible == IGNORE) ||
* (this.visible == FALSE && !attribute.isVisible()) || (this.visible == TRUE && attribute.isVisible())) &&
* ((this.coordinate == IGNORE) || (this.coordinate == FALSE && !attribute.isCoordinate()) || (this.coordinate ==
* TRUE && attribute.isCoordinate())) && ((this.id == IGNORE) || this.id == attribute.getID()) && ((this.name ==
* null) || this.name.equalsIgnoreCase(attribute.getName())))
* { return attribute; } else { return null; }}*/
@Override
public Sirius.server.localserver.attribute.Attribute applyRestriction(
final Sirius.server.localserver.attribute.Attribute attribute) {
if (((this.visible == IGNORE) || ((this.visible == FALSE) && !attribute.isVisible())
|| ((this.visible == TRUE) && attribute.isVisible()))
&& ((this.id == null) || this.id.equals(attribute.getID()))) {
if ((name == null) || name.equalsIgnoreCase(attribute.getName())) {
if ((instance == null)
|| ((attribute.getValue() != null)
&& instance.isAssignableFrom(attribute.getValue().getClass()))) {
return attribute;
}
} else if ((name == null)
&& ((instance == null)
|| ((attribute.getValue() != null)
&& instance.isAssignableFrom(attribute.getValue().getClass())))) {
return attribute;
}
/*else
* { for(int i = 0; i < names.length; i++) {
* if(attribute.getName().trim().equalsIgnoreCase((names[i]))) { return attribute; } }}*/
}
return null;
}
@Override
public long getTypeRestriction() {
return this.typeRestriction;
}
}