Coverage Report - net.fckeditor.handlers.PropertiesLoader
 
Classes in this File Line Coverage Branch Coverage Complexity
PropertiesLoader
54%
31/57
N/A
1
 
 1  
 /*
 2  
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 3  
  * Copyright (C) 2004-2010 Frederico Caldeira Knabben
 4  
  * 
 5  
  * == BEGIN LICENSE ==
 6  
  * 
 7  
  * Licensed under the terms of any of the following licenses at your
 8  
  * choice:
 9  
  * 
 10  
  *  - GNU General Public License Version 2 or later (the "GPL")
 11  
  *    http://www.gnu.org/licenses/gpl.html
 12  
  * 
 13  
  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 14  
  *    http://www.gnu.org/licenses/lgpl.html
 15  
  * 
 16  
  *  - Mozilla Public License Version 1.1 or later (the "MPL")
 17  
  *    http://www.mozilla.org/MPL/MPL-1.1.html
 18  
  * 
 19  
  * == END LICENSE ==
 20  
  */
 21  
 package net.fckeditor.handlers;
 22  
 
 23  
 import java.io.BufferedInputStream;
 24  
 import java.io.InputStream;
 25  
 import java.util.Properties;
 26  
 
 27  
 import org.slf4j.Logger;
 28  
 import org.slf4j.LoggerFactory;
 29  
 
 30  
 /**
 31  
  * Manages FCKeditor.Java properties files.
 32  
  * <p>
 33  
  * It manages/loads the properties files in the following order:
 34  
  * <ol>
 35  
  * <li>the default properties as defined <a
 36  
  * href="http://java.fckeditor.net/properties.html">here</a>,
 37  
  * <li>the user-defined properties (<code>fckeditor.properties</code>) if
 38  
  * present.
 39  
  * </ol>
 40  
  * This means that user-defined properties <em>override</em> default ones. In
 41  
  * the backend it utilizes the regular {@link Properties} class.
 42  
  * </p>
 43  
  * <p>
 44  
  * Moreover, you can set properties programmatically too but make sure to
 45  
  * override them <em>before</em> the first call of that specific property.
 46  
  * 
 47  
  * @version $Id: PropertiesLoader.java 4785 2009-12-21 20:10:28Z mosipov $
 48  
  */
 49  0
 public class PropertiesLoader {
 50  1
         private static final Logger logger = LoggerFactory
 51  1
                         .getLogger(PropertiesLoader.class);
 52  
         private static final String DEFAULT_FILENAME = "default.properties";
 53  
         private static final String LOCAL_PROPERTIES = "/fckeditor.properties";
 54  1
         private static Properties properties = new Properties();
 55  
 
 56  
         static {
 57  
 
 58  
                 // 1. load library defaults
 59  1
                 InputStream in = PropertiesLoader.class
 60  
                                 .getResourceAsStream(DEFAULT_FILENAME);
 61  
 
 62  1
                 if (in == null) {
 63  0
                         logger.error("{} not found", DEFAULT_FILENAME);
 64  0
                         throw new RuntimeException(DEFAULT_FILENAME + " not found");
 65  
                 } else {
 66  1
                         if (!(in instanceof BufferedInputStream))
 67  0
                                 in = new BufferedInputStream(in);
 68  
 
 69  
                         try {
 70  1
                                 properties.load(in);
 71  1
                                 in.close();
 72  1
                                 logger.debug("{} loaded", DEFAULT_FILENAME);
 73  0
                         } catch (Exception e) {
 74  0
                                 logger.error("Error while processing {}", DEFAULT_FILENAME);
 75  0
                                 throw new RuntimeException("Error while processing "
 76  
                                                 + DEFAULT_FILENAME, e);
 77  1
                         }
 78  
                 }
 79  
 
 80  
                 // 2. load user defaults if present
 81  1
                 InputStream in2 = PropertiesLoader.class
 82  
                                 .getResourceAsStream(LOCAL_PROPERTIES);
 83  
 
 84  1
                 if (in2 == null) {
 85  1
                         logger.info("{} not found", LOCAL_PROPERTIES);
 86  
                 } else {
 87  
 
 88  0
                         if (!(in2 instanceof BufferedInputStream))
 89  0
                                 in2 = new BufferedInputStream(in2);
 90  
 
 91  
                         try {
 92  0
                                 properties.load(in2);
 93  0
                                 in2.close();
 94  0
                                 logger.debug("{} loaded", LOCAL_PROPERTIES);
 95  0
                         } catch (Exception e) {
 96  0
                                 logger.error("Error while processing {}", LOCAL_PROPERTIES);
 97  0
                                 throw new RuntimeException("Error while processing "
 98  
                                                 + LOCAL_PROPERTIES, e);
 99  0
                         }
 100  
 
 101  
                 }
 102  1
         }
 103  
 
 104  
         /**
 105  
          * Searches for the property with the specified key in this property list.
 106  
          * 
 107  
          * @see Properties#getProperty(String)
 108  
          */
 109  
         public static String getProperty(final String key) {
 110  0
                 return properties.getProperty(key);
 111  
         }
 112  
 
 113  
         /**
 114  
          * Sets the property with the specified key in this property list.
 115  
          * 
 116  
          * @see Properties#setProperty(String, String)
 117  
          */
 118  
         public static void setProperty(final String key, final String value) {
 119  0
                 properties.setProperty(key, value);
 120  0
         }
 121  
 
 122  
         /**
 123  
          * Returns <code>fckeditor.toolbarSet</code> property
 124  
          */
 125  
         public static String getEditorToolbarSet() {
 126  6
                 return properties.getProperty("fckeditor.toolbarSet");
 127  
         }
 128  
 
 129  
         /**
 130  
          * Returns <code>fckeditor.width</code> property
 131  
          */
 132  
         public static String getEditorWidth() {
 133  6
                 return properties.getProperty("fckeditor.width");
 134  
         }
 135  
 
 136  
         /**
 137  
          * Returns <code>fckeditor.height</code> property
 138  
          */
 139  
         public static String getEditorHeight() {
 140  6
                 return properties.getProperty("fckeditor.height");
 141  
         }
 142  
 
 143  
         /**
 144  
          * Returns <code>fckeditor.basePath</code> property
 145  
          */
 146  
         public static String getEditorBasePath() {
 147  6
                 return properties.getProperty("fckeditor.basePath");
 148  
         }
 149  
 
 150  
         /**
 151  
          * Returns <code>connector.resourceType.file.path</code> property
 152  
          */
 153  
         public static String getFileResourceTypePath() {
 154  1
                 return properties.getProperty("connector.resourceType.file.path");
 155  
         }
 156  
 
 157  
         /**
 158  
          * Returns <code>connector.resourceType.flash.path</code> property
 159  
          */
 160  
         public static String getFlashResourceTypePath() {
 161  1
                 return properties.getProperty("connector.resourceType.flash.path");
 162  
         }
 163  
 
 164  
         /**
 165  
          * Returns <code>connector.resourceType.image.path</code> property
 166  
          */
 167  
         public static String getImageResourceTypePath() {
 168  1
                 return properties.getProperty("connector.resourceType.image.path");
 169  
         }
 170  
 
 171  
         /**
 172  
          * Returns <code>connector.resourceType.media.path</code> property
 173  
          */
 174  
         public static String getMediaResourceTypePath() {
 175  1
                 return properties.getProperty("connector.resourceType.media.path");
 176  
         }
 177  
 
 178  
         /**
 179  
          * Returns <code>connector.resourceType.file.extensions.allowed</code>
 180  
          * property
 181  
          */
 182  
         public static String getFileResourceTypeAllowedExtensions() {
 183  1
                 return properties
 184  
                                 .getProperty("connector.resourceType.file.extensions.allowed");
 185  
         }
 186  
 
 187  
         /**
 188  
          * Returns <code>connector.resourceType.file.extensions.denied</code>
 189  
          * property
 190  
          */
 191  
         public static String getFileResourceTypeDeniedExtensions() {
 192  1
                 return properties
 193  
                                 .getProperty("connector.resourceType.file.extensions.denied");
 194  
         }
 195  
 
 196  
         /**
 197  
          * Returns <code>connector.resourceType.flash.extensions.allowed</code>
 198  
          * property
 199  
          */
 200  
         public static String getFlashResourceTypeAllowedExtensions() {
 201  1
                 return properties
 202  
                                 .getProperty("connector.resourceType.flash.extensions.allowed");
 203  
         }
 204  
 
 205  
         /**
 206  
          * Returns <code>connector.resourceType.flash.extensions.denied</code>
 207  
          * property
 208  
          */
 209  
         public static String getFlashResourceTypeDeniedExtensions() {
 210  1
                 return properties
 211  
                                 .getProperty("connector.resourceType.flash.extensions.denied");
 212  
         }
 213  
 
 214  
         /**
 215  
          * Returns <code>connector.resourceType.image.extensions.allowed</code>
 216  
          * property
 217  
          */
 218  
         public static String getImageResourceTypeAllowedExtensions() {
 219  1
                 return properties
 220  
                                 .getProperty("connector.resourceType.image.extensions.allowed");
 221  
         }
 222  
 
 223  
         /**
 224  
          * Returns <code>connector.resourceType.image.extensions.denied</code>
 225  
          * property
 226  
          */
 227  
         public static String getImageResourceTypeDeniedExtensions() {
 228  1
                 return properties
 229  
                                 .getProperty("connector.resourceType.image.extensions.denied");
 230  
         }
 231  
 
 232  
         /**
 233  
          * Returns <code>connector.resourceType.media.extensions.allowed</code>
 234  
          * property
 235  
          */
 236  
         public static String getMediaResourceTypeAllowedExtensions() {
 237  1
                 return properties
 238  
                                 .getProperty("connector.resourceType.media.extensions.allowed");
 239  
         }
 240  
 
 241  
         /**
 242  
          * Returns <code>connector.resourceType.media.extensions.denied</code>
 243  
          * property
 244  
          */
 245  
         public static String getMediaResourceTypeDeniedExtensions() {
 246  1
                 return properties
 247  
                                 .getProperty("connector.resourceType.media.extensions.denied");
 248  
         }
 249  
 
 250  
         /**
 251  
          * Returns <code>connector.userFilesPath</code> property
 252  
          */
 253  
         public static String getUserFilesPath() {
 254  0
                 return properties.getProperty("connector.userFilesPath");
 255  
         }
 256  
 
 257  
         /**
 258  
          * Returns <code>connector.userFilesAbsolutePath</code> property
 259  
          */
 260  
         public static String getUserFilesAbsolutePath() {
 261  0
                 return properties.getProperty("connector.userFilesAbsolutePath");
 262  
         }
 263  
 
 264  
         /**
 265  
          * Returns <code>connector.forceSingleExtension</code> property
 266  
          */
 267  
         public static boolean isForceSingleExtension() {
 268  3
                 return Boolean.valueOf(properties
 269  
                                 .getProperty("connector.forceSingleExtension"));
 270  
         }
 271  
 
 272  
         /**
 273  
          * Returns <code>connector.secureImageUploads</code> property
 274  
          */
 275  
         public static boolean isSecureImageUploads() {
 276  0
                 return Boolean.valueOf(properties
 277  
                                 .getProperty("connector.secureImageUploads"));
 278  
         }
 279  
 
 280  
         /**
 281  
          * Returns <code>connector.impl</code> property
 282  
          */
 283  
         public static String getConnectorImpl() {
 284  0
                 return properties.getProperty("connector.impl");
 285  
         }
 286  
 
 287  
         /**
 288  
          * Returns <code>connector.userActionImpl</code> property
 289  
          */
 290  
         public static String getUserActionImpl() {
 291  0
                 return properties.getProperty("connector.userActionImpl");
 292  
         }
 293  
 
 294  
         /**
 295  
          * Returns <code>connector.userPathBuilderImpl</code> property
 296  
          */
 297  
         public static String getUserPathBuilderImpl() {
 298  0
                 return properties.getProperty("connector.userPathBuilderImpl");
 299  
         }
 300  
 
 301  
         /**
 302  
          * Returns <code>connector.localeResolverImpl</code> property
 303  
          */
 304  
         public static String getLocaleResolverImpl() {
 305  0
                 return properties.getProperty("localization.localeResolverImpl");
 306  
         }
 307  
 }