package Data;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util. * ;
import javax.naming.NamingEnumeration;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.RosterEntry;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.packet.Presence;
/** */ /**
* It is used to connect the jive then
* get the user list from the jive with the correct
* status. Then check the name of the
* online user in jive thru a Ldap in 192.168.1.200.
* Then input the UserId as roomId, name and
* the status into a DataBase
*
* @author Alking
*/
public class InputDatas extends javax.swing.JFrame ... {
// ldap definiens variable
String ldapUrl,ldapUser,ldapPwd,OU,LdapDC;
// XMPP definiens variable
String XMPPUrl,XMPPUser,XMPPPwd;
// DataBase definiens variable
String DataBase,DataBaseTable,DataBaseUser,DataBasePwd;
public Exception exception;
/** *//** Creates new form InputDatas */
public InputDatas() ...{
initComponents();
}
/** *//**
* This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
private void initComponents() ...{
LdapUrlLabel = new javax.swing.JLabel();
LdapNameLabel = new javax.swing.JLabel();
LdapPwdLabel = new javax.swing.JLabel();
OULabel = new javax.swing.JLabel();
ldapDCLabel = new javax.swing.JLabel();
XMPPServerUrlLabel = new javax.swing.JLabel();
XMPPNameLabel = new javax.swing.JLabel();
XMPPPwdLabel = new javax.swing.JLabel();
DataBaseLabel = new javax.swing.JLabel();
DataBaseTableLabel = new javax.swing.JLabel();
DataBaseNameLabel = new javax.swing.JLabel();
DataBasePwdLabel = new javax.swing.JLabel();
LdapUrlTextField = new javax.swing.JTextField();
LdapNameTextField = new javax.swing.JTextField();
LdapPwdTextField = new javax.swing.JTextField();
OUTextField = new javax.swing.JTextField();
ldapDCTextField = new javax.swing.JTextField();
XMPPServerUrlTextField = new javax.swing.JTextField();
XMPPNameTextField = new javax.swing.JTextField();
XMPPPwdTextField = new javax.swing.JTextField();
DataBaseTextField = new javax.swing.JTextField();
DataBaseTableTextField = new javax.swing.JTextField();
DataBaseNameTextField = new javax.swing.JTextField();
DataBasePwdTextField = new javax.swing.JTextField();
InputButton = new javax.swing.JButton();
ExceptionLabel = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
LdapUrlLabel.setText("LdapUrl:");
LdapNameLabel.setText("LdapName:");
LdapPwdLabel.setText("LdapPwd:");
OULabel.setText("OU:");
ldapDCLabel.setText("ldapDC:");
XMPPServerUrlLabel.setText("XMPPServerUrl:");
XMPPNameLabel.setText("XMPPName:");
XMPPPwdLabel.setText("XMPPPwd:");
DataBaseLabel.setText("DataBase:");
DataBaseTableLabel.setText("DataBaseTable:");
DataBaseNameLabel.setText("DataBaseName:");
DataBasePwdLabel.setText("DataBasePwd:");
LdapUrlTextField.setText("192.168.1.200");
LdapNameTextField.setText("gz");
LdapPwdTextField.setText("123456");
OUTextField.setText("SpotLight");
ldapDCTextField.setText("DC=awm64,DC=com");
XMPPServerUrlTextField.setText("192.168.1.200");
XMPPNameTextField.setText("spotlight");
XMPPPwdTextField.setText("123456");
DataBaseTextField.setText("//localhost:1433;DatabaseName=alking");
DataBaseTableTextField.setText("jive_status");
DataBaseNameTextField.setText("sa");
InputButton.setText("Input");
InputButton.addMouseListener(new java.awt.event.MouseAdapter() ...{
public void mouseClicked(java.awt.event.MouseEvent evt) ...{
InputButtonMouseClicked(evt);
}
});
ExceptionLabel.setAutoscrolls(true);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(54, 54, 54)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(OULabel)
.addComponent(LdapPwdLabel)
.addComponent(LdapNameLabel)
.addComponent(LdapUrlLabel)
.addComponent(XMPPPwdLabel)
.addComponent(ldapDCLabel)
.addComponent(XMPPServerUrlLabel)
.addComponent(XMPPNameLabel)
.addComponent(DataBasePwdLabel)
.addComponent(DataBaseNameLabel)
.addComponent(DataBaseTableLabel)
.addComponent(DataBaseLabel))
.addGap(48, 48, 48)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(DataBaseTextField)
.addComponent(LdapUrlTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
.addComponent(LdapNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
.addComponent(LdapPwdTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
.addComponent(OUTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
.addComponent(ldapDCTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
.addComponent(XMPPServerUrlTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
.addComponent(XMPPNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
.addComponent(XMPPPwdTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
.addComponent(DataBaseTableTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
.addComponent(DataBaseNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
.addComponent(DataBasePwdTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE))
.addGap(49, 49, 49))
.addGroup(layout.createSequentialGroup()
.addGap(153, 153, 153)
.addComponent(InputButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(212, 212, 212))
.addGroup(layout.createSequentialGroup()
.addGap(18, 18, 18)
.addComponent(ExceptionLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 386, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(20, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(LdapUrlLabel)
.addComponent(LdapUrlTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(LdapNameLabel)
.addComponent(LdapNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(LdapPwdLabel)
.addComponent(LdapPwdTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(OULabel)
.addComponent(OUTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(ldapDCLabel)
.addComponent(ldapDCTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(XMPPServerUrlTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(XMPPServerUrlLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(XMPPNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(XMPPNameLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(XMPPPwdTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(DataBaseTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(DataBaseLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(DataBaseTableTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(DataBaseTableLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(DataBaseNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(DataBaseNameLabel)))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(XMPPPwdLabel)
.addGap(80, 80, 80)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(DataBasePwdTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(DataBasePwdLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(InputButton)
.addGap(20, 20, 20)
.addComponent(ExceptionLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void InputButtonMouseClicked(java.awt.event.MouseEvent evt) ...{//GEN-FIRST:event_InputButtonMouseClicked
int i=0;
ldapUrl = LdapUrlTextField.getText();
ldapUser = LdapNameTextField.getText();
ldapPwd = LdapPwdTextField.getText();
OU = OUTextField.getText();
LdapDC = ldapDCTextField.getText();
XMPPUrl = XMPPServerUrlTextField.getText();
XMPPUser = XMPPNameTextField.getText();
XMPPPwd = XMPPPwdTextField.getText();
DataBase=DataBaseTextField.getText();
DataBaseTable = DataBaseTableTextField.getText();
DataBaseUser = DataBaseNameTextField.getText();
DataBasePwd = DataBasePwdTextField.getText();
InitialLdapContext ctx = null;
Hashtable hashtable = null;
// Set up default values for LDAP info
String url = "ldap://"+ldapUrl+":389";
String username = "cn="+ldapUser+",cn=Users,"+LdapDC;
String base = "OU="+OU+","+LdapDC;
try...{
hashtable = new Hashtable();
hashtable.put("java.naming.ldap.version", "3");
hashtable.put("java.naming.factory.initial","com.sun.jndi.ldap.LdapCtxFactory");
hashtable.put("java.naming.security.authentication", "Simple");
hashtable.put("java.naming.referral", "follow");
hashtable.put("java.naming.provider.url", url);
hashtable.put("java.naming.security.principal", username);
hashtable.put("java.naming.security.credentials", ldapPwd);
// Make LDAP connection
ctx = new InitialLdapContext(hashtable, null);
System.out.println(" Ldap Connection established");
// Set up Search Controls
SearchControls sc = new SearchControls();
sc.setSearchScope(SearchControls.SUBTREE_SCOPE);
ConnectionConfiguration config=new ConnectionConfiguration(XMPPUrl,5222);
XMPPConnection con=new XMPPConnection(config);
con.connect();
con.login(XMPPUser,XMPPPwd);
Roster roster = con.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
String sql,sqlurl;
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//TODO change my datebase
sqlurl="jdbc:microsoft:sqlserver:"+DataBase;
Connection conn=DriverManager.getConnection(sqlurl,DataBaseUser,DataBasePwd);
for (RosterEntry entry : entries) ...{
i++;
sql="insert into "+DataBaseTable+" values(?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
String user=entry.getUser().substring(0,entry.getUser().indexOf("@"));
//test 1160 complete
// String user="1160";
pstmt.setString(1,user);
Presence presence=roster.getPresence(entry.getUser());
NamingEnumeration results = ctx.search(base,"sAMAccountName="+user, sc);
if (results.hasMore() == false)...{
pstmt.setInt(2,0);
pstmt.setString(3," ");
System.out.println("sAMAccountName="+user+" user not exist");
}else if (results == null)...{
pstmt.setInt(2,0);
pstmt.setString(3," ");
System.out.println("results == null");
}else...{
SearchResult sr = (SearchResult)results.next();
javax.naming.directory.Attributes attrs = sr.getAttributes();
if(presence.isAvailable()==true)...{
// if(name.toString().equals("displayName: "+user)){
pstmt.setInt(2,1);
pstmt.setString(3,attrs.get("displayname").get(0).toString());
System.out.println("displayname="+attrs.get("displayname").get(0).toString());
// }
}else ...{
pstmt.setInt(2,0);
pstmt.setString(3," ");
System.out.println("sAMAccountName="+user+"name.toString()==null");
}
}
pstmt.executeUpdate();
ExceptionLabel.setText("success. Total "+i+" note!");
ExceptionLabel.getText();
}
con.disconnect();
ctx.close();
}catch (Exception e)...{
System.out.println("Exception:"+e);
exception=e;
if(exception== null)...{
ExceptionLabel.setText("");
}else...{
ExceptionLabel.setText(exception.toString());
ExceptionLabel.getText();
}
}
}//GEN-LAST:event_InputButtonMouseClicked
/** *//**
* Main method is the main method of the entrance,
* is running on the main method of finding running,
* running after a java UI
* @param args the command line arguments
*/
public static void main(String args[]) ...{
java.awt.EventQueue.invokeLater(new Runnable() ...{
public void run() ...{
new InputDatas().setVisible(true);
}
});
}