Class SFDouble

All Implemented Interfaces:
SFDouble, X3DField

public class SFDouble extends X3DConcreteField implements SFDouble
This utility class provides a concrete implementation corresponding to SFDouble X3D field type.


Package hint: This specification class is defined by the X3D Java Language Binding Specification for the Scene Authoring Interface (SAI). SFDouble is a double-precision floating-point type. Array values are optionally separated by commas in XML syntax. See GeoVRML 1.0 Recommended Practice, Section 2.3, Limitations of Single Precision for rationale.

Related field object: MFDouble
See Also:
X3D Tooltips: type SFDouble, SAI Java Specification: B.4.11 X3DFieldTypes, SAI Abstract Specification: 5.2.15 SAIFieldType, X3D Abstract Specification: SFDoubleAndMFDouble, X3D Tooltips, X3D Tooltips: field, X3D Tooltips: fieldValue, X3D Scene Authoring Hints
  • Field Details

  • Constructor Details

    • SFDouble

      public SFDouble()
      Constructor for SFDouble performs value initialization.
    • SFDouble

      public SFDouble(SFDouble newValue)
      Constructor to copy an SFDouble value as initial value for this new field object.
      Parameters:
      newValue - The newValue to apply
    • SFDouble

      public SFDouble(double newValue)
      Constructor for SFDouble using a corresponding Java primitive double as new initial value.
      Parameters:
      newValue - is new value to assign setContainerFieldOverride(containerFieldName); // apply checksConcreteField#getTupleSize(String)
    • SFDouble

      public SFDouble(float newValue)
      Constructor using float as new initial value.
      Parameters:
      newValue - is new value to assign
    • SFDouble

      public SFDouble(int newValue)
      Constructor using int as new initial value.
      Parameters:
      newValue - is new value to assign
  • Method Details

    • isArray

      public static final boolean isArray()
      Whether or not this field type is an array (false)
      Returns:
      true if array type
    • initialize

      public final void initialize()
      Initialization for SFDouble applies default initial value. Static initializer also provided to verify that the regex pattern compiles and matches that default value.
      Specified by:
      initialize in class X3DConcreteField
      See Also:
      Stack Overflow: How to check if a given Regex is valid?, DEFAULT_VALUE
    • equals

      public boolean equals(SFDouble comparisonSFDouble)
      Determine whether two objects contain equal values.
      Parameters:
      comparisonSFDouble - field type to compare
      Returns:
      true if equivalent, false otherwise
    • validate

      public final String validate()
      Validate current value via get/set comparison tests
      Returns:
      empty string if get/set testing passes, warning otherwise
      See Also:
      validate(), validateRegex()
    • validateRegex

      public final String validateRegex()
      Validate current value via regular expression (regex) check of current object's toString() value, reporting errors only if found.
      Returns:
      empty string if PATTERN matches, warning otherwise
      See Also:
      REGEX, PATTERN, matches(), matches(String), validate(), validate(), java.util.regex.Pattern
    • matches

      public final boolean matches()
      Test PATTERN match via regular expression (regex) check of current object's toString() value.
      Returns:
      true if PATTERN matches, false otherwise
      See Also:
      REGEX, PATTERN, matches(), matches(String), validate(), java.util.regex.Pattern
    • matches

      public static final boolean matches(String value)
      Test PATTERN match with regular expression (regex) of provided value.
      Parameters:
      value - String to check against regex pattern for successful match
      Returns:
      true if PATTERN matches, false otherwise
      See Also:
      REGEX, PATTERN, matches(), matches(String), validate(), java.util.regex.Pattern
    • setValueByString

      public SFDouble setValueByString(String newValue) throws InvalidFieldValueException
      Utility accessor for SFDouble using String value (which must pass parsing validation checks).

      Warning: this method is not type safe at compile time! Best practice for X3DJSAIL programmers is to use strongly typed methods instead, in order to avoid potential for run-time errors.
      Parameters:
      newValue - is new value to assign, if empty then assign DEFAULT_VALUE
      Returns:
      MFMatrix4d - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same node object).
      Throws:
      InvalidFieldValueException
      See Also:
      X3DLoaderDOM.toX3dModelInstance(org.w3c.dom.Node)
    • toString

      public static String toString(double value)
      Static utility method to provide String representation of a correctly typed input value.
      Parameters:
      value - The value to convert to a String
      Returns:
      String version of the provided value
      See Also:
      X3D Tooltips: type
    • getValue

      public double getValue()
      Get the current value.
      Specified by:
      getValue in interface SFDouble
      Returns:
      current value
    • getPrimitiveValue

      public double getPrimitiveValue()
      Provides current value of the field as a Java primitive type.
      Returns:
      current value
    • toString

      public String toString()
      Provides current value as a String.
      Overrides:
      toString in class Object
      Returns:
      String version of the provided value
      See Also:
      X3D Tooltips: type SFDouble
    • setValue

      public void setValue(double newValue)
      Assign a new value to this field.
      Specified by:
      setValue in interface SFDouble
      Parameters:
      newValue - The replacement value to assign.
      See Also:
      X3DConcreteField.getTupleSize(String)
    • setValue

      public SFDouble setValue(float newValue)
      Apply a float value to this double field type, note change in precision.
      Parameters:
      newValue - The float newValue to apply
      Returns:
      SFDouble - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • setValue

      public SFDouble setValue(int newValue)
      Apply an int value to this double field type, note change in precision.
      Parameters:
      newValue - The float newValue to apply
      Returns:
      SFDouble - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • stripTrailingZeroes

      public String stripTrailingZeroes()
      Utility method to strip trailing fractional zeroes from String representations of the current object's value. Applicability: first converting an integer (such as 100) to double and then String results in trailing decimal point and zero (such as 100.0). Functionality can be globally enabled/disabled by ConfigurationProperties.setStripTrailingZeroes(boolean).
      Returns:
      string value with trailing zeros and decimal points stripped
      See Also:
      StackOverflow: Remove trailing zero in Java, StackOverflow: Remove trailing zeros from double (String manipulation solution), StackOverflow: How to nicely format floating numbers to String without unnecessary decimal 0? ("In short" solution), Regular Expressions Cookbook, 6.6. Strip Leading Zeros, by Jan Goyvaerts, Steven Levithan
    • stripTrailingZeroes

      public static String stripTrailingZeroes(double value)
      Utility method to always strip trailing fractional zeroes from String value of any given double. Applicability: first converting an integer (such as 100) to double and then String results in trailing decimal point and zero (such as 100.0). Note: not affected by ConfigurationProperties.setStripTrailingZeroes(boolean).
      Parameters:
      value - a double-precision number
      Returns:
      string value with trailing zeros and decimal points stripped
      See Also:
      stripTrailingZeroes(double)
    • setValue

      public SFDouble setValue(SFDouble newValue)
      Apply an SFDouble value to this field.
      Parameters:
      newValue - The newValue to apply
      Returns:
      SFDouble - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • isDefaultValue

      public boolean isDefaultValue()
      Determine whether current value matches DEFAULT_VALUE
      Returns:
      whether current value matches DEFAULT_VALUE
      See Also:
      DEFAULT_VALUE