001 /** 002 * =========================================== 003 * LibLayout : a free Java layouting library 004 * =========================================== 005 * 006 * Project Info: http://reporting.pentaho.org/liblayout/ 007 * 008 * (C) Copyright 2006-2007, by Pentaho Corporation and Contributors. 009 * 010 * This library is free software; you can redistribute it and/or modify it under the terms 011 * of the GNU Lesser General Public License as published by the Free Software Foundation; 012 * either version 2.1 of the License, or (at your option) any later version. 013 * 014 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 015 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 016 * See the GNU Lesser General Public License for more details. 017 * 018 * You should have received a copy of the GNU Lesser General Public License along with this 019 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, 020 * Boston, MA 02111-1307, USA. 021 * 022 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 023 * in the United States and other countries.] 024 * 025 * ------------ 026 * $Id: LibLayoutBoot.java 3524 2007-10-16 11:26:31Z tmorgner $ 027 * ------------ 028 * (C) Copyright 2006-2007, by Pentaho Corporation. 029 */ 030 031 package org.jfree.layouting; 032 033 import org.jfree.base.AbstractBoot; 034 import org.jfree.base.BootableProjectInfo; 035 import org.jfree.base.config.HierarchicalConfiguration; 036 import org.jfree.base.config.PropertyFileConfiguration; 037 import org.jfree.base.config.SystemPropertyConfiguration; 038 import org.jfree.base.modules.PackageManager; 039 import org.jfree.layouting.input.style.StyleKeyRegistry; 040 import org.jfree.util.Configuration; 041 042 public class LibLayoutBoot extends AbstractBoot 043 { 044 private static LibLayoutBoot singleton; 045 046 public static synchronized LibLayoutBoot getInstance() 047 { 048 if (singleton == null) 049 { 050 singleton = new LibLayoutBoot(); 051 } 052 return singleton; 053 } 054 055 private LibLayoutBoot () 056 { 057 } 058 059 /** 060 * Returns the project info. 061 * 062 * @return The project info. 063 */ 064 protected BootableProjectInfo getProjectInfo () 065 { 066 return LibLayoutInfo.getInstance(); 067 } 068 069 /** 070 * Loads the configuration. 071 * 072 * @return The configuration. 073 */ 074 protected Configuration loadConfiguration () 075 { 076 final HierarchicalConfiguration globalConfig = new HierarchicalConfiguration(); 077 078 final PropertyFileConfiguration rootProperty = new PropertyFileConfiguration(); 079 rootProperty.load("/org/jfree/layouting/layout.properties"); 080 globalConfig.insertConfiguration(rootProperty); 081 globalConfig.insertConfiguration(getPackageManager().getPackageConfiguration()); 082 083 final PropertyFileConfiguration baseProperty = new PropertyFileConfiguration(); 084 baseProperty.load("/layout.properties"); 085 globalConfig.insertConfiguration(baseProperty); 086 087 final SystemPropertyConfiguration systemConfig = new SystemPropertyConfiguration(); 088 globalConfig.insertConfiguration(systemConfig); 089 return globalConfig; 090 } 091 092 /** 093 * Performs the boot. 094 */ 095 protected void performBoot () 096 { 097 StyleKeyRegistry.getRegistry().registerDefaults(); 098 099 final PackageManager mgr = getPackageManager(); 100 mgr.addModule(LibLayoutCoreModule.class.getName()); 101 mgr.load("org.jfree.layouting.modules."); 102 mgr.load("org.jfree.layouting.userdefined.modules."); 103 mgr.initializeModules(); 104 } 105 106 public static void main(final String[] args) 107 { 108 LibLayoutBoot.getInstance().start(); 109 } 110 111 public static boolean isAsserationEnabled() 112 { 113 return getInstance().getExtendedConfig().getBoolProperty 114 ("org.jfree.layouting.EnableAssertations"); 115 } 116 }