opendap/src/main/java/opendap/dap/DAS.java
private opendap.dap.Attribute getAliasAttribute(AttributeTable att, Vector aNames)
            throws MalformedAliasException, UnresolvedAliasException
    {

        // Get the first node name form the vector.
        String aName = (String) aNames.get(0);

        // Get the list of child nodes from the AttributeTable
        Enumeration e = att.getNames();
        while (e.hasMoreElements()) {

            // Get an Attribute
            String atName = (String) e.nextElement();
            opendap.dap.Attribute a = att.getAttribute(atName);

            // Get the Attributes name and Normalize it.
            String normName = opendap.dap.DDS.normalize(a.getEncodedName());

            // Are they the same?
            if (normName.equals(aName)) {

                // Make sure this reference doesn't pass through an Alias.
                if (a.isAlias()) {
                    throw new MalformedAliasException("Aliases may NOT point to other aliases");
                }

                //dump the name from the list of names.
                aNames.remove(0);

                // Are there more?
                if (aNames.size() == 0) {
                    //No! We found it!
                    return (a);

                } else if (a.isContainer()) { // Is this Attribute a container (it better be)

                    try {
                        // Recursively search for the rest of the name vector in the container.
                        return (getAliasAttribute(a.getContainer(), aNames));

                    } catch (NoSuchAttributeException nsae) {
                        throw new MalformedAliasException("Attribute " + a.getEncodedName() +
                                " is not an attribute container. (AttributeTable) " +
                                " It may not contain the attribute: " +
                                aName);
                    }

                } else { // Dead-end, through an exception!

                    throw new MalformedAliasException("Attribute " + a.getEncodedName() +
                            " is not an attribute container. (AttributeTable) " +
                            " It may not contain the attribute: " +
                            aName);
                }

            }
        }
        // Nothing Matched, so this search failed.
        throw new UnresolvedAliasException("The alias `" + currentAlias.getEncodedName() +
                "` references the attribute: `" + aName + "` which cannot be found.");


    }
private opendap.dap.Attribute getAliasAttribute(AttributeTable att, Vector aNames)
            throws MalformedAliasException, UnresolvedAliasException
    {

        // Get the first node name form the vector.
        String aName = (String) aNames.get(0);

        // Get the list of child nodes from the AttributeTable
        Enumeration e = att.getNames();
        while (e.hasMoreElements()) {

            // Get an Attribute
            String atName = (String) e.nextElement();
            opendap.dap.Attribute a = att.getAttribute(atName);

            // Get the Attributes name and Normalize it.
            String normName = opendap.dap.DDS.normalize(a.getEncodedName());

            // Are they the same?
            if (normName.equals(aName)) {

                // Make sure this reference doesn't pass through an Alias.
                if (a.isAlias()) {
                    throw new MalformedAliasException("Aliases may NOT point to other aliases");
                }

                //dump the name from the list of names.
                aNames.remove(0);

                // Are there more?
                if (aNames.size() == 0) {
                    //No! We found it!
                    return (a);

                } else if (a.isContainer()) { // Is this Attribute a container (it better be)

                    try {
                        // Recursively search for the rest of the name vector in the container.
                        return (getAliasAttribute(a.getContainer(), aNames));

                    } catch (NoSuchAttributeException nsae) {
                        throw new MalformedAliasException("Attribute " + a.getEncodedName() +
                                " is not an attribute container. (AttributeTable) " +
                                " It may not contain the attribute: " +
                                aName);
                    }

                } else { // Dead-end, through an exception!

                    throw new MalformedAliasException("Attribute " + a.getEncodedName() +
                            " is not an attribute container. (AttributeTable) " +
                            " It may not contain the attribute: " +
                            aName);
                }

            }
        }
        // Nothing Matched, so this search failed.
        throw new UnresolvedAliasException("The alias `" + currentAlias.getEncodedName() +
                "` references the attribute: `" + aName + "` which cannot be found.");


    }
private opendap . dap . Attribute getAliasAttribute ( AttributeTable att , Vector aNames ) throws MalformedAliasException , UnresolvedAliasException { // Get the first node name form the vector.
 String aName = ( String ) aNames . get ( 0 ) ; // Get the list of child nodes from the AttributeTable
 Enumeration e = att . getNames ( ) ; while ( e . hasMoreElements ( ) ) { // Get an Attribute
 String atName = ( String ) e . nextElement ( ) ; opendap . dap . Attribute a = att . getAttribute ( atName ) ; // Get the Attributes name and Normalize it.
 String normName = opendap . dap . DDS . normalize ( a . getEncodedName ( ) ) ; // Are they the same?
 if ( normName . equals ( aName ) ) { // Make sure this reference doesn't pass through an Alias.
 if ( a . isAlias ( ) ) { throw new MalformedAliasException ( "Aliases may NOT point to other aliases" ) ; } //dump the name from the list of names.
 aNames . remove ( 0 ) ; // Are there more?
 if ( aNames . size ( ) == 0 ) { //No! We found it!
 return ( a ) ; } else if ( a . isContainer ( ) ) { // Is this Attribute a container (it better be)
 try { // Recursively search for the rest of the name vector in the container.
 return ( getAliasAttribute ( a . getContainer ( ) , aNames ) ) ; } catch ( NoSuchAttributeException nsae ) { throw new MalformedAliasException ( "Attribute " + a . getEncodedName ( ) + " is not an attribute container. (AttributeTable) " + " It may not contain the attribute: " + aName ) ; } } else { // Dead-end, through an exception!
 throw new MalformedAliasException ( "Attribute " + a . getEncodedName ( ) + " is not an attribute container. (AttributeTable) " + " It may not contain the attribute: " + aName ) ; } } } // Nothing Matched, so this search failed.
 throw new UnresolvedAliasException ( "The alias `" + currentAlias . getEncodedName ( ) + "` references the attribute: `" + aName + "` which cannot be found." ) ; }
This method executes a (recursive) search of the <code>AttributeTable</code>
parameter <b>at</b> for an <code>Attribute</code> whose name resolves to
the vector of names contained in the <code>Vector</code> parameter
<b>aNames</b>. An Attribute is considered a match if each of it's node
names in the hierarchy of AttributeTables contained in the
one passed as parameter <b>at</b> matches (equals) the corresponding name
in the Vector <b>aNames</b>.

@param att    The <code>AttributeTable</code> to search
@param aNames The <code>Vector</code> of names to match to the nodes of <b>at</b>
This method executes a ( recursive ) search of the <code > AttributeTable< / code > parameter <b > at< / b > for an <code > Attribute< / code > whose name resolves to the vector of names contained in the <code > Vector< / code > parameter <b > aNames< / b > . An Attribute is considered a match if each of it s node names in the hierarchy of AttributeTables contained in the one passed as parameter <b > at< / b > matches ( equals ) the corresponding name in the Vector <b > aNames< / b > .