KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quadcap > app > dbimage > DbImageLoader


1 package com.quadcap.app.dbimage;
2
3 /* Copyright 2000 - 2003 Quadcap Software. All rights reserved.
4  *
5  * This software is distributed under the Quadcap Free Software License.
6  * This software may be used or modified for any purpose, personal or
7  * commercial. Open Source redistributions are permitted. Commercial
8  * redistribution of larger works derived from, or works which bundle
9  * this software requires a "Commercial Redistribution License"; see
10  * http://www.quadcap.com/purchase.
11  *
12  * Redistributions qualify as "Open Source" under one of the following terms:
13  *
14  * Redistributions are made at no charge beyond the reasonable cost of
15  * materials and delivery.
16  *
17  * Redistributions are accompanied by a copy of the Source Code or by an
18  * irrevocable offer to provide a copy of the Source Code for up to three
19  * years at the cost of materials and delivery. Such redistributions
20  * must allow further use, modification, and redistribution of the Source
21  * Code under substantially the same terms as this license.
22  *
23  * Redistributions of source code must retain the copyright notices as they
24  * appear in each source code file, these license terms, and the
25  * disclaimer/limitation of liability set forth as paragraph 6 below.
26  *
27  * Redistributions in binary form must reproduce this Copyright Notice,
28  * these license terms, and the disclaimer/limitation of liability set
29  * forth as paragraph 6 below, in the documentation and/or other materials
30  * provided with the distribution.
31  *
32  * The Software is provided on an "AS IS" basis. No warranty is
33  * provided that the Software is free of defects, or fit for a
34  * particular purpose.
35  *
36  * Limitation of Liability. Quadcap Software shall not be liable
37  * for any damages suffered by the Licensee or any third party resulting
38  * from use of the Software.
39  */

40
41 import java.io.ByteArrayOutputStream JavaDoc;
42 import java.io.File JavaDoc;
43 import java.io.FileInputStream JavaDoc;
44 import java.io.IOException JavaDoc;
45 import java.io.InputStream JavaDoc;
46 import java.io.OutputStream JavaDoc;
47
48 import java.util.Enumeration JavaDoc;
49 import java.util.Properties JavaDoc;
50
51 import java.sql.Connection JavaDoc;
52 import java.sql.PreparedStatement JavaDoc;
53 import java.sql.ResultSet JavaDoc;
54 import java.sql.Statement JavaDoc;
55 import java.sql.SQLException JavaDoc;
56
57 /**
58  * This class loads images from the file system into a database.
59  *
60  * @author Stan Bailes
61  */

62 public class DbImageLoader {
63     
64     public DbImageLoader() {
65     }
66
67     public void loadImages(Connection JavaDoc conn, String JavaDoc root) throws Exception JavaDoc {
68         PreparedStatement JavaDoc pstmt = conn.prepareStatement(
69             "insert into images values(?,-1,?,?)");
70         File JavaDoc f = new File JavaDoc(root);
71         try {
72             loadImages(pstmt, "", f);
73         } finally {
74             pstmt.close();
75         }
76     }
77
78     final void loadImages(PreparedStatement JavaDoc pstmt, String JavaDoc path,
79                           File JavaDoc dir)
80         throws Exception JavaDoc
81     {
82         File JavaDoc[] files = dir.listFiles();
83         if (files != null) for (int i = 0; i < files.length; i++) {
84             File JavaDoc f = files[i];
85             String JavaDoc name = f.getName();
86             String JavaDoc thispath = path + "/" + name;
87             if (!f.getCanonicalPath().equals(f.getAbsolutePath())) {
88                 // hack: skip anything that appears to be a symbolic link...
89
} else if (f.isDirectory()) {
90                 loadImages(pstmt, thispath, f);
91             } else if (name.endsWith(".gif") ||
92                        name.endsWith(".jpg") ||
93                        name.endsWith(".GIF") ||
94                        name.endsWith(".JPG")) {
95                 pstmt.clearParameters();
96                 pstmt.setString(1, thispath);
97                 FileInputStream JavaDoc in = new FileInputStream JavaDoc(f);
98                 
99                 int len = (int)f.length();
100                 pstmt.setInt(3, len);
101
102                 pstmt.setBinaryStream(2, in, len);
103                 try {
104                     pstmt.execute();
105                 } catch (SQLException JavaDoc e) {
106                     String JavaDoc state = e.getSQLState();
107                     if (state != null && state.startsWith("23")) {
108                         // image already there. We could check timestamps
109
// or something...
110
} else {
111                         throw e;
112                     }
113                 }
114
115                 in.close();
116             }
117         }
118     }
119 }
120
Popular Tags