package org.gcube.portlets.widgets.ckandatapublisherwidget.client; import java.util.List; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.DatasetBean; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.MetadataProfileBeanForUpdate; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.OrganizationBean; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.ResourceElementBean; import org.gcube.portlets.widgets.mpformbuilder.shared.license.LicenseBean; import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetaDataProfileBean; import com.google.gwt.user.client.rpc.AsyncCallback; /** * CKAN publisher services RPC. * * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) */ public interface CKanPublisherServiceAsync { /** * Retrieve the list of licenses to show to the user. * * @param callback the callback * @return a LicenseBean on success, null on error. */ void getLicenses(AsyncCallback> callback); /** * Retrieve a partially filled bean given a folder id/file id and its owner. * * @param folderIdOrFileId the id of the folder of file to publish * @param callback the callback * @return @return a DatasetMetadataBean on success, null on error. */ void getDatasetBean(String folderIdOrFileId, AsyncCallback callback); /** * Try to create such dataset starting from the information contained into the * toCreate bean. * * @param toCreate the to create * @param callback the callback * @return the sent bean full filled with the needed information */ void createCKanDataset(DatasetBean toCreate, AsyncCallback callback); /** * Add this resource to the dataset whose id is datasetId. * * @param resource the resource * @param organizationName the organization name * @param datasetId the dataset id * @param callback the callback */ void addResourceToDataset(ResourceElementBean resource, String organizationName, String datasetId, AsyncCallback callback); /** * Delete this resource from the dataset with id datasetId. * * @param resource the resource * @param callback the callback * @return true on success, false otherwise */ void deleteResourceFromDataset(ResourceElementBean resource, AsyncCallback callback); /** * Retrieve the list of profiles for a given organization name . * * @param orgName the org name * @param callback the callback * @return a List on success, null on error. */ void getProfiles(String orgName, AsyncCallback> callback); /** * Given the title the user wants to give to the new product to create, a check * is performed to understand if a dataset with the proposed title (and so the * id generated at server side) already exists. * * @param title the title * @param orgName the org name * @param callback the callback * @return true if it exists, false otherwise */ void datasetIdAlreadyExists(String title, String orgName, AsyncCallback callback); // /** // * Return a tree object representing the whole folder hierarchy // * @param folderId // * @return ResourceElementBean // */ // void getTreeFolder(String folderId, // AsyncCallback callback); /** * Retrieve the list of groups the user can choose to associate this product * with. * * @param orgName retrieve the groups in the context linked to this name. If * null, returns the one in the current context. * @param callback the callback * @return a list of groups' beans */ void getUserGroups(String orgName, AsyncCallback> callback); /** * Checks if is publisher user. * * @param callback the callback */ void isPublisherUser(AsyncCallback callback); /** * Get the list of vocabulary tags for this scope. * * @param orgName the org name * @param callback the callback * @return the tags for organization */ void getTagsForOrganization(String orgName, AsyncCallback> callback); /** * Validate a geo json field. * * @param json the json * @param callback the callback */ void isGeoJSONValid(String json, AsyncCallback callback); /** * Checks if is owner or admin user. * * @param datasetIdOrName the dataset id or name * @param callback the callback * @return true, if is owner or admin user */ void isPublisherOwnerOrAdminUser(String datasetIdOrName, AsyncCallback callback); /** * Gets the dataset bean. * * @param itemID the item ID * @return the dataset bean * @throws Exception the exception */ void getDatasetBeanForUpdate(String itemID, AsyncCallback callback); /** * Gets the profile for update. * * @param orgName the org name * @param datasetType the dataset type * @param datasedIdOrName the datased id or name * @param callaback the callaback * @return the profile for update */ void getProfileForUpdate(String orgName, String datasetType, String datasedIdOrName, AsyncCallback callaback); /** * Update CKAN dataset. * * @param toUpdate the to update * @param callaback the callaback * @throws Exception the exception */ void updateCKANDataset(DatasetBean toUpdate, AsyncCallback callaback); /** * Gets the public link for file item id. * * @param itemId the item id * @param shortenUrl the shorten url * @param callaback the callaback * @return the public link for file item id * @throws Exception the exception */ void getPublicLinkForFileItemId(String itemId, boolean shortenUrl, AsyncCallback callaback); }