KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > javacoding > jspider > core > storage > jdbc > SiteDAOImpl


1 package net.javacoding.jspider.core.storage.jdbc;
2
3 import net.javacoding.jspider.core.model.SiteInternal;
4 import net.javacoding.jspider.core.storage.spi.SiteDAOSPI;
5 import net.javacoding.jspider.core.storage.spi.StorageSPI;
6 import net.javacoding.jspider.core.logging.LogFactory;
7 import net.javacoding.jspider.core.logging.Log;
8
9 import java.net.MalformedURLException JavaDoc;
10 import java.net.URL JavaDoc;
11 import java.sql.*;
12 import java.util.ArrayList JavaDoc;
13
14 /**
15  * $Id: SiteDAOImpl.java,v 1.8 2003/04/11 16:37:06 vanrogu Exp $
16  */

17 class SiteDAOImpl implements SiteDAOSPI {
18
19     public static final String JavaDoc ATTRIBUTE_ID = "id";
20     public static final String JavaDoc ATTRIBUTE_HOST = "host";
21     public static final String JavaDoc ATTRIBUTE_PORT = "port";
22     public static final String JavaDoc ATTRIBUTE_STATE = "state";
23     public static final String JavaDoc ATTRIBUTE_OBEYROBOTSTXT = "obeyrobotstxt";
24     public static final String JavaDoc ATTRIBUTE_USEPROXY = "useproxy";
25     public static final String JavaDoc ATTRIBUTE_USECOOKIES = "usecookies";
26     public static final String JavaDoc ATTRIBUTE_HASROBOTSTXT = "hasrobotstxt";
27     public static final String JavaDoc ATTRIBUTE_USERAGENT = "useragent";
28     public static final String JavaDoc ATTRIBUTE_BASESITE = "basesite";
29     public static final String JavaDoc ATTRIBUTE_HANDLE = "handle";
30
31     protected DBUtil dbUtil;
32     protected StorageSPI storage;
33     protected Log log;
34
35     public SiteDAOImpl(StorageSPI storage, DBUtil dbUtil) {
36         this.storage = storage;
37         this.dbUtil = dbUtil;
38         this.log = LogFactory.getLog(SiteDAOImpl.class);
39     }
40
41     public SiteInternal find(URL JavaDoc siteURL) {
42         SiteInternal site = null;
43         Statement st = null;
44         ResultSet rs = null;
45         try {
46             Connection c = dbUtil.getConnection();
47             st = c.createStatement();
48             rs = st.executeQuery("select * from jspider_site where host = '" + siteURL.getHost() + "' and port = " + siteURL.getPort());
49             if (rs.next()) {
50                 site = createSiteFromRecord(rs);
51             } else {
52                 return null;
53             }
54         } catch (SQLException e) {
55             log.error("SQLException", e);
56         } finally {
57             dbUtil.safeClose(rs, log);
58             dbUtil.safeClose(st, log);
59         }
60         return site;
61     }
62
63     public SiteInternal find(int id) {
64         SiteInternal site = null;
65         Statement st = null;
66         ResultSet rs = null;
67         try {
68             Connection c = dbUtil.getConnection();
69             st = c.createStatement();
70             rs = st.executeQuery("select * from jspider_site id=" + id);
71             if (rs.next()) {
72                 site = createSiteFromRecord(rs);
73             } else {
74                 return null;
75             }
76         } catch (SQLException e) {
77             log.error("SQLException", e);
78         } finally {
79             dbUtil.safeClose(rs, log);
80             dbUtil.safeClose(st, log);
81         }
82         return site;
83     }
84
85     public void create(int id, SiteInternal site) {
86         Connection connection = dbUtil.getConnection();
87         Statement st = null;
88         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
89         sb.append("insert into jspider_site (");
90         sb.append("id,");
91         sb.append("host,");
92         sb.append("port,");
93         sb.append("handle,");
94         sb.append("robotstxthandled,");
95         sb.append("usecookies,");
96         sb.append("useproxy,");
97         sb.append("state,");
98         sb.append("obeyrobotstxt,");
99         sb.append("basesite,");
100         sb.append("useragent");
101         sb.append(") values (");
102         sb.append(DBUtil.format(id));
103         sb.append(",");
104         sb.append(DBUtil.format(site.getHost()));
105         sb.append(",");
106         sb.append(DBUtil.format(site.getPort()));
107         sb.append(",");
108         sb.append(DBUtil.format(site.mustHandle()));
109         sb.append(",");
110         sb.append(DBUtil.format(site.isRobotsTXTHandled()));
111         sb.append(",");
112         sb.append(DBUtil.format(site.getUseCookies()));
113         sb.append(",");
114         sb.append(DBUtil.format(site.getUseProxy()));
115         sb.append(",");
116         sb.append(DBUtil.format(site.getState()));
117         sb.append(",");
118         sb.append(DBUtil.format(site.getObeyRobotsTXT()));
119         sb.append(",");
120         sb.append(DBUtil.format(site.isBaseSite()));
121         sb.append(",");
122         sb.append(DBUtil.format(site.getUserAgent()));
123         sb.append(")");
124         try {
125             st = connection.createStatement();
126             st.executeUpdate(sb.toString());
127         } catch (SQLException e) {
128             log.error("SQLException", e);
129         } finally {
130             dbUtil.safeClose(st, log);
131         }
132     }
133
134     public void save(int id, SiteInternal site) {
135         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
136         Connection connection = dbUtil.getConnection();
137         Statement st = null;
138         sb.append("update jspider_site set ");
139         sb.append("handle=");
140         sb.append(DBUtil.format(site.mustHandle()));
141         sb.append(",robotstxthandled=");
142         sb.append(DBUtil.format(site.isRobotsTXTHandled()));
143         sb.append(",usecookies=");
144         sb.append(DBUtil.format(site.getUseCookies()));
145         sb.append(",useproxy=");
146         sb.append(DBUtil.format(site.getUseProxy()));
147         sb.append(",state=");
148         sb.append(DBUtil.format(site.getState()));
149         sb.append(",obeyrobotstxt=");
150         sb.append(DBUtil.format(site.getObeyRobotsTXT()));
151         sb.append(",basesite=");
152         sb.append(DBUtil.format(site.isBaseSite()));
153         sb.append(",useragent=");
154         sb.append(DBUtil.format(site.getUserAgent()));
155         sb.append(" where id = ");
156         sb.append(DBUtil.format(id));
157         try {
158             st = connection.createStatement();
159             st.executeUpdate(sb.toString());
160         } catch (SQLException e) {
161             log.error("SQLException", e);
162         } finally {
163             dbUtil.safeClose(st, log);
164         }
165     }
166
167     public SiteInternal[] findAll() {
168         ArrayList JavaDoc al = new ArrayList JavaDoc();
169         Statement st = null;
170         ResultSet rs = null;
171         try {
172             Connection c = dbUtil.getConnection();
173             st = c.createStatement();
174             rs = st.executeQuery("select * from jspider_site");
175             while (rs.next()) {
176                 al.add(createSiteFromRecord(rs));
177             }
178         } catch (SQLException e) {
179             log.error("SQLException", e);
180         } finally {
181             dbUtil.safeClose(rs, log);
182             dbUtil.safeClose(st, log);
183         }
184         return (SiteInternal[]) al.toArray(new SiteInternal[al.size()]);
185     }
186
187
188     protected SiteInternal createSiteFromRecord(ResultSet rs) throws SQLException {
189         String JavaDoc host = rs.getString(ATTRIBUTE_HOST);
190         int id = rs.getInt(ATTRIBUTE_ID);
191         int port = rs.getInt(ATTRIBUTE_PORT);
192         int state = rs.getInt(ATTRIBUTE_STATE);
193         boolean obeyRobotsTXT = rs.getInt(ATTRIBUTE_OBEYROBOTSTXT) != 0;
194         boolean useProxy = rs.getInt(ATTRIBUTE_USEPROXY) != 0;
195         boolean useCookies = rs.getInt(ATTRIBUTE_USECOOKIES) != 0;
196         String JavaDoc userAgent = rs.getString(ATTRIBUTE_USERAGENT);
197         boolean baseSite = rs.getInt(ATTRIBUTE_BASESITE) != 0;
198         boolean handle = rs.getInt(ATTRIBUTE_HANDLE) != 0;
199
200         URL JavaDoc url = null;
201         try {
202             url = new URL JavaDoc("http", host, port, "");
203         } catch (MalformedURLException JavaDoc e) {
204             e.printStackTrace();
205         }
206
207         return new SiteInternal(storage, id, handle, url, state, obeyRobotsTXT, useProxy, useCookies, userAgent, baseSite);
208     }
209
210 }
211
Popular Tags