///* //Copyright 2012-2013 Eduworks Corporation // //Licensed under the Apache License, Version 2.0 (the "License"); //you may not use this file except in compliance with the License. //You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // //Unless required by applicable law or agreed to in writing, software //distributed under the License is distributed on an "AS IS" BASIS, //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. //See the License for the specific language governing permissions and //limitations under the License. //*/ package com.eduworks.russel.ui.client.net; import org.vectomatic.file.Blob; import com.eduworks.gwt.client.net.CommunicationHub; import com.eduworks.gwt.client.net.MultipartPost; import com.eduworks.gwt.client.net.callback.ESBCallback; import com.eduworks.gwt.client.net.packet.ESBPacket; import com.eduworks.russel.ui.client.handler.SearchHandler; import com.eduworks.russel.ui.client.pagebuilder.screen.PermissionScreen; import com.google.gwt.json.client.JSONArray; public class RusselApi { public static final String GENERATE_LINK_METADATA = "link"; public static final String GENERATE_FILE_METADATA = "file"; public static String sessionId; public static String username; public static String getESBActionURL(String action) { return CommunicationHub.esbURL + action; } public static String createUser(String username, String password, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("username", username); jo.put("password", password); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("createUser"), mp, false, callback); } public static String deleteUser(String username, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); jo.put("username", username); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("deleteUser"), mp, false, callback); } public static String getUsers(ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("getUsers"), mp, false, callback); } public static String getGroups(ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("getGroups"), mp, false, callback); } public static String toggleResourceSearch(String guid, String entityName, boolean add, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); jo.put("resourceid", guid); jo.put("permissionname", entityName); mp.appendMultipartFormData("session", jo); if (add) return CommunicationHub.sendMultipartPost(getESBActionURL("enableResourceSearch"), mp, false, callback); else return CommunicationHub.sendMultipartPost(getESBActionURL("disableResourceSearch"), mp, false, callback); } public static String createGroup(String groupname, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); jo.put("groupname", groupname); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("createGroup"), mp, false, callback); } public static String removeGroup(String groupname, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); jo.put("groupname", groupname); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("deleteGroup"), mp, false, callback); } public static String getGroupMembers(String groupname, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); jo.put("groupname", groupname); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("getGroupMembers"), mp, false, callback); } public static String addGroupMemberUser(String username, String groupname, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); jo.put("groupname", groupname); jo.put("username", username); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("addGroupMemberUser"), mp, false, callback); } public static String removeGroupMemberUser(String username, String groupname, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); jo.put("groupname", groupname); jo.put("username", username); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("deleteGroupMemberUser"), mp, false, callback); } public static String addGroupMemberGroup(String targetGroup, String groupname, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); jo.put("groupname", groupname); jo.put("targetgroup", targetGroup); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("addGroupMemberGroup"), mp, false, callback); } public static String removeGroupMemberGroup(String targetGroup, String groupname, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); jo.put("groupname", groupname); jo.put("targetgroup", targetGroup); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("deleteGroupMemberGroup"), mp, false, callback); } public static String getServicePermissions(ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("getServicePermissionLists"), mp, false, callback); } public static String resetUserPassword(String username, String password, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); jo.put("sessionid", sessionId); jo.put("username", username); jo.put("password", password); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("resetUserPassword"), mp, false, callback); } public static String removePermission(String permission, String source, String sourceType, String destination, String destinationType, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); String url = ""; jo.put("sessionid", sessionId); jo.put("permissionname", permission); if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_USER)) { jo.put("username", source); jo.put("targetuser", destination); url = "removeUserUserPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_GROUP)) { jo.put("username", source); jo.put("groupname", destination); url = "removeUserGroupPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_RESOURCE)) { jo.put("username", source); jo.put("resourceid", destination); url = "removeUserResourcePermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_SERVICE)) { jo.put("username", source); jo.put("servicename", destination); url = "removeUserServicePermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_USER)) { jo.put("groupname", source); jo.put("username", destination); url = "removeGroupUserPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_GROUP)) { jo.put("groupname", source); jo.put("targetgroup", destination); url = "removeGroupGroupPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_RESOURCE)) { jo.put("groupname", source); jo.put("resourceid", destination); url = "removeGroupResourcePermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_SERVICE)) { jo.put("groupname", source); jo.put("servicename", destination); url = "removeGroupServicePermissions"; } mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL(url), mp, false, callback); } public static String addPermission(String permission, String source, String sourceType, String destination, String destinationType, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); String url = ""; jo.put("sessionid", sessionId); jo.put("permissionname", permission); if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_USER)) { jo.put("username", source); jo.put("targetuser", destination); url = "addUserUserPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_GROUP)) { jo.put("username", source); jo.put("groupname", destination); url = "addUserGroupPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_RESOURCE)) { jo.put("username", source); jo.put("resourceid", destination); url = "addUserResourcePermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_SERVICE)) { jo.put("username", source); jo.put("servicename", destination); url = "addUserServicePermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_USER)) { jo.put("groupname", source); jo.put("username", destination); url = "addGroupUserPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_GROUP)) { jo.put("groupname", source); jo.put("targetgroup", destination); url = "addGroupGroupPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_RESOURCE)) { jo.put("groupname", source); jo.put("resourceid", destination); url = "addGroupResourcePermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_SERVICE)) { jo.put("groupname", source); jo.put("servicename", destination); url = "addGroupServicePermissions"; } mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL(url), mp, false, callback); } public static String getPermissions(String source, String sourceType, String destination, String destinationType, ESBCallback<ESBPacket> callback) { ESBPacket jo = new ESBPacket(); MultipartPost mp = new MultipartPost(); String url = ""; jo.put("sessionid", sessionId); if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_USER)) { jo.put("username", source); jo.put("targetuser", destination); url = "getUserUserPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_GROUP)) { jo.put("username", source); jo.put("groupname", destination); url = "getUserGroupPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_RESOURCE)) { jo.put("username", source); jo.put("resourceid", destination); url = "getUserResourcePermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_USER)&&destinationType.equals(PermissionScreen.TYPE_SERVICE)) { jo.put("username", source); url = "getUserServicePermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_USER)) { jo.put("groupname", source); jo.put("username", destination); url = "getGroupUserPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_GROUP)) { jo.put("groupname", source); jo.put("targetgroup", destination); url = "getGroupGroupPermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_RESOURCE)) { jo.put("groupname", source); jo.put("resourceid", destination); url = "getGroupResourcePermissions"; } else if (sourceType.equals(PermissionScreen.TYPE_GROUP)&&destinationType.equals(PermissionScreen.TYPE_SERVICE)) { jo.put("groupname", source); url = "getGroupServicePermissions"; } mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL(url), mp, false, callback); } public static String checkSharedWith(String guid, String source, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket p = new ESBPacket(); p.put("sessionid", sessionId); p.put("resourceid", guid); p.put("source", source); mp.appendMultipartFormData("session", p); return CommunicationHub.sendMultipartPost(getESBActionURL("checkResourceSearch"), mp, false, callback); } private static String russelSearch(ESBPacket ap, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket p = new ESBPacket(); p.put("sessionid", sessionId); p.put("queryparameters", ap); mp.appendMultipartFormData("session", p); return CommunicationHub.sendMultipartPost(getESBActionURL("search"), mp, false, callback); } public static String search(ESBPacket ap, String searchType, ESBCallback<ESBPacket> callback) { if (searchType.equalsIgnoreCase(SearchHandler.SOURCE_LEARNING_REGISTRY)) return lrSearch(ap.getString("q"), ap.getInteger("rows"), ap.getInteger("page"), callback); else return russelSearch(ap, callback); } public static String generateResourceMetadata(String resourceId, boolean url, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("type", url?GENERATE_LINK_METADATA:GENERATE_FILE_METADATA); jo.put("resourceid", resourceId); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("generateResourceMetadata"), mp, false, callback); } /** * Perform a basic search * @param searchTerm The search term * @param rows The number of rows to return * @param page The page to start retrieval * @return Returns the query result JSON string */ public static String lrSearch(String searchTerm, int rows, int page, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); ESBPacket j = new ESBPacket(); jo.put("sessionid", sessionId); j.put("searchterm", searchTerm); j.put("itemsperpage", rows); j.put("page", page); jo.put("queryparameters", j); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("lrSearch"), mp, false, callback); } public static String validateSession(ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("validateSession"), mp, false, callback); } public static String deleteResource(String guid, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("resourceid", guid); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("removeResource"), mp, false, callback); } public static String getComments(String guid, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("resourceid", guid); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("getComments"), mp, false, callback); } public static String getResourceMetadata(String guid, boolean countView, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("resourceid", guid); if (countView) jo.put("type", "count"); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("getResourceMetadata"), mp, false, callback); } public static String updateResourceMetadata(String guid, ESBPacket object, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("resourceid", guid); jo.put("resourcemetadata", object); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("updateResourceMetadata"), mp, false, callback); } public static String getResource(String nodeId, boolean b, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("resourceid", nodeId); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("getResource"), mp, b, callback); } public static String exportZipPackage(JSONArray assetIds, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("resourceid", assetIds); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("zipResources"), mp, true, callback); } public static String updateResourceEpss(JSONArray changes, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("resourcemetadata", changes); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("updateResourceEpss"), mp, true, callback); } public static String downloadContentUrl(String guid, boolean countDL) { StringBuilder sb = new StringBuilder(); sb.append("getResource?sessionid=" + sessionId + "&resourceid=" + guid); if (countDL) sb.append("&type=count"); return getESBActionURL(sb.toString()); } public static String uploadResource(Blob data, String filename, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); mp.appendMultipartFormData("session", jo); mp.appendMultipartFileData(filename, data); return CommunicationHub.sendMultipartPost(getESBActionURL("addResource"), mp, false, callback); } public static String uploadResource(String data, String filename, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); mp.appendMultipartFormData("session", jo); mp.appendMultipartFormData(filename, data); return CommunicationHub.sendMultipartPost(getESBActionURL("addResource"), mp, false, callback); } public static String updateResource(String guid, Blob data, String filename, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("resourceid", guid); mp.appendMultipartFormData("session", jo); mp.appendMultipartFileData(filename, data); return CommunicationHub.sendMultipartPost(getESBActionURL("updateResource"), mp, false, callback); } public static String updateResource(String guid, String data, String filename, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("resourceid", guid); mp.appendMultipartFormData("session", jo); mp.appendMultipartFormData(filename, data); return CommunicationHub.sendMultipartPost(getESBActionURL("updateResource"), mp, false, callback); } public static String addComment(String guid, String text, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); ESBPacket j = new ESBPacket(); j.put("text", text); jo.put("commentparameters", j); jo.put("resourceid", guid); jo.put("sessionid", sessionId); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("addComment"), mp, false, callback); } public static String deleteComment(String resourceId, String commentId, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("resourceid", resourceId); jo.put("commentid", commentId); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("deleteComment"), mp, false, callback); } public static String rateObject(String guid, Integer rating, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); ESBPacket j = new ESBPacket(); j.put("rating", rating); jo.put("ratingparameters", j); jo.put("resourceid", guid); jo.put("sessionid", sessionId); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("addRating"), mp, false, callback); } public static String publishToFlr(String guid, ESBPacket buildFlrDeleteNsdlPacket, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); jo.put("resourceid", guid); jo.put("resourcemetadata", buildFlrDeleteNsdlPacket); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("publishToFlr"), mp, false, callback); } public static String login(String username, String password, ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("username", username); jo.put("password", password); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("login"), mp, false, callback); } public static String logout(ESBCallback<ESBPacket> callback) { MultipartPost mp = new MultipartPost(); ESBPacket jo = new ESBPacket(); jo.put("sessionid", sessionId); mp.appendMultipartFormData("session", jo); return CommunicationHub.sendMultipartPost(getESBActionURL("logout"), mp, false, callback); } }