//
// AddeDatasetURL.java
//

/*
This source file is part of the edu.wisc.ssec.mcidas package and is
Copyright (C) 1998 - 2017 by Tom Whittaker, Tommy Jasmin, Tom Rink,
Don Murray, James Kelly, Bill Hibbard, Dave Glowacki, Curtis Rueden
and others.

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA
*/

package edu.wisc.ssec.mcidas.adde;


/**
 * A subclass of AddeURL to support queries on datasets.
 * 
 *
 * URLs must all have the following format:
 *
 *   adde://host/request?keyword_1=value_1&keyword_2=value_2
 *
 *   group=<groupname>         ADDE dataset group
 *   descr=<descriptor>        ADDE dataset descriptor
 *   user=<user_id>            ADDE user identification
 *   proj=<proj #>             a valid ADDE project number
 *   trace=<0/1>               setting to 1 tells server to write debug
 *                               trace file
 *   version=                  ADDE version number, currently 1 except for
 *                             griddata requests
 *   debug=                    set to true to watch the printlns stream by
 *   compress=                 set to "gzip" if you want to use the GZIP
 *                             compression or "compress" if you want to use
 *                             transfers in Unix compress format (You need to
 *                             have the VisAD package if you want to support
 *                             this.)  default = none.
 *   port=                     Socket port to connect on.  Overridden by
 *                             a port specified in the host
 *                             (e.g., adde.ucar.edu:500)
 * 
*/ public class AddeDatasetURL extends AddeURL { /** Keyword for dataset group */ public static final String KEY_GROUP = "GROUP"; /** Keyword for dataset descriptor */ public static final String KEY_DESCRIPTOR = "DESCRIPTOR"; /** * Dataset name */ private String group = null; /** * Dataset name */ private String descriptor = null; /** * Create an ADDE URL */ public AddeDatasetURL() {} /** * Create an ADDE Dataset URL from the given spec * @param host host to send to * @param requestType type of request (REQ_*) * @param group ADDE group */ public AddeDatasetURL(String host, String requestType, String group) { this(host, requestType, group, null); } /** * Create an ADDE Dataset URL from the given spec * @param host host to send to * @param requestType type of request (REQ_*) * @param group ADDE group * @param descriptor ADDE descriptor (may be null) */ public AddeDatasetURL(String host, String requestType, String group, String descriptor) { this(host, requestType, group, descriptor, null); } /** * Create an ADDE URL from the given spec * @param host host to send to * @param requestType type of request (REQ_*) * @param group ADDE group * @param descriptor ADDE descriptor (may be null) * @param extraKeys extraKeys string (key/value pairs) */ public AddeDatasetURL(String host, String requestType, String group, String descriptor, String extraKeys) { super(host, requestType, extraKeys); this.group = group; this.descriptor = descriptor; } /** * Make the query portion of the URL (e.g., key1=value1&key2=value2..) * Subclasses should override. * * @return the query portion of the URL */ protected String makeQuery() { StringBuffer buf = new StringBuffer(super.makeQuery()); if (getGroup() != null) appendKeyValue(buf, KEY_GROUP, getGroup()); if (getDescriptor() != null) appendKeyValue(buf, KEY_DESCRIPTOR, getDescriptor()); return buf.toString(); } /** * Get the group for this ADDE URL * @return the group */ public String getGroup() { return group; } /** * Set the group for this ADDE URL * @param group the group */ public void setGroup(String group) { this.group = group; } /** * Get the dataset descriptor for this ADDE URL * @return the dataset descriptor */ public String getDescriptor() { return descriptor; } /** * Set the dataset descriptor for this ADDE URL * @param desc the dataset descriptor */ public void setDescriptor(String desc) { this.descriptor = desc; } /** * Parse the query string and set the values accordingly, subclasses * should extend to parse their particular keywords * @param query query string */ protected void parseQuery(String query) { super.parseQuery(query); String test = getValue(query, KEY_GROUP); if (test != null) { setGroup(test); } // should be able to do this, but old URLS have desc //test = getValue(query, KEY_DESCRIPTOR); test = getValue(query, "DESC"); if (test != null) { setDescriptor(test); } } }

Ads help maintain this website.