1 19 package org.lucane.server.tools; 20 21 import java.sql.Connection ; 22 import java.sql.PreparedStatement ; 23 import java.sql.ResultSet ; 24 import java.util.ArrayList ; 25 import java.util.Iterator ; 26 import java.util.logging.Level ; 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 [] args) 37 throws Exception 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 c = dbLayer.getConnection(); 55 PreparedStatement select = c.prepareStatement("SELECT * FROM users"); 56 ResultSet 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 c, ResultSet rs) 68 throws Exception 69 { 70 System.out.print("fetching current users... "); 72 ArrayList users = new ArrayList (); 73 while(rs.next()) 74 { 75 String login = rs.getString(1); 76 String md5pass = rs.getString(2); 77 String locked = rs.getString(3); 78 String startupPlugin = rs.getString(4); 79 String description = rs.getString(7); 80 String [] user = {login, md5pass, locked, startupPlugin, description}; 81 users.add(user); 82 } 83 System.out.println("(" + users.size() + " users)."); 84 85 System.out.print("dropping old table... "); 87 PreparedStatement drop = c.prepareStatement("DROP TABLE users"); 88 drop.execute(); 89 drop.close(); 90 System.out.println("ok"); 91 92 System.out.print("creating new table... "); 94 String wd = System.getProperty("user.dir").replace('\\','/'); 95 String 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 System.out.print("restoring users... "); 102 PreparedStatement insert = c.prepareStatement("INSERT INTO USERS" 103 + " VALUES(?, ?, ?, ?, ?, ?, ?, ?);"); 104 Iterator i = users.iterator(); 105 while(i.hasNext()) 106 { 107 String [] user = (String [])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 |