1 /* 2 * $HeadURL: $ 3 * $Date: $ 4 * $Revision: $ 5 * $Author: $ 6 * 7 * Copyright (c) 2005 MindTree Consulting Ltd. 8 * 9 * This file is part of Insight. 10 * 11 * Insight is free software: you can redistribute it and/or modify it under the 12 * terms of the GNU General Public License as published by the Free Software 13 * Foundation, either version 3 of the License, or (at your option) any later 14 * version. 15 * 16 * Insight is distributed in the hope that it will be useful, but 17 * WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 19 * Public License for more details. 20 * 21 * You should have received a copy of the GNU General Public License along with 22 * Insight. If not, see <http://www.gnu.org/licenses/>. 23 */ 24 25 package com.mindtree.techworks.insight.preferences.xmlpersistence; 26 27 import java.util.Collection; 28 import java.util.HashMap; 29 import java.util.Iterator; 30 31 import com.mindtree.techworks.insight.preferences.model.Preference; 32 33 34 /** 35 * This class will be used to cache the XML Preference Related Data. This is a 36 * singleton class. 37 * 38 * @see com.mindtree.techworks.insight.preferences.xmlpersistence.XMLPreferenceDataHandler 39 * XMLPreferenceDataHandler 40 * @author Bindul Bhowmik 41 * @version $Revision: 27 $ $Date: 2007-12-16 04:58:03 -0700 (Sun, 16 Dec 2007) $ 42 */ 43 public class XMLPreferenceDataCache { 44 45 /** 46 * The singleton instance 47 */ 48 private static XMLPreferenceDataCache instance = null; 49 50 /** 51 * Preferences stored in the hashmap. 52 */ 53 private HashMap preferences = null; 54 55 /** 56 * Indicates if the XML file has already been validated aginst the Schema 57 */ 58 private boolean isXMLValidated = false; 59 60 /** 61 * Indicates if the XML file is already loaded 62 */ 63 private boolean isXMLLoaded = false; 64 65 /** 66 * Singleton, so private Constructor 67 */ 68 private XMLPreferenceDataCache () { 69 70 preferences = new HashMap(); 71 } 72 73 /** 74 * Returns the singleton instance. 75 * 76 * @return the singleton instance. 77 */ 78 public static XMLPreferenceDataCache getInstance () { 79 80 if (null == instance) { 81 //Instantiate the instance - double check lock! 82 synchronized (XMLPreferenceDataCache.class) { 83 if (null == instance) { 84 instance = new XMLPreferenceDataCache(); 85 } 86 } 87 } 88 return instance; 89 } 90 91 /** 92 * Adds a preference to the cache. If the preference with the same 93 * {@link Preference#getId() key} is already present in the cache, it will 94 * be overwritten. 95 * 96 * @param preference The preference to add to the cache. 97 */ 98 public void addPreference (Preference preference) { 99 100 if (null != preference) { 101 preferences.put(preference.getId(), preference); 102 } 103 } 104 105 /** 106 * Returns a preference from the cache, if present or retuns null. 107 * 108 * @param preferenceId The id for which preference is required. 109 * @return The preference if present or null. 110 */ 111 public Preference getPreference (String preferenceId) { 112 113 if (preferences.containsKey(preferenceId)) { 114 return (Preference) preferences.get(preferenceId); 115 } 116 return null; 117 } 118 119 /** 120 * Returns all the preferences from the cache. 121 * @return A collection of {@link Preference Preference} objects. 122 */ 123 public Collection getAllPreferences () { 124 125 return preferences.values(); 126 } 127 128 /** 129 * Returns an iterator to all cached preferences. 130 * @return An iterator to all the cache preferences. 131 */ 132 public Iterator iteratePreferences () { 133 134 return preferences.values().iterator(); 135 } 136 137 138 /** 139 * If the XML is loaded. 140 * @return Returns the isXMLLoaded. 141 */ 142 public boolean isXMLLoaded () { 143 144 return isXMLLoaded; 145 } 146 147 /** 148 * Sets the value to the xml loaded status. 149 * @param isXMLLoaded The isXMLLoaded to set. 150 */ 151 public synchronized void setXMLLoaded (boolean isXMLLoaded) { 152 153 this.isXMLLoaded = isXMLLoaded; 154 } 155 156 /** 157 * @return Returns the isXMLValidated. 158 */ 159 public boolean isXMLValidated () { 160 161 return isXMLValidated; 162 } 163 164 /** 165 * @param isXMLValidated The isXMLValidated to set. 166 */ 167 public synchronized void setXMLValidated (boolean isXMLValidated) { 168 169 this.isXMLValidated = isXMLValidated; 170 } 171 }