예제 #1
0
  @Override
  public void addSubattribute(Attribute attribute) {
    AttributeImpl attributeImpl = (AttributeImpl) attribute;

    // The attribute is bound and has to be removed from its parent (informationobject or parent
    // attribute
    if (attributeImpl.getInformationObject() != null
        || attributeImpl.getParentAttribute() != null) {
      if (attributeImpl.getParentAttribute() != null) {
        attributeImpl.getParentAttribute().removeSubattribute(attributeImpl);
      } else {
        attributeImpl.getInformationObject().removeAttribute(attributeImpl);
      }
    }

    attributeImpl.setParentAttribute(this);
    int index = Collections.binarySearch(subattributes, attributeImpl);
    if (index < 0) {
      subattributes.add(-index - 1, attributeImpl);
    } else {
      subattributes.add(index, attributeImpl);
    }
    if (parentAttribute != null) {
      ((AttributeImpl) parentAttribute).resortAttributes();
    }
    if (informationObject != null) {
      ((InformationObjectImpl) informationObject).resortAttributes();
    }
  }
예제 #2
0
 private void resortAttributes() {
   Collections.sort(subattributes);
   if (parentAttribute != null) {
     ((AttributeImpl) parentAttribute).resortAttributes();
   }
   if (informationObject != null) {
     ((InformationObjectImpl) informationObject).resortAttributes();
   }
 }
예제 #3
0
 @Override
 public void removeSubattribute(Attribute attribute) {
   AttributeImpl attributeImpl = (AttributeImpl) attribute;
   attributeImpl.setParentAttribute(null);
   subattributes.remove(attribute);
 }