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 temporary file object. A temporary
023: * file object contains a filename and a file descriptor.
024: *
025: * @author Jens-S. Vöckler
026: * @author Yong Zhao
027: * @version $Revision: 50 $
028: */
029: public class Temporary extends File implements HasDescriptor,
030: HasFilename {
031: /**
032: * Name of the file.
033: */
034: protected String m_filename;
035:
036: /**
037: * Descriptor of the file.
038: */
039: protected int m_descriptor;
040:
041: /**
042: * Default c'tor: Construct a hollow shell and allow further
043: * information to be added later.
044: */
045: public Temporary() {
046: super ();
047: m_filename = null;
048: m_descriptor = -1;
049: }
050:
051: /**
052: * Constructs a temporary file object.
053: * @param filename is the name of the file that stat was invoked
054: * @param descriptor is a valid file descriptor number.
055: */
056: public Temporary(String filename, int descriptor) {
057: super ();
058: m_filename = filename;
059: m_descriptor = descriptor;
060: }
061:
062: /**
063: * Accessor
064: *
065: * @see #setFilename(String)
066: */
067: public String getFilename() {
068: return this .m_filename;
069: }
070:
071: /**
072: * Accessor.
073: *
074: * @param filename
075: * @see #getFilename()
076: */
077: public void setFilename(String filename) {
078: this .m_filename = filename;
079: }
080:
081: /**
082: * Accessor
083: *
084: * @see #setDescriptor(int)
085: */
086: public int getDescriptor() {
087: return this .m_descriptor;
088: }
089:
090: /**
091: * Accessor.
092: *
093: * @param descriptor
094: * @see #getDescriptor()
095: */
096: public void setDescriptor(int descriptor) {
097: this .m_descriptor = descriptor;
098: }
099:
100: /**
101: * Dump the state of the current element as XML output. This function
102: * traverses all sibling classes as necessary, and converts the data
103: * into pretty-printed XML output. The stream interface should be able
104: * to handle large output efficiently.
105: *
106: * @param stream is a stream opened and ready for writing. This can also
107: * be a string stream for efficient output.
108: * @param indent is a <code>String</code> of spaces used for pretty
109: * printing. The initial amount of spaces should be an empty string.
110: * The parameter is used internally for the recursive traversal.
111: * If a <code>null</code> value is specified, no indentation nor
112: * linefeeds will be generated.
113: * @param namespace is the XML schema namespace prefix. If neither
114: * empty nor null, each element will be prefixed with this prefix,
115: * and the root element will map the XML namespace.
116: * @exception IOException if something fishy happens to the stream.
117: */
118: public void toXML(Writer stream, String indent, String namespace)
119: throws IOException {
120: String tag = (namespace != null && namespace.length() > 0) ? namespace
121: + ":temporary"
122: : "temporary";
123:
124: if (indent != null && indent.length() > 0)
125: stream.write(indent);
126: stream.write('<');
127: stream.write(tag);
128: writeAttribute(stream, " name=\"", m_filename);
129: writeAttribute(stream, " descriptor=\"", Integer
130: .toString(m_descriptor));
131:
132: if (m_hexbyte != null && m_hexbyte.length() > 0) {
133: // yes, content
134: stream.write('>');
135: stream.write(m_hexbyte);
136: stream.write("</");
137: stream.write(tag);
138: stream.write('>');
139: } else {
140: // no content
141: stream.write("/>");
142: }
143:
144: if (indent != null)
145: stream.write(System.getProperty("line.separator", "\r\n"));
146: }
147: }
|