merged with branch version for gcube 3.9
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@120097 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
9e28263e4d
commit
a481378eb0
|
@ -13,7 +13,7 @@ public class DeleteItemEvent extends GwtEvent<DeleteItemEventHandler> implements
|
||||||
|
|
||||||
private FileModel fileTarget = null;
|
private FileModel fileTarget = null;
|
||||||
|
|
||||||
private List<String> listTarget;
|
private List<? extends FileModel> listTarget;
|
||||||
|
|
||||||
private boolean isMultiSelection;
|
private boolean isMultiSelection;
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ public class DeleteItemEvent extends GwtEvent<DeleteItemEventHandler> implements
|
||||||
this.isMultiSelection = false;
|
this.isMultiSelection = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DeleteItemEvent(List<String> listTarget) {
|
public DeleteItemEvent(List<? extends FileModel> listTarget) {
|
||||||
this.listTarget = listTarget;
|
this.listTarget = listTarget;
|
||||||
this.isMultiSelection = true;
|
this.isMultiSelection = true;
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,9 @@ public class DeleteItemEvent extends GwtEvent<DeleteItemEventHandler> implements
|
||||||
return TYPE;
|
return TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void dispatch(DeleteItemEventHandler handler) {
|
protected void dispatch(DeleteItemEventHandler handler) {
|
||||||
handler.onDeleteItem(this);
|
handler.onDeleteItem(this);
|
||||||
|
@ -49,7 +52,7 @@ public class DeleteItemEvent extends GwtEvent<DeleteItemEventHandler> implements
|
||||||
return fileTarget;
|
return fileTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getListTarget() {
|
public List<? extends FileModel> getListTarget() {
|
||||||
return listTarget;
|
return listTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ import org.gcube.portlets.user.workspace.client.model.SmartFolderModel;
|
||||||
import org.gcube.portlets.user.workspace.client.model.SubTree;
|
import org.gcube.portlets.user.workspace.client.model.SubTree;
|
||||||
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
|
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
|
||||||
import org.gcube.portlets.user.workspace.shared.ExtendedWorkspaceACL;
|
import org.gcube.portlets.user.workspace.shared.ExtendedWorkspaceACL;
|
||||||
|
import org.gcube.portlets.user.workspace.shared.GarbageItem;
|
||||||
import org.gcube.portlets.user.workspace.shared.PublicLink;
|
import org.gcube.portlets.user.workspace.shared.PublicLink;
|
||||||
import org.gcube.portlets.user.workspace.shared.ReportAssignmentACL;
|
import org.gcube.portlets.user.workspace.shared.ReportAssignmentACL;
|
||||||
import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
|
import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
|
||||||
|
@ -132,6 +133,16 @@ public interface GWTWorkspaceService extends RemoteService{
|
||||||
*/
|
*/
|
||||||
public List<FileGridModel> getSmartFolderResultsByCategory(String category) throws Exception;
|
public List<FileGridModel> getSmartFolderResultsByCategory(String category) throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the smart folder.
|
||||||
|
*
|
||||||
|
* @param name the name
|
||||||
|
* @param description the description
|
||||||
|
* @param query the query
|
||||||
|
* @param parentId the parent id
|
||||||
|
* @return the smart folder model
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
SmartFolderModel createSmartFolder(String name, String description,
|
SmartFolderModel createSmartFolder(String name, String description,
|
||||||
String query, String parentId) throws Exception;
|
String query, String parentId) throws Exception;
|
||||||
|
|
||||||
|
@ -195,6 +206,14 @@ public interface GWTWorkspaceService extends RemoteService{
|
||||||
*/
|
*/
|
||||||
public void setValueInSession(String name, String value) throws Exception;
|
public void setValueInSession(String name, String value) throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the items by search name.
|
||||||
|
*
|
||||||
|
* @param text the text
|
||||||
|
* @param folderId the folder id
|
||||||
|
* @return the items by search name
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
List<FileGridModel> getItemsBySearchName(String text, String folderId) throws Exception;
|
List<FileGridModel> getItemsBySearchName(String text, String folderId) throws Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -559,13 +578,16 @@ public interface GWTWorkspaceService extends RemoteService{
|
||||||
boolean isSessionExpired() throws Exception;
|
boolean isSessionExpired() throws Exception;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete list items for ids.
|
* Delete list items for ids.
|
||||||
*
|
*
|
||||||
* @param ids the ids
|
* @param ids the ids
|
||||||
|
* @return the list
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
void deleteListItemsForIds(List<String> ids) throws Exception;
|
List<GarbageItem> deleteListItemsForIds(List<String> ids) throws Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy items.
|
* Copy items.
|
||||||
|
|
|
@ -17,6 +17,7 @@ import org.gcube.portlets.user.workspace.client.model.SmartFolderModel;
|
||||||
import org.gcube.portlets.user.workspace.client.model.SubTree;
|
import org.gcube.portlets.user.workspace.client.model.SubTree;
|
||||||
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
|
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
|
||||||
import org.gcube.portlets.user.workspace.shared.ExtendedWorkspaceACL;
|
import org.gcube.portlets.user.workspace.shared.ExtendedWorkspaceACL;
|
||||||
|
import org.gcube.portlets.user.workspace.shared.GarbageItem;
|
||||||
import org.gcube.portlets.user.workspace.shared.PublicLink;
|
import org.gcube.portlets.user.workspace.shared.PublicLink;
|
||||||
import org.gcube.portlets.user.workspace.shared.ReportAssignmentACL;
|
import org.gcube.portlets.user.workspace.shared.ReportAssignmentACL;
|
||||||
import org.gcube.portlets.user.workspace.shared.TrashContent;
|
import org.gcube.portlets.user.workspace.shared.TrashContent;
|
||||||
|
@ -572,13 +573,8 @@ public interface GWTWorkspaceServiceAsync {
|
||||||
*/
|
*/
|
||||||
void isSessionExpired(AsyncCallback<Boolean> callback);
|
void isSessionExpired(AsyncCallback<Boolean> callback);
|
||||||
|
|
||||||
/**
|
void deleteListItemsForIds(List<String> ids,
|
||||||
* Delete list items for ids.
|
AsyncCallback<List<GarbageItem>> callback);
|
||||||
*
|
|
||||||
* @param ids the ids
|
|
||||||
* @param callback the callback
|
|
||||||
*/
|
|
||||||
void deleteListItemsForIds(List<String> ids, AsyncCallback<Void> callback);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy items.
|
* Copy items.
|
||||||
|
|
|
@ -813,7 +813,7 @@ public class GWTWorkspaceBuilder {
|
||||||
* @return the list
|
* @return the list
|
||||||
* @throws InternalErrorException the internal error exception
|
* @throws InternalErrorException the internal error exception
|
||||||
*/
|
*/
|
||||||
protected List<FileGridModel> buildGXTListFileGridModelItem(List<WorkspaceItem> listWorkspaceItems, FileModel parentFileModel) throws InternalErrorException{
|
public List<FileGridModel> buildGXTListFileGridModelItem(List<WorkspaceItem> listWorkspaceItems, FileModel parentFileModel) throws InternalErrorException{
|
||||||
|
|
||||||
Long startTime = System.currentTimeMillis();
|
Long startTime = System.currentTimeMillis();
|
||||||
List<FileGridModel> listFileGridModel = new ArrayList<FileGridModel>();
|
List<FileGridModel> listFileGridModel = new ArrayList<FileGridModel>();
|
||||||
|
|
|
@ -70,6 +70,7 @@ import org.gcube.portlets.user.workspace.server.util.WsUtil;
|
||||||
import org.gcube.portlets.user.workspace.server.util.resource.PropertySpecialFolderReader;
|
import org.gcube.portlets.user.workspace.server.util.resource.PropertySpecialFolderReader;
|
||||||
import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter;
|
import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter;
|
||||||
import org.gcube.portlets.user.workspace.shared.ExtendedWorkspaceACL;
|
import org.gcube.portlets.user.workspace.shared.ExtendedWorkspaceACL;
|
||||||
|
import org.gcube.portlets.user.workspace.shared.GarbageItem;
|
||||||
import org.gcube.portlets.user.workspace.shared.PublicLink;
|
import org.gcube.portlets.user.workspace.shared.PublicLink;
|
||||||
import org.gcube.portlets.user.workspace.shared.ReportAssignmentACL;
|
import org.gcube.portlets.user.workspace.shared.ReportAssignmentACL;
|
||||||
import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
|
import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
|
||||||
|
@ -2597,7 +2598,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
* @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#deleteListItemsForIds(java.util.List)
|
* @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#deleteListItemsForIds(java.util.List)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void deleteListItemsForIds(List<String> ids) throws Exception {
|
public List<GarbageItem> deleteListItemsForIds(List<String> ids) throws Exception {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
@ -2607,6 +2608,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
Workspace workspace = getWorkspace();
|
Workspace workspace = getWorkspace();
|
||||||
workspaceLogger.trace("removeItem item for list size: "+ids.size());
|
workspaceLogger.trace("removeItem item for list size: "+ids.size());
|
||||||
|
|
||||||
|
String[] items = new String[ids.size()];
|
||||||
|
items = ids.toArray(items);
|
||||||
|
|
||||||
|
Map<String, GarbageItem> garbage = new HashMap<String, GarbageItem>(items.length);
|
||||||
|
|
||||||
|
//SAVE DATE FOR NOTIFICATIONS
|
||||||
for (String itemId : ids) {
|
for (String itemId : ids) {
|
||||||
//NOTIFICATION
|
//NOTIFICATION
|
||||||
WorkspaceItem wsItem = workspace.getItem(itemId);
|
WorkspaceItem wsItem = workspace.getItem(itemId);
|
||||||
|
@ -2618,11 +2625,40 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
sourceFolderSharedId = wsItem.getIdSharedFolder();
|
sourceFolderSharedId = wsItem.getIdSharedFolder();
|
||||||
}
|
}
|
||||||
//REMOVE ITEM
|
//REMOVE ITEM
|
||||||
workspace.removeItem(itemId);
|
|
||||||
//IF SOURCE SHARED FOLDER IS NOT NULL
|
garbage.put(itemId, new GarbageItem(sourceItemIsShared, itemName, itemId, sourceFolderSharedId));
|
||||||
if(sourceFolderSharedId!=null)
|
|
||||||
NotificationsUtil.checkSendNotifyRemoveItemToShare(this.getThreadLocalRequest().getSession(), sourceItemIsShared, itemName, itemId, sourceFolderSharedId);
|
// workspace.removeItem(itemId);
|
||||||
|
// //IF SOURCE SHARED FOLDER IS NOT NULL
|
||||||
|
// if(sourceFolderSharedId!=null)
|
||||||
|
// NotificationsUtil.checkSendNotifyRemoveItemToShare(this.getThreadLocalRequest().getSession(), sourceItemIsShared, itemName, itemId, sourceFolderSharedId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//ITEM ID - ERROR
|
||||||
|
Map<String, String> backendError = workspace.removeItems(items);
|
||||||
|
|
||||||
|
//GARBAGE ITEM ERROR
|
||||||
|
List<GarbageItem> frontEndError = new ArrayList<GarbageItem>(backendError.size());
|
||||||
|
|
||||||
|
//REMOVING IDS WHICH HAVE GENERATED AN ERROR
|
||||||
|
for (String idError : backendError.keySet()) {
|
||||||
|
GarbageItem gbi = garbage.get(idError);
|
||||||
|
if(gbi!=null){
|
||||||
|
frontEndError.add(gbi);
|
||||||
|
garbage.remove(idError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String idItem : garbage.keySet()) {
|
||||||
|
GarbageItem item = garbage.get(idItem);
|
||||||
|
workspaceLogger.trace("Check notification for "+item);
|
||||||
|
//IF SOURCE SHARED FOLDER IS NOT NULL
|
||||||
|
if(item.getSourceFolderSharedId()!=null)
|
||||||
|
NotificationsUtil.checkSendNotifyRemoveItemToShare(this.getThreadLocalRequest().getSession(), item.isSourceItemIsShared(), item.getOldItemName(), item.getOldItemName(), item.getSourceFolderSharedId());
|
||||||
|
}
|
||||||
|
|
||||||
|
return frontEndError;
|
||||||
|
|
||||||
} catch (InsufficientPrivilegesException e) {
|
} catch (InsufficientPrivilegesException e) {
|
||||||
workspaceLogger.error("Error in server Item remove", e);
|
workspaceLogger.error("Error in server Item remove", e);
|
||||||
String error = "An error occurred on deleting item. "+e.getMessage();
|
String error = "An error occurred on deleting item. "+e.getMessage();
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspace.shared;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class GarbageItem.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Oct 23, 2015
|
||||||
|
*
|
||||||
|
* USED TO SEND NOTIFICATION AFTER DELETE
|
||||||
|
*/
|
||||||
|
public class GarbageItem implements Serializable{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -1532030116595698658L;
|
||||||
|
|
||||||
|
private boolean sourceItemIsShared;
|
||||||
|
private String oldItemName;
|
||||||
|
private String oldItemId;
|
||||||
|
private String sourceFolderSharedId;
|
||||||
|
|
||||||
|
private String error;
|
||||||
|
|
||||||
|
public GarbageItem(){
|
||||||
|
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Instantiates a new garbage item.
|
||||||
|
*
|
||||||
|
* @param sourceItemIsShared the source item is shared
|
||||||
|
* @param oldItemName the old item name
|
||||||
|
* @param oldItemId the old item id
|
||||||
|
* @param sourceFolderSharedId the source folder shared id
|
||||||
|
*/
|
||||||
|
public GarbageItem(boolean sourceItemIsShared, String oldItemName,
|
||||||
|
String oldItemId, final String sourceFolderSharedId) {
|
||||||
|
this.sourceItemIsShared = sourceItemIsShared;
|
||||||
|
this.oldItemName = oldItemName;
|
||||||
|
this.oldItemId = oldItemId;
|
||||||
|
this.sourceFolderSharedId = sourceFolderSharedId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is source item is shared.
|
||||||
|
*
|
||||||
|
* @return the sourceItemIsShared
|
||||||
|
*/
|
||||||
|
public boolean isSourceItemIsShared() {
|
||||||
|
return sourceItemIsShared;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the old item name.
|
||||||
|
*
|
||||||
|
* @return the oldItemName
|
||||||
|
*/
|
||||||
|
public String getOldItemName() {
|
||||||
|
return oldItemName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the old item id.
|
||||||
|
*
|
||||||
|
* @return the oldItemId
|
||||||
|
*/
|
||||||
|
public String getOldItemId() {
|
||||||
|
return oldItemId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the source folder shared id.
|
||||||
|
*
|
||||||
|
* @return the sourceFolderSharedId
|
||||||
|
*/
|
||||||
|
public String getSourceFolderSharedId() {
|
||||||
|
return sourceFolderSharedId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the source item is shared.
|
||||||
|
*
|
||||||
|
* @param sourceItemIsShared the sourceItemIsShared to set
|
||||||
|
*/
|
||||||
|
public void setSourceItemIsShared(boolean sourceItemIsShared) {
|
||||||
|
this.sourceItemIsShared = sourceItemIsShared;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the old item name.
|
||||||
|
*
|
||||||
|
* @param oldItemName the oldItemName to set
|
||||||
|
*/
|
||||||
|
public void setOldItemName(String oldItemName) {
|
||||||
|
this.oldItemName = oldItemName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the old item id.
|
||||||
|
*
|
||||||
|
* @param oldItemId the oldItemId to set
|
||||||
|
*/
|
||||||
|
public void setOldItemId(String oldItemId) {
|
||||||
|
this.oldItemId = oldItemId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the source folder shared id.
|
||||||
|
*
|
||||||
|
* @param sourceFolderSharedId the sourceFolderSharedId to set
|
||||||
|
*/
|
||||||
|
public void setSourceFolderSharedId(String sourceFolderSharedId) {
|
||||||
|
this.sourceFolderSharedId = sourceFolderSharedId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setError(String error){
|
||||||
|
this.error = error;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the error
|
||||||
|
*/
|
||||||
|
public String getError() {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see java.lang.Object#toString()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("GarbageItem [sourceItemIsShared=");
|
||||||
|
builder.append(sourceItemIsShared);
|
||||||
|
builder.append(", oldItemName=");
|
||||||
|
builder.append(oldItemName);
|
||||||
|
builder.append(", oldItemId=");
|
||||||
|
builder.append(oldItemId);
|
||||||
|
builder.append(", sourceFolderSharedId=");
|
||||||
|
builder.append(sourceFolderSharedId);
|
||||||
|
builder.append(", error=");
|
||||||
|
builder.append(error);
|
||||||
|
builder.append("]");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,229 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspace;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.common.homelibary.model.items.type.WorkspaceItemType;
|
||||||
|
import org.gcube.common.homelibrary.home.HomeLibrary;
|
||||||
|
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
|
||||||
|
import org.gcube.common.homelibrary.home.workspace.Workspace;
|
||||||
|
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
|
||||||
|
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
|
||||||
|
import org.gcube.common.homelibrary.home.workspace.exceptions.InsufficientPrivilegesException;
|
||||||
|
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException;
|
||||||
|
import org.gcube.common.homelibrary.home.workspace.folder.FolderItem;
|
||||||
|
import org.gcube.common.scope.api.ScopeProvider;
|
||||||
|
import org.gcube.common.scope.impl.ScopeBean;
|
||||||
|
import org.gcube.portlets.user.workspace.client.model.FileGridModel;
|
||||||
|
import org.gcube.portlets.user.workspace.server.GWTWorkspaceBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Oct 28, 2015
|
||||||
|
*/
|
||||||
|
public class DeleteTest {
|
||||||
|
|
||||||
|
|
||||||
|
public static String DEFAULT_SCOPE = "/gcube/devsec"; //DEV
|
||||||
|
// public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps/DESCRAMBLE";
|
||||||
|
public static String TEST_USER = "francesco.mangiacrapa";
|
||||||
|
|
||||||
|
public static String PARENT_ID = "a9ead58c-d645-4699-addd-5c6e5f1aff06";
|
||||||
|
private static Workspace ws;
|
||||||
|
|
||||||
|
private static GWTWorkspaceBuilder builder = new GWTWorkspaceBuilder();
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
ScopeBean scope = new ScopeBean(DEFAULT_SCOPE);
|
||||||
|
ScopeProvider.instance.set(scope.toString());
|
||||||
|
|
||||||
|
ws = HomeLibrary
|
||||||
|
.getHomeManagerFactory()
|
||||||
|
.getHomeManager()
|
||||||
|
.getHome(TEST_USER)
|
||||||
|
.getWorkspace();
|
||||||
|
//
|
||||||
|
|
||||||
|
final List<String> children = getIdsOnlyFolderForID(PARENT_ID);
|
||||||
|
|
||||||
|
|
||||||
|
if(children.size()<2){
|
||||||
|
System.err.println("children size < 2, add others children");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final int medium = children.size()/2;
|
||||||
|
|
||||||
|
Thread t1 = new Thread("T1"){
|
||||||
|
public void run() {
|
||||||
|
System.out.println("T1 start...");
|
||||||
|
removeRange(children, 0, medium);
|
||||||
|
System.out.println("T1 end");
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
t1.start();
|
||||||
|
t1.join();
|
||||||
|
|
||||||
|
List<? extends WorkspaceItem> childrenNEW = getChildrenForID(PARENT_ID);
|
||||||
|
|
||||||
|
print(childrenNEW);
|
||||||
|
|
||||||
|
|
||||||
|
Thread t2 = new Thread("T2"){
|
||||||
|
public void run() {
|
||||||
|
System.out.println("T2 start...");
|
||||||
|
removeRange(children, medium, children.size());
|
||||||
|
System.out.println("T2 end");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
t2.start();
|
||||||
|
t2.join();
|
||||||
|
|
||||||
|
childrenNEW = getChildrenForID(PARENT_ID);
|
||||||
|
print(childrenNEW);
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("\n\nDONE!");
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static void print(final List<? extends WorkspaceItem> children){
|
||||||
|
int i=0;
|
||||||
|
System.out.println("\n\n");
|
||||||
|
for (WorkspaceItem workspaceItem : children) {
|
||||||
|
|
||||||
|
if(workspaceItem.getType().equals(WorkspaceItemType.FOLDER) || workspaceItem.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
|
||||||
|
|
||||||
|
WorkspaceFolder folder = (WorkspaceFolder) workspaceItem;
|
||||||
|
|
||||||
|
try {
|
||||||
|
System.err.println(++i+") folder id: "+folder.getId() +", folder name: "+folder.getName());
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
|
||||||
|
|
||||||
|
if(workspaceItem.getType().equals(WorkspaceItemType.FOLDER_ITEM)){
|
||||||
|
|
||||||
|
FolderItem folderItem = (FolderItem) workspaceItem;
|
||||||
|
|
||||||
|
try {
|
||||||
|
System.err.println(++i+") folderItem id: "+folderItem.getId() +", name: "+folderItem.getName() + ", size: "+folderItem.getLength());
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<? extends WorkspaceItem> getChildrenForID(String id){
|
||||||
|
|
||||||
|
WorkspaceFolder folder;
|
||||||
|
try {
|
||||||
|
System.out.println("start getItem on id "+id);
|
||||||
|
folder = (WorkspaceFolder) ws.getItem(id);
|
||||||
|
System.out.println("start get children on folder "+folder.getName());
|
||||||
|
final List<? extends WorkspaceItem> children = folder.getChildren();
|
||||||
|
|
||||||
|
builder.buildGXTListFileGridModelItem(folder.getChildren(), null);
|
||||||
|
|
||||||
|
// builder.buildGXTFileGridModelItem(folder, null);
|
||||||
|
|
||||||
|
System.out.println("children size: "+children.size());
|
||||||
|
return children;
|
||||||
|
} catch (ItemNotFoundException | InternalErrorException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<String> getIdsForID(String id){
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<? extends WorkspaceItem> children = getChildrenForID(id);
|
||||||
|
List<String> ids = new ArrayList<String>(children.size());
|
||||||
|
for (WorkspaceItem workspaceItem : children) {
|
||||||
|
ids.add(workspaceItem.getId());
|
||||||
|
}
|
||||||
|
return ids;
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<String> getIdsOnlyFolderForID(String id){
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<? extends WorkspaceItem> children = getChildrenForID(id);
|
||||||
|
List<String> ids = new ArrayList<String>(children.size());
|
||||||
|
for (WorkspaceItem workspaceItem : children) {
|
||||||
|
if(workspaceItem.isFolder())
|
||||||
|
ids.add(workspaceItem.getId());
|
||||||
|
}
|
||||||
|
return ids;
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static void removeRange(List<String> children, int start, int end) {
|
||||||
|
|
||||||
|
System.out.println("start "+start);
|
||||||
|
System.out.println("end "+end);
|
||||||
|
// System.out.println("(end - start)"+(end - start));
|
||||||
|
|
||||||
|
List<String> sub = children.subList(start, end);
|
||||||
|
String[] array = new String[sub.size()];
|
||||||
|
array = sub.toArray(array);
|
||||||
|
|
||||||
|
System.out.println("array lenght: "+array.length);
|
||||||
|
|
||||||
|
for (String id : array)
|
||||||
|
System.out.println("Removing "+id);
|
||||||
|
|
||||||
|
try {
|
||||||
|
ws.removeItems(array);
|
||||||
|
|
||||||
|
System.out.println("Remove OK ");
|
||||||
|
} catch (ItemNotFoundException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (InsufficientPrivilegesException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue