This commit is contained in:
Francesco Mangiacrapa 2013-02-28 11:32:45 +00:00
parent daaf1d6990
commit dd0a419209
2 changed files with 118 additions and 208 deletions

View File

@ -147,7 +147,7 @@
<dependency> <dependency>
<groupId>org.gcube.portlets.user</groupId> <groupId>org.gcube.portlets.user</groupId>
<artifactId>opengcubeapplication</artifactId> <artifactId>workspaceapplicationhandler</artifactId>
<version>1.0.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
</dependency> </dependency>

View File

@ -28,7 +28,6 @@ import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ExternalU
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ts.TimeSeries; import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ts.TimeSeries;
import org.gcube.portlets.user.homelibrary.home.workspace.search.SearchItem; import org.gcube.portlets.user.homelibrary.home.workspace.search.SearchItem;
import org.gcube.portlets.user.homelibrary.home.workspace.sharing.WorkspaceMessage; import org.gcube.portlets.user.homelibrary.home.workspace.sharing.WorkspaceMessage;
import org.gcube.portlets.user.opengcubeapplication.ApplicationReaderFromGenericResource;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer; import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.interfaces.GXTCategoryItemInterface; import org.gcube.portlets.user.workspace.client.interfaces.GXTCategoryItemInterface;
import org.gcube.portlets.user.workspace.client.model.BulkCreatorModel; import org.gcube.portlets.user.workspace.client.model.BulkCreatorModel;
@ -46,6 +45,7 @@ import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer; import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer;
import org.gcube.portlets.user.workspace.server.util.AllScope; import org.gcube.portlets.user.workspace.server.util.AllScope;
import org.gcube.portlets.user.workspace.server.util.Util; import org.gcube.portlets.user.workspace.server.util.Util;
import org.gcube.portlets.user.workspaceapplicationhandler.ApplicationReaderFromGenericResource;
import com.google.gwt.user.server.rpc.RemoteServiceServlet; import com.google.gwt.user.server.rpc.RemoteServiceServlet;
@ -293,82 +293,27 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
sourceSharedId = sourceItem.getIdSharedFolder(); //GET SHARED ID BEFORE OF MOVE sourceSharedId = sourceItem.getIdSharedFolder(); //GET SHARED ID BEFORE OF MOVE
System.out.println("moveItem item: "+itemId+" sourceItem name "+sourceItem.getName() + " shared: "+sourceItemIsShared+ " destination: "+destinationId); //System.out.println("moveItem item: "+itemId+" sourceItem name "+sourceItem.getName() + " shared: "+sourceItemIsShared+ " destination: "+destinationId);
workspace.moveItem(itemId, destinationId); //move item workspace.moveItem(itemId, destinationId); //move item
WorkspaceItem folderDestinationItem = workspace.getItem(destinationId); //retrieve folder destination WorkspaceItem folderDestinationItem = workspace.getItem(destinationId); //retrieve folder destination
System.out.println("sourceItem.isShared() "+sourceItemIsShared ); //System.out.println("sourceItem.isShared() "+sourceItemIsShared );
System.out.println("folderDestinationItem item: "+destinationId+" folderDestinationItem name "+folderDestinationItem.getName() + " folderDestinationItem shared: "+folderDestinationItem.isShared()); //System.out.println("folderDestinationItem item: "+destinationId+" folderDestinationItem name "+folderDestinationItem.getName() + " folderDestinationItem shared: "+folderDestinationItem.isShared());
if(folderDestinationItem!=null){ if(folderDestinationItem!=null){
// //if folder destination is shared folder
// if(folderDestinationItem.isShared()){ //Notify Added Item To Sharing?
//
// //share condition is true if source shared folder is null or not equal to destination shared folder
// shareChangeCondition = (sourceSharedId==null) || (sourceSharedId.compareTo(folderDestinationItem.getIdSharedFolder())!=0);
//
// System.out.println("shareChangeCondition add item: "+ shareChangeCondition);
//
//
// //if shareChangeCondition is true.. notifies added item to sharing
// if(shareChangeCondition){
//
// List<InfoContactModel> listContacts = getListUserSharedByFolderSharedId(folderDestinationItem.getIdSharedFolder());
//
// //DEBUG
// printContacts(listContacts);
//
// WorkspaceItem destinationSharedFolder = workspace.getItem(folderDestinationItem.getIdSharedFolder());
//
// np.notifyAddedItemToSharing(listContacts, sourceItem, (WorkspaceFolder) destinationSharedFolder);
//
//// np.notifyAddedItemToSharing(listContacts, (WorkspaceFolder) folderDestinationItem);
// }
// }
try{ try{
checkNotifyAddItemToShare(sourceItem, sourceSharedId, folderDestinationItem); checkNotifyAddItemToShare(sourceItem, sourceSharedId, folderDestinationItem);
checkNotifyRemoveItemToShare(sourceItemIsShared, sourceItem, sourceSharedId, folderDestinationItem); checkNotifyRemoveItemToShare(sourceItemIsShared, sourceItem, sourceSharedId, folderDestinationItem);
}catch (Exception e) { }catch (Exception e) {
workspaceLogger.error("An error occurred in checkNotify ", e); workspaceLogger.error("An error occurred in checkNotify ", e);
} }
// System.out.println("folderDestinationItem.isShared() "+ folderDestinationItem.getName() + ": "+ folderDestinationItem.isShared());
//
//
// String idSharedFolder = folderDestinationItem.getIdSharedFolder()!=null?folderDestinationItem.getIdSharedFolder():"";
//
// //share condition is true if source shared folder is not equal to destination shared folder
// shareChangeCondition = sourceSharedId==null?false:(sourceSharedId.compareTo(idSharedFolder)!=0);
//
// System.out.println("shareChangeCondition remove item: "+ shareChangeCondition);
//
// //Notify Removed Item To Sharing?
// //if source Item is shared and folder destination is not shared or shareChangeCondition is true.. notifies removed item to sharing
// if(sourceItemIsShared && (!folderDestinationItem.isShared() || shareChangeCondition)){
//
// //get contacts
// List<InfoContactModel> listContacts = getListUserSharedByFolderSharedId(sourceSharedId);
//
// //DEBUG
// printContacts(listContacts);
//
// WorkspaceItem sourceSharedFolder = workspace.getItem(sourceSharedId);
//
// System.out.println(" name sourceSharedFolder: "+ sourceSharedFolder.getName());
//
// np.notifyRemovedItemToSharing(listContacts, sourceItem, (WorkspaceFolder) sourceSharedFolder);
//
// }
} }
return Boolean.TRUE; return Boolean.TRUE;
}catch (InsufficientPrivilegesException e) { }catch (InsufficientPrivilegesException e) {
@ -384,158 +329,122 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
} }
private void checkNotifyAddItemToShare(WorkspaceItem sourceItem, String sourceSharedId, WorkspaceItem folderDestinationItem) throws WorkspaceFolderNotFoundException, ItemNotFoundException, InternalErrorException, HomeNotFoundException, Exception{ private void checkNotifyAddItemToShare(final WorkspaceItem sourceItem, final String sourceSharedId, final WorkspaceItem folderDestinationItem) {
workspaceLogger.trace("checkNotifyAddItemToShare");
if(folderDestinationItem!=null){ if(folderDestinationItem!=null){
//if folder destination is shared folder try{
if(folderDestinationItem.isShared()){ //Notify Added Item To Sharing? //if folder destination is shared folder
if(folderDestinationItem.isShared()){ //Notify Added Item To Sharing?
//share condition is true if source shared folder is null or not equal to destination shared folder workspaceLogger.trace("checkNotifyAddItemToShare source item: "+sourceItem.getName()+" sourceSharedId: "+sourceSharedId + " folder destination: "+folderDestinationItem.getName());
boolean shareChangeCondition = (sourceSharedId==null) || (sourceSharedId.compareTo(folderDestinationItem.getIdSharedFolder())!=0);
System.out.println("shareChangeCondition add item: "+ shareChangeCondition); //share condition is true if source shared folder is null or not equal to destination shared folder
boolean shareChangeCondition = (sourceSharedId==null) || (sourceSharedId.compareTo(folderDestinationItem.getIdSharedFolder())!=0);
//if shareChangeCondition is true.. notifies added item to sharing //System.out.println("shareChangeCondition add item: "+ shareChangeCondition);
if(shareChangeCondition){
List<InfoContactModel> listContacts = getListUserSharedByFolderSharedId(folderDestinationItem.getIdSharedFolder()); workspaceLogger.trace("shareChangeCondition add item: "+shareChangeCondition);
//DEBUG //if shareChangeCondition is true.. notifies added item to sharing
printContacts(listContacts); if(shareChangeCondition){
Workspace workspace = getWorkspace(); List<InfoContactModel> listContacts = getListUserSharedByFolderSharedId(folderDestinationItem.getIdSharedFolder());
WorkspaceItem destinationSharedFolder = workspace.getItem(folderDestinationItem.getIdSharedFolder()); //DEBUG
printContacts(listContacts);
NotificationsProducer np = getNotificationProducer(); Workspace workspace = getWorkspace();
np.notifyAddedItemToSharing(listContacts, sourceItem, (WorkspaceFolder) destinationSharedFolder); WorkspaceItem destinationSharedFolder = workspace.getItem(folderDestinationItem.getIdSharedFolder());
// np.notifyAddedItemToSharing(listContacts, (WorkspaceFolder) folderDestinationItem); NotificationsProducer np = getNotificationProducer();
np.notifyAddedItemToSharing(listContacts, sourceItem, (WorkspaceFolder) destinationSharedFolder);
workspaceLogger.trace("The notifies was sent correctly");
// np.notifyAddedItemToSharing(listContacts, (WorkspaceFolder) folderDestinationItem);
}
} }
else
workspaceLogger.trace("folder destination is not shared");
}catch (Exception e) {
workspaceLogger.error("An error occurred in verifyNotifyAddItemToShare ",e);
} }
}else }else
workspaceLogger.error("verifyNotifyAddItemToShare folder destination item is null"); workspaceLogger.warn("The notifies is failure in verifyNotifyAddItemToShare because folder destination item is null");
} }
// private void checkNotifyAddItemToShare(final String itemId, final String destinationId) throws WorkspaceFolderNotFoundException, ItemNotFoundException, InternalErrorException, HomeNotFoundException, Exception{
//
// new Thread(){
// @Override
// public void run() {
//
// try{
//
// Workspace workspace = getWorkspace();
// GCUBEClientLog logger = new GCUBEClientLog(GWTWorkspaceServiceImpl.class);
// logger.trace("moveItem item: "+itemId+" destination: "+destinationId);
//
// WorkspaceItem sourceItem = workspace.getItem(itemId);
//
// if(sourceItem==null)
// return;
//
// String sourceSharedId = null;
// boolean sourceItemIsShared = sourceItem.isShared();
//
// if(sourceItemIsShared)
// sourceSharedId = sourceItem.getIdSharedFolder(); //GET SHARED ID BEFORE OF MOVE
//
//
// System.out.println("moveItem item: "+itemId+" sourceItem name "+sourceItem.getName() + " shared: "+sourceItemIsShared+ " destination: "+destinationId);
//
//
// WorkspaceItem folderDestinationItem = workspace.getItem(destinationId); //retrieve folder destination
//
// if(folderDestinationItem!=null){
//
// //if folder destination is shared folder
// if(folderDestinationItem.isShared()){ //Notify Added Item To Sharing?
//
// //share condition is true if source shared folder is null or not equal to destination shared folder
// boolean shareChangeCondition = (sourceSharedId==null) || (sourceSharedId.compareTo(folderDestinationItem.getIdSharedFolder())!=0);
//
// System.out.println("shareChangeCondition add item: "+ shareChangeCondition);
//
// //if shareChangeCondition is true.. notifies added item to sharing
// if(shareChangeCondition){
//
// List<InfoContactModel> listContacts = getListUserSharedByFolderSharedId(folderDestinationItem.getIdSharedFolder());
//
// //DEBUG
// printContacts(listContacts);
//
// WorkspaceItem destinationSharedFolder = workspace.getItem(folderDestinationItem.getIdSharedFolder());
//
// NotificationsProducer np = getNotificationProducer();
//
// np.notifyAddedItemToSharing(listContacts, sourceItem, (WorkspaceFolder) destinationSharedFolder);
//
//// np.notifyAddedItemToSharing(listContacts, (WorkspaceFolder) folderDestinationItem);
// }
// }
// }else
// workspaceLogger.error("verifyNotifyAddItemToShare folder destination item is null");
//
//
// }catch (Exception e) {
// // TODO: handle exception
// }
//
//
// }
// }.start();
//
// }
private void checkNotifyRemoveItemToShare(final boolean sourceItemIsShared, final WorkspaceItem sourceItem, final String sourceSharedId, final WorkspaceItem folderDestinationItem) {
private void checkNotifyRemoveItemToShare(boolean sourceItemIsShared, WorkspaceItem sourceItem, String sourceSharedId, WorkspaceItem folderDestinationItem) throws WorkspaceFolderNotFoundException, ItemNotFoundException, InternalErrorException, HomeNotFoundException, Exception{ workspaceLogger.trace("checkNotifyRemoveItemToShare:");
if(folderDestinationItem!=null){ try{
String idSharedFolder = folderDestinationItem.getIdSharedFolder()!=null?folderDestinationItem.getIdSharedFolder():""; if(folderDestinationItem!=null){
//share condition is true if source shared folder is not equal to destination shared folder String idSharedFolder = folderDestinationItem.getIdSharedFolder()!=null?folderDestinationItem.getIdSharedFolder():"";
boolean shareChangeCondition = sourceSharedId==null?false:(sourceSharedId.compareTo(idSharedFolder)!=0);
System.out.println("shareChangeCondition remove item: "+ shareChangeCondition); //share condition is true if source shared folder is not equal to destination shared folder
boolean shareChangeCondition = sourceSharedId==null?false:(sourceSharedId.compareTo(idSharedFolder)!=0);
//Notify Removed Item To Sharing? workspaceLogger.trace("checkNotifyRemoveItemToShare source item: "+sourceItem.getName()+" sourceSharedId: "+sourceSharedId + " folder destination: "+folderDestinationItem.getName() +" sourceItemIsShared: "+sourceItemIsShared);
//if source Item is shared and folder destination is not shared or shareChangeCondition is true.. notifies removed item to sharing
if(sourceItemIsShared && (!folderDestinationItem.isShared() || shareChangeCondition)){
//get contacts // System.out.println("shareChangeCondition remove item: "+ shareChangeCondition);
List<InfoContactModel> listContacts = getListUserSharedByFolderSharedId(sourceSharedId);
//DEBUG workspaceLogger.trace("shareChangeCondition remove item: "+ shareChangeCondition);
printContacts(listContacts);
Workspace workspace = getWorkspace(); //Notify Removed Item To Sharing?
//if source Item is shared and folder destination is not shared or shareChangeCondition is true.. notifies removed item to sharing
if(sourceItemIsShared && (!folderDestinationItem.isShared() || shareChangeCondition)){
WorkspaceItem sourceSharedFolder = workspace.getItem(sourceSharedId); //get contacts
List<InfoContactModel> listContacts = getListUserSharedByFolderSharedId(sourceSharedId);
System.out.println(" name sourceSharedFolder: "+ sourceSharedFolder.getName()); //DEBUG
printContacts(listContacts);
NotificationsProducer np = getNotificationProducer(); Workspace workspace = getWorkspace();
np.notifyRemovedItemToSharing(listContacts, sourceItem, (WorkspaceFolder) sourceSharedFolder); WorkspaceItem sourceSharedFolder = workspace.getItem(sourceSharedId);
} //System.out.println(" name sourceSharedFolder: "+ sourceSharedFolder.getName());
NotificationsProducer np = getNotificationProducer();
}else np.notifyRemovedItemToSharing(listContacts, sourceItem, (WorkspaceFolder) sourceSharedFolder);
workspaceLogger.error("verifyNotifyRemoveItemToShare folder destination item is null");
workspaceLogger.trace("The notifies was sent correctly");
}
}else
workspaceLogger.warn("The notifies is failure in verifyNotifyRemoveItemToShare because folder destination item is null");
}catch (Exception e) {
workspaceLogger.error("An error occurred in checkNotifyRemoveItemToShare ",e);
}
} }
//DEBUG //DEBUG
private void printContacts(List<InfoContactModel> listContacts){ private void printContacts(List<InfoContactModel> listContacts){
System.out.println("PRINT CONTACTS: "); boolean testMode = isTestMode();
if(testMode)
System.out.println("Contacts: ");
else
workspaceLogger.trace("Contacts:");
for (InfoContactModel infoContactModel : listContacts) { for (InfoContactModel infoContactModel : listContacts) {
System.out.println("User: "+infoContactModel); if(testMode)
System.out.println("User: "+infoContactModel);
else
workspaceLogger.trace("User: "+infoContactModel);
} }
} }
@ -1594,14 +1503,13 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
+ " listContacts size: " + listContacts.size()); + " listContacts size: " + listContacts.size());
// //DEBUG // //DEBUG
System.out.println("shareFolder "+ folder.getIdentifier() //System.out.println("shareFolder "+ folder.getIdentifier() + " name: "+ folder.getName() + " parent name: " + folder.getParentFileModel().getName() + " listContacts size: " + listContacts.size());
+ " name: "+ folder.getName()
+ " parent name: " + folder.getParentFileModel().getName()
+ " listContacts size: " + listContacts.size());
for (InfoContactModel infoContactModel : listContacts) { // for (InfoContactModel infoContactModel : listContacts) {
System.out.println("share with "+ infoContactModel.getLogin()); // System.out.println("share with "+ infoContactModel.getLogin());
} // }
printContacts(listContacts);
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
@ -1687,7 +1595,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
workspaceLogger.trace("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER); workspaceLogger.trace("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER);
//DEBUG //DEBUG
System.out.println("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER); //System.out.println("the item with id: "+folderSharedId+ " is not "+WorkspaceItemType.SHARED_FOLDER);
} }
return new ArrayList<InfoContactModel>(); return new ArrayList<InfoContactModel>();
@ -1716,7 +1624,9 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
unShared = unSharedFolder==null?false:true; unShared = unSharedFolder==null?false:true;
System.out.println("unShared is "+unShared); // System.out.println("unShared is "+unShared);
workspaceLogger.trace("unShared is "+ unShared);
if(unShared){ if(unShared){
NotificationsProducer np = getNotificationProducer(); NotificationsProducer np = getNotificationProducer();