From d6a479618d3a27155f4fa4a7a328448119f1b009 Mon Sep 17 00:00:00 2001
From: Felix Sidokhine <felix.sidokhine@savoirfairelinux.com>
Date: Wed, 1 Jul 2020 16:13:38 +0300
Subject: [PATCH] code cleanup in a few places

Change-Id: Ic9c841677918f52ced78dfd11a8a257c976869a6
---
 .../connector/service/UserProfileService.java | 95 +++++++++----------
 .../src/test/java/tests/GenericLDAPTest.java  |  1 +
 .../src/test/resources/ldapconfig.json        |  1 +
 3 files changed, 49 insertions(+), 48 deletions(-)

diff --git a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
index 2582a076..f5771783 100644
--- a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
+++ b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
@@ -1,25 +1,26 @@
 /*
-* Copyright (C) 2020 by Savoir-faire Linux
-* Authors: William Enright <william.enright@savoirfairelinux.com>
-*          Ndeye Anna Ndiaye <anna.ndiaye@savoirfairelinux.com>
-*          Johnny Flores <johnny.flores@savoirfairelinux.com>
-*          Mohammed Raza <mohammed.raza@savoirfairelinux.com>
-*          Felix Sidokhine <felix.sidokhine@savoirfairelinux.com>
-*
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation; either version 3 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program.  If not, see <https://www.gnu.org/licenses/>.
-*/
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Authors: William Enright <william.enright@savoirfairelinux.com>
+ *          Ndeye Anna Ndiaye <anna.ndiaye@savoirfairelinux.com>
+ *          Johnny Flores <johnny.flores@savoirfairelinux.com>
+ *          Mohammed Raza <mohammed.raza@savoirfairelinux.com>
+ *          Felix Sidokhine <felix.sidokhine@savoirfairelinux.com>
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+
 package net.jami.jams.ad.connector.service;
 
 import com.imperva.ddc.core.Connector;
@@ -47,24 +48,21 @@ import java.util.stream.Collectors;
 @Slf4j
 public class UserProfileService {
 
-    private static final HashMap<String,String> fieldMap = ADConnector.settings.getFieldMappings();
+    private static final HashMap<String, String> fieldMap = ADConnector.settings.getFieldMappings();
 
-    public UserProfile[] getUserProfile(String queryString, String field){
+    public UserProfile[] getUserProfile(String queryString, String field) {
         Endpoint endpoint = ADConnector.getConnection();
         UserProfile[] profiles = null;
-
-        if (!queryString.startsWith("*"))
+        if (!queryString.startsWith("*")) {
             queryString = queryString.concat("*");
-
-        try{
+        }
+        try {
             QueryRequest queryRequest = buildRequest(endpoint);
             Sentence sentence = null;
-            if(queryString.contains("*")) {
+            if (queryString.contains("*")) {
                 sentence = new QueryAssembler().addPhrase(FieldType.OBJECT_CLASS, PhraseOperator.EQUAL, ObjectType.USER.toString()).closeSentence();
-            }
-            else {
+            } else {
                 if (field.equals("LOGON_NAME")) {
-
                     sentence = new QueryAssembler().addPhrase(FieldType.LOGON_NAME, PhraseOperator.CONTAINS, queryString)
                         .closeSentence();
                 }
@@ -76,54 +74,55 @@ public class UserProfileService {
             }
             queryRequest.addSearchSentence(sentence);
             QueryResponse queryResponse;
-            try(Connector connector = new Connector(queryRequest)) {
+            try (Connector connector = new Connector(queryRequest)) {
                 queryResponse = connector.execute();
             }
             List<List<Field>> results = queryResponse.getAll().stream().map(EntityResponse::getValue).collect(Collectors.toList());
-            if(results.size() > 0) profiles = new UserProfile[results.size()];
-            else return null;
-            for(int i=0;i< profiles.length; i++){
+            if (results.size() > 0) {
+                profiles = new UserProfile[results.size()];
+            } else {
+                return null;
+            }
+            for (int i = 0; i < profiles.length; i++) {
                 profiles[i] = profileFromResponse(results.get(i));
             }
             return profiles;
-        }
-        catch (Exception e){
+        } catch (Exception e) {
             log.error("Could not find entity with specified parameters.");
             return null;
-        }
-        finally {
+        } finally {
             ADConnector.returnConnection(endpoint);
         }
     }
 
-
     public static QueryRequest buildRequest(Endpoint endpoint) {
         QueryRequest queryRequest = new QueryRequest();
         queryRequest.setDirectoryType(DirectoryType.MS_ACTIVE_DIRECTORY);
-        queryRequest.setEndpoints(new ArrayList<>() {{ add(endpoint);}});
+        queryRequest.setEndpoints(new ArrayList<>() {{
+            add(endpoint);
+        }});
         queryRequest.setSizeLimit(1000);
         queryRequest.setTimeLimit(1000);
         queryRequest.setObjectType(ObjectType.USER);
-        for(String field : fieldMap.keySet()) queryRequest.addRequestedField(field);
+        for (String field : fieldMap.keySet()) {
+            queryRequest.addRequestedField(field);
+        }
         return queryRequest;
     }
 
-    public static UserProfile profileFromResponse(List<Field> fields){
+    public static UserProfile profileFromResponse(List<Field> fields) {
         //Use reflection to remap.
         try {
             UserProfile userProfile = new UserProfile();
             for (Field field : fields) {
-                if(fieldMap.containsKey(field.getName())) {
+                if (fieldMap.containsKey(field.getName())) {
                     UserProfile.exposedMethods.get("set" + fieldMap.get(field.getName())).invoke(userProfile, field.getValue());
                 }
             }
             return userProfile;
-        }
-        catch (Exception e){
+        } catch (Exception e) {
             log.error("An error occured while trying to invoke methods: " + e.toString());
             return null;
         }
     }
-
-
 }
diff --git a/ldap-connector/src/test/java/tests/GenericLDAPTest.java b/ldap-connector/src/test/java/tests/GenericLDAPTest.java
index be561469..1b194abd 100644
--- a/ldap-connector/src/test/java/tests/GenericLDAPTest.java
+++ b/ldap-connector/src/test/java/tests/GenericLDAPTest.java
@@ -54,6 +54,7 @@ public class GenericLDAPTest {
         initLdapConnector();
         UserProfile[] profiles = ldapConnector.getUserProfile("Felix","FULL_TEXT_NAME");
         Assert.assertEquals(1,profiles.length);
+        Assert.assertNotNull(profiles[0].getUsername());
         String vcard = profiles[0].getAsVCard();
         Assert.assertNotNull(vcard);
     }
diff --git a/ldap-connector/src/test/resources/ldapconfig.json b/ldap-connector/src/test/resources/ldapconfig.json
index 39a9f61d..ec6ccfaf 100644
--- a/ldap-connector/src/test/resources/ldapconfig.json
+++ b/ldap-connector/src/test/resources/ldapconfig.json
@@ -7,6 +7,7 @@
   "password": "password",
   "usernameField": "uid",
   "fieldMappings": {
+    "uid": "Username",
     "givenName": "FirstName",
     "sn": "LastName",
     "jpegPhoto": "ProfilePicture",
-- 
GitLab