Beispiel #1
0
  /**
   * Check if the user object in a tree node references this field. We'll use the node's fieldName
   * attribute to match the name, plus look at the datatype of the parent node
   */
  private static boolean nodeReferencesField(DefaultMutableTreeNode treeNode, Field field) {

    String fieldName = field.getName();
    if (fieldName == null) {
      return false;
    }
    Object userObject = treeNode.getUserObject();

    if (userObject instanceof SemanticElement) {
      SemanticElement se = (SemanticElement) userObject;
      if (se.getDatatype() == field.getOwnerType()
          && (fieldName.equals(se.getEnumValueDescrField())
              || fieldName.equals(se.getEnumValueField())
              || fieldName.equals(se.getEnumValueSet())
              || fieldName.equals(se.getEnumValueSetField()))) {

        return true;
      }

    } else if (userObject instanceof MdmiBusinessElementReference) {
      MdmiBusinessElementReference ber = (MdmiBusinessElementReference) userObject;
      if (ber.getReferenceDatatype() == field.getOwnerType()
          && (fieldName.equals(ber.getEnumValueDescrField())
              || fieldName.equals(ber.getEnumValueField())
              || fieldName.equals(ber.getEnumValueSet())
              || fieldName.equals(ber.getEnumValueSetField()))) {

        return true;
      }

    } else if (userObject instanceof Node) {
      Node node = (Node) userObject;
      // first check if names match
      if (fieldName.equals(node.getFieldName())) {
        // names match, so check datatype
        MdmiDatatype fieldDatatype = field.getDatatype();
        MdmiDatatype nodeDatatype = ((SyntaxNodeNode) treeNode).getDataType();
        if (fieldDatatype == nodeDatatype) {
          // datatypes match - check owner type against the node's parent's datatype
          MdmiDatatype ownerType = field.getOwnerType();
          if (treeNode.getParent() instanceof SyntaxNodeNode) {
            MdmiDatatype parentType = ((SyntaxNodeNode) treeNode.getParent()).getDataType();
            if (ownerType == parentType) {
              return true;
            }
          }
        }
      }
    }

    return false;
  }