ref 11724: SAI - Update to StorageHUB

https://support.d4science.org/issues/11724

Updated to StorageHub 

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@171791 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2018-10-01 15:42:41 +00:00
parent 443ead033c
commit 45fd539fa8
13 changed files with 458 additions and 105 deletions

View File

@ -1,15 +1,13 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.explorer;
import org.gcube.portal.clientcontext.client.GCubeClientContext;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.BinaryCodeSetEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.DeleteItemEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.MainCodeSetEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.resource.StatAlgoImporterResources;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.SessionExpiredType;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsGXT3;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.Constants;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectSupportBashEdit;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectSupportBlackBox;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
@ -22,9 +20,10 @@ import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.sencha.gxt.cell.core.client.ButtonCell.ButtonScale;
import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign;
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
@ -364,33 +363,59 @@ public class ExplorerProjectPanel extends ContentPanel {
}
private void openFile() {
if (selectedItem != null && !selectedItem.isFolder()) {
if (selectedItem != null) {
final ItemDescription itemDescription = new ItemDescription(selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(), selectedItem.getType().name());
if (selectedItem.isFolder()) {
StatAlgoImporterServiceAsync.INSTANCE.getPublicLink(itemDescription, new AsyncCallback<String>() {
StringBuilder url = new StringBuilder();
url.append(GWT.getModuleBaseURL());
url.append(Constants.DOWNLOAD_FOLDER_SERVLET + "?" + Constants.DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER
+ "=" + selectedItem.getId() + "&" + Constants.DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER
+ "=" + selectedItem.getName() + "&" + Constants.CURR_GROUP_ID + "="
+ GCubeClientContext.getCurrentContextId());
@Override
public void onFailure(Throwable caught) {
if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
} else {
Log.error("Error open file: " + caught.getLocalizedMessage());
UtilsGXT3.alert("Error", caught.getLocalizedMessage());
}
caught.printStackTrace();
Log.debug("Retrieved link: " + url);
Window.open(URL.encode(url.toString()), "_blank", "");
} else {
}
final ItemDescription itemDescription = new ItemDescription(selectedItem.getId(),
selectedItem.getName(), selectedItem.getOwner(), selectedItem.getPath(),
selectedItem.getType().name());
Log.debug("ItemDescription: " + itemDescription);
String currentContextId = GCubeClientContext.getCurrentContextId();
StringBuilder url = new StringBuilder();
url.append(GWT.getModuleBaseURL());
url.append(Constants.DOWNLOAD_FILE_SERVLET + "/" + itemDescription.getName() + "?itemId="
+ itemDescription.getId() + "&" + Constants.CURR_GROUP_ID + "=" + currentContextId);
@Override
public void onSuccess(String link) {
Log.debug("Retrieved link: " + link);
Window.open(link, itemDescription.getName(), "");
}
Window.open(URL.encode(url.toString()), "_blank", "");
});
/*
* Used to fix the problem of the PortalContext that lost the
* scope
*/
/*
* StatAlgoImporterServiceAsync.INSTANCE.getPublicLink(
* itemDescription, new AsyncCallback<String>() {
*
* @Override public void onFailure(Throwable caught) { if
* (caught instanceof StatAlgoImporterSessionExpiredException) {
* eventBus.fireEvent(new
* SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER)); }
* else { Log.error("Error open file: " +
* caught.getLocalizedMessage()); UtilsGXT3.alert("Error",
* caught.getLocalizedMessage()); } caught.printStackTrace();
*
* }
*
* @Override public void onSuccess(String link) {
* Log.debug("Retrieved link: " + link); Window.open(link,
* itemDescription.getName(), ""); }
*
* });
*/
}
} else {
UtilsGXT3.info("Attention", "Select a file!");
}

View File

@ -0,0 +1,123 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.server;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.util.ServiceCredentials;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.Constants;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Download Servlet
*
* @author Giancarlo Panichi
*
*
*/
public class DownloadFileServlet extends HttpServlet {
private static final long serialVersionUID = 5389118370656932343L;
private static Logger logger = LoggerFactory.getLogger(DownloadFileServlet.class);
public DownloadFileServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
createResponse(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
createResponse(request, response);
}
private void createResponse(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
logger.debug("DownloadFileServlet()");
HttpSession session = req.getSession();
if (session == null) {
logger.error("Error getting the download session, no session valid found: " + session);
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
"ERROR-Error getting the user session, no session found" + session);
return;
}
logger.debug("DownloadFileServlet session id: " + session.getId());
String scopeGroupId = req.getHeader(Constants.CURR_GROUP_ID);
if (scopeGroupId == null || scopeGroupId.isEmpty()) {
scopeGroupId = req.getParameter(Constants.CURR_GROUP_ID);
if (scopeGroupId == null || scopeGroupId.isEmpty()) {
logger.error(
"CURR_GROUP_ID is null, it is a mandatory parameter in custom servlet: " + scopeGroupId);
throw new ServletException(
"CURR_GROUP_ID is null, it is a mandatory parameter in custom servlet: " + scopeGroupId);
}
}
String itemId = req.getParameter("itemId");
logger.info("DownloadFileServlet(): [scopeGroupId=" + scopeGroupId + ",ItemId=" + itemId + "]");
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(req, scopeGroupId);
FilesStorage filesStorage = new FilesStorage();
ItemDescription itemDescription = filesStorage.getFileInfoOnWorkspace(serviceCredentials.getUserName(),
itemId);
logger.debug("Item retrieved: " + itemDescription);
InputStream inputStream = filesStorage.getFileOnWorkspace(serviceCredentials.getUserName(), itemId);
resp.setHeader("Content-Disposition:", "attachment;filename=\"" + itemDescription.getName() + "\"");
resp.setHeader("Content-Type", "application/force-download");
resp.setHeader("Content-Length", itemDescription.getLenght());
stream(inputStream, resp.getOutputStream());
} catch (StatAlgoImporterServiceException e) {
logger.error("DownloadFileServlet():"+e.getLocalizedMessage(), e);
throw new ServletException(e.getLocalizedMessage(), e);
} catch (Throwable e) {
logger.error("DownloadFileServlet(): " + e.getLocalizedMessage(), e);
throw new ServletException("Download:" + e.getLocalizedMessage(), e);
}
}
private long stream(InputStream input, OutputStream output) throws IOException {
try (ReadableByteChannel inputChannel = Channels.newChannel(input);
WritableByteChannel outputChannel = Channels.newChannel(output);) {
ByteBuffer buffer = ByteBuffer.allocateDirect(10240);
long size = 0;
while (inputChannel.read(buffer) != -1) {
buffer.flip();
size += outputChannel.write(buffer);
buffer.clear();
}
return size;
}
}
}

View File

@ -0,0 +1,111 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.server;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.io.IOUtils;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.util.ServiceCredentials;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
* Download Folder Servlet
*
*/
public class DownloadFolderServlet extends HttpServlet {
private static final long serialVersionUID = -1838255772767180518L;
private static Logger logger = LoggerFactory.getLogger(DownloadFolderServlet.class);
public DownloadFolderServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
createResponse(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
createResponse(request, response);
}
private void createResponse(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
logger.debug("DownloadFolderServlet");
HttpSession session = request.getSession();
if (session == null) {
logger.error("Error getting the session, no session valid found: " + session);
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
"ERROR-Error getting the user session, no session found " + session);
return;
}
logger.debug("DownloadFolderServlet session id: " + session.getId());
ServiceCredentials serviceCredentials;
String scopeGroupId = request.getHeader(Constants.CURR_GROUP_ID);
if (scopeGroupId == null || scopeGroupId.isEmpty()) {
scopeGroupId = request.getParameter(Constants.CURR_GROUP_ID);
if (scopeGroupId == null || scopeGroupId.isEmpty()) {
logger.error(
"CURR_GROUP_ID is null, it is a mandatory parameter in custom servlet: " + scopeGroupId);
throw new ServletException(
"CURR_GROUP_ID is null, it is a mandatory parameter in custom servlet: " + scopeGroupId);
}
}
serviceCredentials = SessionUtil.getServiceCredentials(request, scopeGroupId);
String itemId = request.getParameter(Constants.DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER);
String folderName = request.getParameter(Constants.DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER);
logger.debug("Request: [itemId=" + itemId + ", folderName=" + folderName + "]");
FilesStorage filesStorage = new FilesStorage();
File tmpZip = filesStorage.zipFolder(serviceCredentials.getUserName(), itemId);
response.setHeader("Content-Disposition", "attachment; filename=\"" + folderName + ".zip\"");
response.setContentType("application/zip");
response.setHeader("Content-Length", String.valueOf(tmpZip.length()));
try (OutputStream out = response.getOutputStream();FileInputStream fileTmpZip = new FileInputStream(tmpZip)){
IOUtils.copy(fileTmpZip, response.getOutputStream());
}
Files.delete(tmpZip.toPath());
return;
} catch (Throwable e) {
logger.error("Error in DownloadFolderServlet: " + e.getLocalizedMessage(), e);
throw new ServletException("Download:" + e.getLocalizedMessage(), e);
}
}
}

View File

@ -50,7 +50,7 @@ public class WPS4RParser {
logger.debug("MainCode: " + project.getMainCode());
ItemDescription mainCode = project.getMainCode().getItemDescription();
FilesStorage fileStorage = new FilesStorage();
InputStream is = fileStorage.retrieveItemOnWorkspace(serviceCredentials.getUserName(), mainCode.getId());
InputStream is = fileStorage.getFileOnWorkspace(serviceCredentials.getUserName(), mainCode.getId());
logger.debug("MainCode InputStream: " + is);
Path tempFile = null;

View File

@ -117,7 +117,7 @@ public class CodeReader {
code = new ArrayList<CodeData>();
FilesStorage filesStorage = new FilesStorage();
InputStream is = filesStorage.retrieveItemOnWorkspace(serviceCredentials.getUserName(), itemId);
InputStream is = filesStorage.getFileOnWorkspace(serviceCredentials.getUserName(), itemId);
InputStreamReader isr = new InputStreamReader(is);

View File

@ -259,7 +259,7 @@ public class InfoGenerator {
public InfoData readInfo() throws StatAlgoImporterServiceException {
ItemDescription infoItem = project.getProjectTarget().getProjectCompile().getIntegrationInfo();
FilesStorage filesStorage = new FilesStorage();
InputStream inputStream = filesStorage.retrieveItemOnWorkspace(serviceCredentials.getUserName(),
InputStream inputStream = filesStorage.getFileOnWorkspace(serviceCredentials.getUserName(),
infoItem.getId());
Reader inputReader = new InputStreamReader(inputStream);
BufferedReader br = new BufferedReader(inputReader);

View File

@ -183,26 +183,26 @@ public class ProjectBuilder {
filesStorage.saveInputStreamInItem(serviceCredentials.getUserName(),
project.getProjectTarget().getProjectDeploy().getPackageProject().getId(), inputStream);
ItemDescription packageProjectItemDescription = filesStorage.retrieveItemInfoOnWorkspace(
ItemDescription packageProjectItemDescription = filesStorage.getFileInfoOnWorkspace(
serviceCredentials.getUserName(),
project.getProjectTarget().getProjectDeploy().getPackageProject().getId());
String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(),
project.getProjectTarget().getProjectDeploy().getPackageProject().getId());
packageProjectItemDescription.setPublicLink(pLink);
project.getProjectTarget().getProjectDeploy().setPackageProject(packageProjectItemDescription);
logger.debug("ProjectDeploy: " + project.getProjectTarget().getProjectDeploy());
try {
inputStream.close();
} catch (IOException e) {
logger.error("Error in input stream close: " + e.getLocalizedMessage(), e);
}
if(projectPackageFile!=null&&projectPackageFile.exists()){
if (projectPackageFile != null && projectPackageFile.exists()) {
projectPackageFile.delete();
}
}
private void createBackupOfPackageProject() throws StatAlgoImporterServiceException {
@ -454,18 +454,17 @@ public class ProjectBuilder {
logger.debug("ProjectPackageItem:" + packageUrl);
project.getProjectTarget().getProjectDeploy().setPackageProject(packageUrl);
try {
inputStream.close();
} catch (IOException e) {
logger.error("Error in input stream close: " + e.getLocalizedMessage(), e);
}
if(projectPackageFile!=null&&projectPackageFile.exists()){
if (projectPackageFile != null && projectPackageFile.exists()) {
projectPackageFile.delete();
}
}
private void createTargetFolder() throws StatAlgoImporterServiceException {
@ -637,7 +636,6 @@ public class ProjectBuilder {
FilesStorage filesStorage = new FilesStorage();
ItemDescription codeJarItemDescription;
try {
codeJarItemDescription = filesStorage.createItemOnWorkspace(serviceCredentials.getUserName(),

View File

@ -439,7 +439,7 @@ public class FilesStorage {
* Exception
*
*/
public InputStream retrieveProjectItemOnWorkspace(String user, String folderId)
public InputStream getProjectItemOnWorkspace(String user, String folderId)
throws StatAlgoImporterServiceException {
try {
logger.info("Retrieve project item on workspace: [user=" + user + ", folderId=" + folderId + "]");
@ -456,9 +456,9 @@ public class FilesStorage {
ItemContainer<? extends Item> itemContainer = itemsContainer.get(0);
logger.debug("ItemContainer: " + itemContainer);
if (itemContainer != null) {
logger.debug("Item Id: "+itemContainer.get().getId());
logger.debug("Item Id: " + itemContainer.get().getId());
StreamDescriptor streamDescr = itemContainer.download();
logger.debug("Stream Descriptor: "+streamDescr);
logger.debug("Stream Descriptor: " + streamDescr);
return streamDescr.getStream();
} else {
logger.debug("No project found in this folder!");
@ -521,19 +521,17 @@ public class FilesStorage {
* @throws StatAlgoImporterServiceException
* Exception
*/
public ItemDescription retrieveItemInfoOnWorkspace(String user, String itemId)
public ItemDescription getItemInfoOnWorkspace(String user, String itemId)
throws StatAlgoImporterServiceException {
try {
logger.info("Retrieve item info on workspace: [user=" + user + ", itemId=" + itemId + "]");
StorageHubClient shc = new StorageHubClient();
OpenResolver openResolver = shc.open(itemId);
FileContainer fileContainer = openResolver.asFile();
AbstractFileItem item = fileContainer.get();
ItemContainer<Item> fileContainer = openResolver.asItem();
Item item = fileContainer.get();
ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(), item.getOwner(),
item.getPath(), item.getClass().getSimpleName());
itemDescription.setPublicLink(fileContainer.getPublicLink().toString());
return itemDescription;
} catch (Throwable e) {
@ -542,6 +540,36 @@ public class FilesStorage {
}
}
/**
*
* @param user
* User
* @param itemId
* Item id
* @return Input stream
* @throws StatAlgoImporterServiceException
* Excetpion
*/
public InputStream getItemOnWorkspace(String user, String itemId) throws StatAlgoImporterServiceException {
try {
logger.info("Get item on workspace: [user=" + user + ", itemId=" + itemId + "]");
StorageHubClient shc = new StorageHubClient();
StreamDescriptor streamDescr = shc.open(itemId).asItem().download();
InputStream is = streamDescr.getStream();
return is;
} catch (Throwable e) {
logger.error("Get item on workspace: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
}
/**
*
* @param user
@ -552,7 +580,40 @@ public class FilesStorage {
* @throws StatAlgoImporterServiceException
* Exception
*/
public ItemDescription retrieveFolderInfoOnWorkspace(String user, String itemId)
public ItemDescription getFileInfoOnWorkspace(String user, String itemId)
throws StatAlgoImporterServiceException {
try {
logger.info("Retrieve file info on workspace: [user=" + user + ", itemId=" + itemId + "]");
StorageHubClient shc = new StorageHubClient();
OpenResolver openResolver = shc.open(itemId);
FileContainer fileContainer = openResolver.asFile();
AbstractFileItem item = fileContainer.get();
ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(), item.getOwner(),
item.getPath(), item.getClass().getSimpleName());
itemDescription.setMimeType(item.getContent().getMimeType());
itemDescription.setLenght(String.valueOf(item.getContent().getSize()));
return itemDescription;
} catch (Throwable e) {
logger.error("Retrieve file info on workspace: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
}
/**
*
* @param user
* User
* @param itemId
* Item id
* @return Item description
* @throws StatAlgoImporterServiceException
* Exception
*/
public ItemDescription getFolderInfoOnWorkspace(String user, String itemId)
throws StatAlgoImporterServiceException {
try {
@ -582,10 +643,10 @@ public class FilesStorage {
* @throws StatAlgoImporterServiceException
* Excetpion
*/
public InputStream retrieveItemOnWorkspace(String user, String itemId) throws StatAlgoImporterServiceException {
public InputStream getFileOnWorkspace(String user, String itemId) throws StatAlgoImporterServiceException {
try {
logger.info("Retrieve item on workspace: [user=" + user + ", itemId=" + itemId + "]");
logger.info("Retrieve file on workspace: [user=" + user + ", itemId=" + itemId + "]");
StorageHubClient shc = new StorageHubClient();
@ -595,7 +656,7 @@ public class FilesStorage {
return is;
} catch (Throwable e) {
logger.error("Retieve item on workspace: " + e.getLocalizedMessage(), e);
logger.error("Retieve file on workspace: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}

View File

@ -23,8 +23,7 @@ import org.slf4j.LoggerFactory;
*/
public class ProjectArchiver {
public static final Logger logger = LoggerFactory
.getLogger(ProjectArchiver.class);
public static final Logger logger = LoggerFactory.getLogger(ProjectArchiver.class);
public static void archive(Project project, ServiceCredentials serviceCredentials)
throws StatAlgoImporterServiceException {
@ -35,56 +34,48 @@ public class ProjectArchiver {
xmlEncoder.close();
logger.debug("Archived:" + byteArrayOutputStream);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
byteArrayOutputStream.toByteArray());
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
FilesStorage filesStorage = new FilesStorage();
filesStorage.saveStatisticalAlgorithmProject(serviceCredentials.getUserName(),
byteArrayInputStream, project.getProjectFolder()
.getFolder().getId());
filesStorage.saveStatisticalAlgorithmProject(serviceCredentials.getUserName(), byteArrayInputStream,
project.getProjectFolder().getFolder().getId());
}
public static boolean existProjectInFolder(
ItemDescription newProjectFolder, ServiceCredentials serviceCredentials)
public static boolean existProjectInFolder(ItemDescription newProjectFolder, ServiceCredentials serviceCredentials)
throws StatAlgoImporterServiceException {
FilesStorage filesStorage = new FilesStorage();
return filesStorage.existProjectItemOnWorkspace(
serviceCredentials.getUserName(), newProjectFolder.getId());
return filesStorage.existProjectItemOnWorkspace(serviceCredentials.getUserName(), newProjectFolder.getId());
}
public static Project readProject(ItemDescription newProjectFolder,
ServiceCredentials serviceCredentials) throws StatAlgoImporterServiceException {
public static Project readProject(ItemDescription newProjectFolder, ServiceCredentials serviceCredentials)
throws StatAlgoImporterServiceException {
FilesStorage filesStorage = new FilesStorage();
InputStream inputStream = filesStorage.retrieveProjectItemOnWorkspace(
serviceCredentials.getUserName(), newProjectFolder.getId());
InputStream inputStream = filesStorage.getProjectItemOnWorkspace(serviceCredentials.getUserName(),
newProjectFolder.getId());
XMLDecoder xmlDecoder = new XMLDecoder(inputStream);
Project project = (Project) xmlDecoder.readObject();
xmlDecoder.close();
newProjectFolder = filesStorage
.retrieveFolderInfoOnWorkspace(serviceCredentials.getUserName(),
newProjectFolder.getId());
if (project != null
&& project.getProjectFolder() != null
&& newProjectFolder.compareInfo(project.getProjectFolder()
.getFolder())) {
newProjectFolder = filesStorage.getFolderInfoOnWorkspace(serviceCredentials.getUserName(),
newProjectFolder.getId());
if (project != null && project.getProjectFolder() != null
&& newProjectFolder.compareInfo(project.getProjectFolder().getFolder())) {
} else {
project.setProjectFolder(new ProjectFolder(newProjectFolder));
archive(project, serviceCredentials);
}
if (project != null && project.getMainCode() != null
&& project.getMainCode().getItemDescription() != null) {
ItemDescription newMainCodeItemDescription = filesStorage
.retrieveItemInfoOnWorkspace(serviceCredentials.getUserName(),
project.getMainCode().getItemDescription().getId());
if (newMainCodeItemDescription.compareInfo(project.getMainCode()
.getItemDescription())) {
if (project != null && project.getMainCode() != null && project.getMainCode().getItemDescription() != null) {
ItemDescription newMainCodeItemDescription = filesStorage.getFileInfoOnWorkspace(
serviceCredentials.getUserName(), project.getMainCode().getItemDescription().getId());
String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(),
project.getMainCode().getItemDescription().getId());
newMainCodeItemDescription.setPublicLink(pLink);
if (newMainCodeItemDescription.compareInfo(project.getMainCode().getItemDescription())) {
} else {
project.setMainCode(new MainCode(newMainCodeItemDescription));
archive(project, serviceCredentials);

View File

@ -135,7 +135,7 @@ public class ServiceCredentials implements Serializable {
+ fullName + ", name=" + name + ", lastName=" + lastName
+ ", email=" + email + ", scope=" + scope + ", groupId="
+ groupId + ", groupName=" + groupName + ", userAvatarURL="
+ userAvatarURL + ", token=" + token + "]";
+ userAvatarURL + "]";
}
}

View File

@ -27,14 +27,21 @@ public class Constants {
// Session
public static final String CURR_GROUP_ID = "CURR_GROUP_ID";
public static final String CURR_USER_ID = "CURR_USER_ID";
// Download
public static final String DOWNLOAD_FILE_SERVLET = "DownloadFileServlet";
public static final String DOWNLOAD_FOLDER_SERVLET = "DownloadFolderServlet";
public static final String DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER = "itemId";
public static final String DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER = "folderName";
// Upload
public static final String LOCAL_UPLOAD_SERVLET = "LocalUploadServlet";
// IS Resource
public static final String SAI_NAME = "SAIProfile";
public static final String SAI_CATEGORY = "SAI";
public static final String SOCIAL_NETWORKING_NAME = "SocialNetworking";
public static final String SOCIAL_NETWORKING_CLASS = "Portal";
@ -44,9 +51,8 @@ public class Constants {
// Main Generator
public static final String PRE_INSTALLED = "Pre-Installed";
public static final String REMOTE_TEMPLATE_FILE = "http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-analysis/RConfiguration/RD4SFunctions/SAITemplateForExternalInvocation.R";
// DataMiner Pool Manager
public static final int CLIENT_MONITOR_PERIODMILLIS = 2000;
}

View File

@ -18,13 +18,14 @@ public class ItemDescription implements Serializable {
private String path;
private String type;
private String publicLink;
private String mimeType;
private String lenght;
public ItemDescription() {
super();
}
public ItemDescription(String id, String name, String owner, String path,
String type) {
public ItemDescription(String id, String name, String owner, String path, String type) {
super();
this.id = id;
this.name = name;
@ -81,21 +82,35 @@ public class ItemDescription implements Serializable {
this.publicLink = publicLink;
}
public boolean compareInfo(ItemDescription itemDescription){
if(itemDescription!=null && id.compareTo(itemDescription.getId())==0){
public String getMimeType() {
return mimeType;
}
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
public String getLenght() {
return lenght;
}
public void setLenght(String lenght) {
this.lenght = lenght;
}
public boolean compareInfo(ItemDescription itemDescription) {
if (itemDescription != null && id.compareTo(itemDescription.getId()) == 0) {
return true;
} else {
return false;
}
}
@Override
public String toString() {
return "ItemDescription [id=" + id + ", name=" + name + ", owner="
+ owner + ", path=" + path + ", type=" + type + ", publicLink="
+ publicLink + "]";
return "ItemDescription [id=" + id + ", name=" + name + ", owner=" + owner + ", path=" + path + ", type=" + type
+ ", publicLink=" + publicLink + ", mimeType=" + mimeType + ", lenght=" + lenght + "]";
}
}

View File

@ -24,6 +24,18 @@
<servlet-class>org.gcube.portlets.user.statisticalalgorithmsimporter.server.LocalUploadServlet</servlet-class>
</servlet>
<!-- Download -->
<servlet>
<servlet-name>DownloadFileServlet</servlet-name>
<servlet-class>org.gcube.portlets.user.statisticalalgorithmsimporter.server.DownloadFileServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>DownloadFolderServlet</servlet-name>
<servlet-class>org.gcube.portlets.user.statisticalalgorithmsimporter.server.DownloadFolderServlet</servlet-class>
</servlet>
<!-- Workspace Explorer -->
<servlet>
<servlet-name>workspaceExplorer</servlet-name>
@ -40,13 +52,13 @@
<servlet-name>workspaceUploadServletStream</servlet-name>
<servlet-class>org.gcube.portlets.widgets.workspaceuploader.server.WorkspaceUploadServletStream</servlet-class>
</servlet>
<!-- -->
<!-- -->
<servlet>
<servlet-name>GitHubConnectorServlet</servlet-name>
<servlet-class>org.gcube.portlets.widgets.githubconnector.server.GitHubConnectorServiceImpl</servlet-class>
</servlet>
<!-- Servlets Mapping -->
@ -63,11 +75,22 @@
<url-pattern>/statalgoimporter/statalgoimporterservice</url-pattern>
</servlet-mapping>
<!-- Local Upload -->
<!-- Upload -->
<servlet-mapping>
<servlet-name>LocalUploadServlet</servlet-name>
<url-pattern>/statalgoimporter/LocalUploadServlet</url-pattern>
</servlet-mapping>
<!-- Download -->
<servlet-mapping>
<servlet-name>DownloadFileServlet</servlet-name>
<url-pattern>/statalgoimporter/DownloadFileServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DownloadFolderServlet</servlet-name>
<url-pattern>/statalgoimporter/DownloadFolderServlet</url-pattern>
</servlet-mapping>
<!-- Workspace Explorer -->
<servlet-mapping>
@ -86,14 +109,14 @@
<servlet-name>workspaceUploadServletStream</servlet-name>
<url-pattern>/statalgoimporter/workspaceUploadServletStream</url-pattern>
</servlet-mapping>
<!-- Github Connector -->
<servlet-mapping>
<servlet-name>GitHubConnectorServlet</servlet-name>
<url-pattern>/statalgoimporter/githubconnectorservice</url-pattern>
</servlet-mapping>
<!-- Default page to serve -->
<welcome-file-list>