Permissions.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /**
  2. Licensed Materials - Property of IBM
  3. IBM Cognos Products: DOCS
  4. (C) Copyright IBM Corp. 2005, 2008
  5. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
  6. IBM Corp.
  7. */
  8. /**
  9. * Permissions.java
  10. *
  11. * Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  12. * Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  13. *
  14. * Description: This file contains methods for handling permissions
  15. *
  16. */
  17. import com.cognos.developer.schemas.bibus._3.AccessEnum;
  18. import com.cognos.developer.schemas.bibus._3.Account;
  19. import com.cognos.developer.schemas.bibus._3.BaseClass;
  20. import com.cognos.developer.schemas.bibus._3.Folder;
  21. import com.cognos.developer.schemas.bibus._3.Permission;
  22. import com.cognos.developer.schemas.bibus._3.Policy;
  23. import com.cognos.developer.schemas.bibus._3.PropEnum;
  24. import com.cognos.developer.schemas.bibus._3.QueryOptions;
  25. import com.cognos.developer.schemas.bibus._3.SearchPathMultipleObject;
  26. import com.cognos.developer.schemas.bibus._3.Sort;
  27. import com.cognos.developer.schemas.bibus._3.UpdateOptions;
  28. public class Permissions
  29. {
  30. /**
  31. * Modifies permissions.
  32. *
  33. * @param connection connection to server
  34. *
  35. */
  36. public String modifyPermissions(CRNConnect connection)
  37. {
  38. BaseClass results[] = new BaseClass[] {};
  39. Folder csFolder = null;
  40. Account myAccount = null;
  41. String subfolder = "/folder[@name='My Folders']";
  42. Permission newPermission = null;
  43. try
  44. {
  45. myAccount = Logon.getLogonAccount(connection);
  46. String folder = myAccount.getSearchPath().getValue() + subfolder;
  47. results =
  48. connection.getCMService().query(
  49. new SearchPathMultipleObject(folder),
  50. new PropEnum[] { PropEnum.searchPath, PropEnum.policies },
  51. new Sort[] {},
  52. new QueryOptions());
  53. }
  54. catch (java.rmi.RemoteException remoteEx)
  55. {
  56. System.out.println("Caught Remote Exception:\n");
  57. remoteEx.printStackTrace();
  58. }
  59. if (results.length > 0)
  60. {
  61. csFolder = (Folder)results[0];
  62. }
  63. else
  64. {
  65. return (
  66. "Expected folder \""
  67. + subfolder
  68. + "\" not found for the current user.\n"
  69. + "Please create this folder before running this sample.");
  70. }
  71. Policy pol;
  72. for (int i = 0; i < csFolder.getPolicies().getValue().length; i++)
  73. {
  74. pol = csFolder.getPolicies().getValue()[i];
  75. //
  76. if (pol
  77. .getSecurityObject()
  78. .getSearchPath()
  79. .getValue()
  80. .equals(myAccount.getSearchPath().getValue()))
  81. {
  82. newPermission = new Permission();
  83. newPermission.setName("read");
  84. boolean found = false;
  85. Permission[] permissions = pol.getPermissions();
  86. for (int j = 0; j < permissions.length; j++)
  87. {
  88. if (permissions[j].getName().compareTo("read") == 0)
  89. {
  90. if (permissions[j].getAccess().equals(AccessEnum.deny))
  91. {
  92. newPermission.setAccess(AccessEnum.grant);
  93. }
  94. else
  95. {
  96. newPermission.setAccess(AccessEnum.deny);
  97. }
  98. permissions[j] = newPermission;
  99. found = true;
  100. }
  101. }
  102. if (!found)
  103. {
  104. int k = permissions.length + 1;
  105. Permission replacements[] = new Permission[k];
  106. for (int r = 0; r < k; r++)
  107. {
  108. replacements[r] = permissions[r];
  109. }
  110. replacements[k - 1] = newPermission;
  111. pol.setPermissions(replacements);
  112. }
  113. try
  114. {
  115. BaseClass[] updatedItems =
  116. connection.getCMService().update(
  117. new BaseClass[] { csFolder },
  118. new UpdateOptions());
  119. if (updatedItems.length > 0)
  120. {
  121. return (
  122. "Successfully changed "
  123. + newPermission.getName()
  124. + " permission on folder \""
  125. + subfolder
  126. + "\" for "
  127. + myAccount.getDefaultName().getValue()
  128. + " to "
  129. + newPermission.getAccess().getValue());
  130. }
  131. }
  132. catch (java.rmi.RemoteException remoteEx)
  133. {
  134. remoteEx.printStackTrace();
  135. return "Exception Caught:\n" + remoteEx.getMessage();
  136. }
  137. }
  138. }
  139. return (
  140. "Unable to find \""
  141. + subfolder
  142. + "\" for "
  143. + myAccount.getDefaultName().getValue());
  144. }
  145. }