package org.onesocialweb.openfire.registration.plugin; import java.io.File; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.jivesoftware.database.DbConnectionManager; import org.jivesoftware.openfire.IQRouter; import org.jivesoftware.openfire.XMPPServer; import org.jivesoftware.openfire.container.Plugin; import org.jivesoftware.openfire.container.PluginManager; import org.jivesoftware.util.Log; import org.onesocialweb.openfire.registration.handler.IQRegisterHandler; public class RegistrationPlugin implements Plugin { private IQRegisterHandler iqRegisterHandler; public void initializePlugin(PluginManager manager, File pluginDirectory) { if (!table_exists("invitation")) create_InvitationTable(); createEmailColumn(); iqRegisterHandler = new IQRegisterHandler(); IQRouter iqRouter = XMPPServer.getInstance().getIQRouter(); iqRouter.addHandler(iqRegisterHandler); } public void destroyPlugin() { // Your code goes here IQRouter iqRouter = XMPPServer.getInstance().getIQRouter(); iqRouter.removeHandler(iqRegisterHandler); } private boolean table_exists(String table){ int i=0; try { Statement st= DbConnectionManager.getConnection().createStatement(); String query= "show tables like '%" + table + "%'"; ResultSet rs= st.executeQuery(query); while (rs.next()) i++; } catch (SQLException e) { Log.error("An unxpected DB error ocurred: " , e); } if (i>0) return true; return false; } private void create_InvitationTable(){ String createSQL = "create TABLE invitation (code char(50) PRIMARY KEY, created DATETIME, " +"expires DATETIME DEFAULT NULL, total int, used int, valid boolean)"; try { Statement st= DbConnectionManager.getConnection().createStatement(); st.executeUpdate(createSQL); } catch (SQLException e) { Log.error("An unxpected DB error ocurred: " , e); } } private void createEmailColumn(){ String createSQL = "ALTER TABLE invitation ADD email char(50)"; try { Statement st= DbConnectionManager.getConnection().createStatement(); st.executeUpdate(createSQL); } catch (SQLException e){ if (e.getErrorCode()!=1060) Log.error("An unxpected DB error ocurred: " , e); } } }