001    /*
002     * This file is part of McIDAS-V
003     *
004     * Copyright 2007-2013
005     * Space Science and Engineering Center (SSEC)
006     * University of Wisconsin - Madison
007     * 1225 W. Dayton Street, Madison, WI 53706, USA
008     * https://www.ssec.wisc.edu/mcidas
009     * 
010     * All Rights Reserved
011     * 
012     * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and
013     * some McIDAS-V source code is based on IDV and VisAD source code.  
014     * 
015     * McIDAS-V is free software; you can redistribute it and/or modify
016     * it under the terms of the GNU Lesser Public License as published by
017     * the Free Software Foundation; either version 3 of the License, or
018     * (at your option) any later version.
019     * 
020     * McIDAS-V is distributed in the hope that it will be useful,
021     * but WITHOUT ANY WARRANTY; without even the implied warranty of
022     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
023     * GNU Lesser Public License for more details.
024     * 
025     * You should have received a copy of the GNU Lesser Public License
026     * along with this program.  If not, see http://www.gnu.org/licenses.
027     */
028    
029    package edu.wisc.ssec.mcidasv;
030    
031    
032    import org.w3c.dom.*;
033    
034    import java.util.ArrayList;
035    import java.util.List;
036    
037    import ucar.unidata.util.StringUtil;
038    
039    
040    /**
041     * An object to handle a saved parameter set.
042     */
043    public class ParameterSet {
044    
045        /** Xml attribute name for the name */
046        public static final String ATTR_NAME = "name";
047    
048        /** Xml attribute name for the category */
049        public static final String ATTR_CATEGORY = "category";
050    
051        /** The name of the parameter set */
052        private String name;
053    
054        /** The category of the parameter set */
055        private List<String> categories;
056    
057        /** The type */
058        private String type;
059        
060        /** The XML element */
061        private Element element;
062    
063        /** prefix_ */
064        private String uniquePrefix;
065    
066        public ParameterSet(String name, String category, String type) {
067            this(name, category, type, null);
068        }
069    
070        public ParameterSet(String name, List<String> categories, String type) {
071            this(name, categories, type, null);
072        }
073        
074        public ParameterSet(String name, String category, String type, Element element) {
075            List<String> categories = PersistenceManager.stringToCategories(category);
076            this.name = name;
077            this.categories = categories;
078            this.type = type;
079            this.element = element;
080        }
081    
082        public ParameterSet(String name, List<String>categories, String type, Element element) {
083            this.name = name;
084            this.categories = categories;
085            this.type = type;
086            this.element = element;
087        }
088        
089        /**
090         * set the unique prefix
091         *
092         * @param p prefix
093         */
094        protected void setUniquePrefix(String p) {
095            uniquePrefix = p;
096        }
097    
098        /**
099         * Get the name to use with the categories as a prefix
100         *
101         * @return categorized name
102         */
103        public String getCategorizedName() {
104            String catString = StringUtil.join("_", categories);
105            if (uniquePrefix != null) {
106                catString = uniquePrefix + catString;
107            }
108            return catString + name;
109        }
110    
111        /**
112         *  Set the Name property.
113         *
114         *  @param value The new value for Name
115         */
116        public void setName(String value) {
117            name = value;
118        }
119    
120        /**
121         *  Get the Name property.
122         *
123         *  @return The Name
124         */
125        public String getName() {
126            return name;
127        }
128    
129    
130        /**
131         *  Set the Category property.
132         *
133         *  @param value The new value for Category
134         */
135        public void setCategories(List value) {
136            categories = value;
137        }
138    
139        /**
140         *  Get the Category property.
141         *
142         *  @return The Category
143         */
144        public List getCategories() {
145            return categories;
146        }
147    
148        /**
149         * Set the Type property.
150         *
151         * @param value The new value for Type
152         */
153        public void setType(String value) {
154            type = value;
155        }
156    
157        /**
158         * Get the Type property.
159         *
160         * @return The Type
161         */
162        public String getType() {
163            return type;
164        }
165        
166        /**
167         * Set the Element property.
168         *
169         * @param value The new value for Element
170         */
171        public void setElement(Element value) {
172            element = value;
173        }
174    
175        /**
176         * Get the Element property.
177         *
178         * @return The Element
179         */
180        public Element getElement() {
181            return element;
182        }
183    
184        /**
185         * Full label
186         *
187         * @return The name.
188         */
189        public String getLabel() {
190            return PersistenceManager.categoriesToString(categories)
191                   + PersistenceManager.CATEGORY_SEPARATOR + name;
192        }
193    
194        /**
195         * Override toString.
196         *
197         * @return The name.
198         */
199        public String toString() {
200    //      String description = name + " { ";
201    //      NamedNodeMap attributes = element.getAttributes();
202    //      for (int i=0; i<attributes.getLength(); i++) {
203    //              Node attribute = attributes.item(i);
204    //              description += attribute.getNodeName() + "=" + attribute.getNodeValue();
205    //              if (i < attributes.getLength() - 1) description += ", ";
206    //      }
207    //      description += "}";
208    //        return description;
209            return name;
210        }
211    
212    }
213