package eu.dnetlib.openaire.user.migration;

import com.unboundid.ldap.sdk.*;
import eu.dnetlib.openaire.user.ldap.Joomla15PasswordHash;
import eu.dnetlib.openaire.user.ldap.MUserActionsLDAP;
import eu.dnetlib.openaire.user.ldap.UserActionsLDAP;
import eu.dnetlib.openaire.user.store.LDAPConnector;

import java.sql.SQLException;
import java.util.UUID;

/**
 * Created by sofia on 31/10/2016.
 */
public class Migration {

    public static void main(String[] args) throws LDAPException, SQLException {

        //MUserActionsLDAP mUserActionsLDAP = new MUserActionsLDAP();
//        UserActionsLDAP UserActionsLDAP = new UserActionsLDAP();
//        try {
//            UserActionsLDAP.addUser("Argiro", "argiro@gmail.com", "12345678", "Argiro", "Kokogianaki");
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
        //boolean authenticated = mUserActionsLDAP.authenticateUser("sba@di.uoa.gr", "12345678");
        //System.out.println(authenticated);
        //System.out.println(mUserActionsLDAP.getRole("sba@di.uoa.gr", "12345678"));


        Attribute cn = new Attribute("cn", "Argiro");
        Attribute displayName = new Attribute("displayName", "Argiro" + " " + "Kokogianaki");
        Attribute mail = new Attribute("mail", "argiro@gmail.com");
        Attribute givenName = new Attribute("givenName", "Argiro");
        Attribute joomlaBlockUser = new Attribute("JoomlaBlockUser", "1");
        Attribute joomlaGroup = new Attribute("JoomlaGroup", "Registered");
        Attribute objectClass = new Attribute("objectClass", "top", "inetOrgPerson", "JoomlaUser");
        Attribute userPassword = new Attribute("userPassword", Joomla15PasswordHash.create("12345678"));
        Attribute sn = new Attribute("sn", "Kokogianaki");
        Attribute uid = new Attribute("uid", "Argiro");
        // Attribute joomlaUserParams = new Attribute("JoomlaUserParams", "");
        String activationId = UUID.randomUUID().toString();
        Attribute x500UniqueIdentifier = new Attribute("employeeNumber", activationId);
        LDAPConnection connection = null;
        try {
            DN dn = new DN("uid=" + "Argiro" + "," + "ou=users,dc=openaire,dc=eu");
            System.out.println("cn: " + cn + " displayName: " + displayName + " mail: " + mail + " givenName: " + givenName + " joomlaBlockUser: " + joomlaBlockUser + " joomlaGroup: " + joomlaGroup + " objectClass: " + objectClass + " userPassword: " + userPassword + " sn: " + sn + " uid: " + uid + " x500UniqueIdentifier: " + x500UniqueIdentifier);
            Entry entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid/*
																																								 * ,
																																								 * joomlaUserParams
																																								 */, x500UniqueIdentifier);
            connection = new LDAPConnection("esperos.di.uoa.gr", 389, "cn=admin,dc=openaire,dc=eu", "serenata");
            connection.add(entry);

        } catch (Exception e) {
            throw e;
        } finally {
            if (connection != null)
                connection.close();
        }
    }
}
