001/* 002 * Copyright (c) 2003-2010 The Regents of the University of California. 003 * All rights reserved. 004 * 005 * '$Author: welker $' 006 * '$Date: 2010-05-06 05:21:26 +0000 (Thu, 06 May 2010) $' 007 * '$Revision: 24234 $' 008 * 009 * Permission is hereby granted, without written agreement and without 010 * license or royalty fees, to use, copy, modify, and distribute this 011 * software and its documentation for any purpose, provided that the above 012 * copyright notice and the following two paragraphs appear in all copies 013 * of this software. 014 * 015 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY 016 * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 017 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF 018 * THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF 019 * SUCH DAMAGE. 020 * 021 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, 022 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 023 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE 024 * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF 025 * CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, 026 * ENHANCEMENTS, OR MODIFICATIONS. 027 * 028 */ 029 030package org.kepler.configuration; 031 032import java.io.File; 033 034import org.kepler.build.modules.Module; 035 036/** 037 * Class that represents a root configuration property within kepler 038 */ 039public class RootConfigurationProperty extends ConfigurationProperty 040{ 041 private File file; 042 043 /** 044 * construct a root configuration property within a module with a specific file 045 */ 046 public RootConfigurationProperty(Module m, File configurationFile) 047 { 048 super(m, ConfigurationManager.removeFileExtension(configurationFile.getName())); 049 this.file = configurationFile; 050 } 051 052 protected RootConfigurationProperty(Module m, String name) 053 { 054 super(m, name); 055 this.file = null; 056 } 057 058 protected RootConfigurationProperty(Module m, String name, ConfigurationProperty property) 059 throws NamespaceException, ConfigurationManagerException 060 { 061 super(m, name, property); 062 this.file = null; 063 } 064 065 protected RootConfigurationProperty(Module m, String name, ConfigurationNamespace namespace) 066 { 067 super(m, name, namespace, (String)null); 068 this.file = null; 069 } 070 071 protected RootConfigurationProperty(Module m, String name, ConfigurationNamespace namespace, ConfigurationProperty property) 072 throws NamespaceException, ConfigurationManagerException 073 { 074 this(m, name, namespace); 075 addProperty(property); 076 } 077 078 /** 079 * return the file that this configuration property represents 080 */ 081 public File getFile() 082 { 083 return this.file; 084 } 085 086 /** 087 * returns true if any of the properties in this RootConfigurationProperty have 088 * been changed. This is the opposite functionality of 089 * ConfigurationProperty.isDirty() which is not recursive by default 090 */ 091 public boolean isDirty() 092 { 093 if(getProperties().size() > 0) 094 { 095 return getProperty(0).isDirty(true); 096 } 097 return false; 098 } 099 100 /** 101 * return the root property of this configuration 102 */ 103 public ConfigurationProperty getRootProperty() 104 { 105 return getProperties().get(0); 106 } 107}