|
|
|
@ -9,10 +9,12 @@ import java.io.IOException;
|
|
|
|
|
import java.io.StringReader;
|
|
|
|
|
import java.rmi.RemoteException;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Hashtable;
|
|
|
|
|
import java.util.LinkedList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpSession;
|
|
|
|
|
import javax.xml.parsers.DocumentBuilder;
|
|
|
|
@ -42,6 +44,13 @@ import org.gcube.portal.custom.communitymanager.components.GCUBESiteLayout;
|
|
|
|
|
import org.gcube.portal.custom.communitymanager.impl.OrganizationManagerImpl;
|
|
|
|
|
import org.gcube.portal.custom.communitymanager.types.GCUBELayoutType;
|
|
|
|
|
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
|
|
|
|
|
import org.gcube.portal.databook.server.DBCassandraAstyanaxImpl;
|
|
|
|
|
import org.gcube.portal.databook.server.DatabookStore;
|
|
|
|
|
import org.gcube.portal.databook.shared.Feed;
|
|
|
|
|
import org.gcube.portal.databook.shared.FeedType;
|
|
|
|
|
import org.gcube.portal.databook.shared.PrivacyLevel;
|
|
|
|
|
import org.gcube.portal.databook.shared.UserInfo;
|
|
|
|
|
import org.gcube.portal.databook.shared.ex.FeedIDNotFoundException;
|
|
|
|
|
import org.gcube.portlets.admin.vredeployer.client.VredeployerService;
|
|
|
|
|
import org.gcube.portlets.admin.vredeployer.client.model.VREFunctionalityModel;
|
|
|
|
|
import org.gcube.portlets.admin.vredeployer.shared.GHNMemory;
|
|
|
|
@ -96,11 +105,15 @@ import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
|
|
|
|
import com.liferay.portal.NoSuchRoleException;
|
|
|
|
|
import com.liferay.portal.kernel.exception.PortalException;
|
|
|
|
|
import com.liferay.portal.kernel.exception.SystemException;
|
|
|
|
|
import com.liferay.portal.kernel.util.WebKeys;
|
|
|
|
|
import com.liferay.portal.model.Company;
|
|
|
|
|
import com.liferay.portal.model.Group;
|
|
|
|
|
import com.liferay.portal.model.Organization;
|
|
|
|
|
import com.liferay.portal.model.Role;
|
|
|
|
|
import com.liferay.portal.service.OrganizationLocalServiceUtil;
|
|
|
|
|
import com.liferay.portal.service.RoleLocalServiceUtil;
|
|
|
|
|
import com.liferay.portal.service.UserLocalServiceUtil;
|
|
|
|
|
import com.liferay.portal.theme.ThemeDisplay;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -112,6 +125,8 @@ public class VREDeployerServiceImpl extends RemoteServiceServlet implements Vre
|
|
|
|
|
|
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(VREDeployerServiceImpl.class);
|
|
|
|
|
protected static final String ORGANIZATION_DEFAULT_LOGO = "/org/gcube/portal/custom/communitymanager/resources/default_logo.png";
|
|
|
|
|
protected static final String ORGANIZATION_DEFAULT_LOGO_URL = "http://ftp.d4science.org/apps/profiles/d4slogo.png";
|
|
|
|
|
|
|
|
|
|
private static final int LIFERAY_REGULAR_ROLE_ID = 1;
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
@ -676,16 +691,20 @@ public class VREDeployerServiceImpl extends RemoteServiceServlet implements Vre
|
|
|
|
|
if (report.getStatus() == Status.Finished) {
|
|
|
|
|
log.info("--- Create VRE COMPLETED, CREATING LAYOUTS AND COMMUNITY ... ");
|
|
|
|
|
String name = "";
|
|
|
|
|
String description = "";
|
|
|
|
|
try {
|
|
|
|
|
name = vreGenerator.getVREModel().name();
|
|
|
|
|
VREDescription de = vreGenerator.getVREModel();
|
|
|
|
|
name = de.name();
|
|
|
|
|
description = de.description();
|
|
|
|
|
} catch (RemoteException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
String designer = (String) getASLSession().getAttribute(DESIGNER);
|
|
|
|
|
String manager = (String) getASLSession().getAttribute(MANAGER);
|
|
|
|
|
if (createCommunityAndLayout(name)) {
|
|
|
|
|
log.info("--- CREATED LAYOUTS AND COMMUNITY --- OK, sending Message to designer.");
|
|
|
|
|
try {
|
|
|
|
|
String designer = (String) getASLSession().getAttribute(DESIGNER);
|
|
|
|
|
String manager = (String) getASLSession().getAttribute(MANAGER);
|
|
|
|
|
|
|
|
|
|
UserManager um = new LiferayUserManager();
|
|
|
|
|
UserModel userDesigner = um.getUserByScreenName(designer);
|
|
|
|
|
UserModel userManager = um.getUserByScreenName(manager);
|
|
|
|
@ -703,6 +722,9 @@ public class VREDeployerServiceImpl extends RemoteServiceServlet implements Vre
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
log.info("--- Trying to share a news for this VRE");
|
|
|
|
|
shareCreatedVRENews(designer, manager, name, description);
|
|
|
|
|
|
|
|
|
|
} else
|
|
|
|
|
log.error("--- DANGER DANGER DANGER!!!!! -> CREATED LAYOUTS AND COMMUNITY WITH ERRORS");
|
|
|
|
|
|
|
|
|
@ -718,6 +740,105 @@ public class VREDeployerServiceImpl extends RemoteServiceServlet implements Vre
|
|
|
|
|
return convertServiceDeployReport(report);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param designer
|
|
|
|
|
* @param manager
|
|
|
|
|
* @param name
|
|
|
|
|
*/
|
|
|
|
|
private void shareCreatedVRENews(String designer, String manager, String name, String description) {
|
|
|
|
|
|
|
|
|
|
String text = "A new Virtual Research Environment is worming up. " + name + " announced open day is tomorrow!";
|
|
|
|
|
Date feedDate = new Date();
|
|
|
|
|
|
|
|
|
|
UserInfo managerInfo = null;
|
|
|
|
|
try {
|
|
|
|
|
managerInfo = getuserInfo(manager);
|
|
|
|
|
} catch (Exception e1) {
|
|
|
|
|
e1.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
String previewTitle = "The new VRE " + name + " will be available starting from tomorrow";
|
|
|
|
|
Feed toShare = new Feed(UUID.randomUUID().toString(), FeedType.TWEET, managerInfo.getUsername(), feedDate,
|
|
|
|
|
"", "/group/data-e-infrastructure-gateway/join-new", ORGANIZATION_DEFAULT_LOGO_URL, text,
|
|
|
|
|
PrivacyLevel.VRES,
|
|
|
|
|
managerInfo.getFullName(),
|
|
|
|
|
managerInfo.getEmailaddress(),
|
|
|
|
|
managerInfo.getAvatarId(),
|
|
|
|
|
previewTitle,
|
|
|
|
|
description, "d4science.org", false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DatabookStore store = new DBCassandraAstyanaxImpl();
|
|
|
|
|
log.trace("Attempting to save Feed with text: " + text);
|
|
|
|
|
boolean result = store.saveUserFeed(toShare);
|
|
|
|
|
if (result) {
|
|
|
|
|
for (GroupModel vre : getUserVREs(manager)) {
|
|
|
|
|
String vreScope = getScopeByOrganizationId(vre.getGroupId());
|
|
|
|
|
log.trace("Attempting to write onto " + vreScope);
|
|
|
|
|
try {
|
|
|
|
|
store.saveFeedToVRETimeline(toShare.getKey(), vreScope);
|
|
|
|
|
} catch (FeedIDNotFoundException e) {
|
|
|
|
|
log.error("Error writing onto VRES Time Line" + vreScope);
|
|
|
|
|
} //save the feed
|
|
|
|
|
log.trace("Success writing onto " + vreScope);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String getScopeByOrganizationId(String vreid) {
|
|
|
|
|
GroupManager gm = new LiferayGroupManager();
|
|
|
|
|
try {
|
|
|
|
|
return gm.getScope(vreid);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("Could not find a scope for this VREid: " + vreid);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private UserInfo getuserInfo(String username) throws PortalException, SystemException {
|
|
|
|
|
log.debug("getuserInfo for " + username);
|
|
|
|
|
String email = username+"@isti.cnr.it";
|
|
|
|
|
String fullName = username+" FULL";
|
|
|
|
|
String thumbnailURL = "images/Avatar_default.png";
|
|
|
|
|
String accountURL = "";
|
|
|
|
|
if (!isTesting) {
|
|
|
|
|
getUserVREs(username);
|
|
|
|
|
com.liferay.portal.model.UserModel user = UserLocalServiceUtil.getUserByScreenName(OrganizationsUtil.getCompany().getCompanyId(), username);
|
|
|
|
|
thumbnailURL = "/image/user_male_portrait?img_id="+user.getPortraitId();
|
|
|
|
|
fullName = user.getFirstName() + " " + user.getLastName();
|
|
|
|
|
email = user.getEmailAddress();
|
|
|
|
|
ThemeDisplay themeDisplay = (ThemeDisplay) this.getThreadLocalRequest().getSession().getAttribute(WebKeys.THEME_DISPLAY);
|
|
|
|
|
accountURL = themeDisplay.getURLMyAccount().toString();
|
|
|
|
|
}
|
|
|
|
|
return new UserInfo(username, fullName, thumbnailURL, email, accountURL, true, false, null);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param username
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private ArrayList<GroupModel> getUserVREs(String username) {
|
|
|
|
|
log.debug("getUserVREs for " + username);
|
|
|
|
|
ArrayList<GroupModel> toReturn = new ArrayList<GroupModel>();
|
|
|
|
|
com.liferay.portal.model.User currUser;
|
|
|
|
|
try {
|
|
|
|
|
GroupManager gm = new LiferayGroupManager();
|
|
|
|
|
currUser = OrganizationsUtil.validateUser(username);
|
|
|
|
|
|
|
|
|
|
for (Organization org : currUser.getOrganizations())
|
|
|
|
|
if (gm.isVRE(org.getOrganizationId()+"")) {
|
|
|
|
|
GroupModel toAdd = gm.getGroup(""+org.getOrganizationId());
|
|
|
|
|
toReturn.add(toAdd);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("Failed reading User VREs for : " + username);
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
return toReturn;
|
|
|
|
|
}
|
|
|
|
|
return toReturn;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @return the html representation of the report
|
|
|
|
|