001: /*
002: * Copyright (C) 2005 - 2008 JasperSoft Corporation. All rights reserved.
003: * http://www.jaspersoft.com.
004: *
005: * Unless you have purchased a commercial license agreement from JasperSoft,
006: * the following license terms apply:
007: *
008: * This program is free software; you can redistribute it and/or modify
009: * it under the terms of the GNU General Public License version 2 as published by
010: * the Free Software Foundation.
011: *
012: * This program is distributed WITHOUT ANY WARRANTY; and without the
013: * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
014: * See the GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
018: * or write to:
019: *
020: * Free Software Foundation, Inc.,
021: * 59 Temple Place - Suite 330,
022: * Boston, MA USA 02111-1307
023: *
024: *
025: *
026: *
027: * JRSpringLoadedHibernateConnection.java
028: *
029: */
030:
031: package it.businesslogic.ireport.connection;
032:
033: import it.businesslogic.ireport.IReportConnectionEditor;
034: import it.businesslogic.ireport.connection.gui.JRSpringLoadedHibernateConnectionEditor;
035: import it.businesslogic.ireport.gui.MainFrame;
036: import it.businesslogic.ireport.util.I18n;
037: import java.util.StringTokenizer;
038: import javax.swing.JOptionPane;
039:
040: import org.hibernate.SessionFactory;
041: import org.springframework.context.ApplicationContext;
042: import org.springframework.context.support.ClassPathXmlApplicationContext;
043:
044: /**
045: *
046: *
047: * @author Jeffrey Payne
048: *
049: */
050:
051: public class JRSpringLoadedHibernateConnection extends
052: JRHibernateConnection {
053:
054: private final static String PROP_KEY_SPRING_CONFIG = "spring.loaded.hibernate.spring.config";
055: private final static String PROP_KEY_SESSION_FACTORY_ID = "spring.loaded.hibernate.session.factory.id";
056:
057: private String springConfig = null;
058: private String sessionFactoryBeanId = null;
059:
060: public ApplicationContext getApplicationContext() {
061:
062: StringTokenizer parser = new StringTokenizer(getSpringConfig(),
063: ",");
064: String[] configs = new String[parser.countTokens()];
065: int iCount = 0;
066: while (parser.hasMoreTokens()) {
067: configs[iCount++] = parser.nextToken();
068: }
069: return new ClassPathXmlApplicationContext(configs);
070: }
071:
072: public String getSessionFactoryBeanId() {
073: return sessionFactoryBeanId;
074: }
075:
076: public void setSessionFactoryBeanId(String sessionFactoryBeanId) {
077: this .sessionFactoryBeanId = sessionFactoryBeanId;
078: }
079:
080: public String getSpringConfig() {
081: return springConfig;
082: }
083:
084: public void setSpringConfig(String springConfig) {
085: this .springConfig = springConfig;
086: }
087:
088: public SessionFactory getSessionFactory() {
089:
090: return (SessionFactory) getApplicationContext().getBean(
091: getSessionFactoryBeanId());
092:
093: }
094:
095: /*
096: * This method return all properties used by this connection
097: */
098: public java.util.HashMap getProperties() {
099: java.util.HashMap map = new java.util.HashMap();
100: map.put(PROP_KEY_SESSION_FACTORY_ID, getSessionFactoryBeanId());
101: map.put(PROP_KEY_SPRING_CONFIG, getSpringConfig());
102: return map;
103: }
104:
105: public void loadProperties(java.util.HashMap map) {
106: setSessionFactoryBeanId((String) map
107: .get(PROP_KEY_SESSION_FACTORY_ID));
108: setSpringConfig((String) map.get(PROP_KEY_SPRING_CONFIG));
109: }
110:
111: public String getDescription() {
112: return I18n.getString("connectionType.hibernateSpring",
113: "Spring loaded Hibernate connection");
114: }
115:
116: public IReportConnectionEditor getIReportConnectionEditor() {
117: return new JRSpringLoadedHibernateConnectionEditor();
118: }
119:
120: public void test() throws Exception {
121: try {
122: Thread.currentThread().setContextClassLoader(
123: MainFrame.getMainInstance().getReportClassLoader());
124:
125: SessionFactory sf = getSessionFactory();
126: if (sf == null) {
127: JOptionPane
128: .showMessageDialog(
129: MainFrame.getMainInstance(),
130: I18n
131: .getString(
132: "messages.connectionDialog.noSessionFactoryReturned",
133: "No session factory returned. Check your session factory bean id against the spring configuration."),
134: I18n.getString("message.title.error",
135: "Error"),
136: JOptionPane.ERROR_MESSAGE);
137: } else {
138: JOptionPane
139: .showMessageDialog(
140: MainFrame.getMainInstance(),
141: I18n
142: .getString(
143: "messages.connectionDialog.hibernateConnectionTestSuccessful",
144: "iReport successfully created a Hibernate session factory from your Spring configuration."),
145: "", JOptionPane.INFORMATION_MESSAGE);
146: }
147: } catch (Exception e) {
148: e.printStackTrace();
149: JOptionPane.showMessageDialog(MainFrame.getMainInstance(),
150: e.getMessage(), I18n.getString(
151: "message.title.error", "Error"),
152: JOptionPane.ERROR_MESSAGE);
153:
154: }
155: }
156: }
|