updated tests

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@124381 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2016-02-19 14:59:23 +00:00
parent 1c0f14b386
commit 2fe12b9bbe
6 changed files with 564 additions and 350 deletions

View File

@ -166,16 +166,16 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
public static final GWTWorkspaceServiceAsync rpcWorkspaceService = (GWTWorkspaceServiceAsync) GWT.create(GWTWorkspaceService.class);
private ExplorerPanel explorerPanel;
private final static HandlerManager eventBus = new HandlerManager(null);
private HashMap<EventsTypeEnum, ArrayList<SubscriberInterface>> subscribers = null;
private boolean selectRootItem;
// private FileUploader fileUploader;
public static String myLogin;
public static String myLoginFirstName;
private static AppControllerExplorer singleton;
/**
@ -183,11 +183,11 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
*/
public AppControllerExplorer() {
Registry.register(ConstantsExplorer.RPC_WORKSPACE_SERVICE, rpcWorkspaceService);
subscribers = new HashMap<EventsTypeEnum, ArrayList<SubscriberInterface>>();
subscribers = new HashMap<EventsTypeEnum, ArrayList<SubscriberInterface>>();
bind();
singleton = this;
}
/**
* Gets the single instance of AppControllerExplorer.
@ -223,7 +223,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
private void bind() {
eventBus.addHandler(UpdateWorkspaceSizeEvent.TYPE, new UpdateWorkspaceSizeEventHandler() {
@Override
public void onUpdateWorkspaceSize(UpdateWorkspaceSizeEvent updateWorkspaceSizeEvent) {
doUpdateWorkspaceSize(updateWorkspaceSizeEvent);
@ -233,9 +233,9 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
eventBus.addHandler(RenderForm.TYPE, new RenderFormEventHandler() {
@Override
public void onRenderForm(RenderForm event) {
}
});
});
eventBus.addHandler(SendMessageEvent.TYPE, new SendMessageEventHandler() {
@ -245,7 +245,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
notifySubscriber(sendMessageEvent);
}
});
eventBus.addHandler(UnShareFolderEvent.TYPE,new UnShareFolderEventHandler() {
@Override
@ -296,7 +296,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
});
}
}
});
});
}
}
@ -310,22 +310,22 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
notifySubscriber(trashEvent);
}
});
eventBus.addHandler(AddAdministratorEvent.TYPE, new AddAdministratorEventHandler() {
@Override
public void onAddAdministrator(AddAdministratorEvent addAdministratorEvent) {
final FileModel file = addAdministratorEvent.getSelectedFolder();
if(file==null || file.getIdentifier()==null)
return;
rpcWorkspaceService.getOwnerByItemId(file.getIdentifier(), new AsyncCallback<InfoContactModel>() {
@Override
public void onFailure(Throwable caught) {
if(caught instanceof SessionExpiredException){
GWT.log("Session expired");
eventBus.fireEvent(new SessionExpiredEvent());
@ -344,28 +344,28 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
showAddAdministratorsDialog(file);
else
new MessageBoxAlert("Permission denied", "You have no permissions to manage administrators. You are not manager of \""+file.getName()+"\"", null);
}
});
}
});
eventBus.addHandler(EditUserPermissionEvent.TYPE, new EditUserPermissionEventHandler() {
@Override
public void onEditUserPermission(EditUserPermissionEvent editUserPermissionEvent) {
final FileModel file = editUserPermissionEvent.getSourceFolder();
if(file==null || file.getIdentifier()==null)
return;
rpcWorkspaceService.getOwnerByItemId(file.getIdentifier(), new AsyncCallback<InfoContactModel>() {
@Override
public void onFailure(Throwable caught) {
if(caught instanceof SessionExpiredException){
GWT.log("Session expired");
eventBus.fireEvent(new SessionExpiredEvent());
@ -385,14 +385,14 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
ediPermissions(file);
else
new MessageBoxAlert("Permission denied", "You have no authority to manage user permissions. You are not manager of \""+file.getName()+"\"", null);
}
});
}
});
eventBus.addHandler(GetInfoEvent.TYPE, new GetInfoEventHandler() {
@Override
@ -415,7 +415,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
//DEBUG
System.out.println("create shared folderEvent - sourceFileModel id "+sourceFileModel.getIdentifier());
final FileModel parentFileModel= createSharedFolderEvent.getParentFileModel();
final FileModel parentFileModel= createSharedFolderEvent.getParentFileModel();
final boolean isNewFolder = createSharedFolderEvent.isNewFolder();
DialogShareFolder dialogSharedFolder = null;
String parentDirectoryName = null;
@ -461,7 +461,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
else{
fileModel = finalDialog.getParentFolder(); //add user for share
fileModel = finalDialog.getParentFolder(); //add user for share
//create a lowest object to send to server
fileModel = new FileModel(fileModel.getIdentifier(), fileModel.getName(), fileModel.getParentFileModel(), fileModel.isDirectory(), fileModel.isShared());
@ -474,15 +474,15 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
System.out.println("FileModel id "+fileModel.getIdentifier() + " name: "+fileModel.getName() + " parent " + fileModel.getParentFileModel());
for(InfoContactModel contact:finalDialog.getSharedListUsers() ){
System.out.println("Share with Contact "+contact) ;
}*/
System.out.println("ACL is "+finalDialog.getSelectedACL());
Info.display("Info", "An operation of sharing was submitted");
explorerPanel.mask("Setting permissions", ConstantsExplorer.LOADINGSTYLE);
rpcWorkspaceService.shareFolder(fileModel, finalDialog.getSharedListUsers(), isNewFolder, finalDialog.getSelectedACL(), new AsyncCallback<Boolean>() {
@Override
@ -510,9 +510,9 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
parentToRefresh = parentFileModel;
GWT.log("share completed throwing refresh folder : "+parentToRefresh.getName() +" get id: "+parentToRefresh.getIdentifier());
// eventBus.fireEvent(new RefreshFolderEvent(parentToRefresh, true, false, false));
//TODO UPDATED ID
RefreshFolderEvent refEvent = new RefreshFolderEvent(parentToRefresh, true, true, false);
refEvent.setForceReloadBreadCrumb(true);
@ -524,7 +524,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
}
});
});
}
else{//ITEM IS NOT SHAREABLE
@ -628,7 +628,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
@Override
public void onRefreshItem(RefreshFolderEvent refreshItemEvent) {
GWT.log("RefreshFolderEvent: "+refreshItemEvent);
if(refreshItemEvent.getFolderTarget()!=null){
@ -691,17 +691,17 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
if(pasteItemEvent.getIds()==null)
return;
Info.display("Info", "Paste working...");
switch(pasteItemEvent.getOperationType()){
case CUT:
//TODO remove this comments
// if(pasteItemEvent.getFolderSourceId()==null || pasteItemEvent.getFolderSourceId().isEmpty())
// return;
rpcWorkspaceService.moveItems(pasteItemEvent.getIds(), pasteItemEvent.getFolderDestinationId(), new AsyncCallback<Boolean>() {
public void onFailure(Throwable caught) {
@ -720,27 +720,27 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
@Override
public void onSuccess(Boolean result) {
FileModel fileInTree = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(pasteItemEvent.getFolderDestinationId());
if(result){
eventBus.fireEvent(new RefreshFolderEvent(fileInTree, false, false, false));
eventBus.fireEvent(new RefreshFolderEvent(fileInTree, false, false, false));
//explorerPanel.getAsycTreePanel().setExpandTreeLevel(event.getTargetParentFileModel(), true); //Expand level drop
}
if(fileInTree!=null)
pasteItemEvent.setTreeRefreshable(true);
else
pasteItemEvent.setTreeRefreshable(false);
notifySubscriber(pasteItemEvent);
}
});
break;
case COPY:
case COPY:
rpcWorkspaceService.copyItems(pasteItemEvent.getIds(), pasteItemEvent.getFolderDestinationId(), new AsyncCallback<Boolean>() {
@Override
@ -753,9 +753,9 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
new MessageBoxAlert("Error", caught.getMessage(), null);
eventBus.fireEvent(new RefreshFolderEvent(explorerPanel.getAsycTreePanel().getFileModelByIdentifier(pasteItemEvent.getFolderDestinationId()), false, true, false));
notifySubscriber(pasteItemEvent);
}
@ -770,16 +770,16 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
pasteItemEvent.setTreeRefreshable(true);
else
pasteItemEvent.setTreeRefreshable(false);
notifySubscriber(pasteItemEvent);
}
});
break;
default:
}
}
});
@ -896,7 +896,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
// }
// else
// com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?id="+fileDownloadEvent.getItemIdentifier(), "_self", "");
//
//
if(fileDownloadEvent.getDownloadType().equals(DownloadType.SHOW)){
if(fileDownloadEvent.getItemName()!= null){
@ -953,26 +953,26 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
caption+= "File/s";
upType = UPLOAD_TYPE.File;
}
caption+= " in: "+folder.getName();
MultipleDilaogUpload uploadStream = new MultipleDilaogUpload(caption, folder.getIdentifier(), upType);
WorskpaceUploadNotificationListener listener = new WorskpaceUploadNotificationListener() {
@Override
public void onUploadCompleted(String parentId, String itemId) {
GWT.log("Upload completed: [parentID: "+parentId+", itemId: "+itemId+", uploadType: "+fileUploadEvent.getUploadType()+"]");
eventBus.fireEvent(new CompletedFileUploadEvent(parentId, itemId, fileUploadEvent.getUploadType(), false));
}
@Override
public void onUploadAborted(String parentId, String itemId) {
GWT.log("Upload Aborted: [parentID: "+parentId+", itemId: "+itemId+"]");
}
@Override
public void onError(String parentId, String itemId, Throwable throwable) {
GWT.log("Upload Error: [parentID: "+parentId+", itemId: "+itemId+"]");
GWT.log("Upload Error: [parentID: "+parentId+", itemId: "+itemId+"]");
}
@Override
@ -981,7 +981,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
eventBus.fireEvent(new CompletedFileUploadEvent(parentId, itemId, fileUploadEvent.getUploadType(), true));
}
};
uploadStream.addWorkspaceUploadNotificationListener(listener);
uploadStream.center();
}
@ -991,7 +991,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
@Override
public void onCompletedFileUploadEvent(CompletedFileUploadEvent completedFileUploadEvent) {
doCompletedFileUploadEvent(completedFileUploadEvent);
doCompletedFileUploadEvent(completedFileUploadEvent);
}
private void doCompletedFileUploadEvent(CompletedFileUploadEvent completedFileUploadEvent) {
@ -1038,7 +1038,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
@Override
public void onSuccess(Boolean result) {
if(result)
explorerPanel.getSmartFolderPanel().removeSmartFolder(smartIdentifier);
explorerPanel.getSmartFolderPanel().removeSmartFolder(smartIdentifier);
}
@Override
@ -1052,7 +1052,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
}
});
});
}
});
@ -1071,7 +1071,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
final String query = saveSmartFolderEvent.getSearchText();
final String parentId = saveSmartFolderEvent.getParentId();
final DialogAddFolderAndSmart dialogAddSmartFolder = new DialogAddFolderAndSmart("", AddType.SMARTFOLDER);
dialogAddSmartFolder.getButtonById(Dialog.OK).addListener(Events.Select, new Listener<BaseEvent>() {
@ -1100,7 +1100,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
});
}
}
});
@ -1129,7 +1129,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
private void doRenameItem(final RenameItemEvent event) {
final FileModel target = event.getFileTarget();
final DialogText dgt = new DialogText(ConstantsExplorer.MESSAGE_RENAME, ConstantsExplorer.MESSAGE_ITEM_NAME, event.getFileTarget().getName());
final DialogText dgt = new DialogText(ConstantsExplorer.MESSAGE_RENAME, ConstantsExplorer.MESSAGE_ITEM_NAME, event.getFileTarget().getName());
dgt.getButtonById(Dialog.OK).addListener(Events.Select, new Listener<BaseEvent>() {
@ -1198,11 +1198,11 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
mbc.getMessageBoxConfirm().addCallback(new Listener<MessageBoxEvent>() {
public void handleEvent(MessageBoxEvent be) {
//IF NOT CANCELLED
String clickedButton = be.getButtonClicked().getItemId();
if(clickedButton.equals(Dialog.YES)){
explorerPanel.getAsycTreePanel().mask("Deleting", ConstantsExplorer.LOADINGSTYLE);
rpcWorkspaceService.removeItem(event.getFileTarget().getIdentifier(), new AsyncCallback<Boolean>(){
@ -1240,7 +1240,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
}
});
});
}
});
@ -1255,7 +1255,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
private void doSelectedItem(SelectedItemEvent event) {
notifySubscriber(event);
notifySubscriber(event);
}
});
@ -1280,13 +1280,13 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
@Override
public void onAddItem(AddFolderEvent event) {
doAddItem(event);
doAddItem(event);
}
private void doAddItem(final AddFolderEvent event) {
final FileModel sourceFileModel = event.getFileSourceModel();
final FileModel parentFileModel= event.getParentFileModel();
final FileModel parentFileModel= event.getParentFileModel();
String directory = null;
@ -1307,7 +1307,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
if(dialogAddFolder.isValidForm()){
if(sourceFileModel.isDirectory()){
//
//
//TODO REMOVE
// System.out.println("description folder: "+dialogAddFolder.getDescription());
@ -1323,7 +1323,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
@Override
public void onSuccess(FolderModel child) {
explorerPanel.getAsycTreePanel().addItem(sourceFileModel.getIdentifier(), child, false);
explorerPanel.getAsycTreePanel().addItem(sourceFileModel.getIdentifier(), child, false);
event.setNewFolder(child);
notifySubscriber(event);
}
@ -1344,7 +1344,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
@Override
public void onSuccess(FolderModel child) {
explorerPanel.getAsycTreePanel().addItem(parentFileModel.getIdentifier(), child, false);
explorerPanel.getAsycTreePanel().addItem(parentFileModel.getIdentifier(), child, false);
event.setNewFolder(child);
notifySubscriber(event);
}
@ -1355,7 +1355,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
}
});
});
}
});
@ -1451,7 +1451,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
public void onClickUrl(OpenUrlEvent openUrlEvent) {
doClickUrl(openUrlEvent);
}
}
});
@ -1491,7 +1491,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
@Override
public void onSuccess(FileModel child) {
explorerPanel.getAsycTreePanel().addItem(parent.getIdentifier(), child, false);
explorerPanel.getAsycTreePanel().addItem(parent.getIdentifier(), child, false);
explorerPanel.getAsycTreePanel().unmask();
notifySubscriber(createUrlEvent);
}
@ -1501,12 +1501,12 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
});
}
});
eventBus.addHandler(VRESettingPermissionEvent.TYPE, new VRESettingPermissionEventHandler() {
@Override
public void onPermissionSetting(VRESettingPermissionEvent settingPermissionEvent) {
if(settingPermissionEvent.getSourceFile()!=null){
DialogPermission dialog = new DialogPermission(settingPermissionEvent.getSourceFile());
dialog.show();
@ -1514,13 +1514,13 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
Info.display("Attention", "Select a VRE Folder to change permissions!");
}
});
eventBus.addHandler(UpdatedVREPermissionEvent.TYPE, new UpdatedVREPermissionEventHandler() {
@Override
public void onUpdateVREPermissions(UpdatedVREPermissionEvent updatedVREPermissionEvent) {
notifySubscriber(updatedVREPermissionEvent);
}
});
@ -1540,9 +1540,9 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
public void doClickOpenReport(OpenReportsEvent openReportsEvent) {
final NewBrowserWindow newBrowserWindow = NewBrowserWindow.open("", "_self", "");
rpcWorkspaceService.getURLFromApplicationProfile(openReportsEvent.getSourceFileModel().getIdentifier(), new AsyncCallback<String>() {
@Override
@ -1574,7 +1574,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
private void doClickOpenReportTemplate(OpenReportsEvent openReportTemplateEvent) {
final NewBrowserWindow newBrowserWindow = NewBrowserWindow.open("", "_self", "");
rpcWorkspaceService.getURLFromApplicationProfile(openReportTemplateEvent.getSourceFileModel().getIdentifier(), new AsyncCallback<String>() {
@Override
@ -1681,7 +1681,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
sub.addedFolder(addItemEvent.getNewFolder().getIdentifier(), addItemEvent.getFileSourceModel());
else
sub.addedFolder(addItemEvent.getNewFolder().getIdentifier(), addItemEvent.getParentFileModel());
sub.addedFolder(addItemEvent.getNewFolder().getIdentifier(), addItemEvent.getParentFileModel());
}else if(event instanceof SubTreeLoadedEvent){
@ -1701,7 +1701,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}else if(event instanceof FileUploadEvent){
// FileUploadEvent fileUpEvent = (FileUploadEvent) event;
// FileUploadEvent fileUpEvent = (FileUploadEvent) event;
// sub.addedFile(fileUpEvent.getParentFileModel(), "");
} else if(event instanceof CompletedFileUploadEvent){
@ -1746,7 +1746,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
}
sub.createNewMessage(hashFiles);
sub.createNewMessage(hashFiles);
}else if(event instanceof FileDownloadEvent){
FileDownloadEvent messageEvent = (FileDownloadEvent) event;
@ -1759,7 +1759,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}else if(event instanceof PasteItemEvent){
PasteItemEvent pasteEvent = (PasteItemEvent) event;
PasteItemEvent pasteEvent = (PasteItemEvent) event;
sub.pasteEventIsCompleted(pasteEvent.isTreeRefreshable(), pasteEvent.getFolderDestinationId());
}else if(event instanceof CopytemEvent){
@ -1769,11 +1769,11 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}else if(event instanceof TrashEvent){
TrashEvent trashEvent = (TrashEvent) event;
sub.trashEvent(trashEvent.getTrashOperation(), trashEvent.getTargetFileModels());
}else if(event instanceof UpdatedVREPermissionEvent){
UpdatedVREPermissionEvent vreEvent = (UpdatedVREPermissionEvent) event;
sub.updatedVREPermissions(vreEvent.getVreFolderId());
}else if(event instanceof UpdateWorkspaceSizeEvent){
sub.updateWorksapaceSize(true);
}
@ -1825,7 +1825,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
listParents.add(item.getParentFileModel());
return;
}
listParents.add(item.getParentFileModel());
getParents(listParents, item.getParentFileModel());
}
@ -1890,7 +1890,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
this.explorerPanel.setSize(400, 600);
this.explorerPanel.getAsycTreePanel().setSizeTreePanel(350, 550);
// rootPanel.add(new BasicDNDExample()); //it's example of drag&drop
// rootPanel.add(new BasicDNDExample()); //it's example of drag&drop
}else
this.explorerPanel = new ExplorerPanel(instancingSmartFolder,instancingMessages);
@ -1902,7 +1902,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
* Use method getPanel.
*
* @return ExplorerPanel
* @deprecated
* @deprecated
*/
public ExplorerPanel getTreePanel(){
@ -1922,7 +1922,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
this.explorerPanel = getPanel();
this.explorerPanel.getAsycTreePanel().setSizeTreePanel(width, height);
this.explorerPanel.getAsycTreePanel().setHeaderTreeVisible(false);
this.explorerPanel.getAsycTreePanel().setHeaderTreeVisible(false);
return explorerPanel.getAsycTreePanel();
}
@ -1932,7 +1932,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
*/
public void hideSharingFacilities() {
explorerPanel.getAsycTreePanel().getContextMenuTree().setHideSharing();
}
}
/**
* Refresh root.
@ -1946,7 +1946,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
/**
* Instance only Async Tree. Select by default root items of tree.
* Instance only Async Tree. Select by default root items of tree.
* @return ExplorerPanel
*/
public ExplorerPanel getPanel(){
@ -1971,34 +1971,34 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
loadMyLogin();
return this.explorerPanel;
}
/**
* Edi permissions.
*
* @param file the file
*/
private void ediPermissions(final FileModel file) {
GWT.log("Edit Permissions on "+file);
MultiDragConstants.HEADING_DIALOG = "Edit User/s permissions to: "+file.getName();
MultiDragConstants.ALL_CONTACTS_LEFT_LIST = "Shared User/s";
MultiDragConstants.SHARE_WITH_RIGHT_LIST = "Set permissions for User/s";
final MultiDragContactsEditPermissions multiDragContact = new MultiDragContactsEditPermissions(LOAD_CONTACTS_AS.SHARED_USER, file.getIdentifier(), true);
final DialogMultiDragContact multidrag = multiDragContact.getDialog();
multidrag.setTxtHelp("Sets the permission for the user(s) dragged in the right list");
multidrag.getButtonById(Dialog.OK).addListener(Events.Select, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
final List<org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel> targets = multiDragContact.getTargetContacts();
if(targets.size()==0){
MessageBoxConfirm info = new MessageBoxConfirm("Any User/s?", "You have not selected any Users, confirm exit?");
info.getMessageBoxConfirm().addCallback(new Listener<MessageBoxEvent>() {
public void handleEvent(MessageBoxEvent be) {
@ -2012,11 +2012,11 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
// GWT.log(targets.toString());
if(targets.size()>=1 && multiDragContact.getSelectedAcl()!=null){
final List<String> logins = new ArrayList<String>(targets.size());
for (org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel infoContactModel : targets) {
GWT.log(infoContactModel.toString());
logins.add(infoContactModel.getLogin());
@ -2027,24 +2027,24 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
@Override
public void onFailure(Throwable caught) {
new MessageBoxAlert("Error", caught.getMessage(), null);
}
@Override
public void onSuccess(ReportAssignmentACL result) {
String msg = "";
if(result.getErrors().size()>0){
for (String error : result.getErrors()){
msg+="<li>"+error +";</li><br/>";
}
new MessageBoxAlert("Warning!!", msg, null);
return;
}
String names = "";
for (String name : result.getValidLogins()) {
// String name = infoContactModel.getName()!=null? infoContactModel.getName():infoContactModel.getLogin();
@ -2067,21 +2067,21 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}else if(clickedButton.equals(Dialog.CANCEL)){
multidrag.hide();
}
}
});
}
});
}
}
});
multidrag.show();
}
/**
* Show add administrators dialog.
*
@ -2092,19 +2092,19 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
MultiDragConstants.HEADING_DIALOG = "Edit Administrator/s to: "+file.getName();
MultiDragConstants.ALL_CONTACTS_LEFT_LIST = "All Contacts";
MultiDragConstants.SHARE_WITH_RIGHT_LIST = "New Administrator/s";
final SimpleMultiDragWorkspaceContact multiDragContact = new SimpleMultiDragWorkspaceContact(LOAD_CONTACTS_AS.ADMINISTRATOR, file.getIdentifier(), true, false, true);
final Dialog multidrag = multiDragContact.getDialogMultiDragContact();
multidrag.getButtonById(Dialog.OK).addListener(Events.Select, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
final List<org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel> targets = multiDragContact.getTargetContactsWithMyLogin();
if(targets.size()==1){
MessageBoxConfirm info = new MessageBoxConfirm("Any Administrator/s?", "You have not selected any Administrator, confirm only you as Administrator and exit?");
info.getMessageBoxConfirm().addCallback(new Listener<MessageBoxEvent>() {
public void handleEvent(MessageBoxEvent be) {
@ -2119,21 +2119,21 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
});
}
if(targets.size()>1){
final List<String> logins = new ArrayList<String>(targets.size());
String names = "<ul>";
for (org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel infoContactModel : targets) {
logins.add(infoContactModel.getLogin());
names+="<li><i>"+infoContactModel.getName() +";</i></li>";
}
String tail = "</ul>as new ";
tail += logins.size()>1?"administrators":"administrator";
tail+= ", confirm?";
MessageBoxConfirm confirm = new MessageBoxConfirm("Setting new Administrator/s?", "You have selected: <br/>"+names +tail);
confirm.getMessageBoxConfirm().addCallback(new Listener<MessageBoxEvent>() {
public void handleEvent(MessageBoxEvent be) {
@ -2147,7 +2147,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
if(clickedButton.equals(Dialog.CANCEL)){
multidrag.hide();
}
}
});
@ -2155,11 +2155,11 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
});
multidrag.show();
}
/**
* Do add administrator to folder id.
*
@ -2167,7 +2167,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
* @param logins the logins
*/
private void doAddAdministratorToFolderId(final FileModel file, final List<String> logins) {
rpcWorkspaceService.addAdministratorsByFolderId(file.getIdentifier(), logins, new AsyncCallback<Boolean>() {
@Override
@ -2179,11 +2179,11 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
public void onSuccess(Boolean arg0) {
String msg = "Updating administrator/s completed successfully";
MessageBox.info("Operation completed", msg, null);
}
});
}
/**
* Sets the acl to folder id.
*
@ -2192,13 +2192,13 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
* @param aclTypeID the acl type id
*/
private void setACLToFolderId(final String folderId, final List<String> logins, String aclTypeID) {
rpcWorkspaceService.setACLs(folderId, logins, aclTypeID, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
new MessageBoxAlert("Error", caught.getMessage(), null);
}
@Override
@ -2208,26 +2208,26 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
});
}
/**
* Load my login.
*/
private void loadMyLogin(){
rpcWorkspaceService.getMyLogin(new AsyncCallback<UserBean>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("Error on loading my login is empty");
myLogin = "";
}
@Override
public void onSuccess(UserBean user) {
GWT.log("My login is: "+user.getUsername());
myLogin = user.getUsername();
myLogin = user.getUsername();
myLoginFirstName = user.getFirstName();
}
});
@ -2293,7 +2293,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
ArrayList<FileModel> pathParentsList = (ArrayList<FileModel>) getListParentsByIdentifierFromTree(itemIdentifier);
selectItemInTree(itemIdentifier);
explorerPanel.getAsycTreePanel().setSubTreeLoaded(false);
explorerPanel.getAsycTreePanel().unmask();
@ -2330,7 +2330,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
FileModel item = this.explorerPanel.getAsycTreePanel().getFileModelByIdentifier(itemIdentifier);
if(item==null){
if(item==null){
return null;
}
else{
@ -2377,7 +2377,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
*/
@Override
public boolean addFile(String itemIdentifier, String name, String parentIdentifier) {
return false;
return false;
}
/**
@ -2421,7 +2421,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
if(fileModel.isDirectory())
return fileModel;
else
return fileModel.getParentFileModel();
return fileModel.getParentFileModel();
}
/* (non-Javadoc)
@ -2489,7 +2489,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
windowOpenParam.getBrowserWindow().setUrl(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+params);
// com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+params, windowOpenParam.getOption(), "");
// com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+params, windowOpenParam.getOption(), "");
}
};
@ -2534,10 +2534,10 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
if(fileModel==null)
return;
GWT.log("do click url");
final NewBrowserWindow newBrowserWindow = NewBrowserWindow.open("", "_blank", "");
rpcWorkspaceService.getUrlById(fileModel.getIdentifier(), fileModel.getGXTFolderItemType().equals(GXTFolderItemTypeEnum.URL_DOCUMENT), false, new AsyncCallback<GWTWorkspaceItem>() {
@Override

View File

@ -2339,38 +2339,6 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
if(wsItem.getType().equals(WorkspaceItemType.FOLDER_ITEM)){
/*FolderItem folderItem = (FolderItem) wsItem;
String storageID = builder.getStorageIDForFolderItem(folderItem);
if(storageID==null || storageID.isEmpty())
throw new Exception("Sorry, public link on "+wsItem.getName() +" is not available");
UriResolverReaderParameterForResolverIndex uriResolver = getUriResolver();
String uriRequest = "";
if(uriResolver!=null && uriResolver.isAvailable()){
// String itemName = StringUtil.removeSpecialCharacters(folderItem.getName());
// itemName = StringUtil.replaceAllWhiteSpace(itemName, "_");
// uriRequest = uriResolver.resolveAsUriRequest(storageID, itemName, folderItem.getMimeType(), true);
uriRequest = uriResolver.resolveAsStorageIdRequest(storageID, true);
//VALIDATE CONNECTION
// if(!HttpRequestUtil.urlExists(uriRequest+"&validation=true"))
// throw new Exception("Sorry, The Public Link for selected file is unavailable");
String shortURL = null;
if(shortenUrl)
shortURL = getShortUrl(uriRequest);
// }
// else
// throw new Exception("Sorry, The Uri resolver service is temporarily unavailable. Please try again later");*/
FolderItem folderItem = (FolderItem) wsItem;
String uriRequest = folderItem.getPublicLink(false);

View File

@ -1,5 +1,5 @@
/**
*
*
*/
package org.gcube.portlets.user.workspace.server.shortener;
@ -31,111 +31,112 @@ import org.json.JSONObject;
import org.json.JSONTokener;
public final class UrlShortener {
/**
*
*
*/
protected static final String NO_HTTP_URL_SHORTENER_AVAILABLE = "No HTTP URL Shortener available";
protected static final String APPLICATION_JSON = "application/json";
protected static final String LONG_URL = "longUrl";
// protected static String shortnerServerUrl = "https://www.googleapis.com/urlshortener/v1/url";
// protected static String urlMethod = "";
// protected static String authenticationKeyParam = "key";
// protected static String authenticationKeyValue ="AIzaSyDfMO0VY3o8GjRUqnTfqScjm_EsFEuBa3g";
private static String shortnerServerUrl = "";
protected static final String KEY = "key";
private static String paramKeyValue ="";
protected static Logger logger = Logger.getLogger(UrlShortener.class);
private String uriRequest;
private boolean isAvailable = false;
/*
* @throws Exception
* @throws InvalidResultException
* @throws DiscoveryException
* @throws Exception
* @throws InvalidResultException
* @throws DiscoveryException
* @throws IllegalStateException *
*
*
*/
public UrlShortener(String scope) throws Exception {
try{
logger.trace("Tentative reading HTTP-URL-Shortener RR");
ScopeUtilFilter scopeUtil = new ScopeUtilFilter(scope,true);
ScopeProvider.instance.set(scopeUtil.getScopeRoot());
XQuery query = queryFor(ServiceEndpoint.class);
query.addCondition("$resource/Profile/Name/text() eq 'HTTP-URL-Shortener'").setResult("$resource/Profile/AccessPoint");
DiscoveryClient<AccessPoint> client = clientFor(AccessPoint.class);
List<AccessPoint> endpoints = client.submit(query);
if (endpoints.size() == 0){
isAvailable = false;
logger.trace("HTTP-URL-Shortener not found");
throw new Exception(NO_HTTP_URL_SHORTENER_AVAILABLE);
}
//Base Address
// System.out.println(endpoints.get(0).address());
shortnerServerUrl = endpoints.get(0)!=null?endpoints.get(0).address():"";
if(endpoints.get(0)!=null){
paramKeyValue = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get(KEY).value():"";
}
String getParam = "";
logger.trace("paramKeyValue: "+paramKeyValue);
//ACTIVE THIS AFTER RELEASE
if(paramKeyValue!=null && !paramKeyValue.isEmpty()){
getParam = "?"+KEY +"="+paramKeyValue;
getParam = "?"+KEY +"="+paramKeyValue;
}
uriRequest = shortnerServerUrl+getParam;
logger.trace("HTTP-URL-Shortener found, uriRequest: "+uriRequest);
//DEBUG
// System.out.println("HTTP-URL-Shortener found, uriRequest: "+uriRequest);
isAvailable = true;
}catch (Exception e) {
}catch (Exception e) {
isAvailable = false;
logger.error("an error occurred in reading RR: ", e);
throw new Exception(NO_HTTP_URL_SHORTENER_AVAILABLE);
}
}
public boolean isAvailable() {
return isAvailable;
}
/**
*
*
* @param longUrl
* @return a shorten url
*/
public String shorten(String longUrl) throws Exception{
if (longUrl == null) {
return longUrl;
}
try {
logger.trace("shorten longUrl: "+longUrl);
URL url = new URL(uriRequest);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
@ -145,42 +146,42 @@ public final class UrlShortener {
JSONObject jsonObj = new JSONObject();
jsonObj.put(LONG_URL, longUrl);
// //ACTIVE THIS AFTER RELEASE
// if(paramKeyValue!=null && !paramKeyValue.isEmpty()){
// jsonObj.put(KEY, paramKeyValue);
// }
logger.trace("request json : "+jsonObj.toString());
OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
wr.write(jsonObj.toString());
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
JSONTokener tokener = new JSONTokener(rd);
JSONObject jsonObject = new JSONObject(tokener);
// JSONParser parser = new JSONParser();
// JSONObject jsonObject = (JSONObject) parser.parse(rd);
logger.trace("response received json : "+jsonObject.toString());
wr.close();
rd.close();
return (String) jsonObject.get("id"); //is shorted url
} catch (MalformedURLException e) {
logger.error("MalformedURLException error in UrlShortener", e);
return longUrl;
} catch (IOException e) {
e.printStackTrace();
logger.error("IOException error in UrlShortener", e);
return longUrl;
}
}
public static String getShortnerServerUrl() {
return shortnerServerUrl;
}
@ -196,24 +197,6 @@ public final class UrlShortener {
public String getUriRequest() {
return uriRequest;
}
public static void main(String[] args) {
String shorten;
try {
UrlShortener urlSh = new UrlShortener("/d4science.research-infrastructures.eu");
System.out.println("UrlShortener: "+urlSh);
shorten = urlSh.shorten("https://dev.d4science.org/group/data-e-infrastructure-gateway/workspace?itemid=056648-c7ce-4de3-a4c7-e1411816cc12&operation=gotofolder");
System.out.println("Shorted: "+shorten);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public String toString() {
@ -225,5 +208,23 @@ public final class UrlShortener {
builder.append("]");
return builder.toString();
}
public static void main(String[] args) {
String shorten;
try {
UrlShortener urlSh = new UrlShortener("/d4science.research-infrastructures.eu");
System.out.println("UrlShortener: "+urlSh);
shorten = urlSh.shorten("https://dev.d4science.org/group/data-e-infrastructure-gateway/workspace?itemid=056648-c7ce-4de3-a4c7-e1411816cc12&operation=gotofolder");
System.out.println("Shorted: "+shorten);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -1,5 +1,5 @@
/**
*
*
*/
package org.gcube.portlets.user.workspace;
@ -16,50 +16,58 @@ import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.gcube.common.encryption.StringEncrypter;
import org.gcube.common.scope.api.ScopeProvider;
import org.json.JSONObject;
import org.json.JSONTokener;
public final class GoogleUrlShortener {
/**
*
*
*/
protected static final String APPLICATION_JSON = "application/json";
protected static final String LONG_URL = "longUrl";
static String shortnerServerUrl = "https://www.googleapis.com/urlshortener/v1/url";
static String urlMethod = "";
static String authenticationKeyValue ="AIzaSyDfMO0VY3o8GjRUqnTfqScjm_EsFEuBa3g";
// static String authenticationKeyValue ="AIzaSyDfMO0VY3o8GjRUqnTfqScjm_EsFEuBa3g";
static String authenticationKeyValue ="AIzaSyCQSY7UU3xiBqqlzU5ovr-efs6EXKz5e7Y";
static String authenticationKeyParam = "key";
// static String shortUrl = "https://dev.d4science.org/group/data-e-infrastructure-gateway/workspace?itemid=062c558c-c7ce-4de3-a4c7-e1411816cc12&operation=gotofolder";
public static String shorten(String longUrl) throws Exception {
if (longUrl == null) {
return longUrl;
}
try {
URL url = new URL(shortnerServerUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", APPLICATION_JSON);
JSONObject jsonObj = new JSONObject();
String decrypt = StringEncrypter.getEncrypter().decrypt(authenticationKeyValue);
System.out.println(decrypt);
jsonObj.put(LONG_URL, longUrl);
jsonObj.put(authenticationKeyParam, authenticationKeyValue);
System.out.println("sending request json : "+jsonObj.toString());
OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
wr.write(jsonObj.toString());
wr.flush();
@ -70,13 +78,13 @@ public final class GoogleUrlShortener {
JSONObject jsonObject = new JSONObject(tokener);
System.out.println("response received json : "+jsonObject.toString());
wr.close();
rd.close();
return (String) jsonObject.get("id"); //is shorted url
} catch (MalformedURLException e) {
e.printStackTrace();
return longUrl;
} catch (IOException e) {
@ -84,30 +92,36 @@ public final class GoogleUrlShortener {
return longUrl;
}
}
public static String shorten4(String longUrl) throws Exception {
if (longUrl == null) {
return longUrl;
}
try {
JSONObject jsonObj = new JSONObject();
jsonObj.put(LONG_URL, longUrl);
ScopeProvider.instance.set("/gcube");
String decrypt = StringEncrypter.getEncrypter().decrypt(authenticationKeyValue);
System.out.println(decrypt);
jsonObj.put(authenticationKeyParam, authenticationKeyValue);
String body = jsonObj.toString();
HttpCallerUtil httpCaller = new HttpCallerUtil(shortnerServerUrl, "", "");
String json = httpCaller.callPost("", body, APPLICATION_JSON);
System.out.println("json: "+json);
JSONTokener tokener = new JSONTokener(json);
JSONObject jsonObject = new JSONObject(tokener);
@ -116,7 +130,7 @@ public final class GoogleUrlShortener {
return (String) jsonObject.get("id"); //is shorted url
} catch (MalformedURLException e) {
e.printStackTrace();
return longUrl;
} catch (IOException e) {
@ -124,48 +138,48 @@ public final class GoogleUrlShortener {
return longUrl;
}
}
public static String shorten3(String longUrl) throws Exception {
if (longUrl == null) {
return longUrl;
}
try {
HttpCallerUtil httpCaller = new HttpCallerUtil(shortnerServerUrl, "", "");
// Map<String, String> parameters = new HashMap<String, String>();
//
//
// parameters.put("shortUrl", longUrl);
// parameters.put("key", authenticationKey);
// String json = httpCaller.callGet(ulrMethod, parameters);
String body = "{\"longUrl\":\"" + longUrl + "\", \"key\":\"" + authenticationKeyValue + "\"}";
urlMethod += authenticationKeyParam +"="+authenticationKeyValue;
String json = httpCaller.callPost("", body, APPLICATION_JSON);
System.out.println("json: "+json);
// return json.substring(json.indexOf("http"), json.indexOf("\"", json.indexOf("http")));
return json;
// httpCaller.callGet(urlMethod, parameters);
// return json.substring(json.indexOf("http"), json.indexOf("\"", json.indexOf("http")));
} catch (MalformedURLException e) {
e.printStackTrace();
return longUrl;
@ -174,11 +188,11 @@ public final class GoogleUrlShortener {
return longUrl;
}
}
private static String googUrl = "https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyDfMO0VY3o8GjRUqnTfqScjm_EsFEuBa3g";
public static String shorten2(String longUrl)
{
String shortUrl = "";
@ -193,7 +207,7 @@ public final class GoogleUrlShortener {
wr.write("{\"longUrl\":\"" + longUrl + "\"}");
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
@ -202,11 +216,11 @@ public final class GoogleUrlShortener {
}
String json = sb.toString();
System.out.println("json: "+json);
wr.close();
rd.close();
return json.substring(json.indexOf("http"), json.indexOf("\"", json.indexOf("http")));
// Get the response
// BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
// String line;
@ -221,7 +235,7 @@ public final class GoogleUrlShortener {
// }
// }
}
catch (MalformedURLException ex)
{
@ -235,21 +249,21 @@ public final class GoogleUrlShortener {
return shortUrl;
}
public static void main(String[] args) {
String shorten;
try {
shorten = GoogleUrlShortener.shorten4("https://dev.d4science.org/group/data-e-infrastructure-gateway/workspace?itemid=062c558c-c7ce-4de3-a4c7-e1411816cc12&operation=gotofolder");
System.out.println("Shorted: "+shorten);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,230 @@
/**
*
*/
package org.gcube.portlets.user.workspace;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @Jun 28, 2013
*
*/
import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import org.apache.log4j.Logger;
import org.gcube.common.resources.gcore.ServiceEndpoint;
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter;
import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.impl.XQuery;
import org.json.JSONObject;
import org.json.JSONTokener;
public final class UrlShortener {
/**
*
*/
protected static final String NO_HTTP_URL_SHORTENER_AVAILABLE = "No HTTP URL Shortener available";
protected static final String APPLICATION_JSON = "application/json";
protected static final String LONG_URL = "longUrl";
// protected static String shortnerServerUrl = "https://www.googleapis.com/urlshortener/v1/url";
// protected static String urlMethod = "";
// protected static String authenticationKeyParam = "key";
// protected static String authenticationKeyValue ="AIzaSyDfMO0VY3o8GjRUqnTfqScjm_EsFEuBa3g";
private static String shortnerServerUrl = "";
protected static final String KEY = "key";
private static String paramKeyValue ="";
protected static Logger logger = Logger.getLogger(UrlShortener.class);
private String uriRequest;
private boolean isAvailable = false;
/*
* @throws Exception
* @throws InvalidResultException
* @throws DiscoveryException
* @throws IllegalStateException *
*
*/
public UrlShortener(String scope) throws Exception {
try{
logger.trace("Tentative reading HTTP-URL-Shortener RR");
ScopeUtilFilter scopeUtil = new ScopeUtilFilter(scope,true);
ScopeProvider.instance.set(scopeUtil.getScopeRoot());
XQuery query = queryFor(ServiceEndpoint.class);
query.addCondition("$resource/Profile/Name/text() eq 'HTTP-URL-Shortener'").setResult("$resource/Profile/AccessPoint");
DiscoveryClient<AccessPoint> client = clientFor(AccessPoint.class);
List<AccessPoint> endpoints = client.submit(query);
if (endpoints.size() == 0){
isAvailable = false;
logger.trace("HTTP-URL-Shortener not found");
throw new Exception(NO_HTTP_URL_SHORTENER_AVAILABLE);
}
//Base Address
// System.out.println(endpoints.get(0).address());
shortnerServerUrl = endpoints.get(0)!=null?endpoints.get(0).address():"";
if(endpoints.get(0)!=null){
paramKeyValue = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get(KEY).value():"";
}
String getParam = "";
logger.trace("paramKeyValue: "+paramKeyValue);
//ACTIVE THIS AFTER RELEASE
if(paramKeyValue!=null && !paramKeyValue.isEmpty()){
getParam = "?"+KEY +"="+paramKeyValue;
}
uriRequest = shortnerServerUrl+getParam;
logger.trace("HTTP-URL-Shortener found, uriRequest: "+uriRequest);
//DEBUG
// System.out.println("HTTP-URL-Shortener found, uriRequest: "+uriRequest);
isAvailable = true;
}catch (Exception e) {
isAvailable = false;
logger.error("an error occurred in reading RR: ", e);
throw new Exception(NO_HTTP_URL_SHORTENER_AVAILABLE);
}
}
public boolean isAvailable() {
return isAvailable;
}
/**
*
* @param longUrl
* @return a shorten url
*/
public String shorten(String longUrl) throws Exception{
if (longUrl == null) {
return longUrl;
}
try {
logger.trace("shorten longUrl: "+longUrl);
URL url = new URL(uriRequest);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", APPLICATION_JSON);
JSONObject jsonObj = new JSONObject();
jsonObj.put(LONG_URL, longUrl);
// //ACTIVE THIS AFTER RELEASE
// if(paramKeyValue!=null && !paramKeyValue.isEmpty()){
// jsonObj.put(KEY, paramKeyValue);
// }
logger.trace("request json : "+jsonObj.toString());
OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
wr.write(jsonObj.toString());
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
JSONTokener tokener = new JSONTokener(rd);
JSONObject jsonObject = new JSONObject(tokener);
// JSONParser parser = new JSONParser();
// JSONObject jsonObject = (JSONObject) parser.parse(rd);
logger.trace("response received json : "+jsonObject.toString());
wr.close();
rd.close();
return (String) jsonObject.get("id"); //is shorted url
} catch (MalformedURLException e) {
logger.error("MalformedURLException error in UrlShortener", e);
return longUrl;
} catch (IOException e) {
e.printStackTrace();
logger.error("IOException error in UrlShortener", e);
return longUrl;
}
}
public static String getShortnerServerUrl() {
return shortnerServerUrl;
}
public static String getKey() {
return KEY;
}
public static String getParamKeyValue() {
return paramKeyValue;
}
public String getUriRequest() {
return uriRequest;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("UrlShortener [uriRequest=");
builder.append(uriRequest);
builder.append(", isAvailable=");
builder.append(isAvailable);
builder.append("]");
return builder.toString();
}
public static void main(String[] args) {
String shorten;
try {
UrlShortener urlSh = new UrlShortener("/d4science.research-infrastructures.eu");
System.out.println("UrlShortener: "+urlSh);
shorten = urlSh.shorten("https://dev.d4science.org/group/data-e-infrastructure-gateway/workspace?itemid=056648-c7ce-4de3-a4c7-e1411816cc12&operation=gotofolder");
System.out.println("Shorted: "+shorten);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -1,5 +1,5 @@
/**
*
*
*/
package org.gcube.portlets.user.workspace;
@ -21,62 +21,63 @@ import org.gcube.resources.discovery.client.queries.impl.XQuery;
*
*/
public class UrlShortenerReaderRR {
/**
*
*
*/
protected static final String KEY = "key";
//Base Address
protected String uri = "";
//Query URL parameter
protected String keyValue = "";
private String uriRequest = "";
public static Logger log = Logger.getLogger(UrlShortenerReaderRR.class);
/**
* @throws Exception
*
* @throws Exception
*
*/
public UrlShortenerReaderRR() throws Exception {
ScopeProvider.instance.set("/gcube");
XQuery query = queryFor(ServiceEndpoint.class);
query.addCondition("$resource/Profile/Name/text() eq 'HTTP-URL-Shortener'").setResult("$resource/Profile/AccessPoint");
DiscoveryClient<AccessPoint> client = clientFor(AccessPoint.class);
List<AccessPoint> endpoints = client.submit(query);
if (endpoints.size() == 0)
throw new Exception("No Shortener available");
//Base Address
// System.out.println(endpoints.get(0).address());
uri = endpoints.get(0)!=null?endpoints.get(0).address():"";
if(endpoints.get(0)!=null){
keyValue = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get(KEY).value():"";
}
uriRequest = uri+"?"+KEY+"="+keyValue;
System.out.println(uriRequest);
//Query URL parameter
// System.out.println(endpoints.get(0).propertyMap().get("parameter").value());
}
/**
*
*
* @return Base Address of Uri Resolver
*/
public String getUri() {
@ -85,15 +86,15 @@ public class UrlShortenerReaderRR {
/**
*
*
* @return Query URL parameter of Uri Resolver
*/
public String getParameter() {
return keyValue;
}
public static void main(String[] args) throws Exception {
log.trace(new UrlShortenerReaderRR());
}