package net.x3djsonld.data;
import java.util.*;
import org.web3d.x3d.jsail.Core.*;
import org.web3d.x3d.jsail.fields.*;
import org.web3d.x3d.jsail.Grouping.*;
import org.web3d.x3d.jsail.Scripting.*;
import org.web3d.x3d.jsail.Shape.*;
import org.web3d.x3d.jsail.Text.*;
// Javadoc annotations follow, see below for source.
/**
*
test text.
Related links: text.java source, X3D Resources, X3D Scene Authoring Hints and X3D Tooltips.
This program uses the
X3D Java Scene Access Interface Library (X3DJSAIL).
It has been produced using the
X3dToJava.xslt
stylesheet to create Java source code from an .x3d
scene.
* @author John W Carlson
*/
public class text
{
/** Default constructor to create this object. */
public text ()
{
initialize();
}
/** Create and initialize the X3D model. */
public final void initialize()
{
x3dModel = new X3DObject().setProfile("Immersive").setVersion("3.3")
.setHead(new headObject()
.addMeta(new metaObject().setName("creator").setContent("John W Carlson"))
.addMeta(new metaObject().setName("created").setContent("December 13 2015"))
.addMeta(new metaObject().setName("title").setContent("text.x3d"))
.addMeta(new metaObject().setName("identifier").setContent("https://coderextreme.net/X3DJSONLD/text.x3d"))
.addMeta(new metaObject().setName("description").setContent("test text"))
.addMeta(new metaObject().setName("generator").setContent("Vim, X3D-Edit, https://savage.nps.edu/X3D-Edit")))
.setScene(new SceneObject()
.addChild(new TransformObject()
.addChild(new ShapeObject()
.setGeometry(new TextObject().setString(new MFStringObject("\"Node\\\"\\\"\\\"\""))
.setFontStyle(new FontStyleObject()))
.setAppearance(new AppearanceObject()
.setMaterial(new MaterialObject())))
.addChild(new ShapeObject()
.setGeometry(new TextObject().setString(new MFStringObject("\"Node2\" \"Node2\""))
.setFontStyle(new FontStyleObject()))
.setAppearance(new AppearanceObject()
.setMaterial(new MaterialObject())))
.addChild(new ShapeObject()
.setGeometry(new TextObject().setString(new MFStringObject("\"Node3\" \"Node3\\\"\\\"\\\"\""))
.setFontStyle(new FontStyleObject()))
.setAppearance(new AppearanceObject()
.setMaterial(new MaterialObject())))
.addChild(new ScriptObject()
.addField(new fieldObject().setAccessType("initializeOnly").setName("frontUrls").setType("MFString").setValue("\"rnl_front.png\" \"uffizi_front.png\"")))));
}
// end of initialize() method
/** The initialized model object, created within initialize() method. */
private X3DObject x3dModel;
/** Provide a shallow copy of the X3D model.
* @return text model
*/
public X3DObject getX3dModel()
{
return x3dModel;
}
/** Indicate X3DJSAIL validation results for this X3D model.
* @return validation results plus exception information, if any
*/
public String validateSelf()
{
String metaResult = new String();
String validationResult = new String();
String exceptionResult = new String();
try
{
initialize();
if ((getX3dModel() == null) || (getX3dModel().getHead() == null))
{
validationResult = "empty scene, nothing to validate. " + x3dModel.validate();
return validationResult;
}
// first list informational meta elements of interest
for (metaObject meta : getX3dModel().getHead().getMetaList())
{
if (meta.getName().equals(metaObject.NAME_ERROR) ||
meta.getName().equals(metaObject.NAME_WARNING) ||
meta.getName().equals(metaObject.NAME_HINT) ||
meta.getName().equals(metaObject.NAME_INFO) ||
meta.getName().equals(metaObject.NAME_TODO))
{
metaResult += meta.toStringX3D();
}
}
validationResult += x3dModel.validate(); // walk entire tree to validate correctness
}
catch (Exception e)
{
exceptionResult = e.getMessage(); // report exception failures, if any
if (exceptionResult == null)
{
exceptionResult = "Exception caught but null message!";
e.printStackTrace();
}
}
if (metaResult.isEmpty() && exceptionResult.isEmpty() && validationResult.isEmpty())
return "success";
else
{
String returnMessage = metaResult;
if (!exceptionResult.isEmpty() && !validationResult.isEmpty())
returnMessage += "\n*** ";
returnMessage += exceptionResult;
if (exceptionResult.isEmpty() && !validationResult.isEmpty())
returnMessage = "\n" + returnMessage; // skip line before meta tags, etc.
returnMessage += validationResult;
return returnMessage;
}
}
/** Default main() method provided for test purposes.
* @param argv input parameters
*/
public static void main(String argv[])
{
text testObject = new text();
System.out.print("text execution self-validation test results: ");
String validationResults = testObject.validateSelf();
if (validationResults.startsWith("<"))
System.out.println();
System.out.println(validationResults);
testObject.x3dModel.toFileX3D("text.don.x3d");
}
}