[SYNCOPE-992] Use millis to date conversion for create too (used to be set for 
update only) + fix JS onChange events for datepicker


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/b30099b6
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/b30099b6
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/b30099b6

Branch: refs/heads/master
Commit: b30099b68ca105d097c261651b1a255de184556e
Parents: 909ed6f
Author: Francesco Chicchiriccò <ilgro...@apache.org>
Authored: Fri Jan 13 11:51:11 2017 +0100
Committer: Francesco Chicchiriccò <ilgro...@apache.org>
Committed: Fri Jan 13 11:51:24 2017 +0100

----------------------------------------------------------------------
 .../resources/UserSelfCreateResource.java       | 40 +++++++++++++++++---
 .../enduser/resources/UserSelfReadResource.java |  2 +
 .../resources/UserSelfUpdateResource.java       | 17 +++++----
 .../app/js/directives/dynamicPlainAttribute.js  |  9 ++++-
 4 files changed, 53 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b30099b6/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
----------------------------------------------------------------------
diff --git 
a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
 
b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
index 58d108d..eddd439 100644
--- 
a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
+++ 
b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
@@ -19,17 +19,22 @@
 package org.apache.syncope.client.enduser.resources;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.core.Response;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.SerializationUtils;
+import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.syncope.client.enduser.SyncopeEnduserConstants;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
+import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.rest.api.service.UserSelfService;
 import org.slf4j.Logger;
@@ -72,6 +77,28 @@ public class UserSelfCreateResource extends 
AbstractBaseResource {
             }
 
             if (isSelfRegistrationAllowed() && userTO != null) {
+                Map<String, AttrTO> userPlainAttrMap = 
userTO.getPlainAttrMap();
+
+                // millis -> Date conversion
+                for (PlainSchemaTO plainSchema : 
SyncopeEnduserSession.get().getDatePlainSchemas()) {
+                    if (userPlainAttrMap.containsKey(plainSchema.getKey())) {
+                        FastDateFormat fmt = 
FastDateFormat.getInstance(plainSchema.getConversionPattern());
+
+                        AttrTO dateAttr = 
userPlainAttrMap.get(plainSchema.getKey());
+                        List<String> formattedValues = new 
ArrayList<>(dateAttr.getValues().size());
+                        for (String value : dateAttr.getValues()) {
+                            try {
+                                
formattedValues.add(fmt.format(Long.valueOf(value)));
+                            } catch (NumberFormatException e) {
+                                throw new IllegalArgumentException("Invalid 
format value for " + value);
+                            }
+                        }
+                        dateAttr.getValues().clear();
+                        dateAttr.getValues().addAll(formattedValues);
+                    }
+                }
+
+                // membership attributes management
                 Set<AttrTO> membAttrs = new HashSet<>();
                 for (AttrTO attr : userTO.getPlainAttrs()) {
                     if (attr.getSchema().contains("#")) {
@@ -149,6 +176,7 @@ public class UserSelfCreateResource extends 
AbstractBaseResource {
 
                 LOG.debug("Received user self registration request for user: 
[{}]", userTO.getUsername());
                 LOG.trace("Received user self registration request is: [{}]", 
userTO);
+
                 // adapt request and create user
                 final Response res = userSelfService.create(userTO, true);
 
@@ -159,9 +187,9 @@ public class UserSelfCreateResource extends 
AbstractBaseResource {
                         
attributes.getResponse().write(res.getStatusInfo().getFamily().equals(
                                 Response.Status.Family.SUCCESSFUL)
                                         ? responseMessage.append("User: 
").append(userTO.getUsername()).append(
-                                        " successfully created")
+                                                " successfully created")
                                         : new 
StringBuilder().append("ErrorMessage{{ ").
-                                        
append(res.getStatusInfo().getReasonPhrase()).append(" }}"));
+                                                
append(res.getStatusInfo().getReasonPhrase()).append(" }}"));
                     }
                 });
                 response.setStatusCode(res.getStatus());
@@ -176,10 +204,10 @@ public class UserSelfCreateResource extends 
AbstractBaseResource {
             LOG.error("Could not create userTO", e);
             response.setError(Response.Status.BAD_REQUEST.getStatusCode(),
                     new StringBuilder().
-                    append("ErrorMessage{{ ").
-                    append(e.getMessage()).
-                    append(" }}").
-                    toString());
+                            append("ErrorMessage{{ ").
+                            append(e.getMessage()).
+                            append(" }}").
+                            toString());
         }
         return response;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b30099b6/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
----------------------------------------------------------------------
diff --git 
a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
 
b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
index 4f04f31..a792f00 100644
--- 
a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
+++ 
b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
@@ -56,6 +56,7 @@ public class UserSelfReadResource extends 
AbstractBaseResource {
             UserTO userTO = 
SerializationUtils.clone(SyncopeEnduserSession.get().getSelfTO());
             Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
 
+            // Date -> millis conversion
             for (PlainSchemaTO plainSchema : 
SyncopeEnduserSession.get().getDatePlainSchemas()) {
                 if (userPlainAttrMap.containsKey(plainSchema.getKey())) {
                     FastDateFormat fmt = 
FastDateFormat.getInstance(plainSchema.getConversionPattern());
@@ -70,6 +71,7 @@ public class UserSelfReadResource extends 
AbstractBaseResource {
                 }
             }
 
+            // membership attributes management
             for (MembershipTO membership : userTO.getMemberships()) {
                 String groupName = membership.getGroupName();
                 for (AttrTO attr : membership.getPlainAttrs()) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/b30099b6/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
----------------------------------------------------------------------
diff --git 
a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
 
b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
index 561811a..dbc6bef 100644
--- 
a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
+++ 
b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
@@ -64,9 +64,10 @@ public class UserSelfUpdateResource extends 
AbstractBaseResource {
             }
 
             UserTO userTO = MAPPER.readValue(request.getReader().readLine(), 
UserTO.class);
-            
+
             Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
 
+            // millis -> Date conversion
             for (PlainSchemaTO plainSchema : 
SyncopeEnduserSession.get().getDatePlainSchemas()) {
                 if (userPlainAttrMap.containsKey(plainSchema.getKey())) {
                     FastDateFormat fmt = 
FastDateFormat.getInstance(plainSchema.getConversionPattern());
@@ -85,6 +86,7 @@ public class UserSelfUpdateResource extends 
AbstractBaseResource {
                 }
             }
 
+            // membership attributes management
             Set<AttrTO> membAttrs = new HashSet<>();
             for (AttrTO attr : userTO.getPlainAttrs()) {
                 if (attr.getSchema().contains("#")) {
@@ -164,9 +166,10 @@ public class UserSelfUpdateResource extends 
AbstractBaseResource {
 
             final String responseMessage = 
res.getStatusInfo().getFamily().equals(Response.Status.Family.SUCCESSFUL)
                     ? new StringBuilder().
-                    append("User").append(userTO.getUsername()).append(" 
successfully updated").toString()
+                            
append("User").append(userTO.getUsername()).append(" successfully 
updated").toString()
                     : new StringBuilder().
-                    append("ErrorMessage{{ 
").append(res.getStatusInfo().getReasonPhrase()).append(" }}").toString();
+                            append("ErrorMessage{{ 
").append(res.getStatusInfo().getReasonPhrase()).append(" }}").
+                            toString();
             response.setWriteCallback(new WriteCallback() {
 
                 @Override
@@ -181,10 +184,10 @@ public class UserSelfUpdateResource extends 
AbstractBaseResource {
             LOG.error("Error while updating user", e);
             response.setError(Response.Status.BAD_REQUEST.getStatusCode(),
                     new StringBuilder().
-                    append("ErrorMessage{{ ").
-                    append(e.getMessage()).
-                    append(" }}").
-                    toString());
+                            append("ErrorMessage{{ ").
+                            append(e.getMessage()).
+                            append(" }}").
+                            toString());
         }
         return response;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b30099b6/client/enduser/src/main/resources/META-INF/resources/app/js/directives/dynamicPlainAttribute.js
----------------------------------------------------------------------
diff --git 
a/client/enduser/src/main/resources/META-INF/resources/app/js/directives/dynamicPlainAttribute.js
 
b/client/enduser/src/main/resources/META-INF/resources/app/js/directives/dynamicPlainAttribute.js
index 19f1c9d..1aabdd3 100644
--- 
a/client/enduser/src/main/resources/META-INF/resources/app/js/directives/dynamicPlainAttribute.js
+++ 
b/client/enduser/src/main/resources/META-INF/resources/app/js/directives/dynamicPlainAttribute.js
@@ -93,9 +93,14 @@ angular.module('self')
                     }
 
                     $scope.bindDateToModel = function (selectedDate, 
selectedTime) {
-                      if (selectedDate && selectedTime) {
+                      if (selectedDate) {
                         var extractedDate = 
selectedDate.toString().substring(0, 15);
-                        var extractedTime = 
selectedTime.toString().substring(16);
+                        var extractedTime;
+                        if (selectedTime) {
+                          extractedTime = 
selectedTime.toString().substring(16);
+                        } else {
+                          extractedTime = '00:00:00';
+                        }
                         var resultDate = extractedDate + ' ' + extractedTime;
                         var tmpdate = new Date(resultDate);
                         var milliseconds = tmpdate.getTime();

Reply via email to