diff --git a/.classpath b/.classpath
index 1628860..cf152f5 100644
--- a/.classpath
+++ b/.classpath
@@ -18,18 +18,18 @@
-
+
+
-
+
-
-
+
diff --git a/.project b/.project
index 35f1980..36112bc 100644
--- a/.project
+++ b/.project
@@ -21,12 +21,12 @@
- org.eclipse.m2e.core.maven2Builder
+ org.eclipse.wst.validation.validationbuilder
- org.eclipse.wst.validation.validationbuilder
+ org.eclipse.m2e.core.maven2Builder
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 4a3b5d9..69c31cd 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,3 @@
-#Fri Jul 26 17:34:06 CEST 2013
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs
new file mode 100644
index 0000000..04cad8c
--- /dev/null
+++ b/.settings/org.eclipse.wst.validation.prefs
@@ -0,0 +1,2 @@
+disabled=06target
+eclipse.preferences.version=1
diff --git a/src/main/java/org/gcube/vomanagement/usermanagement/UserManager.java b/src/main/java/org/gcube/vomanagement/usermanagement/UserManager.java
index 13f26c8..a650d60 100644
--- a/src/main/java/org/gcube/vomanagement/usermanagement/UserManager.java
+++ b/src/main/java/org/gcube/vomanagement/usermanagement/UserManager.java
@@ -55,6 +55,24 @@ public interface UserManager {
* @throws UserManagementSystemException
*/
GCubeUser createUser(boolean autoScreenName, String username, String email, String firstName, String middleName, String lastName, String jobTitle, String location_industry, String backgroundSummary, boolean male, String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset) throws UserManagementSystemException;
+ /**
+ * Create the user and let you choose if you want to send him/her a mail notification and force or not the user to change his/her password.
+ * You can also pass the avatar to set as bytes.
+ * @param autoScreenName set true if you want liferay to auto generate a screename for this user, false otherwise
+ * @param username the username of the user you want
+ * @param email a valid email address
+ * @param firstName
+ * @param middleName
+ * @param lastName
+ * @param jobTitle
+ * @param backgroundSummary
+ * @param male
+ * @param portraitBytes the bytes of the avatar to use for the user
+ * @param openId user's openId
+ * @return an instance of the yet created user
+ * @throws UserManagementSystemException
+ */
+ GCubeUser createUser(boolean autoScreenName, String username, String email, String firstName, String middleName, String lastName, String jobTitle, String location_industry, String backgroundSummary, boolean male, String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset, byte[] portraitBytes) throws UserManagementSystemException;
/**
*
* @param username the username of the user you want to get
@@ -259,4 +277,13 @@ public interface UserManager {
* @param email
*/
public void deleteUserByEMail(String email) throws UserManagementSystemException, UserManagementPortalException, PortalException, SystemException;
+ /**
+ * Retrieve user's avatar as bytes
+ */
+ public byte[] getUserAvatarBytes(String screenName);
+
+ /**
+ * Retrieve user's openId field
+ */
+ public String getUserOpenId(String screenName);
}
diff --git a/src/main/java/org/gcube/vomanagement/usermanagement/impl/LiferayUserManager.java b/src/main/java/org/gcube/vomanagement/usermanagement/impl/LiferayUserManager.java
index cc95ee3..6a313fa 100644
--- a/src/main/java/org/gcube/vomanagement/usermanagement/impl/LiferayUserManager.java
+++ b/src/main/java/org/gcube/vomanagement/usermanagement/impl/LiferayUserManager.java
@@ -37,6 +37,7 @@ import com.liferay.portal.security.permission.PermissionChecker;
import com.liferay.portal.security.permission.PermissionCheckerFactoryUtil;
import com.liferay.portal.security.permission.PermissionThreadLocal;
import com.liferay.portal.service.GroupLocalServiceUtil;
+import com.liferay.portal.service.ImageLocalServiceUtil;
import com.liferay.portal.service.MembershipRequestLocalServiceUtil;
import com.liferay.portal.service.RoleLocalServiceUtil;
import com.liferay.portal.service.RoleServiceUtil;
@@ -94,7 +95,7 @@ public class LiferayUserManager implements UserManager {
for (EmailAddress e : u.getEmailAddresses()) {
emails.add(new Email(e.getAddress(), e.getType().toString(), e.isPrimary()));
}
-
+
return new GCubeUser(
u.getUserId(),
u.getScreenName(),
@@ -177,7 +178,8 @@ public class LiferayUserManager implements UserManager {
reminderQuestion,
reminderAnswer,
false,
- false);
+ false,
+ null);
}
/**
@@ -186,7 +188,33 @@ public class LiferayUserManager implements UserManager {
@Override
public GCubeUser createUser(boolean autoScreenName, String username, String email, String firstName, String middleName, String lastName,
String jobTitle, String location_industry, String backgroundSummary, boolean male, String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset)
- throws UserManagementSystemException {
+ throws UserManagementSystemException {
+ return createUserBody(
+ autoScreenName,
+ username,
+ email,
+ firstName,
+ middleName,
+ lastName,
+ jobTitle,
+ backgroundSummary,
+ location_industry,
+ male,
+ reminderQuestion,
+ reminderAnswer,
+ sendEmail,
+ forcePasswordReset,
+ null);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public GCubeUser createUser(boolean autoScreenName, String username, String email, String firstName, String middleName, String lastName,
+ String jobTitle, String location_industry, String backgroundSummary, boolean male, String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset,
+ byte[] portraitBytes)
+ throws UserManagementSystemException {
return createUserBody(
autoScreenName,
username,
@@ -201,13 +229,14 @@ public class LiferayUserManager implements UserManager {
reminderQuestion,
reminderAnswer,
sendEmail,
- forcePasswordReset);
+ forcePasswordReset,
+ portraitBytes);
}
private GCubeUser createUserBody(boolean autoScreenName, String username,
String email, String firstName, String middleName, String lastName,
String jobTitle, String location_industry, String backgroundSummary, boolean male,
- String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset){
+ String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset, byte[] portraitBytes){
GCubeUser toReturn = null;
try {
@@ -264,6 +293,23 @@ public class LiferayUserManager implements UserManager {
UserLocalServiceUtil.updateReminderQuery(added.getUserId(), reminderQuestion, reminderAnswer);
_log.debug("User " + lastName + " has agreed to ToU");
_log.debug("User " + lastName + " updatePasswordReset & updateReminderQuery");
+
+ // try to change user's avatar
+ if(portraitBytes != null){
+
+ try{
+ _log.debug("Updating user's avatar");
+ UserLocalServiceUtil.updatePortrait(added.getUserId(), portraitBytes);
+ _log.debug("User's avatar set OK");
+ }catch(PortalException e1){
+ _log.debug("Unable to set user's avatar", e1);
+ }
+ catch(SystemException e1){
+ _log.debug("Unable to set user's avatar", e1);
+ }
+
+ }
+
return mapLRUser(added);
} catch (SystemException e) {
e.printStackTrace();
@@ -734,5 +780,29 @@ public class LiferayUserManager implements UserManager {
_log.debug("Delete user with email " + email);
}
}
-
+ @Override
+ public byte[] getUserAvatarBytes(String screenName) {
+ try {
+ User user = UserLocalServiceUtil.getUserByScreenName(ManagementUtils.getCompany().getCompanyId(), screenName);
+ return ImageLocalServiceUtil.getImage(user.getPortraitId()).getTextObj();
+ } catch (PortalException e) {
+ _log.debug("Unable to retrieve user's avatar", e);
+ } catch (SystemException e) {
+ _log.debug("Unable to retrieve user's avatar", e);
+ }
+ return null;
+ }
+ @Override
+ public String getUserOpenId(String screenName) {
+ try {
+ User user = UserLocalServiceUtil.getUserByScreenName(ManagementUtils.getCompany().getCompanyId(), screenName);
+ return user.getOpenId();
+ } catch (PortalException e) {
+ _log.debug("Unable to retrieve user's openId", e);
+ } catch (SystemException e) {
+ _log.debug("Unable to retrieve user's openId", e);
+ }
+ return null;
+ }
+
}