KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > lucane > server > tools > UpdateUsers


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

19 package org.lucane.server.tools;
20
21 import java.sql.Connection JavaDoc;
22 import java.sql.PreparedStatement JavaDoc;
23 import java.sql.ResultSet JavaDoc;
24 import java.util.ArrayList JavaDoc;
25 import java.util.Iterator JavaDoc;
26 import java.util.logging.Level JavaDoc;
27
28 import org.lucane.common.Logging;
29 import org.lucane.server.Server;
30 import org.lucane.server.ServerConfig;
31 import org.lucane.server.database.DatabaseAbstractionLayer;
32
33
34 public class UpdateUsers
35 {
36     public static void main(String JavaDoc [] args)
37     throws Exception JavaDoc
38     {
39         Logging.getLogger().setLevel(Level.OFF);
40         ServerConfig config = new ServerConfig("etc/server-config.xml");
41         if(!config.getStoreBackend().equals("database"))
42         {
43             System.err.println("not using database backend, sorry.");
44             System.exit(1);
45         }
46         
47         if(args.length != 0)
48         {
49             System.out.println("usage: UpdateUsers");
50             System.exit(1);
51         }
52
53         DatabaseAbstractionLayer dbLayer = DatabaseAbstractionLayer.createLayer(config);
54         Connection JavaDoc c = dbLayer.getConnection();
55         PreparedStatement JavaDoc select = c.prepareStatement("SELECT * FROM users");
56         ResultSet JavaDoc rs = select.executeQuery();
57         if(rs.getMetaData().getColumnName(5).equalsIgnoreCase("pubkey"))
58             migrateUsers(dbLayer, c, rs);
59         else
60             System.err.println("User store is older than 0.7.2 !");
61             
62         rs.close();
63         select.close();
64         c.close();
65     }
66     
67     private static void migrateUsers(DatabaseAbstractionLayer dbLayer, Connection JavaDoc c, ResultSet JavaDoc rs)
68     throws Exception JavaDoc
69     {
70         //fetch old values
71
System.out.print("fetching current users... ");
72         ArrayList JavaDoc users = new ArrayList JavaDoc();
73         while(rs.next())
74         {
75             String JavaDoc login = rs.getString(1);
76             String JavaDoc md5pass = rs.getString(2);
77             String JavaDoc locked = rs.getString(3);
78             String JavaDoc startupPlugin = rs.getString(4);
79             String JavaDoc description = rs.getString(7);
80             String JavaDoc[] user = {login, md5pass, locked, startupPlugin, description};
81             users.add(user);
82         }
83         System.out.println("(" + users.size() + " users).");
84         
85         //drop table
86
System.out.print("dropping old table... ");
87         PreparedStatement JavaDoc drop = c.prepareStatement("DROP TABLE users");
88         drop.execute();
89         drop.close();
90         System.out.println("ok");
91         
92         //create new table
93
System.out.print("creating new table... ");
94         String JavaDoc wd = System.getProperty("user.dir").replace('\\','/');
95         String JavaDoc url = "jar:file:///" + wd + "/lib/lucane-server-" + Server.VERSION + ".jar!/"
96             + "db-sqlstore.xml";
97         dbLayer.getTableCreator().createFromXml(url, "users");
98         System.out.println("ok");
99
100         //copy saved users
101
System.out.print("restoring users... ");
102         PreparedStatement JavaDoc insert = c.prepareStatement("INSERT INTO USERS"
103                 + " VALUES(?, ?, ?, ?, ?, ?, ?, ?);");
104         Iterator JavaDoc i = users.iterator();
105         while(i.hasNext())
106         {
107             String JavaDoc[] user = (String JavaDoc[])i.next();
108             insert.setString(1, user[0]);
109             insert.setString(2, user[1]);
110             insert.setString(3, user[0]);
111             insert.setString(4, "");
112             insert.setString(5, "en");
113             insert.setInt(6, Integer.parseInt(user[2]));
114             insert.setString(7, user[3]);
115             insert.setString(8, user[4]);
116             insert.execute();
117         }
118         insert.close();
119         System.out.println("ok !");
120     }
121 }
Popular Tags