workspace-sharing-widget/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/SimpleMultiDragContact.java

128 lines
3.7 KiB
Java

/**
*
*/
package org.gcube.portlets.widgets.workspacesharingwidget.client;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.UserStore;
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.multisuggest.MultiDragContact;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @Jul 30, 2014
*
*/
public class SimpleMultiDragContact {
private UserStore userStore = new UserStore();
private LOAD_CONTACTS_AS loadContactAs;
public static enum LOAD_CONTACTS_AS{SHARED_USER, ADMINISTRATOR}
private MultiDragContact multiDragContact = new MultiDragContact();
private List<InfoContactModel> targets = new ArrayList<InfoContactModel>();
/**
* Load administrators or shared users as contacts
*/
public SimpleMultiDragContact(LOAD_CONTACTS_AS load, String workspaceItemId, final boolean readGroupsFromHL, final boolean readGroupsFromPortal) {
this.loadContactAs = load;
switch (loadContactAs) {
case ADMINISTRATOR:
//LOADING LIST OF ALREADY SHARED USER
userStore.getAdministratorsByFolderId(workspaceItemId, new AsyncCallback<List<InfoContactModel>>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("Error on loading admnistrators");
}
@Override
public void onSuccess(List<InfoContactModel> result) {
GWT.log("Returned "+result.size()+" admin/s");
for (InfoContactModel infoContactModel : result) {
if(infoContactModel.getName()!=null){
multiDragContact.addTargetContact(infoContactModel);
targets.add(infoContactModel);
}
}
loadAllContacts(readGroupsFromHL, readGroupsFromPortal);
}
});
break;
case SHARED_USER:
//LOADING LIST OF ALREADY SHARED USER
userStore.getListSharedUserByFolderId(workspaceItemId, new AsyncCallback<List<InfoContactModel>>() {
@Override
public void onSuccess(List<InfoContactModel> result) {
GWT.log("Returned "+result.size()+" contact/s");
for (InfoContactModel infoContactModel : result) {
if(infoContactModel.getName()!=null){
multiDragContact.addTargetContact(infoContactModel);
targets.add(infoContactModel);
}
}
loadAllContacts(readGroupsFromHL, readGroupsFromPortal);
}
@Override
public void onFailure(Throwable caught) {
GWT.log("Error on loading shared contacts");
}
});
break;
default:
break;
}
// List<InfoContactModel> exclusiveContacts = userStore.getExclusiveContactsFromAllContact(suggestPanel.getSelectedUser());
// multiDrag.addSourceContacts(exclusiveContacts);
}
private void loadAllContacts(boolean readGroupsFromHL, boolean readGroupsFromPortal){
userStore.getListContact(addSourceContacts, false, readGroupsFromHL, readGroupsFromPortal);
}
private AsyncCallback<List<InfoContactModel>> addSourceContacts = new AsyncCallback<List<InfoContactModel>>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("Error on loading contacts");
MessageBox.alert("Error", caught.getMessage(), null);
}
@Override
public void onSuccess(List<InfoContactModel> result) {
if(result!=null && result.size()>0){
List<InfoContactModel> exclusiveContacts = userStore.getExclusiveContactsFromAllContact(targets);
multiDragContact.addSourceContacts(exclusiveContacts);
}
}
};
public MultiDragContact getMultiDragContact() {
return multiDragContact;
}
}