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:
Francesco Mangiacrapa 2015-07-03 09:23:37 +00:00
parent f1ecb642b0
commit 3b09a96e09
5 changed files with 120 additions and 79 deletions

View File

@ -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;
} }

View File

@ -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 {

View File

@ -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");
} }

View File

@ -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);

View File

@ -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");