服务端openfire数据可以通过LDAP来同步已经存在的完整用户信息。
客户端连接服务端后,对应查找用户并得到用户信息保存。
具体代码如下:
public PersonalPanel() {
initPerson();//初始化
setLayout(new GridBagLayout());
JLabel firstNameLabel = new JLabel();
firstNameField = new JTextField();
ResourceUtils.resLabel(firstNameLabel, firstNameField, Res.getString("label.first.name") + ":");
if(null==firstNameField.getText()||"".equals(firstNameField.getText())){
setRealUserName(realUserName);
firstNameField.setEditable(false);
}
如果用户名称模板为空,查找用户名
void initPerson(){
positions = CommonProfile.getPosition(jobTitleField.getText());//职称
sex = CommonProfile.getSex(sexField.getText());
realUserName = GetUserRealName();//查找用户名方法
}
查找用户名方法(相当于搜索用户)
private String GetUserRealName() {
final String byname = SparkManager.getSessionManager().getJID().substring(0, SparkManager.getSessionManager().getJID().indexOf("@"));//得到JID前缀
final Collection<String> _usersearchservice = SearchManager.getInstance()
.getSearchServicesAsString();//得到服务器名称
String name = null;
try {
for (String search : _usersearchservice) {
ReportedData data;
UserSearchManager usersearchManager = new UserSearchManager(
SparkManager.getConnection());
Form f = usersearchManager.getSearchForm(search);
Form answer = f.createAnswerForm();//设置搜索条件
answer.setAnswer("Name", true);
answer.setAnswer("Email", true);
answer.setAnswer("Username", true);
answer.setAnswer("search", byname);
data = usersearchManager.getSearchResults(answer, search);
ArrayList<String> columnnames = new ArrayList<String>();
Iterator<Column> columns = data.getColumns();
while (columns.hasNext()) {
ReportedData.Column column = (ReportedData.Column) columns
.next();
String label = column.getLabel();
columnnames.add(label);
}
Iterator<Row> rows = data.getRows();
if (rows.equals("") || rows == null) {
JOptionPane.showMessageDialog(null,
Res.getString("title.user.not.exists"));
}
while (rows.hasNext()) {
ReportedData.Row row = (ReportedData.Row) rows.next();
if(row.getValues(columnnames.get(1)).hasNext()){
if (row.getValues(columnnames.get(2)).hasNext()&&byname.equals(row.getValues(columnnames.get(1)).next())) {
name = (String) row.getValues(columnnames.get(2)).next();//得到具体用户名
}
}
}
}
} catch (Exception e) {
}
return name;
}