Class ExternProtoDeclareObject

java.lang.Object
org.web3d.x3d.jsail.X3DConcreteElement
org.web3d.x3d.jsail.X3DConcreteStatement
org.web3d.x3d.jsail.Core.ExternProtoDeclareObject
All Implemented Interfaces:
X3DChildNode, X3DNode

public class ExternProtoDeclareObject
extends X3DConcreteStatement
implements X3DChildNode
ExternProtoDeclare refers to a ProtoDeclare node declaration provided in another file. ExternProtoDeclare interfaces are defined by field statements (and without IS/connect statements). This concrete class represents an X3D ExternProtoDeclare statement.

X3D statement tooltip: [X3D statement] ExternProtoDeclare refers to a ProtoDeclare node declaration provided in another file. ExternProtoDeclare interfaces are defined by <field> statements (without IS/connect statements).
See Also:
X3D Abstract Specification: ExternProtoDeclare, X3D Tooltips: ExternProtoDeclare, X3D Scene Authoring Hints
  • Field Details

    • NAME

      public static final java.lang.String NAME
      String constant NAME provides name of this element: ExternProtoDeclare.
      See Also:
      Constant Field Values
    • COMPONENT

      public static final java.lang.String COMPONENT
      String constant COMPONENT defines X3D component for the ExternProtoDeclare element: Core
      See Also:
      Constant Field Values
    • LEVEL

      public static final int LEVEL
      Integer constant LEVEL provides default X3D Core component level for this element: 2
      See Also:
      Constant Field Values
    • APPINFO_DEFAULT_VALUE

      public static final java.lang.String APPINFO_DEFAULT_VALUE
      SFString field named appinfo has default value equal to an empty string.
      See Also:
      Constant Field Values
    • DOCUMENTATION_DEFAULT_VALUE

      public static final java.lang.String DOCUMENTATION_DEFAULT_VALUE
      SFString field named documentation has default value equal to an empty string.
      See Also:
      Constant Field Values
    • NAME_DEFAULT_VALUE

      public static final java.lang.String NAME_DEFAULT_VALUE
      SFString field named name has default value equal to an empty string.
      See Also:
      Constant Field Values
    • URL_DEFAULT_VALUE

      public static final java.util.ArrayList<java.lang.String> URL_DEFAULT_VALUE
      MFString field named url has default value equal to an empty list.
  • Constructor Details

    • ExternProtoDeclareObject

      public ExternProtoDeclareObject()
      Constructor for ExternProtoDeclareObject to initialize member variables with default values.
    • ExternProtoDeclareObject

      public ExternProtoDeclareObject​(java.lang.String prototypeName)
      Utility constructor that assigns ExternProtoDeclareObject name after initializing member variables with default values.
      Parameters:
      prototypeName - initial name for this ExternProtoDeclareObject statement
  • Method Details

    • getElementName

      public final java.lang.String getElementName()
      Provides name of this element: ExternProtoDeclare
      Specified by:
      getElementName in class X3DConcreteElement
      Returns:
      name of this element
    • getComponent

      public final java.lang.String getComponent()
      Defines X3D component for the ExternProtoDeclare element: Core
      Specified by:
      getComponent in class X3DConcreteElement
      Returns:
      X3D component for this element
    • getComponentLevel

      public final int getComponentLevel()
      Provides default X3D component level for this element: 2
      Specified by:
      getComponentLevel in class X3DConcreteElement
      Returns:
      default X3D component level for this element
    • getFieldType

      public java.lang.String getFieldType​(java.lang.String fieldName)
      Indicate type corresponding to given fieldName.
      Specified by:
      getFieldType in class X3DConcreteElement
      Parameters:
      fieldName - name of field in this X3D statement
      Returns:
      X3D type (SFvec3f etc.), otherwise ConfigurationProperties.ERROR_UNKNOWN_FIELD_TYPE if not recognized
      See Also:
      ConfigurationProperties.ERROR_UNKNOWN_FIELD_TYPE
    • getAccessType

      public java.lang.String getAccessType​(java.lang.String fieldName)
      Indicate accessType corresponding to given fieldName.
      Specified by:
      getAccessType in class X3DConcreteElement
      Parameters:
      fieldName - name of field in this X3D statement
      Returns:
      X3D accessType (inputOnly etc.), otherwise ConfigurationProperties.ERROR_UNKNOWN_FIELD_ACCESSTYPE if not recognized
      See Also:
      ConfigurationProperties.ERROR_UNKNOWN_FIELD_ACCESSTYPE
    • initialize

      public final void initialize()
      Initialize all member variables to default values.
      Overrides:
      initialize in class X3DConcreteStatement
    • getAppinfo

      public java.lang.String getAppinfo()
      Provide String value from inputOutput SFString field named appinfo.

      Tooltip: Application information to provide simple description usable as a tooltip, similar to XML Schema appinfo tag. *
      Returns:
      value of appinfo field
    • setAppinfo

      public ExternProtoDeclareObject setAppinfo​(java.lang.String newValue)
      Accessor method to assign String value to inputOutput SFString field named appinfo.

      Tooltip: Application information to provide simple description usable as a tooltip, similar to XML Schema appinfo tag. *
      Parameters:
      newValue - is new value for the appinfo field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • setAppinfo

      public ExternProtoDeclareObject setAppinfo​(SFStringObject newValue)
      Assign typed object value to SFString appinfo field, similar to setAppinfo(String).
      Parameters:
      newValue - is new value for the appinfo field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • getDocumentation

      public java.lang.String getDocumentation()
      Provide String value from inputOutput SFString field named documentation.

      Tooltip: Documentation url for further information, similar to XML Schema documentation tag. *
      Returns:
      value of documentation field
    • setDocumentation

      public ExternProtoDeclareObject setDocumentation​(java.lang.String newValue)
      Accessor method to assign String value to inputOutput SFString field named documentation.

      Tooltip: Documentation url for further information, similar to XML Schema documentation tag. *
      Parameters:
      newValue - is new value for the documentation field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • setDocumentation

      public ExternProtoDeclareObject setDocumentation​(SFStringObject newValue)
      Assign typed object value to SFString documentation field, similar to setDocumentation(String).
      Parameters:
      newValue - is new value for the documentation field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • getFieldList

      public java.util.ArrayList<fieldObject> getFieldList()
      Provide array of fieldObject results (using an array consisting of properly typed nodes or ProtoInstanceObjects) from inputOutput MFNode field field.

      Tooltip: Include a field statement for each field declaration in the corresponding original ProtoDeclare.
      • Warning: do not include initialization values in these field declarations since the original ProtoDeclare takes precedence.


      Warning: according to X3D Unified Object Model (X3DUOM), acceptable node types are limited to field.
      Returns:
      value of field
      See Also:
      fieldObject
    • setFieldList

      public ExternProtoDeclareObject setFieldList​(java.util.ArrayList<fieldObject> newValue)
      Accessor method to assign fieldObject array (using an array consisting of properly typed nodes or ProtoInstanceObjects) to inputOutput MFNode field field.

      Tooltip: Include a field statement for each field declaration in the corresponding original ProtoDeclare.
      • Warning: do not include initialization values in these field declarations since the original ProtoDeclare takes precedence.


      Note: according to X3D Unified Object Model (X3DUOM), acceptable node types are limited to field.
      Parameters:
      newValue - is new value for the field field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • setField

      public ExternProtoDeclareObject setField​(fieldObject newValue)
      Set single child field node, replacing prior array of existing nodes (if any).

      Note: according to X3D Unified Object Model (X3DUOM), acceptable node types are restricted to field.
      Parameters:
      newValue - is new node for the field field (restricted to field)
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • clearField

      public ExternProtoDeclareObject clearField()
      Utility method to clear MFNode value of fieldList field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
    • hasField

      public boolean hasField()
      Indicate whether an object is available for inputOutput MFNode field fieldList.
      Returns:
      whether a concrete statement array or CommentsBlock is available.
      See Also:
      getFieldList()
    • getName

      public java.lang.String getName()
      Provide String value from inputOutput SFString field named name.

      Tooltip: name of the ExternProtoDeclare (External Prototype Declaration) being referenced.
      Returns:
      value of name field
    • setName

      public final ExternProtoDeclareObject setName​(java.lang.String newValue)
      Accessor method to assign String value to inputOutput SFString field named name.

      Tooltip: name of the ExternProtoDeclare (External Prototype Declaration) being referenced.

      @see X3D Scene Authoring Hints: Naming Conventions
      Parameters:
      newValue - is new value for the name field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • setName

      public ExternProtoDeclareObject setName​(SFStringObject newValue)
      Assign typed object value to SFString name field, similar to setName(String).
      Parameters:
      newValue - is new value for the name field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • getUrl

      public java.lang.String[] getUrl()
      Provide array of String results from inputOutput MFString field named url.

      Tooltip: Location and filename of ProtoDeclare source declaration of interest. Multiple locations are more reliable, and including a Web address lets e-mail attachments work.
      • Hint: MFString arrays can have multiple values, so separate each individual string by quote marks "https://www.web3d.org" "https://www.web3d.org/about" "etc."
      • Hint: alternative XML encoding for quotation mark " is &quot; (which is an example of a character entity).
      • Warning: strictly match directory and filename capitalization for http links! This is important for portability. Some operating systems are forgiving of capitalization mismatches, but http/https url addresses and paths in Unix-based operating systems are all case sensitive and intolerant of uppercase/lowercase mismatches.
      • Hint: can replace embedded blank(s) in url queries with %20 for each blank character.
      • Hint: X3D Scene Authoring Hints, urls https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#urls
      Returns:
      value of url field
    • setUrl

      public ExternProtoDeclareObject setUrl​(java.lang.String[] newValue)
      Accessor method to assign String array to inputOutput MFString field named url.

      Tooltip: Location and filename of ProtoDeclare source declaration of interest. Multiple locations are more reliable, and including a Web address lets e-mail attachments work.
      • Hint: MFString arrays can have multiple values, so separate each individual string by quote marks "https://www.web3d.org" "https://www.web3d.org/about" "etc."
      • Hint: alternative XML encoding for quotation mark " is &quot; (which is an example of a character entity).
      • Warning: strictly match directory and filename capitalization for http links! This is important for portability. Some operating systems are forgiving of capitalization mismatches, but http/https url addresses and paths in Unix-based operating systems are all case sensitive and intolerant of uppercase/lowercase mismatches.
      • Hint: can replace embedded blank(s) in url queries with %20 for each blank character.
      • Hint: X3D Scene Authoring Hints, urls https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#urls
      Parameters:
      newValue - is new value for the url field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • setUrl

      public ExternProtoDeclareObject setUrl​(MFStringObject newValue)
      Assign typed object value to MFString url field, similar to setUrl(String[]).
      Parameters:
      newValue - is new value for the url field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • clearUrl

      public ExternProtoDeclareObject clearUrl()
      Utility method to clear MFString value of url field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
    • addUrl

      public ExternProtoDeclareObject addUrl​(java.lang.String newValue)
      Add singleton String value to MFString url field.
      Parameters:
      newValue - is new value to add to the url field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      See Also:
      MFStringObject.cleanupEnumerationValues(String)
    • addUrl

      public ExternProtoDeclareObject addUrl​(SFStringObject newValue)
      Add singleton SFStringObject value to MFString url field.
      Parameters:
      newValue - is new value to add to the url field.
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      See Also:
      MFStringObject.cleanupEnumerationValues(String)
    • getNodeType

      public java.lang.String getNodeType()
      (Warning: not yet supported in ExternProtoDeclareObject implementation, TODO) This method helps determine node type of ProtoInstance by inspecting first node within corresponding ProtoDeclare ProtoBody.
      Returns:
      name of X3D node corresponding to node type for this ExternProtoDeclareObject statement
      See Also:
      X3D Abstract Specification: 4.4.4.3 PROTO definition semantics, ProtoDeclareObject.getNodeType(), ProtoBodyObject.getNodeType(), ProtoInstanceObject.getNodeType(), SceneObject
    • addComments

      public ExternProtoDeclareObject addComments​(java.lang.String newComment)
      Add comment as String to contained commentsList.
      Specified by:
      addComments in class X3DConcreteElement
      Parameters:
      newComment - initial value
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
    • addComments

      public ExternProtoDeclareObject addComments​(java.lang.String[] newComments)
      Add comments as String[] array to contained commentsList.
      Specified by:
      addComments in class X3DConcreteElement
      Parameters:
      newComments - array of comments
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
    • addComments

      public ExternProtoDeclareObject addComments​(CommentsBlock newCommentsBlock)
      Add CommentsBlock to contained commentsList.
      Specified by:
      addComments in class X3DConcreteElement
      Parameters:
      newCommentsBlock - block of comments to add
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
    • toStringX3D

      public java.lang.String toStringX3D​(int indentLevel)
      Recursive method to provide X3D string serialization of this model subgraph, utilizing XML encoding and conforming to X3D Canonical Form.
      Specified by:
      toStringX3D in class X3DConcreteElement
      Parameters:
      indentLevel - number of levels of indentation for this element
      Returns:
      X3D string
      See Also:
      X3DObject.FILE_EXTENSION_X3D, X3DObject.FILE_EXTENSION_XML, X3DObject.toStringXML(), X3DObject.toFileXML(String), X3DObject.toFileX3D(String), X3D XML Encoding, X3D Compressed Binary Encoding: X3D Canonical Form, X3D Canonicalization (C14N) Tool
    • toStringClassicVRML

      public java.lang.String toStringClassicVRML​(int indentLevel)
      Recursive method to provide ClassicVRML string serialization.
      Specified by:
      toStringClassicVRML in class X3DConcreteElement
      Parameters:
      indentLevel - number of levels of indentation for this element
      Returns:
      ClassicVRML string
      See Also:
      X3DObject.FILE_EXTENSION_CLASSICVRML, X3D Resources: Virtual Reality Modeling Language (VRML) 97, Extensible 3D (X3D) encodings Part 2: Classic VRML encoding, Extensible 3D (X3D) encodings Part 2: Classic VRML encoding, Annex A: Grammar
    • toStringVRML97

      public java.lang.String toStringVRML97​(int indentLevel)
      Recursive method to provide VRML97 string serialization.
      Specified by:
      toStringVRML97 in class X3DConcreteElement
      Parameters:
      indentLevel - number of levels of indentation for this element
      Returns:
      VRML97 string
      See Also:
      X3DObject.FILE_EXTENSION_VRML97, X3D Resources: Virtual Reality Modeling Language (VRML) 97, Virtual Reality Modeling Language (VRML) 97 specification, VRML 97 v2.1 Amendment
    • findElementByNameValue

      public X3DConcreteElement findElementByNameValue​(java.lang.String nameValue)
      Recursive method to provide object reference to node or statement by name attribute, if found as part of this element or in a contained element. Elements with name fields include meta, Metadata* nodes, field/fieldValue, ProtoDeclare/ExternProtoDeclare/ProtoInstance, CAD and HAnim nodes.

      Warning: first start with findAncestorSceneObject() to check entire scene graph, or findAncestorX3DObject() to check entire model document.

      Warning: more than one element may be found that has the same name, this method does not handle that case.
      Specified by:
      findElementByNameValue in class X3DConcreteElement
      Parameters:
      nameValue - is value of the name field being searched for in this element and child elements(if any)
      Returns:
      object reference to found element, null otherwise
      See Also:
      findNodeByDEF(String), X3DConcreteElement.hasAncestorSceneObject(), X3DConcreteElement.findAncestorX3DObject()
    • findElementByNameValue

      public X3DConcreteElement findElementByNameValue​(java.lang.String nameValue, java.lang.String elementName)
      Recursive method to provide object reference to node or statement by name attribute, if found as part of this element or in a contained element. Elements with name fields include meta, Metadata* nodes, field/fieldValue, ProtoDeclare/ExternProtoDeclare/ProtoInstance, CAD and HAnim nodes.

      Warning: first start with findAncestorSceneObject() to check entire scene graph, or findAncestorX3DObject() to check entire model document.

      Warning: more than one element may be found that has the same name, this method does not handle that case.
      Specified by:
      findElementByNameValue in class X3DConcreteElement
      Parameters:
      nameValue - is value of the name field being searched for in this element and child elements(if any)
      elementName - identifies the element of interest (meta MetadataString ProtoDeclare CADassembly ProtoInstance HAnimHumanoid etc.)
      Returns:
      object reference to found element, null otherwise
      See Also:
      findNodeByDEF(String), X3DConcreteElement.hasAncestorSceneObject(), X3DConcreteElement.findAncestorX3DObject()
    • hasElementByNameValue

      public boolean hasElementByNameValue​(java.lang.String nameValue, java.lang.String elementName)
      Recursive method to determine whether node or statement with given name attribute is found, meaning both objects are attached to same scene graph.
      Parameters:
      nameValue - is value of the name field being searched for in this element and child elements(if any)
      elementName - identifies the element of interest (meta MetadataString ProtoDeclare CADassembly ProtoInstance HAnimHumanoid etc.)
      Returns:
      whether node is found
      See Also:
      findElementByNameValue(String, String)
    • findNodeByDEF

      public X3DConcreteNode findNodeByDEF​(java.lang.String DEFvalue)
      Recursive method to provide object reference to node by DEF, if found as this node or in a contained node.

      Warning: first start with findAncestorSceneObject() to check entire scene graph, or findAncestorX3DObject() to check entire model document.

      Warning: more than one element may be found that has the same DEF, this method does not handle that case.
      Specified by:
      findNodeByDEF in class X3DConcreteElement
      Parameters:
      DEFvalue - is value of the name field being searched for in this element and child elements(if any)
      Returns:
      object reference to found node, null otherwise
      See Also:
      findElementByNameValue(String), X3DConcreteElement.hasAncestorSceneObject(), X3DConcreteElement.findAncestorX3DObject()
    • hasNodeByDEF

      public boolean hasNodeByDEF​(java.lang.String DEFvalue)
      Recursive method to determine whether node with DEFvalue is found, meaning both objects are attached to same scene graph.
      Parameters:
      DEFvalue - is value of the name field being searched for in this element and child elements(if any)
      Returns:
      whether node is found
      See Also:
      findNodeByDEF(String)
    • validate

      public java.lang.String validate()
      Recursive method to validate this element plus all contained nodes and statements, using both datatype-specification value checks and regular expression (regex) checking of corresponding string values.
      Specified by:
      validate in class X3DConcreteElement
      Returns:
      validation results (if any)
    • addField

      public ExternProtoDeclareObject addField​(fieldObject newField)
      Add field to fieldList for this ExternProtoDeclareObject
      Parameters:
      newField - is field to add
      Returns:
      ExternProtoDeclareObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
    • findFieldByName

      public fieldObject findFieldByName​(java.lang.String fieldName)
      Find contained field statement by name, if present.
      Parameters:
      fieldName - is name attribute for field of interest
      Returns:
      fieldObject reference of interest, null otherwise
    • removeField

      public boolean removeField​(fieldObject fieldToRemove)
      Remove a field from contained fieldList
      Parameters:
      fieldToRemove - matching field of interest
      Returns:
      whether field was removed
      See Also:
      removeField(String)
    • removeField

      public boolean removeField​(java.lang.String fieldName)
      Remove a field by name from contained fieldList
      Parameters:
      fieldName - matching field of interest
      Returns:
      whether field was removed
      See Also:
      removeField(fieldObject)
    • clearFields

      public void clearFields()
      Clear all fields
    • hasField

      public boolean hasField​(java.lang.String fieldName)
      Determine if field statement is present.
      Parameters:
      fieldName - is name attribute for field of interest
      Returns:
      whether field is found
    • getMetadata

      @Deprecated public X3DMetadataObject getMetadata()
      Deprecated.
      DO NOT USE: operation ignored since no such field exists for this element. This method has no effect, a stub method is necessary to implement X3DChildNode interface.
      Specified by:
      getMetadata in interface X3DChildNode
      Specified by:
      getMetadata in interface X3DNode
      Returns:
      null, this method is deprecated and has no effect
      See Also:
      X3D Scene Authoring Hints: Metadata Nodes
    • setMetadata

      @Deprecated public ExternProtoDeclareObject setMetadata​(X3DMetadataObject newValue)
      Deprecated.
      DO NOT USE: operation ignored since no such field exists for this element. This method has no effect, a stub method is necessary to implement X3DChildNode interface.
      Specified by:
      setMetadata in interface X3DChildNode
      Specified by:
      setMetadata in interface X3DNode
      Parameters:
      newValue - ignored
      Returns:
      unmodified object, this method is deprecated and has no effect
      See Also:
      X3D Scene Authoring Hints: Metadata Nodes
    • setDEF

      @Deprecated public ExternProtoDeclareObject setDEF​(java.lang.String newValue)
      Deprecated.
      DO NOT USE: operation ignored since no such field exists for this element. This method has no effect, a stub method is necessary to implement X3DChildNode interface.
      Parameters:
      newValue - ignored
      Returns:
      unmodified object, this method is deprecated and has no effect
    • setUSE

      @Deprecated public ExternProtoDeclareObject setUSE​(java.lang.String newValue)
      Deprecated.
      DO NOT USE: operation ignored since no such field exists for this element. This method has no effect, a stub method is necessary to implement X3DChildNode interface.
      Parameters:
      newValue - ignored
      Returns:
      unmodified object, this method is deprecated and has no effect
    • setCssClass

      @Deprecated public ExternProtoDeclareObject setCssClass​(java.lang.String newValue)
      Deprecated.