Coverage Summary for Class: CommonGrantDomainCreatePermissionSysPersister (com.acciente.oacc.sql.internal.persister)
Class | Class, % | Method, % | Line, % |
---|---|---|---|
CommonGrantDomainCreatePermissionSysPersister | 100% (1/ 1) | 100% (7/ 7) | 86.1% (62/ 72) |
1 /*
2 * Copyright 2009-2018, Acciente LLC
3 *
4 * Acciente LLC licenses this file to you under the
5 * Apache License, Version 2.0 (the "License"); you
6 * may not use this file except in compliance with the
7 * License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in
12 * writing, software distributed under the License is
13 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
14 * OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing
16 * permissions and limitations under the License.
17 */
18 package com.acciente.oacc.sql.internal.persister;
19
20 import com.acciente.oacc.DomainCreatePermission;
21 import com.acciente.oacc.DomainCreatePermissions;
22 import com.acciente.oacc.Resource;
23 import com.acciente.oacc.sql.SQLProfile;
24
25 import java.io.Serializable;
26 import java.sql.SQLException;
27 import java.util.HashSet;
28 import java.util.Set;
29
30 public abstract class CommonGrantDomainCreatePermissionSysPersister extends Persister implements GrantDomainCreatePermissionSysPersister, Serializable {
31 private static final long serialVersionUID = 1L;
32
33 protected final SQLProfile sqlProfile;
34 protected final SQLStrings sqlStrings;
35
36 public CommonGrantDomainCreatePermissionSysPersister(SQLProfile sqlProfile,
37 SQLStrings sqlStrings) {
38 this.sqlProfile = sqlProfile;
39 this.sqlStrings = sqlStrings;
40 }
41
42 @Override
43 public abstract Set<DomainCreatePermission> getDomainCreateSysPermissionsIncludeInherited(SQLConnection connection,
44 Resource accessorResource);
45
46 @Override
47 public Set<DomainCreatePermission> getDomainCreateSysPermissions(SQLConnection connection,
48 Resource accessorResource) {
49 SQLStatement statement = null;
50
51 try {
52 statement = connection
53 .prepareStatement(sqlStrings.SQL_findInGrantDomainCreatePermissionSys_withoutInheritance_SysPermissionID_BY_AccessorID);
54 statement.setResourceId(1, accessorResource);
55 SQLResult resultSet = statement.executeQuery();
56
57 // first collect the create permissions that this resource has to domains directly
58 Set<DomainCreatePermission> domainCreatePermissions = new HashSet<>();
59 while (resultSet.next()) {
60 domainCreatePermissions.add(getDomainCreateSysPermission(resultSet));
61 }
62 resultSet.close();
63
64 return domainCreatePermissions;
65 }
66 catch (SQLException e) {
67 throw new RuntimeException(e);
68 }
69 finally {
70 closeStatement(statement);
71 }
72 }
73
74 protected static DomainCreatePermission getDomainCreateSysPermission(SQLResult resultSet) throws SQLException {
75 final String sysPermissionName = resultSet.getDomainCreateSysPermissionName("SysPermissionId");
76
77 if (resultSet.getBoolean("IsWithGrant")) {
78 return DomainCreatePermissions.getInstanceWithGrantOption(sysPermissionName);
79 }
80 else {
81 return DomainCreatePermissions.getInstance(sysPermissionName);
82 }
83 }
84
85 @Override
86 public void addDomainCreateSysPermissions(SQLConnection connection,
87 Resource accessorResource,
88 Resource grantorResource,
89 Set<DomainCreatePermission> domainCreatePermissions) {
90 SQLStatement statement = null;
91
92 try {
93 statement = connection.prepareStatement(sqlStrings.SQL_createInGrantDomainCreatePermissionSys_WITH_AccessorID_GrantorID_IsWithGrant_SysPermissionID);
94 for (DomainCreatePermission domainCreatePermission : domainCreatePermissions) {
95 if (domainCreatePermission.isSystemPermission()) {
96 statement.setResourceId(1, accessorResource);
97 statement.setResourceId(2, grantorResource);
98 statement.setBoolean(3, domainCreatePermission.isWithGrantOption());
99 statement.setDomainCreateSystemPermissionId(4, domainCreatePermission.getSystemPermissionId());
100
101 assertOneRowInserted(statement.executeUpdate());
102 }
103 }
104 }
105 catch (SQLException e) {
106 throw new RuntimeException(e);
107 }
108 finally {
109 closeStatement(statement);
110 }
111 }
112
113 @Override
114 public void updateDomainCreateSysPermissions(SQLConnection connection,
115 Resource accessorResource,
116 Resource grantorResource,
117 Set<DomainCreatePermission> domainCreatePermissions) {
118 SQLStatement statement = null;
119
120 try {
121 statement = connection.prepareStatement(sqlStrings.SQL_updateInGrantDomainCreatePermissionSys_SET_GrantorID_IsWithGrant_BY_AccessorID_SysPermissionID);
122 for (DomainCreatePermission domainCreatePermission : domainCreatePermissions) {
123 if (domainCreatePermission.isSystemPermission()) {
124 statement.setResourceId(1, grantorResource);
125 statement.setBoolean(2, domainCreatePermission.isWithGrantOption());
126 statement.setResourceId(3, accessorResource);
127 statement.setDomainCreateSystemPermissionId(4, domainCreatePermission.getSystemPermissionId());
128
129 assertOneRowUpdated(statement.executeUpdate());
130 }
131 }
132 }
133 catch (SQLException e) {
134 throw new RuntimeException(e);
135 }
136 finally {
137 closeStatement(statement);
138 }
139 }
140
141 @Override
142 public void removeDomainCreateSysPermissions(SQLConnection connection,
143 Resource accessorResource) {
144 SQLStatement statement = null;
145
146 try {
147 statement = connection.prepareStatement(sqlStrings.SQL_removeInGrantDomainCreatePermissionSys_BY_AccessorID);
148 statement.setResourceId(1, accessorResource);
149 statement.executeUpdate();
150 }
151 catch (SQLException e) {
152 throw new RuntimeException(e);
153 }
154 finally {
155 closeStatement(statement);
156 }
157 }
158
159 @Override
160 public void removeDomainCreateSysPermissions(SQLConnection connection,
161 Resource accessorResource,
162 Set<DomainCreatePermission> domainCreatePermissions) {
163 SQLStatement statement = null;
164
165 try {
166 statement = connection.prepareStatement(sqlStrings.SQL_removeInGrantDomainCreatePermissionSys_BY_AccessorID_SysPermissionID);
167 for (DomainCreatePermission domainCreatePermission : domainCreatePermissions) {
168 if (domainCreatePermission.isSystemPermission()) {
169 statement.setResourceId(1, accessorResource);
170 statement.setDomainCreateSystemPermissionId(2, domainCreatePermission.getSystemPermissionId());
171
172 assertOneRowUpdated(statement.executeUpdate());
173 }
174 }
175 }
176 catch (SQLException e) {
177 throw new RuntimeException(e);
178 }
179 finally {
180 closeStatement(statement);
181 }
182 }
183 }