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.servermanager; 030 031 032 /** 033 * Represents a source of ADDE data. An ADDE entry may describe a dataset on 034 * remote servers or the user's own machine. 035 */ 036 public interface AddeEntry { 037 038 /** Represents the possible actions that an ADDE editor can perform. */ 039 // @PersistableEnum 040 public enum EditorAction { 041 /** Created a new entry; hasn't been verified. */ 042 ADDED, 043 044 /** Canceled out of creating or editing an entry. */ 045 CANCELLED, 046 047 /** Verified the contents of the editor GUI. */ 048 VERIFIED, 049 050 /** Created a new, verified entry. */ 051 ADDED_VERIFIED, 052 053 /** Updated an existing entry without verifying changes. */ 054 EDITED, 055 056 /** Updated an entry and verified the changes. */ 057 EDITED_VERIFIED, 058 059 /** Editor GUI performed some {@literal "invalid"} action. */ 060 INVALID; 061 }; 062 063 /** Type of chooser this should appear under. */ 064 065 public enum EntryType { 066 /** {@link edu.wisc.ssec.mcidasv.chooser.adde.AddeImageChooser} */ 067 IMAGE, 068 069 /** {@link edu.wisc.ssec.mcidasv.chooser.adde.AddePointDataChooser} */ 070 POINT, 071 072 /** */ 073 GRID, 074 075 /** {@link edu.wisc.ssec.mcidasv.chooser.adde.AddeFrontChooser} */ 076 TEXT, 077 078 /** */ 079 NAV, 080 081 /** {@link edu.wisc.ssec.mcidasv.chooser.adde.AddeRadarChooser} */ 082 RADAR, 083 084 /** */ 085 UNKNOWN, 086 087 /** */ 088 INVALID; 089 090 /** 091 * Attempts to convert a given {@code String} value into a valid 092 * {@code EntryType}. 093 * 094 * @param str {@code String} to convert. Should not be {@code null}. 095 * 096 * @return {@code EntryType} of the value specified in {@code str}. 097 */ 098 public static EntryType fromStr(final String str) { 099 return EntryType.valueOf(str); 100 } 101 102 /** 103 * Attempts to convert a given {@code EntryType} into its 104 * {@code String} representation. 105 * 106 * @param type {@code EntryType} constant; should not be {@code null}. 107 * 108 * @return {@code String} representation of {@code type}. 109 */ 110 public static String toStr(final EntryType type) { 111 return type.name(); 112 } 113 }; 114 115 /** Sort of a {@literal "misc"} status field... */ 116 public enum EntryValidity { 117 /** Entry has been verified by connecting to the server. */ 118 VERIFIED, 119 120 /** Unknown whether or not this entry actually works. */ 121 UNVERIFIED, 122 123 /** Entry is being checked for validity. */ 124 VALIDATING, 125 126 /** 127 * User has elected to remove this entry. This is an unfortunate 128 * {@literal "special case"}, as we can't simply remove these entries 129 * from a list! Say the user import entries from a remote MCTABLE file 130 * and later deleted some of the imported entries. Fine, good! But 131 * what should happen if the user hears that new servers have been 132 * added to that same MCTABLE file? The entries that the user has 133 * deleted <i>locally</i> should not reappear, right? 134 */ 135 DELETED, 136 137 /** Entry is invalid in some way. */ 138 INVALID; 139 140 public static EntryValidity fromStr(final String str) { 141 return EntryValidity.valueOf(str); 142 } 143 public static String toStr(final EntryValidity validity) { 144 return validity.name(); 145 } 146 }; 147 148 /** Where did this entry come from? */ 149 public enum EntrySource { 150 /** Entry originated from McIDAS-V. */ 151 SYSTEM, 152 153 /** Entry was imported from a MCTABLE file. */ 154 MCTABLE, 155 156 /** Entry was added by the user.*/ 157 USER, 158 159 /** 160 * Represents an {@literal "invalid"} {@code EntrySource}. Useful for 161 * invalid entry objects ({@link RemoteAddeEntry#INVALID_ENTRY} and 162 * {@link LocalAddeEntry#INVALID_ENTRY}). 163 */ 164 INVALID; 165 166 public static EntrySource fromStr(final String str) { 167 return EntrySource.valueOf(str); 168 } 169 public static String toStr(final EntrySource source) { 170 return source.name(); 171 } 172 }; 173 174 /** 175 * Has the user elected to disable this entry from appearing in its 176 * relevant chooser? 177 */ 178 public enum EntryStatus { 179 /** Entry is valid and toggled on. */ 180 ENABLED, 181 182 /** Entry is valid and toggled off. */ 183 DISABLED, 184 185 /** Something is wrong with this entry. */ 186 INVALID; 187 188 public static EntryStatus fromStr(final String str) { 189 return EntryStatus.valueOf(str); 190 } 191 192 public static String toStr(final EntryType type) { 193 return type.name(); 194 } 195 }; 196 197 /** Represents the {@literal "no accounting"} entries. */ 198 public static final AddeAccount DEFAULT_ACCOUNT = 199 new AddeAccount("idv", "0"); 200 201 /** 202 * Address of the server associated with the current entry. 203 * {@link LocalAddeEntry}s will return {@code localhost}. 204 */ 205 public String getAddress(); 206 207 /** 208 * Dataset/group located on the server. 209 */ 210 public String getGroup(); 211 212 // TODO(jon): what part of a resolv.srv does this represent? 213 /** 214 * Name associated with this entry. 215 * 216 * @return Name associated with this entry. 217 */ 218 public String getName(); 219 220 /** 221 * Accounting information associated with the current entry. If the server 222 * does not require accounting information, this method returns 223 * {@link #DEFAULT_ACCOUNT}. 224 * 225 * @return ADDE account object. 226 */ 227 public AddeAccount getAccount(); 228 229 /** 230 * Type of chooser this entry should appear under. 231 * 232 * @return The {@literal "type"} of data associated with this entry. 233 */ 234 public EntryType getEntryType(); 235 236 /** 237 * Does this entry represent a {@literal "valid"} ADDE server. 238 * 239 * @return Whether or not this entry has been validated. 240 */ 241 public EntryValidity getEntryValidity(); 242 243 /** 244 * Source that specified this entry. For example; allows you to 245 * distinguish {@literal "system"} entries (which cannot be removed, only 246 * disabled) from entries created by the user (full control). 247 */ 248 public EntrySource getEntrySource(); 249 250 /** 251 * GUI status of the entry. Differs from {@link EntryValidity} in that 252 * {@code EntryStatus} controls this entry showing up in a chooser and has 253 * nothing to do with whether or not the entry is a valid ADDE server. 254 */ 255 public EntryStatus getEntryStatus(); 256 257 /** 258 * Handy {@code String} representation of this ADDE entry. Currently looks 259 * like {@code ADDRESS/GROUP}, but this is subject to change. 260 */ 261 public String getEntryText(); 262 263 // TODO(jon): should this be removed? this makes the entries mutable! 264 public void setEntryStatus(final EntryStatus newStatus); 265 266 // TODO(jon): integrate with parameter sets one fine day? 267 public String getEntryAlias(); 268 269 // TODO(jon): should this be removed? this makes the entries mutable! 270 public void setEntryAlias(final String newAlias); 271 272 /** */ 273 public boolean isEntryTemporary(); 274 275 /** 276 * Currently used as a identifier for convenient storage by the server 277 * manager. 278 */ 279 public String asStringId(); 280 281 /** 282 * String representation of this entry. 283 */ 284 public String toString(); 285 }