com.sun.j3d.utils.scenegraph.io
Class SceneGraphFileReader

java.lang.Object
  extended by com.sun.j3d.utils.scenegraph.io.SceneGraphFileReader

public class SceneGraphFileReader
extends java.lang.Object

Read Java3D BranchGraphs and/or Universe from a file. Individual branchgraphs or an entire Universe can be read and references (shared nodes and components) between the graphs are handled correctly.


Constructor Summary
SceneGraphFileReader(java.io.File file)
          Creates new SceneGraphFileReader.
 
Method Summary
 void close()
          Close the file and cleanup internal data structures
 void dereferenceBranchGraph(BranchGroup graph)
          Remove the IO system's reference to this branchgraph and all its nodes.
 int getBranchGraphCount()
          Return the number of BranchGraphs in the file
 int getBranchGraphPosition(BranchGroup graph)
          Given a BranchGraph that has been loaded return the index of the graph in the file.
 java.lang.ClassLoader getClassLoader()
          Get the ClassLoader used to load the scene graph objects and deserialize user data
 SceneGraphObject getNamedObject(java.lang.String name)
          Return the named object.
 java.lang.String[] getNames()
          Return the names of all the named objects
 BranchGroup[] readAllBranchGraphs()
          Read and return all the branchgraphs in the file
 BranchGroup[] readBranchGraph(int index)
          Read the BranchGraph at index in the file.
 java.lang.Object readBranchGraphUserData(int index)
          Read the userdata for the branchgraph at 'index' in the file
 java.lang.String readDescription()
          Get the Description of this file's contents
 ConfiguredUniverse readUniverse(boolean attachBranchGraphs)
          Create and return a ConfiguredUniverse with the PlatformGeometry, ViewerAvatar, and Locales saved in the file.
 ConfiguredUniverse readUniverse(boolean attachBranchGraphs, Canvas3D canvas)
          Create and return a ConfiguredUniverse with the PlatformGeometry, ViewerAvatar, and Locales saved in the file.
 java.lang.Object readUserData()
          Get the UserData in the File header
 void setClassLoader(java.lang.ClassLoader classLoader)
          Set the ClassLoader used to load the scene graph objects and deserialize user data
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SceneGraphFileReader

public SceneGraphFileReader(java.io.File file)
                     throws java.io.IOException
Creates new SceneGraphFileReader.

Throws:
java.io.IOException
Method Detail

readUniverse

public ConfiguredUniverse readUniverse(boolean attachBranchGraphs)
                                throws java.io.IOException
Create and return a ConfiguredUniverse with the PlatformGeometry, ViewerAvatar, and Locales saved in the file. The MultiTransformGroup between the ViewingPlatform and the View is also restored. Universe configuration information is retrieved via ConfiguredUniverse.getConfigURL().

If the file does not contain universe information, null is returned.

Parameters:
attachBranchGraphs - load and attach all the branchgraphs to the universe.
Throws:
java.io.IOException
See Also:
ConfiguredUniverse.getConfigURL()

setClassLoader

public void setClassLoader(java.lang.ClassLoader classLoader)
Set the ClassLoader used to load the scene graph objects and deserialize user data


getClassLoader

public java.lang.ClassLoader getClassLoader()
Get the ClassLoader used to load the scene graph objects and deserialize user data


readUniverse

public ConfiguredUniverse readUniverse(boolean attachBranchGraphs,
                                       Canvas3D canvas)
                                throws java.io.IOException
Create and return a ConfiguredUniverse with the PlatformGeometry, ViewerAvatar, and Locales saved in the file. The MultiTransformGroup between the ViewingPlatform and the View is also restored.

If the file does not contain universe information, null is returned.

Parameters:
attachBranchGraphs - load and attach all the branchgraphs to the universe.
canvas - The canvas to be associated with the Universe.
Throws:
java.io.IOException

readUserData

public java.lang.Object readUserData()
                              throws java.io.IOException
Get the UserData in the File header

Throws:
java.io.IOException

readDescription

public java.lang.String readDescription()
                                 throws java.io.IOException
Get the Description of this file's contents

Throws:
java.io.IOException

getBranchGraphCount

public int getBranchGraphCount()
Return the number of BranchGraphs in the file


readBranchGraph

public BranchGroup[] readBranchGraph(int index)
                              throws java.io.IOException
Read the BranchGraph at index in the file. If the graph contains references to nodes in other BranchGraphs that have not already been loaded, they will also be loaded and returned.

The requested graph will always be the first element in the array.

The file index of all the Graphs can be discovered using getBranchGraphPosition.

Parameters:
index - The index of the Graph in the file. First graph is at index 0
Throws:
java.io.IOException
See Also:
getBranchGraphPosition( BranchGroup graph )

readAllBranchGraphs

public BranchGroup[] readAllBranchGraphs()
                                  throws java.io.IOException
Read and return all the branchgraphs in the file

Throws:
java.io.IOException

dereferenceBranchGraph

public void dereferenceBranchGraph(BranchGroup graph)
Remove the IO system's reference to this branchgraph and all its nodes.

References to all loaded graphs are maintained by the IO system in order to facilitate node and component sharing between the graphs.

This call removes the references to graph index

NOT CURRENTLY IMPLEMENTED


getBranchGraphPosition

public int getBranchGraphPosition(BranchGroup graph)
Given a BranchGraph that has been loaded return the index of the graph in the file. The the Branchgroup isn't found, -1 is returned.


readBranchGraphUserData

public java.lang.Object readBranchGraphUserData(int index)
                                         throws java.io.IOException
Read the userdata for the branchgraph at 'index' in the file

Parameters:
index - the index of the graph in the file
Throws:
java.io.IOException

getNames

public java.lang.String[] getNames()
Return the names of all the named objects


getNamedObject

public SceneGraphObject getNamedObject(java.lang.String name)
                                throws NamedObjectException,
                                       ObjectNotLoadedException
Return the named object.

Parameters:
name - The name of the object
Throws:
NamedObjectException - is thrown if the name is not known to the system
ObjectNotLoadedException - is thrown if the named object has not been loaded yet

close

public void close()
           throws java.io.IOException
Close the file and cleanup internal data structures

Throws:
java.io.IOException