package org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing; import java.util.ArrayList; import java.util.List; import org.gcube.portlets.widgets.workspacesharingwidget.client.ConstantsSharing; import org.gcube.portlets.widgets.workspacesharingwidget.client.WorkspaceSharingController; import org.gcube.portlets.widgets.workspacesharingwidget.shared.CredentialModel; 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 * */ public class UserStore implements ContactFetcher{ public static List listAllContact = null; // public boolean syncronizeCleanSharedUser = false; public UserStore() { } @Override public void getListSharedUserByFolderId(String sharedFolderId, AsyncCallback> callback){ loadSharedUserBySharedFolderId(sharedFolderId, callback); } private void loadAllUsersFromServer(final AsyncCallback> callback){ listAllContact = new ArrayList(); WorkspaceSharingController.rpcWorkspaceSharingService.getAllContacts(new AsyncCallback>() { @Override public void onSuccess(List result) { GWT.log("Get all contacts loaded "+result.size() + " contacts from server"); listAllContact = result; callback.onSuccess(listAllContact); } @Override public void onFailure(Throwable caught) { MessageBox.alert("Error", ConstantsSharing.SERVER_ERROR +" retrieving user " + ConstantsSharing.TRY_AGAIN, null); callback.onFailure(caught); } }); } private void loadSharedUserBySharedFolderId(final String sharedFolderId, final AsyncCallback> callback){ // comboSharedUsers.mask("Loading users"); WorkspaceSharingController.rpcWorkspaceSharingService.getListUserSharedByFolderSharedId(sharedFolderId, new AsyncCallback>() { @Override public void onFailure(Throwable caught) { MessageBox.alert("Error", ConstantsSharing.SERVER_ERROR +" retrieving user. " + ConstantsSharing.TRY_AGAIN, null); callback.onFailure(caught); } @Override public void onSuccess(List result) { GWT.log("Get List user shared loaded "+result.size() + " contacts from server for "+sharedFolderId); callback.onSuccess(result); } }); } @Override public List getExclusiveContactsFromAllContact(List listSharedUser){ List listExclusiveContact = new ArrayList(listAllContact); for (InfoContactModel contact : listSharedUser) { if(listAllContact.contains(contact)){ listExclusiveContact.remove(contact); } } return listExclusiveContact; } @Override public void getOwner(final String sharedFolderId,final AsyncCallback callback) { WorkspaceSharingController.rpcWorkspaceSharingService.getOwnerByItemId(sharedFolderId, new AsyncCallback() { @Override public void onFailure(Throwable caught) { GWT.log("an error occured in get Owner by Id "+sharedFolderId + " "+caught.getMessage()); } @Override public void onSuccess(InfoContactModel result) { callback.onSuccess(result); } }); } @Override public void getInfoContactModelsFromCredential(List listAlreadySharedContact, final AsyncCallback> callback){ WorkspaceSharingController.rpcWorkspaceSharingService.getInfoContactModelsFromCredential(listAlreadySharedContact, new AsyncCallback>() { @Override public void onFailure(Throwable caught) { GWT.log("an error occured ingetInfoContactModelsFromCredential "+caught.getMessage()); } @Override public void onSuccess(List result) { callback.onSuccess(result); } }); } /* (non-Javadoc) * @see org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.ContactFetcher#getListContact(com.google.gwt.user.client.rpc.AsyncCallback, boolean, boolean, boolean) */ @Override public void getListContact(AsyncCallback> callback,boolean reloadList) { if(reloadList || listAllContact==null) loadAllUsersFromServer(callback); else callback.onSuccess(listAllContact); } /* (non-Javadoc) * @see org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.ContactFetcher#getAdministratorsByFolderId(java.lang.String, com.google.gwt.user.client.rpc.AsyncCallback) */ @Override public void getAdministratorsByFolderId(String sharedFolderId, final AsyncCallback> callback) { if(sharedFolderId==null || sharedFolderId.isEmpty()) return; WorkspaceSharingController.rpcWorkspaceSharingService.getAdministratorsByFolderId(sharedFolderId, new AsyncCallback>() { @Override public void onFailure(Throwable caught) { callback.onFailure(caught); } @Override public void onSuccess(List result) { callback.onSuccess(result); } }); } }