332: WS: Generate workspace Public Link with SMP-ID
Task-Url: https://support.d4science.org/issues/332 Updated code to generate public links by SMP-ID git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@115813 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
f1ecb642b0
commit
3b09a96e09
|
@ -44,7 +44,7 @@ import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Federico De Faveri defaveri@isti.cnr.it
|
* @author Federico De Faveri defaveri@isti.cnr.it
|
||||||
*
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
*/
|
*/
|
||||||
public class DownloadServlet extends HttpServlet{
|
public class DownloadServlet extends HttpServlet{
|
||||||
|
|
||||||
|
@ -61,26 +61,20 @@ public class DownloadServlet extends HttpServlet{
|
||||||
logger.trace("Workspace DownloadServlet ready.");
|
logger.trace("Workspace DownloadServlet ready.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
|
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
|
||||||
|
|
||||||
String itemId = req.getParameter("id");
|
String itemId = req.getParameter("id");
|
||||||
boolean viewContent = (req.getParameter("viewContent")==null)?false:req.getParameter("viewContent").equals("true");
|
boolean viewContent = (req.getParameter("viewContent")==null)?false:req.getParameter("viewContent").equals("true");
|
||||||
boolean isValidItem = (req.getParameter(ConstantsExplorer.VALIDATEITEM)==null)?false:req.getParameter(ConstantsExplorer.VALIDATEITEM).equals("true");
|
boolean isValidItem = (req.getParameter(ConstantsExplorer.VALIDATEITEM)==null)?false:req.getParameter(ConstantsExplorer.VALIDATEITEM).equals("true");
|
||||||
boolean urlRedirectOnError = (req.getParameter(ConstantsExplorer.REDIRECTONERROR)==null)?false:req.getParameter(ConstantsExplorer.REDIRECTONERROR).equals("true");
|
boolean urlRedirectOnError = (req.getParameter(ConstantsExplorer.REDIRECTONERROR)==null)?false:req.getParameter(ConstantsExplorer.REDIRECTONERROR).equals("true");
|
||||||
|
|
||||||
|
|
||||||
logger.trace("Input Params [id: "+itemId + ", viewContent: "+viewContent+", "+ConstantsExplorer.VALIDATEITEM +": " +isValidItem+", urlRedirectOnError:" +urlRedirectOnError+"]");
|
logger.trace("Input Params [id: "+itemId + ", viewContent: "+viewContent+", "+ConstantsExplorer.VALIDATEITEM +": " +isValidItem+", urlRedirectOnError:" +urlRedirectOnError+"]");
|
||||||
|
|
||||||
if(itemId==null || itemId.isEmpty()){
|
if(itemId==null || itemId.isEmpty()){
|
||||||
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Item id is null");
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Item id is null");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.trace("FILE DOWNLOAD REQUEST "+itemId);
|
logger.trace("FILE DOWNLOAD REQUEST "+itemId);
|
||||||
|
|
||||||
Workspace wa = null;
|
Workspace wa = null;
|
||||||
try {
|
try {
|
||||||
//ADDED 13-01-2014 SESSION VALIDATION
|
//ADDED 13-01-2014 SESSION VALIDATION
|
||||||
|
@ -97,13 +91,11 @@ public class DownloadServlet extends HttpServlet{
|
||||||
}
|
}
|
||||||
|
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during workspace retrieving");
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during workspace retrieving");
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during workspace retrieving");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wa == null) {
|
if (wa == null) {
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error, no workspace in session");
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error, no workspace in session");
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error, no workspace in session");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +103,6 @@ public class DownloadServlet extends HttpServlet{
|
||||||
try {
|
try {
|
||||||
|
|
||||||
item = wa.getItem(itemId);
|
item = wa.getItem(itemId);
|
||||||
|
|
||||||
if(isValidItem){ //ADDED 25/06/2013 - THIS CODE RETURN A SC_ACCEPT IS ITEM EXIST
|
if(isValidItem){ //ADDED 25/06/2013 - THIS CODE RETURN A SC_ACCEPT IS ITEM EXIST
|
||||||
String message = HttpServletResponse.SC_ACCEPTED+ ": The resource is available";
|
String message = HttpServletResponse.SC_ACCEPTED+ ": The resource is available";
|
||||||
sendMessageResourceAvailable(resp, message);
|
sendMessageResourceAvailable(resp, message);
|
||||||
|
@ -121,18 +112,14 @@ public class DownloadServlet extends HttpServlet{
|
||||||
|
|
||||||
try{
|
try{
|
||||||
//ACCOUNTING
|
//ACCOUNTING
|
||||||
item.markAsRead(true);
|
item.markAsRead(true);
|
||||||
|
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Requested item "+itemId+" has thrown an internal error exception",e);
|
logger.error("Requested item "+itemId+" has thrown an internal error exception",e);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (ItemNotFoundException e) {
|
} catch (ItemNotFoundException e) {
|
||||||
logger.error("Requested item "+itemId+" not found",e);
|
logger.error("Requested item "+itemId+" not found",e);
|
||||||
// sendError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error, no items found");
|
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": The file has been deleted by another user.");
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": The file has been deleted by another user.");
|
||||||
// sendError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": "+ConstantsExplorer.ERROR_ITEM_DOES_NOT_EXIST);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -717,7 +717,7 @@ public class GWTWorkspaceBuilder {
|
||||||
*
|
*
|
||||||
* @param listSearchItems the list search items
|
* @param listSearchItems the list search items
|
||||||
* @return the list
|
* @return the list
|
||||||
* @throws InternalErrorException the internal error exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
public List<FileGridModel> buildGXTListFileGridModelItemForSearch(List<SearchItem> listSearchItems) throws Exception {
|
public List<FileGridModel> buildGXTListFileGridModelItemForSearch(List<SearchItem> listSearchItems) throws Exception {
|
||||||
List<FileGridModel> listFileGridModel = new ArrayList<FileGridModel>();
|
List<FileGridModel> listFileGridModel = new ArrayList<FileGridModel>();
|
||||||
|
@ -733,7 +733,7 @@ public class GWTWorkspaceBuilder {
|
||||||
* @param item the item
|
* @param item the item
|
||||||
* @param parentFileModel the parent file model
|
* @param parentFileModel the parent file model
|
||||||
* @return the file grid model
|
* @return the file grid model
|
||||||
* @throws InternalErrorException the internal error exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
private FileGridModel buildGXTFileGridModelItemForSearch(SearchItem item, FileModel parentFileModel) throws Exception{
|
private FileGridModel buildGXTFileGridModelItemForSearch(SearchItem item, FileModel parentFileModel) throws Exception{
|
||||||
|
|
||||||
|
@ -1073,7 +1073,7 @@ public class GWTWorkspaceBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the publi link for folder item.
|
* Gets the public link for folder item.
|
||||||
*
|
*
|
||||||
* @param worspaceFolderItem the worspace folder item
|
* @param worspaceFolderItem the worspace folder item
|
||||||
* @return the publi link for folder item
|
* @return the publi link for folder item
|
||||||
|
@ -1124,6 +1124,61 @@ public class GWTWorkspaceBuilder {
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the storage id for folder item.
|
||||||
|
*
|
||||||
|
* @param worspaceFolderItem the worspace folder item
|
||||||
|
* @return the storage id for folder item
|
||||||
|
* @throws InternalErrorException the internal error exception
|
||||||
|
*/
|
||||||
|
public String getStorageIDForFolderItem(FolderItem worspaceFolderItem) throws InternalErrorException{
|
||||||
|
|
||||||
|
if(worspaceFolderItem==null)
|
||||||
|
return "";
|
||||||
|
|
||||||
|
try{
|
||||||
|
switch(worspaceFolderItem.getFolderItemType()){
|
||||||
|
case EXTERNAL_IMAGE:
|
||||||
|
return ((ExternalImage) worspaceFolderItem).getStorageID();
|
||||||
|
case EXTERNAL_FILE:
|
||||||
|
return ((ExternalFile) worspaceFolderItem).getStorageID();
|
||||||
|
case EXTERNAL_PDF_FILE:
|
||||||
|
return ((ExternalPDFFile) worspaceFolderItem).getStorageID();
|
||||||
|
case EXTERNAL_URL:
|
||||||
|
break;
|
||||||
|
case REPORT_TEMPLATE:
|
||||||
|
break;
|
||||||
|
case REPORT:
|
||||||
|
break;
|
||||||
|
case QUERY:
|
||||||
|
break;
|
||||||
|
case TIME_SERIES:
|
||||||
|
break;
|
||||||
|
case PDF_DOCUMENT:
|
||||||
|
break;
|
||||||
|
case IMAGE_DOCUMENT:
|
||||||
|
GCubeItem imgDoc = (GCubeItem) worspaceFolderItem; //Cast GCubeItem
|
||||||
|
return imgDoc.getStorageID();
|
||||||
|
case DOCUMENT:
|
||||||
|
break;
|
||||||
|
case URL_DOCUMENT:
|
||||||
|
break;
|
||||||
|
case METADATA:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
}catch (Exception e) {
|
||||||
|
logger.error("an error occurred when get public link for item: "+worspaceFolderItem.getName());
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the gxt folder model item.
|
* Builds the gxt folder model item.
|
||||||
|
@ -1297,7 +1352,7 @@ public class GWTWorkspaceBuilder {
|
||||||
* @param listSearchItem the list search item
|
* @param listSearchItem the list search item
|
||||||
* @param category the category
|
* @param category the category
|
||||||
* @return the list
|
* @return the list
|
||||||
* @throws InternalErrorException the internal error exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
public List<FileGridModel> filterListFileGridModelItemByCategory(List<SearchItem> listSearchItem, String category) throws Exception {
|
public List<FileGridModel> filterListFileGridModelItemByCategory(List<SearchItem> listSearchItem, String category) throws Exception {
|
||||||
|
|
||||||
|
@ -1317,7 +1372,7 @@ public class GWTWorkspaceBuilder {
|
||||||
*
|
*
|
||||||
* @param listWorkspaceSmartFolder the list workspace smart folder
|
* @param listWorkspaceSmartFolder the list workspace smart folder
|
||||||
* @return the list
|
* @return the list
|
||||||
* @throws InternalErrorException the internal error exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
public List<SmartFolderModel> buildGXTListSmartFolderModel(List<WorkspaceSmartFolder> listWorkspaceSmartFolder) throws Exception {
|
public List<SmartFolderModel> buildGXTListSmartFolderModel(List<WorkspaceSmartFolder> listWorkspaceSmartFolder) throws Exception {
|
||||||
List<SmartFolderModel> listSmartFolder = new ArrayList<SmartFolderModel>();
|
List<SmartFolderModel> listSmartFolder = new ArrayList<SmartFolderModel>();
|
||||||
|
@ -1335,7 +1390,7 @@ public class GWTWorkspaceBuilder {
|
||||||
* @param wsFolder the ws folder
|
* @param wsFolder the ws folder
|
||||||
* @param query the query
|
* @param query the query
|
||||||
* @return the smart folder model
|
* @return the smart folder model
|
||||||
* @throws InternalErrorException the internal error exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
public SmartFolderModel buildGXTSmartFolderModel(WorkspaceSmartFolder wsFolder, String query) throws Exception {
|
public SmartFolderModel buildGXTSmartFolderModel(WorkspaceSmartFolder wsFolder, String query) throws Exception {
|
||||||
|
|
||||||
|
|
|
@ -2579,35 +2579,30 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
public String getPublicLinkForFolderItemId(String itemId, boolean shortenUrl) throws Exception{
|
public String getPublicLinkForFolderItemId(String itemId, boolean shortenUrl) throws Exception{
|
||||||
|
|
||||||
workspaceLogger.trace("get Public Link For ItemId: "+ itemId);
|
workspaceLogger.trace("get Public Link For ItemId: "+ itemId);
|
||||||
|
|
||||||
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
|
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
|
||||||
|
|
||||||
try{
|
try{
|
||||||
|
|
||||||
Workspace workspace = getWorkspace();
|
Workspace workspace = getWorkspace();
|
||||||
|
|
||||||
WorkspaceItem wsItem = workspace.getItem(itemId);
|
WorkspaceItem wsItem = workspace.getItem(itemId);
|
||||||
|
|
||||||
if(wsItem.getType().equals(WorkspaceItemType.FOLDER_ITEM)){
|
if(wsItem.getType().equals(WorkspaceItemType.FOLDER_ITEM)){
|
||||||
|
|
||||||
FolderItem folderItem = (FolderItem) wsItem;
|
FolderItem folderItem = (FolderItem) wsItem;
|
||||||
String smpUri = builder.getPublicLinkForFolderItem(folderItem);
|
String storageID = builder.getStorageIDForFolderItem(folderItem);
|
||||||
|
|
||||||
if(smpUri==null || smpUri.isEmpty())
|
if(storageID==null || storageID.isEmpty())
|
||||||
throw new Exception("Sorry, public link on "+wsItem.getName() +" is not available");
|
throw new Exception("Sorry, public link on "+wsItem.getName() +" is not available");
|
||||||
|
|
||||||
UriResolverReaderParameter uriResolver = getUriResolver();
|
UriResolverReaderParameter uriResolver = getUriResolver();
|
||||||
|
|
||||||
String uriRequest = "";
|
String uriRequest = "";
|
||||||
|
|
||||||
if(uriResolver!=null && uriResolver.isAvailable()){
|
if(uriResolver!=null && uriResolver.isAvailable()){
|
||||||
|
|
||||||
String itemName = StringUtil.removeSpecialCharacters(folderItem.getName());
|
String itemName = StringUtil.removeSpecialCharacters(folderItem.getName());
|
||||||
|
|
||||||
itemName = StringUtil.replaceAllWhiteSpace(itemName, "_");
|
itemName = StringUtil.replaceAllWhiteSpace(itemName, "_");
|
||||||
uriRequest = uriResolver.resolveAsUriRequest(smpUri, itemName, folderItem.getMimeType(), true);
|
uriRequest = uriResolver.resolveAsUriRequest(storageID, itemName, folderItem.getMimeType(), true);
|
||||||
|
|
||||||
|
|
||||||
//VALIDATE CONNECTION
|
//VALIDATE CONNECTION
|
||||||
if(!HttpRequestUtil.urlExists(uriRequest+"&validation=true"))
|
if(!HttpRequestUtil.urlExists(uriRequest+"&validation=true"))
|
||||||
throw new Exception("Sorry, The Public Link for selected file is unavailable");
|
throw new Exception("Sorry, The Public Link for selected file is unavailable");
|
||||||
|
@ -2616,13 +2611,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
uriRequest = getShortUrl(uriRequest);
|
uriRequest = getShortUrl(uriRequest);
|
||||||
|
|
||||||
return uriRequest;
|
return uriRequest;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw new Exception("Sorry, The Uri resolver service is temporarily unavailable. Please try again later");
|
throw new Exception("Sorry, The Uri resolver service is temporarily unavailable. Please try again later");
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
workspaceLogger.warn("ItemId: "+ itemId +" is not a folder item, sent exception Public Link unavailable");
|
workspaceLogger.warn("ItemId: "+ itemId +" is not a folder item, sent exception Public Link unavailable");
|
||||||
throw new Exception("Sorry, The Public Link for selected file is unavailable");
|
throw new Exception("Sorry, The Public Link for selected file is unavailable");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,16 +35,12 @@ public class UriResolverReaderParameter {
|
||||||
private String baseUri = "";
|
private String baseUri = "";
|
||||||
|
|
||||||
//Query URL parameter
|
//Query URL parameter
|
||||||
private String smpParameter = "";
|
private String storageIDParameter = "";
|
||||||
private String fileNameParameter = "";
|
private String fileNameParameter = "";
|
||||||
private String contentTypeParameter = "";
|
private String contentTypeParameter = "";
|
||||||
|
|
||||||
|
|
||||||
private String query = "";
|
private String query = "";
|
||||||
|
|
||||||
private boolean isAvailable = false;
|
private boolean isAvailable = false;
|
||||||
|
|
||||||
|
|
||||||
public static Logger logger = Logger.getLogger(UriResolverReaderParameter.class);
|
public static Logger logger = Logger.getLogger(UriResolverReaderParameter.class);
|
||||||
|
|
||||||
|
|
||||||
|
@ -72,15 +68,16 @@ public class UriResolverReaderParameter {
|
||||||
throw new Exception("No Resolver available");
|
throw new Exception("No Resolver available");
|
||||||
|
|
||||||
//Base Address
|
//Base Address
|
||||||
// System.out.println(endpoints.get(0).address());
|
|
||||||
|
//THE FIRST ACCESS POINT (endpoints.get(0)) IS SMP-URI, THE SECOND (endpoints.get(1)) IS SMP-ID
|
||||||
|
AccessPoint ap2 = endpoints.get(1);
|
||||||
|
baseUri = ap2!=null?endpoints.get(1).address():"";
|
||||||
|
|
||||||
baseUri = endpoints.get(0)!=null?endpoints.get(0).address():"";
|
if(ap2!=null){
|
||||||
|
|
||||||
if(endpoints.get(0)!=null){
|
|
||||||
|
|
||||||
smpParameter = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get("SMP_URI_parameter").value():"";
|
storageIDParameter = ap2.propertyMap()!=null?ap2.propertyMap().get("SMP_ID_parameter").value():"";
|
||||||
fileNameParameter = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get("fileName_parameter").value():"";
|
fileNameParameter = ap2.propertyMap()!=null?ap2.propertyMap().get("fileName_parameter").value():"";
|
||||||
contentTypeParameter = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get("contentType_parameter").value():"";
|
contentTypeParameter = ap2.propertyMap()!=null?ap2.propertyMap().get("contentType_parameter").value():"";
|
||||||
}
|
}
|
||||||
|
|
||||||
// uriRequest = uri+"?"+smpParameter;
|
// uriRequest = uri+"?"+smpParameter;
|
||||||
|
@ -116,7 +113,7 @@ public class UriResolverReaderParameter {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param smp
|
* @param storageID
|
||||||
* @param fileName
|
* @param fileName
|
||||||
* @param contentType
|
* @param contentType
|
||||||
* @param encodeParams - if true, translates a string into <code>application/x-www-form-urlencoded</code>
|
* @param encodeParams - if true, translates a string into <code>application/x-www-form-urlencoded</code>
|
||||||
|
@ -124,15 +121,13 @@ public class UriResolverReaderParameter {
|
||||||
* @return the http url to get file
|
* @return the http url to get file
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public String resolveAsUriRequest(String smp, String fileName, String contentType, boolean encodeParams) throws Exception{
|
public String resolveAsUriRequest(String storageID, String fileName, String contentType, boolean encodeParams) throws Exception{
|
||||||
|
|
||||||
if(smp==null || smp.isEmpty())
|
|
||||||
throw new Exception("smp url is null or empty");
|
|
||||||
|
|
||||||
|
if(storageID==null || storageID.isEmpty())
|
||||||
|
throw new Exception("storage ID is null or empty");
|
||||||
|
|
||||||
|
|
||||||
if(!encodeParams){ //ENCODE URI
|
if(!encodeParams){ //ENCODE URI
|
||||||
query = smpParameter+"="+smp;
|
query = storageIDParameter+"="+storageID;
|
||||||
|
|
||||||
if(fileName!=null && !fileName.isEmpty())
|
if(fileName!=null && !fileName.isEmpty())
|
||||||
query+="&"+fileNameParameter+"="+fileName;
|
query+="&"+fileNameParameter+"="+fileName;
|
||||||
|
@ -141,7 +136,7 @@ public class UriResolverReaderParameter {
|
||||||
query+="&"+contentTypeParameter+"="+contentType;
|
query+="&"+contentTypeParameter+"="+contentType;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Map<String, String> hashParameters = getHashParemeters(smp, fileName, contentType);
|
Map<String, String> hashParameters = getHashParemeters(storageID, fileName, contentType);
|
||||||
query = UrlEncoderUtil.encodeQuery(hashParameters);
|
query = UrlEncoderUtil.encodeQuery(hashParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,25 +147,23 @@ public class UriResolverReaderParameter {
|
||||||
return uriRequest;
|
return uriRequest;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param smp
|
* @param storageID
|
||||||
* @param fileName
|
* @param fileName
|
||||||
* @param contentType
|
* @param contentType
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public Map<String, String> getHashParemeters(String smp, String fileName, String contentType) throws Exception{
|
public Map<String, String> getHashParemeters(String storageID, String fileName, String contentType) throws Exception{
|
||||||
|
|
||||||
Map<String, String> hashParameters = new HashMap<String, String>();
|
Map<String, String> hashParameters = new HashMap<String, String>();
|
||||||
|
|
||||||
if(smp==null || smp.isEmpty())
|
if(storageID==null || storageID.isEmpty())
|
||||||
throw new Exception("smp url is null or empty");
|
throw new Exception("smp url is null or empty");
|
||||||
|
|
||||||
hashParameters.put(smpParameter, smp);
|
hashParameters.put(storageIDParameter, storageID);
|
||||||
|
|
||||||
if(fileName!=null && !fileName.isEmpty())
|
if(fileName!=null && !fileName.isEmpty())
|
||||||
hashParameters.put(fileNameParameter, fileName);
|
hashParameters.put(fileNameParameter, fileName);
|
||||||
|
@ -193,8 +186,8 @@ public class UriResolverReaderParameter {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append("UriResolverReaderParameter [baseUri=");
|
builder.append("UriResolverReaderParameter [baseUri=");
|
||||||
builder.append(baseUri);
|
builder.append(baseUri);
|
||||||
builder.append(", smpParameter=");
|
builder.append(", storageIDParameter=");
|
||||||
builder.append(smpParameter);
|
builder.append(storageIDParameter);
|
||||||
builder.append(", fileNameParameter=");
|
builder.append(", fileNameParameter=");
|
||||||
builder.append(fileNameParameter);
|
builder.append(fileNameParameter);
|
||||||
builder.append(", contentTypeParameter=");
|
builder.append(", contentTypeParameter=");
|
||||||
|
@ -208,9 +201,11 @@ public class UriResolverReaderParameter {
|
||||||
public String getBaseUri() {
|
public String getBaseUri() {
|
||||||
return baseUri;
|
return baseUri;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
public String getSmpParameter() {
|
* @return the storageIDParameter
|
||||||
return smpParameter;
|
*/
|
||||||
|
public String getStorageIDParameter() {
|
||||||
|
return storageIDParameter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFileNameParameter() {
|
public String getFileNameParameter() {
|
||||||
|
@ -225,8 +220,9 @@ public class UriResolverReaderParameter {
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
|
|
||||||
String scope = "/gcube/devsec";
|
String scope = "/gcube/devsec";
|
||||||
logger.trace(new UriResolverReaderParameter(scope));
|
System.out.println(new UriResolverReaderParameter(scope).toString());
|
||||||
|
|
||||||
|
/*
|
||||||
UriResolverReaderParameter uriResolver = new UriResolverReaderParameter(scope);
|
UriResolverReaderParameter uriResolver = new UriResolverReaderParameter(scope);
|
||||||
|
|
||||||
String fileName = "Wikipedia_logo_silver.png";
|
String fileName = "Wikipedia_logo_silver.png";
|
||||||
|
@ -235,6 +231,7 @@ public class UriResolverReaderParameter {
|
||||||
String uriRequest = uriResolver.resolveAsUriRequest("smp://Wikipedia_logo_silver.png?5ezvFfBOLqaqBlwCEtAvz4ch5BUu1ag3yftpCvV+gayz9bAtSsnO1/sX6pemTKbDe0qbchLexXeWgGcJlskYE8td9QSDXSZj5VSl9kdN9SN0/LRYaWUZuP4Q1J7lEiwkU4GKPsiD6PDRVcT4QAqTEy5hSIbr6o4Y", fileName, "image/png", true);
|
String uriRequest = uriResolver.resolveAsUriRequest("smp://Wikipedia_logo_silver.png?5ezvFfBOLqaqBlwCEtAvz4ch5BUu1ag3yftpCvV+gayz9bAtSsnO1/sX6pemTKbDe0qbchLexXeWgGcJlskYE8td9QSDXSZj5VSl9kdN9SN0/LRYaWUZuP4Q1J7lEiwkU4GKPsiD6PDRVcT4QAqTEy5hSIbr6o4Y", fileName, "image/png", true);
|
||||||
|
|
||||||
System.out.println("uriRequest "+uriRequest);
|
System.out.println("uriRequest "+uriRequest);
|
||||||
|
*/
|
||||||
//
|
//
|
||||||
// InputStream is = uriResolver.resolve("smp://Wikipedia_logo_silver.png?5ezvFfBOLqaqBlwCEtAvz4ch5BUu1ag3yftpCvV+gayz9bAtSsnO1/sX6pemTKbDe0qbchLexXeWgGcJlskYE8td9QSDXSZj5VSl9kdN9SN0/LRYaWUZuP4Q1J7lEiwkU4GKPsiD6PDRVcT4QAqTEy5hSIbr6o4Y", fileName, "image/png");
|
// InputStream is = uriResolver.resolve("smp://Wikipedia_logo_silver.png?5ezvFfBOLqaqBlwCEtAvz4ch5BUu1ag3yftpCvV+gayz9bAtSsnO1/sX6pemTKbDe0qbchLexXeWgGcJlskYE8td9QSDXSZj5VSl9kdN9SN0/LRYaWUZuP4Q1J7lEiwkU4GKPsiD6PDRVcT4QAqTEy5hSIbr6o4Y", fileName, "image/png");
|
||||||
// File file = new File(fileName);
|
// File file = new File(fileName);
|
||||||
|
|
|
@ -31,8 +31,8 @@ public class SinglePublicLinkTest {
|
||||||
|
|
||||||
protected static Logger logger = Logger.getLogger(SinglePublicLinkTest.class);
|
protected static Logger logger = Logger.getLogger(SinglePublicLinkTest.class);
|
||||||
|
|
||||||
public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps"; //PRODUCTION
|
// public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps"; //PRODUCTION
|
||||||
// public static String DEFAULT_SCOPE = "/gcube/devsec"; //DEV
|
public static String DEFAULT_SCOPE = "/gcube/devsec"; //DEV
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
@ -44,15 +44,27 @@ public class SinglePublicLinkTest {
|
||||||
Workspace ws = HomeLibrary
|
Workspace ws = HomeLibrary
|
||||||
.getHomeManagerFactory()
|
.getHomeManagerFactory()
|
||||||
.getHomeManager()
|
.getHomeManager()
|
||||||
.getHome("pasquale.pagano")
|
.getHome("francesco.mangiacrapa")
|
||||||
.getWorkspace();
|
.getWorkspace();
|
||||||
//
|
//
|
||||||
|
|
||||||
System.out.println("start get root");
|
System.out.println("start get root");
|
||||||
// WorkspaceItem root = ws.getRoot();
|
WorkspaceItem root = ws.getRoot();
|
||||||
|
|
||||||
|
|
||||||
getPublicLinkForFolderItemId("7e9740c5-d1ea-4c7a-b727-81817301cb5e", true, ws);
|
for (WorkspaceItem wsi : root.getChildren()) {
|
||||||
|
if(wsi.getType().equals(WorkspaceItemType.FOLDER_ITEM)){
|
||||||
|
try{
|
||||||
|
String publicLink = getPublicLinkForFolderItemId(wsi.getId(), true, ws);
|
||||||
|
System.out.println("\nITEM: "+wsi.getName());
|
||||||
|
System.out.println(publicLink);
|
||||||
|
// break;
|
||||||
|
}catch(Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// System.out.println("start get children");
|
// System.out.println("start get children");
|
||||||
// List<? extends WorkspaceItem> children = root.getChildren();
|
// List<? extends WorkspaceItem> children = root.getChildren();
|
||||||
|
@ -97,16 +109,15 @@ public class SinglePublicLinkTest {
|
||||||
GWTWorkspaceBuilder builder = new GWTWorkspaceBuilder();
|
GWTWorkspaceBuilder builder = new GWTWorkspaceBuilder();
|
||||||
|
|
||||||
try{
|
try{
|
||||||
|
|
||||||
|
|
||||||
WorkspaceItem wsItem = workspace.getItem(itemId);
|
WorkspaceItem wsItem = workspace.getItem(itemId);
|
||||||
|
|
||||||
if(wsItem.getType().equals(WorkspaceItemType.FOLDER_ITEM)){
|
if(wsItem.getType().equals(WorkspaceItemType.FOLDER_ITEM)){
|
||||||
|
|
||||||
FolderItem folderItem = (FolderItem) wsItem;
|
FolderItem folderItem = (FolderItem) wsItem;
|
||||||
String smpUri = builder.getPublicLinkForFolderItem(folderItem);
|
String storageID = builder.getStorageIDForFolderItem(folderItem);
|
||||||
|
|
||||||
if(smpUri==null || smpUri.isEmpty())
|
if(storageID==null || storageID.isEmpty())
|
||||||
throw new Exception("Sorry, public link on "+wsItem.getName() +" is not available");
|
throw new Exception("Sorry, public link on "+wsItem.getName() +" is not available");
|
||||||
|
|
||||||
UriResolverReaderParameter uriResolver = new UriResolverReaderParameter(DEFAULT_SCOPE);
|
UriResolverReaderParameter uriResolver = new UriResolverReaderParameter(DEFAULT_SCOPE);
|
||||||
|
@ -116,20 +127,17 @@ public class SinglePublicLinkTest {
|
||||||
if(uriResolver!=null && uriResolver.isAvailable()){
|
if(uriResolver!=null && uriResolver.isAvailable()){
|
||||||
|
|
||||||
String itemName = StringUtil.removeSpecialCharacters(folderItem.getName());
|
String itemName = StringUtil.removeSpecialCharacters(folderItem.getName());
|
||||||
|
|
||||||
itemName = StringUtil.replaceAllWhiteSpace(itemName, "_");
|
itemName = StringUtil.replaceAllWhiteSpace(itemName, "_");
|
||||||
uriRequest = uriResolver.resolveAsUriRequest(smpUri, itemName, folderItem.getMimeType(), true);
|
uriRequest = uriResolver.resolveAsUriRequest(storageID, itemName, folderItem.getMimeType(), true);
|
||||||
|
|
||||||
|
|
||||||
//VALIDATE CONNECTION
|
//VALIDATE CONNECTION
|
||||||
if(!HttpRequestUtil.urlExists(uriRequest))
|
if(!HttpRequestUtil.urlExists(uriRequest+"&validation=true"))
|
||||||
throw new Exception("Sorry, The Public Link for selected file is unavailable");
|
throw new Exception("Sorry, The Public Link for selected file is unavailable");
|
||||||
|
|
||||||
// if(shortenUrl)
|
// if(shortenUrl)
|
||||||
// uriRequest = getShortUrl(uriRequest);
|
// uriRequest = getShortUrl(uriRequest);
|
||||||
|
|
||||||
return uriRequest;
|
return uriRequest;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw new Exception("Sorry, The Uri resolver service is temporarily unavailable. Please try again later");
|
throw new Exception("Sorry, The Uri resolver service is temporarily unavailable. Please try again later");
|
||||||
|
|
Loading…
Reference in New Issue