///////////////////////////////////////////////////////////////////////////// // 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 asciiSeq extends DSequence implements toASCII { private static boolean _Debug = false; /** Constructs a new <code>asciiSeq</code>. */ public asciiSeq() { this(null); } /** * Constructs a new <code>asciiSeq</code> with name <code>n</code>. * @param n the name of the variable. */ public asciiSeq(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("asciiSeq.toASCII("+addName+",'"+rootName+"') getName(): "+getName()); //System.out.println("this: " + this + " Has "+allValues.size() + " elements."); if(rootName != null) rootName += "." + getName(); else rootName = getName(); pw.print( toASCIIFlatName(rootName)); /* for(Enumeration e1 = allValues.elements(); e1.hasMoreElements(); ) { // get next instance vector Vector v = (Vector)e1.nextElement(); for(Enumeration e2 = v.elements(); e2.hasMoreElements(); ) { // get next instance variable BaseType bt = (BaseType)e2.nextElement(); pw.print(bt.toASCIIFlatName(rootName)+","); } break; } */ pw.println(""); int i = 0; for(Enumeration e1 = allValues.elements(); e1.hasMoreElements(); ) { int j = 0; // get next instance vector Vector v = (Vector)e1.nextElement(); for(Enumeration e2 = v.elements(); e2.hasMoreElements(); ) { // get next instance variable toASCII ta = (toASCII)e2.nextElement(); if(j>0) pw.print(", "); ta.toASCII(pw, false, rootName, false); j++; } pw.println(""); } 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; for(Enumeration e1 = allValues.elements(); e1.hasMoreElements(); ) { // get next instance vector Vector v = (Vector)e1.nextElement(); for(Enumeration e2 = v.elements(); e2.hasMoreElements(); ) { // get next instance variable toASCII ta = (toASCII)e2.nextElement(); if(!firstPass) s += ", "; s += ta.toASCIIFlatName(rootName); firstPass = false; } break; } return(s); } }