PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/mollify/src/org/sjarvela/mollify/client/service/environment/php/PhpConfigurationService.java

http://mollify.googlecode.com/
Java | 215 lines | 168 code | 38 blank | 9 comment | 4 complexity | 80ec04674d1667ec9b1a8881a675bade MD5 | raw file
Possible License(s): LGPL-2.1, BSD-3-Clause
  1. /**
  2. * Copyright (c) 2008- Samuli J?rvel?
  3. *
  4. * All rights reserved. This program and the accompanying materials
  5. * are made available under the terms of the Eclipse Public License v1.0
  6. * which accompanies this distribution, and is available at
  7. * http://www.eclipse.org/legal/epl-v10.html. If redistributing this code,
  8. * this entire header must remain intact.
  9. */
  10. package org.sjarvela.mollify.client.service.environment.php;
  11. import java.util.List;
  12. import java.util.logging.Level;
  13. import java.util.logging.Logger;
  14. import org.sjarvela.mollify.client.filesystem.FolderDef;
  15. import org.sjarvela.mollify.client.filesystem.UserFolder;
  16. import org.sjarvela.mollify.client.service.ConfigurationService;
  17. import org.sjarvela.mollify.client.service.ServiceError;
  18. import org.sjarvela.mollify.client.service.environment.php.PhpService.RequestType;
  19. import org.sjarvela.mollify.client.service.request.JSONBuilder;
  20. import org.sjarvela.mollify.client.service.request.listener.ResultListener;
  21. import org.sjarvela.mollify.client.session.user.User;
  22. import org.sjarvela.mollify.client.session.user.UserGroup;
  23. import org.sjarvela.mollify.client.session.user.UserPermissionMode;
  24. import org.sjarvela.mollify.client.session.user.UsersAndGroups;
  25. import org.sjarvela.mollify.client.util.Base64;
  26. import org.sjarvela.mollify.client.util.JsUtil;
  27. import org.sjarvela.mollify.client.util.MD5;
  28. import com.google.gwt.core.client.JavaScriptObject;
  29. import com.google.gwt.core.client.JsArray;
  30. import com.google.gwt.json.client.JSONObject;
  31. import com.google.gwt.logging.client.LogConfiguration;
  32. public class PhpConfigurationService extends ServiceBase implements
  33. ConfigurationService {
  34. private static Logger logger = Logger
  35. .getLogger(PhpConfigurationService.class.getName());
  36. enum ConfigurationAction implements ActionId {
  37. users, usersgroups, password, folders, userfolders
  38. }
  39. public PhpConfigurationService(PhpService service) {
  40. super(service, RequestType.configuration);
  41. }
  42. public void changePassword(String oldPassword, String newPassword,
  43. ResultListener<Boolean> resultListener) {
  44. if (LogConfiguration.loggingIsEnabled())
  45. logger.log(Level.INFO, "Change password");
  46. String data = new JSONBuilder("old", MD5.generate(oldPassword))
  47. .add("new", Base64.encode(newPassword)).toString();
  48. request()
  49. .url(serviceUrl().item("users").item("current")
  50. .action(ConfigurationAction.password)).data(data)
  51. .listener(resultListener).put();
  52. }
  53. public void getUsersAndGroups(
  54. final ResultListener<UsersAndGroups> resultListener) {
  55. if (LogConfiguration.loggingIsEnabled())
  56. logger.log(Level.INFO, "Get users");
  57. ResultListener<JavaScriptObject> listener = new ResultListener<JavaScriptObject>() {
  58. public void onFail(ServiceError error) {
  59. resultListener.onFail(error);
  60. }
  61. public void onSuccess(JavaScriptObject result) {
  62. JSONObject o = new JSONObject(result);
  63. JsArray<User> users = (JsArray<User>) o.get("users").isArray()
  64. .getJavaScriptObject();
  65. JsArray<UserGroup> groups = (JsArray<UserGroup>) o
  66. .get("groups").isArray().getJavaScriptObject();
  67. resultListener.onSuccess(new UsersAndGroups(JsUtil.asList(
  68. users, User.class), JsUtil.asList(groups,
  69. UserGroup.class)));
  70. }
  71. };
  72. request().url(serviceUrl().action(ConfigurationAction.usersgroups))
  73. .listener(listener).get();
  74. }
  75. public void getFolders(final ResultListener<List<FolderDef>> resultListener) {
  76. if (LogConfiguration.loggingIsEnabled())
  77. logger.log(Level.INFO, "Get directories");
  78. ResultListener<JsArray<FolderDef>> listener = new ResultListener<JsArray<FolderDef>>() {
  79. public void onFail(ServiceError error) {
  80. resultListener.onFail(error);
  81. }
  82. public void onSuccess(JsArray<FolderDef> result) {
  83. resultListener
  84. .onSuccess(JsUtil.asList(result, FolderDef.class));
  85. }
  86. };
  87. request().url(serviceUrl().action(ConfigurationAction.folders))
  88. .listener(listener).get();
  89. }
  90. public void addUser(String name, String password, UserPermissionMode mode,
  91. ResultListener resultListener) {
  92. String data = new JSONBuilder("name", name)
  93. .add("password", MD5.generate(password))
  94. .add("permission_mode", mode.getStringValue()).toString();
  95. request().url(serviceUrl().action(ConfigurationAction.users))
  96. .data(data).listener(resultListener).post();
  97. }
  98. public void editUser(User user, String name, UserPermissionMode mode,
  99. ResultListener resultListener) {
  100. String data = new JSONBuilder("name", name).add(
  101. "permission_mode", mode.getStringValue()).toString();
  102. request()
  103. .url(serviceUrl().action(ConfigurationAction.users).item(
  104. user.getId())).data(data).listener(resultListener)
  105. .put();
  106. }
  107. public void removeUser(User user, final ResultListener resultListener) {
  108. request()
  109. .url(serviceUrl().action(ConfigurationAction.users).item(
  110. user.getId())).listener(resultListener).delete();
  111. }
  112. public void addFolder(String name, String path,
  113. ResultListener resultListener) {
  114. String data = new JSONBuilder("name", name).add("path", path)
  115. .toString();
  116. request().url(serviceUrl().action(ConfigurationAction.folders))
  117. .data(data).listener(resultListener).post();
  118. }
  119. public void editFolder(FolderDef dir, String name, String path,
  120. ResultListener resultListener) {
  121. String data = new JSONBuilder("name", name).add("path", path)
  122. .toString();
  123. request()
  124. .url(serviceUrl().action(ConfigurationAction.folders).item(
  125. dir.getId())).data(data).listener(resultListener).put();
  126. }
  127. public void removeFolder(FolderDef dir, ResultListener resultListener) {
  128. request()
  129. .url(serviceUrl().action(ConfigurationAction.folders).item(
  130. dir.getId())).listener(resultListener).delete();
  131. }
  132. public void getUserFolders(User user,
  133. final ResultListener<List<UserFolder>> resultListener) {
  134. if (LogConfiguration.loggingIsEnabled())
  135. logger.log(Level.INFO, "Get directories");
  136. ResultListener<JsArray<UserFolder>> listener = new ResultListener<JsArray<UserFolder>>() {
  137. public void onFail(ServiceError error) {
  138. resultListener.onFail(error);
  139. }
  140. public void onSuccess(JsArray<UserFolder> result) {
  141. resultListener.onSuccess(JsUtil
  142. .asList(result, UserFolder.class));
  143. }
  144. };
  145. request()
  146. .url(serviceUrl().action(ConfigurationAction.userfolders).item(
  147. user.getId())).listener(listener).get();
  148. }
  149. public void addUserFolder(User user, FolderDef dir, String name,
  150. ResultListener resultListener) {
  151. String data = new JSONBuilder("id", dir.getId())
  152. .add("name", name).toString();
  153. request()
  154. .url(serviceUrl().action(ConfigurationAction.userfolders).item(
  155. user.getId())).data(data).listener(resultListener)
  156. .post();
  157. }
  158. public void editUserFolder(User user, UserFolder dir, String name,
  159. ResultListener resultListener) {
  160. String data = new JSONBuilder("name", name).toString();
  161. request()
  162. .url(serviceUrl().action(ConfigurationAction.userfolders)
  163. .item(user.getId()).item(dir.getId())).data(data)
  164. .listener(resultListener).put();
  165. }
  166. public void removeUserFolder(User user, UserFolder dir,
  167. ResultListener resultListener) {
  168. request()
  169. .url(serviceUrl().action(ConfigurationAction.userfolders)
  170. .item(user.getId()).item(dir.getId()))
  171. .listener(resultListener).delete();
  172. }
  173. @Override
  174. public String getAdministrationUrl() {
  175. return service.adminUrl;
  176. }
  177. }