001: /*
002: * This file or a portion of this file is licensed under the terms of
003: * the Globus Toolkit Public License, found in file GTPL, or at
004: * http://www.globus.org/toolkit/download/license.html. This notice must
005: * appear in redistributions of this file, with or without modification.
006: *
007: * Redistributions of this Software, with or without modification, must
008: * reproduce the GTPL in: (1) the Software, or (2) the Documentation or
009: * some other similar material which is provided with the Software (if
010: * any).
011: *
012: * Copyright 1999-2004 University of Chicago and The University of
013: * Southern California. All rights reserved.
014: */
015: package org.griphyn.vdl.invocation;
016:
017: import java.util.*;
018: import java.io.Writer;
019: import java.io.IOException;
020:
021: /**
022: * This class is the container for a file descriptor object. A file
023: * descriptor object contains just the descriptor number.
024: *
025: * @author Jens-S. Vöckler
026: * @author Yong Zhao
027: * @version $Revision: 50 $
028: */
029: public class Descriptor extends File implements HasDescriptor {
030: /**
031: * Descriptor of the file.
032: */
033: private int m_descriptor;
034:
035: /**
036: * Default c'tor: Construct a hollow shell and allow further
037: * information to be added later.
038: */
039: public Descriptor() {
040: super ();
041: m_descriptor = -1;
042: }
043:
044: /**
045: * Constructs a file descriptor.
046: * @param descriptor is a valid file descriptor number.
047: */
048: public Descriptor(int descriptor) {
049: super ();
050: m_descriptor = descriptor;
051: }
052:
053: /**
054: * Accessor
055: *
056: * @see #setDescriptor(int)
057: */
058: public int getDescriptor() {
059: return this .m_descriptor;
060: }
061:
062: /**
063: * Accessor.
064: *
065: * @param descriptor
066: * @see #getDescriptor()
067: */
068: public void setDescriptor(int descriptor) {
069: this .m_descriptor = descriptor;
070: }
071:
072: /**
073: * Dump the state of the current element as XML output. This function
074: * traverses all sibling classes as necessary, and converts the data
075: * into pretty-printed XML output. The stream interface should be able
076: * to handle large output efficiently.
077: *
078: * @param stream is a stream opened and ready for writing. This can also
079: * be a string stream for efficient output.
080: * @param indent is a <code>String</code> of spaces used for pretty
081: * printing. The initial amount of spaces should be an empty string.
082: * The parameter is used internally for the recursive traversal.
083: * If a <code>null</code> value is specified, no indentation nor
084: * linefeeds will be generated.
085: * @param namespace is the XML schema namespace prefix. If neither
086: * empty nor null, each element will be prefixed with this prefix,
087: * and the root element will map the XML namespace.
088: * @exception IOException if something fishy happens to the stream.
089: */
090: public void toXML(Writer stream, String indent, String namespace)
091: throws IOException {
092: String tag = (namespace != null && namespace.length() > 0) ? namespace
093: + ":descriptor"
094: : "descriptor";
095:
096: // open tag
097: if (indent != null && indent.length() > 0)
098: stream.write(indent);
099: stream.write('<');
100: stream.write(tag);
101: writeAttribute(stream, " number=\"", Integer
102: .toString(m_descriptor));
103:
104: if (m_hexbyte != null && m_hexbyte.length() > 0) {
105: // yes, content
106: stream.write('>');
107: stream.write(m_hexbyte);
108: stream.write("</");
109: stream.write(tag);
110: stream.write('>');
111: } else {
112: // no content
113: stream.write("/>");
114: }
115:
116: if (indent != null)
117: stream.write(System.getProperty("line.separator", "\r\n"));
118: }
119: }
|