001 /*
002 * $Id: HydraContext.java,v 1.11 2012/04/24 18:41:02 rink Exp $
003 *
004 * This file is part of McIDAS-V
005 *
006 * Copyright 2007-2012
007 * Space Science and Engineering Center (SSEC)
008 * University of Wisconsin - Madison
009 * 1225 W. Dayton Street, Madison, WI 53706, USA
010 * https://www.ssec.wisc.edu/mcidas
011 *
012 * All Rights Reserved
013 *
014 * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and
015 * some McIDAS-V source code is based on IDV and VisAD source code.
016 *
017 * McIDAS-V is free software; you can redistribute it and/or modify
018 * it under the terms of the GNU Lesser Public License as published by
019 * the Free Software Foundation; either version 3 of the License, or
020 * (at your option) any later version.
021 *
022 * McIDAS-V is distributed in the hope that it will be useful,
023 * but WITHOUT ANY WARRANTY; without even the implied warranty of
024 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
025 * GNU Lesser Public License for more details.
026 *
027 * You should have received a copy of the GNU Lesser Public License
028 * along with this program. If not, see http://www.gnu.org/licenses.
029 */
030
031 package edu.wisc.ssec.mcidasv.data.hydra;
032
033 import ucar.unidata.data.DataSelection;
034 import ucar.unidata.data.DataSource;
035 import ucar.unidata.data.DataChoice;
036 import ucar.unidata.data.DataCategory;
037 import java.util.HashMap;
038 import java.util.Iterator;
039 import java.util.Set;
040
041 public class HydraContext {
042
043 private static HashMap<DataSource, HydraContext> dataSourceToContextMap = new HashMap<DataSource, HydraContext>();
044 private static HashMap<DataChoice, HydraContext> dataChoiceToContextMap = new HashMap<DataChoice, HydraContext>();
045 private static HashMap<DataCategory, HydraContext> dataCategoryToContextMap = new HashMap<DataCategory, HydraContext>();
046
047 private static HashMap<DataSource, HashMap<DataCategory, HydraContext>> contextMap = new HashMap<DataSource, HashMap<DataCategory, HydraContext>>();
048
049 private static HydraContext hydraContext = null;
050 private boolean useSubset = false;
051 private MultiDimensionSubset subset = null;
052
053 public static HydraContext getHydraContext(DataSource source, DataCategory dataCategory) {
054 if (dataCategory == null) {
055 return getHydraContext(source);
056 }
057 if (contextMap.containsKey(source)) {
058 if ((contextMap.get(source)).containsKey(dataCategory)) {
059 return contextMap.get(source).get(dataCategory);
060 }
061 else {
062 HashMap catMap = contextMap.get(source);
063 HydraContext hydraContext = new HydraContext();
064 catMap.put(dataCategory, hydraContext);
065 return hydraContext;
066 }
067 }
068 else {
069 HydraContext hydraContext = new HydraContext();
070 HashMap catMap = new HashMap();
071 catMap.put(dataCategory, hydraContext);
072 contextMap.put(source, catMap);
073 return hydraContext;
074 }
075 }
076
077 public static HydraContext getHydraContext(DataSource source) {
078 if (dataSourceToContextMap.isEmpty()) {
079 HydraContext hydraContext = new HydraContext();
080 dataSourceToContextMap.put(source, hydraContext);
081 return hydraContext;
082 }
083
084 if (dataSourceToContextMap.containsKey(source)) {
085 return dataSourceToContextMap.get(source);
086 }
087 else {
088 HydraContext hydraContext = new HydraContext();
089 dataSourceToContextMap.put(source, hydraContext);
090 return hydraContext;
091 }
092 }
093
094 public static HydraContext getHydraContext(DataChoice choice) {
095 if (dataChoiceToContextMap.isEmpty()) {
096 HydraContext hydraContext = new HydraContext();
097 dataChoiceToContextMap.put(choice, hydraContext);
098 return hydraContext;
099 }
100
101 if (dataChoiceToContextMap.containsKey(choice)) {
102 return dataChoiceToContextMap.get(choice);
103 }
104 else {
105 HydraContext hydraContext = new HydraContext();
106 dataChoiceToContextMap.put(choice, hydraContext);
107 return hydraContext;
108 }
109 }
110
111 public static HydraContext getHydraContext(DataCategory choice) {
112 if (dataCategoryToContextMap.isEmpty()) {
113 HydraContext hydraContext = new HydraContext();
114 dataCategoryToContextMap.put(choice, hydraContext);
115 return hydraContext;
116 }
117
118 if (dataCategoryToContextMap.containsKey(choice)) {
119 return dataCategoryToContextMap.get(choice);
120 }
121 else {
122 HydraContext hydraContext = new HydraContext();
123 dataCategoryToContextMap.put(choice, hydraContext);
124 return hydraContext;
125 }
126 }
127
128
129 public static HydraContext getHydraContext() {
130 if (hydraContext == null) {
131 hydraContext = new HydraContext();
132 }
133 return hydraContext;
134 }
135
136
137 public HydraContext() {
138 }
139
140
141 public synchronized void setMultiDimensionSubset(MultiDimensionSubset subset) {
142 this.subset = subset;
143 }
144
145
146 public synchronized MultiDimensionSubset getMultiDimensionSubset() {
147 return subset;
148 }
149
150
151 }