KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > dlog4j > DlogActionServlet


1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 2 of the License, or
5  * (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU Library General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software
14  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
15  */

16 package dlog4j;
17
18 import java.io.File JavaDoc;
19 import java.io.IOException JavaDoc;
20 import java.net.MalformedURLException JavaDoc;
21 import java.net.URL JavaDoc;
22 import java.sql.Connection JavaDoc;
23 import java.sql.SQLException JavaDoc;
24 import java.util.Date JavaDoc;
25
26 import javax.servlet.ServletContext JavaDoc;
27 import javax.servlet.ServletException JavaDoc;
28 import javax.sql.DataSource JavaDoc;
29
30 import dlog4j.formbean.ParamForm;
31 import dlog4j.formbean.SiteForm;
32 import dlog4j.formbean.UserForm;
33 import dlog4j.security.DlogRole;
34
35 import web.struts.ActionServletExtend;
36
37 import net.sf.hibernate.Criteria;
38 import net.sf.hibernate.HibernateException;
39 import net.sf.hibernate.Session;
40 import net.sf.hibernate.SessionFactory;
41 import net.sf.hibernate.cfg.Configuration;
42
43 /**
44  * DLOG4J系统扩展的ActionServlet
45  * @author Liudong
46  */

47 public class DlogActionServlet extends ActionServletExtend{
48
49     /* (non-Javadoc)
50      * @see javax.servlet.GenericServlet#init()
51      */

52     public void init() throws ServletException JavaDoc {
53         //初始化Hibernate,先初始化Hibernate的目的是为了让PlugIn类可以访问数据库
54
if(getServletContext().getAttribute(Globals.HIBERNATE_SESSIONS_KEY)==null){
55             URL JavaDoc hibernate_cfg_url = null;
56             String JavaDoc hibernate_cfg = getInitParameter("hibernate-config");
57             if(hibernate_cfg!=null&&hibernate_cfg.trim().length()>0){
58                 String JavaDoc webapp_path = getServletContext().getRealPath(ROOT_PATH);
59                 if(!webapp_path.endsWith(File.separator))
60                     webapp_path += File.separator;
61                 if(hibernate_cfg.startsWith(File.separator))
62                     hibernate_cfg = hibernate_cfg.substring(1);
63                 File JavaDoc f = new File JavaDoc(webapp_path + hibernate_cfg);
64                 try{
65                     hibernate_cfg_url = f.toURL();
66                 }catch(MalformedURLException JavaDoc e){}
67             }
68             else
69                 hibernate_cfg_url = DlogActionServlet.class.getResource("/hibernate.cfg.xml");
70             //初始化Hibernate
71
try{
72                 Configuration cfg = new Configuration().configure(hibernate_cfg_url);
73                 SessionFactory sessions = cfg.buildSessionFactory();
74                 getServletContext().setAttribute(Globals.HIBERNATE_SESSIONS_KEY,sessions);
75                 //初始化ManagerBase类
76
ManagerBase.init(getServletContext());
77             }catch(Exception JavaDoc e){
78                 log.fatal("initialize hibernate failed, cfg is " + hibernate_cfg_url, e);
79             }
80         }
81         //执行Struts的初始化
82
super.init();
83         //初始化数据
84
try{
85             buildDlogData();
86         }catch(Exception JavaDoc e){
87             log.fatal("Initialize DLOG data failed.",e);
88         }
89     }
90
91     /**
92      * 初始化DLOG数据
93      * @return 如果已经初始化则返回false
94      * @throws SQLException
95      * @throws HibernateException
96      * @throws IOException
97      */

98     protected boolean buildDlogData() throws HibernateException, SQLException JavaDoc, IOException JavaDoc{
99         Session ssn = getSession();
100         try{
101             Criteria crit = ssn.createCriteria(SiteForm.class);
102             if(crit.list().size()>0)
103                 return false;
104             //1. 初始化dlog_site
105
SiteForm site = new SiteForm();
106             site.setName("dlog");
107             site.setDisplayName("MY BLOG...");
108             site.setDetail("MY BLOG...");
109             site.setCreateTime(new Date JavaDoc());
110             ssn.save(site);
111             //2. 初始化dlog_user
112
UserForm user = new UserForm();
113             user.setDisplayName("ADMIN");
114             user.setLoginName("admin");
115             user.setPassword("admin");
116             user.setPortrait("faces/face1.gif");
117             user.setSite(site);
118             user.setUserRole(DlogRole.ROLE_MANAGER);
119             user.setRegTime(new Date JavaDoc());
120             ssn.save(user);
121             //3. 初始化dlog_param
122
ParamForm param = new ParamForm();
123             param.setSite(site);
124             param.setName("LOGS_PER_PAGE");
125             param.setType(ParamForm.TYPE_INTEGER);
126             param.setValue("5");
127             ssn.save(param);
128             ParamForm param1 = new ParamForm();
129             param1.setSite(site);
130             param1.setName("USERS_PER_PAGE");
131             param1.setType(ParamForm.TYPE_INTEGER);
132             param1.setValue("30");
133             ssn.save(param1);
134             ParamForm param2 = new ParamForm();
135             param2.setSite(site);
136             param2.setName("TOP_COMMENT_COUNT");
137             param2.setType(ParamForm.TYPE_INTEGER);
138             param2.setValue("5");
139             ssn.save(param2);
140             ParamForm param3 = new ParamForm();
141             param3.setSite(site);
142             param3.setName("REPLIES_PER_PAGE");
143             param3.setType(ParamForm.TYPE_INTEGER);
144             param3.setValue("20");
145             ssn.save(param3);
146             ParamForm param4 = new ParamForm();
147             param4.setSite(site);
148             param4.setName("SHOW_TOP_INFO");
149             param4.setType(ParamForm.TYPE_BOOLEAN);
150             param4.setValue("0");
151             ssn.save(param4);
152             ManagerBase.commitSession(ssn, false);
153             log.info("DLOG data initialized.");
154         }finally{
155             ManagerBase.closeSession(ssn);
156         }
157         return true;
158     }
159         
160     /**
161      * 获取Hibernate的Session实例
162      */

163     protected Session getSession() throws SQLException JavaDoc {
164         SessionFactory sessions = (SessionFactory)(
165                 getServletContext().getAttribute(Globals.HIBERNATE_SESSIONS_KEY));
166         return sessions.openSession(getConnection());
167     }
168     /**
169      * 获取到数据库的连接句柄
170      * @return
171      * @throws SQLException
172      */

173     protected Connection JavaDoc getConnection() throws SQLException JavaDoc{
174         ServletContext JavaDoc context = this.getServletContext();
175         DataSource JavaDoc dataSource = (DataSource JavaDoc)context.getAttribute(
176                 org.apache.struts.Globals.DATA_SOURCE_KEY);
177         return dataSource.getConnection();
178     }
179     
180 }
181
Popular Tags