Java tutorial
package gov.nih.nci.security.system; /** * *<!-- LICENSE_TEXT_START --> * *The NCICB Common Security Module (CSM) Software License, Version 3.0 Copyright *2004-2005 Ekagra Software Technologies Limited ('Ekagra') * *Copyright Notice. The software subject to this notice and license includes both *human readable source code form and machine readable, binary, object code form *(the 'CSM Software'). The CSM Software was developed in conjunction with the *National Cancer Institute ('NCI') by NCI employees and employees of Ekagra. To *the extent government employees are authors, any rights in such works shall be *subject to Title 17 of the United States Code, section 105. * *This CSM Software License (the 'License') is between NCI and You. 'You (or *'Your') shall mean a person or an entity, and all other entities that control, *are controlled by, or are under common control with the entity. 'Control' for *purposes of this definition means (i) the direct or indirect power to cause the *direction or management of such entity, whether by contract or otherwise, or *(ii) ownership of fifty percent (50%) or more of the outstanding shares, or *(iii) beneficial ownership of such entity. * *This License is granted provided that You agree to the conditions described *below. NCI grants You a non-exclusive, worldwide, perpetual, fully-paid-up, *no-charge, irrevocable, transferable and royalty-free right and license in its *rights in the CSM Software to (i) use, install, access, operate, execute, copy, *modify, translate, market, publicly display, publicly perform, and prepare *derivative works of the CSM Software; (ii) distribute and have distributed to *and by third parties the CSM Software and any modifications and derivative works *thereof; and (iii) sublicense the foregoing rights set out in (i) and (ii) to *third parties, including the right to license such rights to further third *parties. For sake of clarity, and not by way of limitation, NCI shall have no *right of accounting or right of payment from You or Your sublicensees for the *rights granted under this License. This License is granted at no charge to You. * *1. Your redistributions of the source code for the Software must retain the *above copyright notice, this list of conditions and the disclaimer and *limitation of liability of Article 6 below. Your redistributions in object code *form must reproduce the above copyright notice, this list of conditions and the *disclaimer of Article 6 in the documentation and/or other materials provided *with the distribution, if any. *2. Your end-user documentation included with the redistribution, if any, must *include the following acknowledgment: 'This product includes software developed *by Ekagra and the National Cancer Institute.' If You do not include such *end-user documentation, You shall include this acknowledgment in the Software *itself, wherever such third-party acknowledgments normally appear. * *3. You may not use the names 'The National Cancer Institute', 'NCI' 'Ekagra *Software Technologies Limited' and 'Ekagra' to endorse or promote products *derived from this Software. This License does not authorize You to use any *trademarks, service marks, trade names, logos or product names of either NCI or *Ekagra, except as required to comply with the terms of this License. * *4. For sake of clarity, and not by way of limitation, You may incorporate this *Software into Your proprietary programs and into any third party proprietary *programs. However, if You incorporate the Software into third party proprietary *programs, You agree that You are solely responsible for obtaining any permission *from such third parties required to incorporate the Software into such third *party proprietary programs and for informing Your sublicensees, including *without limitation Your end-users, of their obligation to secure any required *permissions from such third parties before incorporating the Software into such *third party proprietary software programs. In the event that You fail to obtain *such permissions, You agree to indemnify NCI for any claims against NCI by such *third parties, except to the extent prohibited by law, resulting from Your *failure to obtain such permissions. * *5. For sake of clarity, and not by way of limitation, You may add Your own *copyright statement to Your modifications and to the derivative works, and You *may provide additional or different license terms and conditions in Your *sublicenses of modifications of the Software, or any derivative works of the *Software as a whole, provided Your use, reproduction, and distribution of the *Work otherwise complies with the conditions stated in this License. * *6. THIS SOFTWARE IS PROVIDED 'AS IS,' AND ANY EXPRESSED OR IMPLIED WARRANTIES, *(INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, *NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED. IN NO *EVENT SHALL THE NATIONAL CANCER INSTITUTE, EKAGRA, OR THEIR AFFILIATES BE LIABLE *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *<!-- LICENSE_TEXT_END --> * */ import gov.nih.nci.security.exceptions.CSConfigurationException; import java.io.File; import java.io.InputStream; import java.net.URL; import java.util.HashMap; import java.util.Hashtable; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** * @author kumarvi * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates * This class will be used by UserProvisioningManagerImpl to get * appropriate sessionFactory handle */ public class ApplicationSessionFactory { public static Hashtable appSessionFactories = new Hashtable(); public static SessionFactory getSessionFactory(String applicationContextName) throws CSConfigurationException { SessionFactory sf = null; sf = (SessionFactory) appSessionFactories.get(applicationContextName); if (sf == null) { sf = ApplicationSecurityConfigurationParser .getApplicationSessionFactoryFromHotInitialization(applicationContextName); appSessionFactories.put(applicationContextName, sf); } if (sf == null) { throw new CSConfigurationException("Could not initialize session factory"); } return sf; } public static SessionFactory initSessionFactory(String fileName) throws CSConfigurationException { SessionFactory sf = null; File f = new File(fileName); if (!f.exists()) throw new CSConfigurationException("Error in reading the Hibernate Configuration File"); sf = new Configuration().configure(f).buildSessionFactory(); return sf; } public static SessionFactory getSessionFactory(String applicationContextName, HashMap connectionProperties) throws CSConfigurationException { SessionFactory sessionFactory = null; sessionFactory = (SessionFactory) appSessionFactories.get(applicationContextName); if (sessionFactory == null) { try { Configuration configuration = new Configuration(); configuration.addResource( "gov/nih/nci/security/authorization/domainobjects/InstanceLevelMappingElement.hbm.xml"); configuration.addResource("gov/nih/nci/security/authorization/domainobjects/Privilege.hbm.xml"); configuration.addResource("gov/nih/nci/security/authorization/domainobjects/Application.hbm.xml"); configuration.addResource("gov/nih/nci/security/authorization/domainobjects/FilterClause.hbm.xml"); configuration.addResource("gov/nih/nci/security/authorization/domainobjects/Role.hbm.xml"); configuration.addResource("gov/nih/nci/security/dao/hibernate/RolePrivilege.hbm.xml"); configuration.addResource("gov/nih/nci/security/dao/hibernate/UserGroup.hbm.xml"); configuration .addResource("gov/nih/nci/security/dao/hibernate/ProtectionGroupProtectionElement.hbm.xml"); configuration.addResource("gov/nih/nci/security/authorization/domainobjects/Group.hbm.xml"); configuration.addResource("gov/nih/nci/security/authorization/domainobjects/User.hbm.xml"); configuration .addResource("gov/nih/nci/security/authorization/domainobjects/ProtectionGroup.hbm.xml"); configuration .addResource("gov/nih/nci/security/authorization/domainobjects/ProtectionElement.hbm.xml"); configuration.addResource( "gov/nih/nci/security/authorization/domainobjects/UserGroupRoleProtectionGroup.hbm.xml"); configuration.addResource( "gov/nih/nci/security/authorization/domainobjects/UserProtectionElement.hbm.xml"); configuration.setProperty("hibernate.connection.url", (String) connectionProperties.get("hibernate.connection.url")); configuration.setProperty("hibernate.connection.username", (String) connectionProperties.get("hibernate.connection.username")); configuration.setProperty("hibernate.connection.password", (String) connectionProperties.get("hibernate.connection.password")); configuration.setProperty("hibernate.dialect", (String) connectionProperties.get("hibernate.dialect")); configuration.setProperty("hibernate.connection.driver_class", (String) connectionProperties.get("hibernate.connection.driver_class")); configuration.setProperty("hibernate.c3p0.min_size", "5"); configuration.setProperty("hibernate.c3p0.max_size", "20"); configuration.setProperty("hibernate.c3p0.timeout", "300"); configuration.setProperty("hibernate.c3p0.max_statements", "50"); configuration.setProperty("hibernate.c3p0.idle_test_period", "3000"); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { throw new CSConfigurationException( "Error in initializing the hibernate session factory using the provided connection parameters", e); } appSessionFactories.put(applicationContextName, sessionFactory); } return sessionFactory; } public static SessionFactory getSessionFactory(String applicationContextName, URL url) throws CSConfigurationException { SessionFactory sf = null; sf = (SessionFactory) appSessionFactories.get(applicationContextName); if (sf == null) { sf = new Configuration().configure(url).buildSessionFactory(); appSessionFactories.put(applicationContextName, sf); } if (sf == null) { throw new CSConfigurationException( "Could not initialize session factory using the configuration file from the classpath"); } return sf; } }