Olá Pessoas,
Bom estou com um problema aqui! Sei que é simples de resolver mas não estou conseguindo ver o caminho.
Seguinte: Tenho um bd relacional e uma base LDAP. Preciso sincronizar a base LDAP toda vez que adicionar um usuário. Criei para isso a classe LdapSynchronization. Esta recebe por parâmetro qual operação deve ser realizada No momento, a operação que me interessa é a de adicionar entrada. Se a operação selecionada for esta, chama a classe LdapAddEntry.
Esta classe que está sendo meu problema. Dentro dela eu tenho os métodos Connect(), getAttributes(), addEntry(),main. O método getAttributes() ainda não está implementado e num consigo ver como fazê-lo.
Neste método eu deveria pegar os dados do usuario adicionado. Estes deveriam vir de outra classe, estou me perdendo se ele vem da classe Pessoa ou da Classe Usuario. Estes atributos deveriam ser atribuidos as variáveis e setados através do attributeset
Segue os códigos:
Parcial - Classe CadastroUsuarioLogin Aqui é onde vou chamar a classe de sincronizaçãojButtonOk.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
if (jTextLogin.getText().length()>7 && jTextSenha.getText().length()>5) {
//criando usuário a partir da Pessoa
Usuario usu = new Usuario(pessoa.getId_pessoa(),jTextLogin.getText());
try {
SalvarUsuarioCommand com = (SalvarUsuarioCommand) Util.sendComand(new SalvarUsuarioCommand(usu));
if (com.getException()!= null) {
JOptionPane.showMessageDialog(null, com.getException().getMessage());
} else {
usuario=com.getUsuario();
pessoa.setUsuario(usuario);
//chama a classe sincronização
@SuppressWarnings("unused")
LdapSynchronization sinc = new LdapSynchronization(0);
int opcao = JOptionPane.showConfirmDialog(null, "Usuario cadastrado com sucesso. Deseja editar grupo?", "Usuario cadastrado", JOptionPane.YES_NO_OPTION);
if( opcao == 0 ){
UsuarioGrupo usuarioGrupo = new UsuarioGrupo(telaMatriz, pessoa);
usuarioGrupo.setVisible(true);
dispose();
((CadastroUsuario)telaMatriz).arrumaPessoa(pessoa);
}
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else {
jTextLogin.setText("");
jTextSenha.setText("");
JOptionPane.showMessageDialog(null, " O seu login deve ter pelo menos 8 letras. \n "+
"A senha deve ter pelo menos 6 letras.");
}
public class LdapSynchronization {
private static int statusGravacao = -1;
public LdapSynchronization(int statusGravacao){
this.statusGravacao = statusGravacao;
}
@SuppressWarnings("static-access")
public static void main(String[] args) {
if(statusGravacao== 0){
LdapAddEntry entrada = new LdapAddEntry();
entrada.addEntry();
}
}
}
import com.novell.ldap.LDAPAttribute;
import com.novell.ldap.LDAPAttributeSet;
import com.novell.ldap.LDAPEntry;
import com.novell.ldap.LDAPConnection;
import com.novell.ldap.LDAPException;
import java.io.UnsupportedEncodingException;
public class LdapAddEntry{
//conexão
private final static int ldapPort = LDAPConnection.DEFAULT_PORT;
private final static int ldapVersion = LDAPConnection.LDAP_V3;
private static String ldapHost = "localhost";
private static String loginDN = "cn=admin,dc=ufpr,dc=br";
private static String password = "1sht4rcc3";
private static boolean isconected =false;
static LDAPConnection conexao = new LDAPConnection ();
static String containerName ="ou=people,dc=ufpr,dc=br";
//atributos
LDAPAttribute attribute = null;
static LDAPAttributeSet attributeSet = new LDAPAttributeSet();
private static String objectclass;
private static String cn ="" ;
private static String sn ="";
private static String userpassword;
private static String uid;
private static String name; // deve pegar o nome inteiro do usuario
private static int contEsp;
//metodo que faz a conexão
public static boolean Connect(){
try {
conexao.connect( ldapHost, ldapPort );
conexao.bind( ldapVersion, loginDN, password.getBytes("UTF8") );
if(conexao.isConnected()){
isconected = true;
System.out.println("Conectado: "+ isconected);
}
}catch( LDAPException e ) {
System.out.println( "Error: " + e.toString() );
}catch( UnsupportedEncodingException e ) {
System.out.println( "Error: " + e.toString() );
}
return isconected;
}
/*
* <Método ainda não implementado. A idéia é pegar o nome da pessoa que foi salva como usuário
* e atribvuir dividindo em CN e SN.
* Em seguida pegar login e senha informados e atribuir às variáveis userpassword e uid>
*/
public static void getAttributes(){
//Divisão em Cn e Sn. ****Falta pegar o nome
for(int i=0;i<name.length();i++){
if (name.charAt(i)== ' '){
contEsp++;
}
if(contEsp==0){
cn = cn+name.charAt(i);
}else
sn = sn+name.charAt(i);
}
System.out.println("CN: "+cn+" - SN: "+sn);
//falta pegar o login e a senha do individuo
}
public static void addEntry(){
attributeSet.add( new LDAPAttribute("objectclass", objectclass));
attributeSet.add( new LDAPAttribute("cn", cn));
attributeSet.add( new LDAPAttribute("sn", sn));
attributeSet.add( new LDAPAttribute("userpassword", userpassword));
attributeSet.add( new LDAPAttribute("uid", uid));
String dn = "uid="+uid+containerName;
LDAPEntry newEntry = new LDAPEntry( dn, attributeSet );
try{
conexao.add(newEntry);
System.out.println("\nUsuário" + dn + " Adicionado com sucesso." );
conexao.disconnect();
}catch( LDAPException e ) {
System.out.println("Error: " + e.toString());
}
System.exit(0);
}
@SuppressWarnings("static-access")
public static void main( String[] args ){
try{
Connect();
}catch (Exception e) {
System.out.println( "Error: " + e.toString());
}
if (isconected){
try {
getAttributes();
LdapSearch pesquisa = new LdapSearch(uid);
pesquisa.FoundUser(uid);
if (pesquisa.FoundUser(uid)){
addEntry();
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
System.out.println("Não foi possível adicionar a nova entrada");
}
}
}
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Iterator;
import com.novell.ldap.LDAPAttribute;
import com.novell.ldap.LDAPAttributeSet;
import com.novell.ldap.LDAPConnection;
import com.novell.ldap.LDAPControl;
import com.novell.ldap.LDAPEntry;
import com.novell.ldap.LDAPException;
import com.novell.ldap.LDAPSearchResults;
import com.novell.ldap.util.Base64;
public class LdapSearch extends LDAPControl {
private static final long serialVersionUID = 1L;
// conexão
private final static int ldapPort = LDAPConnection.DEFAULT_PORT;
private final static int ldapVersion = LDAPConnection.LDAP_V3;
private static String ldapHost = "localhost";
private static String loginDN = "cn=admin,dc=ufpr,dc=br";
private static String password = "1sht4rcc3";
private static boolean isconected =false;
static LDAPConnection conexao = new LDAPConnection ();
static String containerName ="ou=people,dc=ufpr,dc=br";
private static int searchScope = LDAPConnection.SCOPE_ONE;
private static String searchFilter;
private static boolean userFound = false;
@SuppressWarnings("static-access")
public LdapSearch(String uid){
this.searchFilter = uid;
}
// metodo que faz a conexão
public static boolean Connect(){
try {
// connect to the server
conexao.connect( ldapHost, ldapPort );
// bind to the server
conexao.bind( ldapVersion, loginDN, password.getBytes("UTF8") );
if(conexao.isConnected()){
isconected = true;
System.out.println("Conectado: "+ isconected);
}
}catch( LDAPException e ) {
System.out.println( "Error: " + e.toString() );
}catch( UnsupportedEncodingException e ) {
System.out.println( "Error: " + e.toString() );
}
return isconected;
}
public static boolean FoundUser(String uid) throws UnsupportedEncodingException{
searchFilter = uid;
try{
LDAPSearchResults searchResults =conexao.search(containerName,searchScope,searchFilter,null,false);
if (!searchResults.hasMore()){
System.out.println("Nenhum resultado Encontrado");
}else{
while ( searchResults.hasMore()) {
LDAPEntry nextEntry = null;
try {
nextEntry = searchResults.next();
}catch(LDAPException e) {
System.out.println("Error: " + e.toString());
// Exception is thrown, go for next entry
if(e.getResultCode() == LDAPException.LDAP_TIMEOUT || e.getResultCode() == LDAPException.CONNECT_ERROR)
break;
else
continue;
}
System.out.println("\n" + nextEntry.getDN());
System.out.println("Atributos: ");
LDAPAttributeSet attributeSet = nextEntry.getAttributeSet();
Iterator allAttributes = attributeSet.iterator();
while(allAttributes.hasNext()) {
LDAPAttribute attribute =(LDAPAttribute)allAttributes.next();
String attributeName = attribute.getName();
System.out.println(" "+attributeName);
Enumeration allValues = attribute.getStringValues();
if( allValues != null) {
while(allValues.hasMoreElements()) {
String Value = (String) allValues.nextElement();
if (Base64.isLDIFSafe(Value)) {
// is printable
System.out.println(" " + Value);
}else {
// base64 encode and then print out
Value = Base64.encode(Value.getBytes());
System.out.println(" " + Value);
}
}
}
}
}
}
// disconnect with the server
conexao.disconnect();
}catch( LDAPException e ) {
System.out.println( "Error: " + e.toString() );
}
return userFound;
}
public static void main( String[] args) {
try {
FoundUser(searchFilter);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Se alguém tiver a paciência de ler e analisar este código e puder em ajudar, eu agradeço!