///////////////////////////////////////////////////////////////////////////// // Copyright (c) 1999, COAS, Oregon State University // ALL RIGHTS RESERVED. U.S. Government Sponsorship acknowledged. // // Please read the full copyright notice in the file COPYRIGHT // in this directory. // // Author: Nathan Potter (ndp@oce.orst.edu) // // College of Oceanic and Atmospheric Scieneces // Oregon State University // 104 Ocean. Admin. Bldg. // Corvallis, OR 97331-5503 // ///////////////////////////////////////////////////////////////////////////// package dods.servers.ascii; import java.io.*; import java.util.Enumeration; import java.util.Vector; import dods.dap.*; /** */ public class asciiStructure extends DStructure implements toASCII { private static boolean _Debug = false; /** Constructs a new <code>asciiStructure</code>. */ public asciiStructure() { this(null); } /** * Constructs a new <code>asciiStructure</code> with name <code>n</code>. * @param n the name of the variable. */ public asciiStructure(String n) { super(n); } /** * Returns a string representation of the variables value. This * is really foreshadowing functionality for Server types, but * as it may come in useful for clients it is added here. Simple * types (example: DFloat32) will return a single value. DConstuctor * and DVector types will be flattened. DStrings and DURL's will * have double quotes around them. * * @param addName is a flag indicating if the variable name should * appear at the begining of the returned string. */ public void toASCII(PrintWriter pw, boolean addName, String rootName, boolean newLine){ if(_Debug) System.out.println("asciiStructure.toASCII("+addName+",'"+rootName+"') getName(): "+getName()); if(rootName != null) rootName += "." + getName(); else rootName = getName(); boolean firstPass = true; Enumeration e = getVariables(); while(e.hasMoreElements()){ toASCII ta = (toASCII) e.nextElement(); if(!newLine && !firstPass) pw.print(", "); ta.toASCII(pw, addName, rootName, newLine); firstPass = false; } if(newLine) pw.print("\n"); } public String toASCIIAddRootName(PrintWriter pw, boolean addName, String rootName){ if(addName){ rootName = toASCIIFlatName(rootName); pw.print(rootName); } return(rootName); } public String toASCIIFlatName(String rootName){ String s = ""; boolean firstPass = true; Enumeration e = getVariables(); while(e.hasMoreElements()){ toASCII ta = (toASCII) e.nextElement(); if(!firstPass) s += ", "; s += ta.toASCIIFlatName(rootName); firstPass = false; } return(s); } }