PageRenderTime 25ms CodeModel.GetById 0ms RepoModel.GetById 1ms app.codeStats 0ms

/tags/release-0.1-rc2/hive/external/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/Privilege.java

#
Java | 189 lines | 138 code | 30 blank | 21 comment | 25 complexity | 82c2286221b515513a1554f5c39ca5f6 MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause, JSON, CPL-1.0
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. package org.apache.hadoop.hive.ql.security.authorization;
  19. import java.util.EnumSet;
  20. import org.apache.hadoop.hive.ql.parse.HiveParser;
  21. /**
  22. * Privilege defines a privilege in Hive. Each privilege has a name and scope associated with it.
  23. * This class contains all of the predefined privileges in Hive.
  24. */
  25. public class Privilege {
  26. public enum PrivilegeType {
  27. ALL,
  28. ALTER_DATA,
  29. ALTER_METADATA,
  30. CREATE,
  31. DROP,
  32. INDEX,
  33. LOCK,
  34. SELECT,
  35. SHOW_DATABASE,
  36. UNKNOWN
  37. }
  38. public static PrivilegeType getPrivTypeByToken(int token) {
  39. switch (token) {
  40. case HiveParser.TOK_PRIV_ALL:
  41. return PrivilegeType.ALL;
  42. case HiveParser.TOK_PRIV_ALTER_DATA:
  43. return PrivilegeType.ALTER_DATA;
  44. case HiveParser.TOK_PRIV_ALTER_METADATA:
  45. return PrivilegeType.ALTER_METADATA;
  46. case HiveParser.TOK_PRIV_CREATE:
  47. return PrivilegeType.CREATE;
  48. case HiveParser.TOK_PRIV_DROP:
  49. return PrivilegeType.DROP;
  50. case HiveParser.TOK_PRIV_INDEX:
  51. return PrivilegeType.INDEX;
  52. case HiveParser.TOK_PRIV_LOCK:
  53. return PrivilegeType.LOCK;
  54. case HiveParser.TOK_PRIV_SELECT:
  55. return PrivilegeType.SELECT;
  56. case HiveParser.TOK_PRIV_SHOW_DATABASE:
  57. return PrivilegeType.SHOW_DATABASE;
  58. default:
  59. return PrivilegeType.UNKNOWN;
  60. }
  61. }
  62. public static PrivilegeType getPrivTypeByName(String privilegeName) {
  63. String canonicalizedName = privilegeName.toLowerCase();
  64. if (canonicalizedName.equals("all")) {
  65. return PrivilegeType.ALL;
  66. } else if (canonicalizedName.equals("update")) {
  67. return PrivilegeType.ALTER_DATA;
  68. } else if (canonicalizedName.equals("alter")) {
  69. return PrivilegeType.ALTER_METADATA;
  70. } else if (canonicalizedName.equals("create")) {
  71. return PrivilegeType.CREATE;
  72. } else if (canonicalizedName.equals("drop")) {
  73. return PrivilegeType.DROP;
  74. } else if (canonicalizedName.equals("index")) {
  75. return PrivilegeType.INDEX;
  76. } else if (canonicalizedName.equals("lock")) {
  77. return PrivilegeType.LOCK;
  78. } else if (canonicalizedName.equals("select")) {
  79. return PrivilegeType.SELECT;
  80. } else if (canonicalizedName.equals("show_database")) {
  81. return PrivilegeType.SHOW_DATABASE;
  82. }
  83. return PrivilegeType.UNKNOWN;
  84. }
  85. private PrivilegeType priv;
  86. private EnumSet<PrivilegeScope> supportedScopeSet;
  87. private Privilege(PrivilegeType priv, EnumSet<PrivilegeScope> scopeSet) {
  88. super();
  89. this.priv = priv;
  90. this.supportedScopeSet = scopeSet;
  91. }
  92. public Privilege(PrivilegeType priv) {
  93. super();
  94. this.priv = priv;
  95. }
  96. public PrivilegeType getPriv() {
  97. return priv;
  98. }
  99. public void setPriv(PrivilegeType priv) {
  100. this.priv = priv;
  101. }
  102. public boolean supportColumnLevel() {
  103. return supportedScopeSet != null
  104. && supportedScopeSet.contains(PrivilegeScope.COLUMN_LEVEL_SCOPE);
  105. }
  106. public boolean supportDBLevel() {
  107. return supportedScopeSet != null
  108. && supportedScopeSet.contains(PrivilegeScope.DB_LEVEL_SCOPE);
  109. }
  110. public boolean supportTableLevel() {
  111. return supportedScopeSet != null
  112. && supportedScopeSet.contains(PrivilegeScope.TABLE_LEVEL_SCOPE);
  113. }
  114. @Override
  115. public String toString() {
  116. switch (this.priv) {
  117. case ALL:
  118. return "All";
  119. case ALTER_DATA:
  120. return "Update";
  121. case ALTER_METADATA:
  122. return "Alter";
  123. case CREATE:
  124. return "Create";
  125. case DROP:
  126. return "Drop";
  127. case INDEX:
  128. return "Index";
  129. case LOCK:
  130. return "Lock";
  131. case SELECT:
  132. return "Select";
  133. case SHOW_DATABASE:
  134. return "Show_Database";
  135. default:
  136. return "Unknown";
  137. }
  138. }
  139. public Privilege() {
  140. }
  141. public static Privilege ALL = new Privilege(PrivilegeType.ALL,
  142. PrivilegeScope.ALLSCOPE_EXCEPT_COLUMN);
  143. public static Privilege ALTER_METADATA = new Privilege(PrivilegeType.ALTER_METADATA,
  144. PrivilegeScope.ALLSCOPE_EXCEPT_COLUMN);
  145. public static Privilege ALTER_DATA = new Privilege(PrivilegeType.ALTER_DATA,
  146. PrivilegeScope.ALLSCOPE_EXCEPT_COLUMN);
  147. public static Privilege CREATE = new Privilege(PrivilegeType.CREATE,
  148. PrivilegeScope.ALLSCOPE_EXCEPT_COLUMN);
  149. public static Privilege DROP = new Privilege(PrivilegeType.DROP,
  150. PrivilegeScope.ALLSCOPE_EXCEPT_COLUMN);
  151. public static Privilege INDEX = new Privilege(PrivilegeType.INDEX,
  152. PrivilegeScope.ALLSCOPE);
  153. public static Privilege LOCK = new Privilege(PrivilegeType.LOCK,
  154. PrivilegeScope.ALLSCOPE_EXCEPT_COLUMN);
  155. public static Privilege SELECT = new Privilege(PrivilegeType.SELECT,
  156. PrivilegeScope.ALLSCOPE);
  157. public static Privilege SHOW_DATABASE = new Privilege(PrivilegeType.SHOW_DATABASE,
  158. EnumSet.of(PrivilegeScope.USER_LEVEL_SCOPE));
  159. }