TSK-1650: Added WorkbasketAccessSqlProvider
And made search for accessItems by Key and Domain case insensitive
This commit is contained in:
parent
dc9e3a25ce
commit
ed11a02b80
|
@ -1,13 +1,13 @@
|
|||
package pro.taskana.workbasket.internal;
|
||||
|
||||
import java.util.List;
|
||||
import org.apache.ibatis.annotations.Delete;
|
||||
import org.apache.ibatis.annotations.Insert;
|
||||
import org.apache.ibatis.annotations.DeleteProvider;
|
||||
import org.apache.ibatis.annotations.InsertProvider;
|
||||
import org.apache.ibatis.annotations.Options;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Result;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
import org.apache.ibatis.annotations.SelectProvider;
|
||||
import org.apache.ibatis.annotations.UpdateProvider;
|
||||
|
||||
import pro.taskana.workbasket.internal.models.WorkbasketAccessItemImpl;
|
||||
|
||||
|
@ -15,11 +15,7 @@ import pro.taskana.workbasket.internal.models.WorkbasketAccessItemImpl;
|
|||
@SuppressWarnings("checkstyle:LineLength")
|
||||
public interface WorkbasketAccessMapper {
|
||||
|
||||
@Select(
|
||||
"<script>SELECT ID, WORKBASKET_ID, ACCESS_ID, ACCESS_NAME, PERM_READ, PERM_OPEN, PERM_APPEND, PERM_TRANSFER, PERM_DISTRIBUTE, PERM_CUSTOM_1, PERM_CUSTOM_2, PERM_CUSTOM_3, PERM_CUSTOM_4, PERM_CUSTOM_5, PERM_CUSTOM_6, PERM_CUSTOM_7, PERM_CUSTOM_8, PERM_CUSTOM_9, PERM_CUSTOM_10, PERM_CUSTOM_11, PERM_CUSTOM_12 "
|
||||
+ "FROM WORKBASKET_ACCESS_LIST WHERE ID = #{id} "
|
||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||
+ "</script>")
|
||||
@SelectProvider(type = WorkbasketAccessSqlProvider.class, method = "findById")
|
||||
@Result(property = "id", column = "ID")
|
||||
@Result(property = "workbasketId", column = "WORKBASKET_ID")
|
||||
@Result(property = "accessId", column = "ACCESS_ID")
|
||||
|
@ -43,11 +39,7 @@ public interface WorkbasketAccessMapper {
|
|||
@Result(property = "permCustom12", column = "PERM_CUSTOM_12")
|
||||
WorkbasketAccessItemImpl findById(@Param("id") String id);
|
||||
|
||||
@Select(
|
||||
"<script>SELECT WBA.ID, WORKBASKET_ID, WB.KEY, ACCESS_ID, ACCESS_NAME, PERM_READ, PERM_OPEN, PERM_APPEND, PERM_TRANSFER, PERM_DISTRIBUTE, PERM_CUSTOM_1, PERM_CUSTOM_2, PERM_CUSTOM_3, PERM_CUSTOM_4, PERM_CUSTOM_5, PERM_CUSTOM_6, PERM_CUSTOM_7, PERM_CUSTOM_8, PERM_CUSTOM_9, PERM_CUSTOM_10, PERM_CUSTOM_11, PERM_CUSTOM_12 "
|
||||
+ "FROM WORKBASKET_ACCESS_LIST AS WBA LEFT JOIN WORKBASKET AS WB ON WORKBASKET_ID = WB.ID WHERE WORKBASKET_ID = #{id} "
|
||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||
+ "</script>")
|
||||
@SelectProvider(type = WorkbasketAccessSqlProvider.class, method = "findByWorkbasketId")
|
||||
@Result(property = "id", column = "ID")
|
||||
@Result(property = "workbasketId", column = "WORKBASKET_ID")
|
||||
@Result(property = "workbasketKey", column = "KEY")
|
||||
|
@ -72,11 +64,7 @@ public interface WorkbasketAccessMapper {
|
|||
@Result(property = "permCustom12", column = "PERM_CUSTOM_12")
|
||||
List<WorkbasketAccessItemImpl> findByWorkbasketId(@Param("id") String id);
|
||||
|
||||
@Select(
|
||||
"<script>SELECT WBA.ID, WORKBASKET_ID, WB.KEY, ACCESS_ID, ACCESS_NAME, PERM_READ, PERM_OPEN, PERM_APPEND, PERM_TRANSFER, PERM_DISTRIBUTE, PERM_CUSTOM_1, PERM_CUSTOM_2, PERM_CUSTOM_3, PERM_CUSTOM_4, PERM_CUSTOM_5, PERM_CUSTOM_6, PERM_CUSTOM_7, PERM_CUSTOM_8, PERM_CUSTOM_9, PERM_CUSTOM_10, PERM_CUSTOM_11, PERM_CUSTOM_12 "
|
||||
+ "FROM WORKBASKET_ACCESS_LIST AS WBA LEFT JOIN WORKBASKET AS WB ON WORKBASKET_ID = WB.ID WHERE ACCESS_ID = #{id} "
|
||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||
+ "</script>")
|
||||
@SelectProvider(type = WorkbasketAccessSqlProvider.class, method = "findByAccessId")
|
||||
@Result(property = "id", column = "ID")
|
||||
@Result(property = "workbasketId", column = "WORKBASKET_ID")
|
||||
@Result(property = "workbasketKey", column = "KEY")
|
||||
|
@ -101,41 +89,25 @@ public interface WorkbasketAccessMapper {
|
|||
@Result(property = "permCustom12", column = "PERM_CUSTOM_12")
|
||||
List<WorkbasketAccessItemImpl> findByAccessId(@Param("id") String id);
|
||||
|
||||
@Insert(
|
||||
"INSERT INTO WORKBASKET_ACCESS_LIST (ID, WORKBASKET_ID, ACCESS_ID, ACCESS_NAME, PERM_READ, PERM_OPEN, PERM_APPEND, PERM_TRANSFER, PERM_DISTRIBUTE, PERM_CUSTOM_1, PERM_CUSTOM_2, PERM_CUSTOM_3, PERM_CUSTOM_4, PERM_CUSTOM_5, PERM_CUSTOM_6, PERM_CUSTOM_7, PERM_CUSTOM_8, PERM_CUSTOM_9, PERM_CUSTOM_10, PERM_CUSTOM_11, PERM_CUSTOM_12) "
|
||||
+ "VALUES (#{workbasketAccessItem.id}, #{workbasketAccessItem.workbasketId}, #{workbasketAccessItem.accessId}, #{workbasketAccessItem.accessName}, #{workbasketAccessItem.permRead}, #{workbasketAccessItem.permOpen}, #{workbasketAccessItem.permAppend}, #{workbasketAccessItem.permTransfer}, #{workbasketAccessItem.permDistribute}, #{workbasketAccessItem.permCustom1}, #{workbasketAccessItem.permCustom2}, #{workbasketAccessItem.permCustom3}, #{workbasketAccessItem.permCustom4}, #{workbasketAccessItem.permCustom5}, #{workbasketAccessItem.permCustom6}, #{workbasketAccessItem.permCustom7}, #{workbasketAccessItem.permCustom8}, #{workbasketAccessItem.permCustom9}, #{workbasketAccessItem.permCustom10}, #{workbasketAccessItem.permCustom11}, #{workbasketAccessItem.permCustom12})")
|
||||
@InsertProvider(type = WorkbasketAccessSqlProvider.class, method = "insert")
|
||||
@Options(keyProperty = "id", keyColumn = "ID")
|
||||
void insert(@Param("workbasketAccessItem") WorkbasketAccessItemImpl workbasketAccessItem);
|
||||
|
||||
@Update(
|
||||
"UPDATE WORKBASKET_ACCESS_LIST SET WORKBASKET_ID = #{workbasketAccessItem.workbasketId}, ACCESS_ID = #{workbasketAccessItem.accessId}, ACCESS_NAME = #{workbasketAccessItem.accessName}, PERM_READ = #{workbasketAccessItem.permRead}, PERM_OPEN = #{workbasketAccessItem.permOpen}, PERM_APPEND = #{workbasketAccessItem.permAppend}, PERM_TRANSFER = #{workbasketAccessItem.permTransfer}, PERM_DISTRIBUTE = #{workbasketAccessItem.permDistribute}, PERM_CUSTOM_1 = #{workbasketAccessItem.permCustom1}, PERM_CUSTOM_2 = #{workbasketAccessItem.permCustom2}, PERM_CUSTOM_3 = #{workbasketAccessItem.permCustom3}, PERM_CUSTOM_4 = #{workbasketAccessItem.permCustom4}, PERM_CUSTOM_5 = #{workbasketAccessItem.permCustom5}, PERM_CUSTOM_6 = #{workbasketAccessItem.permCustom6}, PERM_CUSTOM_7 = #{workbasketAccessItem.permCustom7}, PERM_CUSTOM_8 = #{workbasketAccessItem.permCustom8}, PERM_CUSTOM_9 = #{workbasketAccessItem.permCustom9}, PERM_CUSTOM_10 = #{workbasketAccessItem.permCustom10}, PERM_CUSTOM_11 = #{workbasketAccessItem.permCustom11}, PERM_CUSTOM_12 = #{workbasketAccessItem.permCustom12} "
|
||||
+ "WHERE id = #{workbasketAccessItem.id}")
|
||||
@UpdateProvider(type = WorkbasketAccessSqlProvider.class, method = "update")
|
||||
void update(@Param("workbasketAccessItem") WorkbasketAccessItemImpl workbasketAccessItem);
|
||||
|
||||
@Delete("DELETE FROM WORKBASKET_ACCESS_LIST WHERE ID = #{id}")
|
||||
@DeleteProvider(type = WorkbasketAccessSqlProvider.class, method = "delete")
|
||||
void delete(@Param("id") String id);
|
||||
|
||||
@Delete("DELETE FROM WORKBASKET_ACCESS_LIST WHERE WORKBASKET_ID = #{workbasketId}")
|
||||
@DeleteProvider(
|
||||
type = WorkbasketAccessSqlProvider.class,
|
||||
method = "deleteAllAccessItemsForWorkbasketId")
|
||||
void deleteAllAccessItemsForWorkbasketId(@Param("workbasketId") String workbasketId);
|
||||
|
||||
@Delete("DELETE FROM WORKBASKET_ACCESS_LIST where ACCESS_ID = #{accessId}")
|
||||
@DeleteProvider(type = WorkbasketAccessSqlProvider.class, method = "deleteAccessItemsForAccessId")
|
||||
void deleteAccessItemsForAccessId(@Param("accessId") String accessId);
|
||||
|
||||
@Select(
|
||||
"<script>"
|
||||
+ "<choose>"
|
||||
+ "<when test=\"_databaseId == 'db2'\">"
|
||||
+ "SELECT MAX(PERM_READ) AS P_READ, MAX(PERM_OPEN) AS P_OPEN, MAX(PERM_APPEND) AS P_APPEND, MAX(PERM_TRANSFER) AS P_TRANSFER, MAX(PERM_DISTRIBUTE) AS P_DISTRIBUTE, MAX(PERM_CUSTOM_1) AS P_CUSTOM_1, MAX(PERM_CUSTOM_2) AS P_CUSTOM_2, MAX(PERM_CUSTOM_3) AS P_CUSTOM_3, MAX(PERM_CUSTOM_4) AS P_CUSTOM_4, MAX(PERM_CUSTOM_5) AS P_CUSTOM_5, MAX(PERM_CUSTOM_6) AS P_CUSTOM_6, MAX(PERM_CUSTOM_7) AS P_CUSTOM_7, MAX(PERM_CUSTOM_8) AS P_CUSTOM_8, MAX(PERM_CUSTOM_9) AS P_CUSTOM_9, MAX(PERM_CUSTOM_10) AS P_CUSTOM_10, MAX(PERM_CUSTOM_11) AS P_CUSTOM_11, MAX(PERM_CUSTOM_12) AS P_CUSTOM_12 "
|
||||
+ "</when>"
|
||||
+ "<otherwise>"
|
||||
+ "SELECT MAX(PERM_READ::int) AS P_READ, MAX(PERM_OPEN::int) AS P_OPEN, MAX(PERM_APPEND::int) AS P_APPEND, MAX(PERM_TRANSFER::int) AS P_TRANSFER, MAX(PERM_DISTRIBUTE::int) AS P_DISTRIBUTE, MAX(PERM_CUSTOM_1::int) AS P_CUSTOM_1, MAX(PERM_CUSTOM_2::int) AS P_CUSTOM_2, MAX(PERM_CUSTOM_3::int) AS P_CUSTOM_3, MAX(PERM_CUSTOM_4::int) AS P_CUSTOM_4, MAX(PERM_CUSTOM_5::int) AS P_CUSTOM_5, MAX(PERM_CUSTOM_6::int) AS P_CUSTOM_6, MAX(PERM_CUSTOM_7::int) AS P_CUSTOM_7, MAX(PERM_CUSTOM_8::int) AS P_CUSTOM_8, MAX(PERM_CUSTOM_9::int) AS P_CUSTOM_9, MAX(PERM_CUSTOM_10::int) AS P_CUSTOM_10, MAX(PERM_CUSTOM_11::int) AS P_CUSTOM_11, MAX(PERM_CUSTOM_12::int) AS P_CUSTOM_12 "
|
||||
+ "</otherwise>"
|
||||
+ "</choose>"
|
||||
+ "FROM WORKBASKET_ACCESS_LIST "
|
||||
+ "WHERE WORKBASKET_ID = #{workbasketId} "
|
||||
+ "AND ACCESS_ID IN(<foreach item='item' collection='accessIds' separator=',' >#{item}</foreach>) "
|
||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||
+ "</script>")
|
||||
@SelectProvider(type = WorkbasketAccessSqlProvider.class, method = "findByWorkbasketAndAccessId")
|
||||
@Result(property = "id", column = "ID")
|
||||
@Result(property = "workbasketId", column = "WORKBASKET_ID")
|
||||
@Result(property = "accessId", column = "ACCESS_ID")
|
||||
|
@ -160,21 +132,9 @@ public interface WorkbasketAccessMapper {
|
|||
WorkbasketAccessItemImpl findByWorkbasketAndAccessId(
|
||||
@Param("workbasketId") String workbasketId, @Param("accessIds") List<String> accessIds);
|
||||
|
||||
@Select(
|
||||
"<script>"
|
||||
+ "<choose>"
|
||||
+ "<when test=\"_databaseId == 'db2'\">"
|
||||
+ "SELECT MAX(PERM_READ) AS P_READ, MAX(PERM_OPEN) AS P_OPEN, MAX(PERM_APPEND) AS P_APPEND, MAX(PERM_TRANSFER) AS P_TRANSFER, MAX(PERM_DISTRIBUTE) AS P_DISTRIBUTE, MAX(PERM_CUSTOM_1) AS P_CUSTOM_1, MAX(PERM_CUSTOM_2) AS P_CUSTOM_2, MAX(PERM_CUSTOM_3) AS P_CUSTOM_3, MAX(PERM_CUSTOM_4) AS P_CUSTOM_4, MAX(PERM_CUSTOM_5) AS P_CUSTOM_5, MAX(PERM_CUSTOM_6) AS P_CUSTOM_6, MAX(PERM_CUSTOM_7) AS P_CUSTOM_7, MAX(PERM_CUSTOM_8) AS P_CUSTOM_8, MAX(PERM_CUSTOM_9) AS P_CUSTOM_9, MAX(PERM_CUSTOM_10) AS P_CUSTOM_10, MAX(PERM_CUSTOM_11) AS P_CUSTOM_11, MAX(PERM_CUSTOM_12) AS P_CUSTOM_12 "
|
||||
+ "</when>"
|
||||
+ "<otherwise>"
|
||||
+ "SELECT MAX(PERM_READ::int) AS P_READ, MAX(PERM_OPEN::int) AS P_OPEN, MAX(PERM_APPEND::int) AS P_APPEND, MAX(PERM_TRANSFER::int) AS P_TRANSFER, MAX(PERM_DISTRIBUTE::int) AS P_DISTRIBUTE, MAX(PERM_CUSTOM_1::int) AS P_CUSTOM_1, MAX(PERM_CUSTOM_2::int) AS P_CUSTOM_2, MAX(PERM_CUSTOM_3::int) AS P_CUSTOM_3, MAX(PERM_CUSTOM_4::int) AS P_CUSTOM_4, MAX(PERM_CUSTOM_5::int) AS P_CUSTOM_5, MAX(PERM_CUSTOM_6::int) AS P_CUSTOM_6, MAX(PERM_CUSTOM_7::int) AS P_CUSTOM_7, MAX(PERM_CUSTOM_8::int) AS P_CUSTOM_8, MAX(PERM_CUSTOM_9::int) AS P_CUSTOM_9, MAX(PERM_CUSTOM_10::int) AS P_CUSTOM_10, MAX(PERM_CUSTOM_11::int) AS P_CUSTOM_11, MAX(PERM_CUSTOM_12::int) AS P_CUSTOM_12 "
|
||||
+ "</otherwise>"
|
||||
+ "</choose>"
|
||||
+ "FROM WORKBASKET_ACCESS_LIST "
|
||||
+ "WHERE WORKBASKET_ID in (SELECT ID FROM WORKBASKET WHERE KEY = #{workbasketKey} AND DOMAIN = #{domain} ) "
|
||||
+ "AND ACCESS_ID IN(<foreach item='item' collection='accessIds' separator=',' >#{item}</foreach>) "
|
||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||
+ "</script>")
|
||||
@SelectProvider(
|
||||
type = WorkbasketAccessSqlProvider.class,
|
||||
method = "findByWorkbasketKeyDomainAndAccessId")
|
||||
@Result(property = "workbasketId", column = "WORKBASKET_ID")
|
||||
@Result(property = "accessId", column = "ACCESS_ID")
|
||||
@Result(property = "accessName", column = "ACCESS_NAME")
|
||||
|
|
|
@ -0,0 +1,157 @@
|
|||
package pro.taskana.workbasket.internal;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import pro.taskana.workbasket.api.WorkbasketPermission;
|
||||
|
||||
public class WorkbasketAccessSqlProvider {
|
||||
|
||||
public static String findById() {
|
||||
return "<script>"
|
||||
+ "SELECT "
|
||||
+ "ID, "
|
||||
+ commonSelectStatements()
|
||||
+ "FROM WORKBASKET_ACCESS_LIST WHERE ID = #{id} "
|
||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||
+ "</script>";
|
||||
}
|
||||
|
||||
public static String findByWorkbasketId() {
|
||||
return "<script>"
|
||||
+ "SELECT "
|
||||
+ "WBA.ID, WB.KEY, "
|
||||
+ commonSelectStatements()
|
||||
+ "FROM WORKBASKET_ACCESS_LIST AS WBA "
|
||||
+ "LEFT JOIN WORKBASKET AS WB ON WORKBASKET_ID = WB.ID "
|
||||
+ "WHERE WORKBASKET_ID = #{id} "
|
||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||
+ "</script>";
|
||||
}
|
||||
|
||||
public static String findByAccessId() {
|
||||
return "<script>"
|
||||
+ "SELECT "
|
||||
+ "WBA.ID, WB.KEY, "
|
||||
+ commonSelectStatements()
|
||||
+ "FROM WORKBASKET_ACCESS_LIST AS WBA "
|
||||
+ "LEFT JOIN WORKBASKET AS WB ON WORKBASKET_ID = WB.ID "
|
||||
+ "WHERE ACCESS_ID = #{id} "
|
||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||
+ "</script>";
|
||||
}
|
||||
|
||||
public static String insert() {
|
||||
return "INSERT INTO WORKBASKET_ACCESS_LIST (ID, "
|
||||
+ commonSelectStatements()
|
||||
+ ") VALUES (#{workbasketAccessItem.id},"
|
||||
+ " #{workbasketAccessItem.workbasketId}, #{workbasketAccessItem.accessId},"
|
||||
+ " #{workbasketAccessItem.accessName}, #{workbasketAccessItem.permRead},"
|
||||
+ " #{workbasketAccessItem.permOpen}, #{workbasketAccessItem.permAppend},"
|
||||
+ " #{workbasketAccessItem.permTransfer}, #{workbasketAccessItem.permDistribute},"
|
||||
+ " #{workbasketAccessItem.permCustom1}, #{workbasketAccessItem.permCustom2},"
|
||||
+ " #{workbasketAccessItem.permCustom3}, #{workbasketAccessItem.permCustom4},"
|
||||
+ " #{workbasketAccessItem.permCustom5}, #{workbasketAccessItem.permCustom6},"
|
||||
+ " #{workbasketAccessItem.permCustom7}, #{workbasketAccessItem.permCustom8},"
|
||||
+ " #{workbasketAccessItem.permCustom9}, #{workbasketAccessItem.permCustom10},"
|
||||
+ " #{workbasketAccessItem.permCustom11}, #{workbasketAccessItem.permCustom12})";
|
||||
}
|
||||
|
||||
public static String update() {
|
||||
return "UPDATE WORKBASKET_ACCESS_LIST SET "
|
||||
+ "WORKBASKET_ID = #{workbasketAccessItem."
|
||||
+ "workbasketId}, ACCESS_ID = #{workbasketAccessItem.accessId}, "
|
||||
+ "ACCESS_NAME = #{workbasketAccessItem.accessName}, "
|
||||
+ "PERM_READ = #{workbasketAccessItem.permRead}, PERM_OPEN = #{workbasketAccessItem."
|
||||
+ "permOpen}, PERM_APPEND = #{workbasketAccessItem.permAppend}, "
|
||||
+ "PERM_TRANSFER = #{workbasketAccessItem.permTransfer}, "
|
||||
+ "PERM_DISTRIBUTE = #{workbasketAccessItem.permDistribute}, "
|
||||
+ "PERM_CUSTOM_1 = #{workbasketAccessItem.permCustom1}, "
|
||||
+ "PERM_CUSTOM_2 = #{workbasketAccessItem.permCustom2}, "
|
||||
+ "PERM_CUSTOM_3 = #{workbasketAccessItem.permCustom3}, "
|
||||
+ "PERM_CUSTOM_4 = #{workbasketAccessItem.permCustom4}, "
|
||||
+ "PERM_CUSTOM_5 = #{workbasketAccessItem.permCustom5}, "
|
||||
+ "PERM_CUSTOM_6 = #{workbasketAccessItem.permCustom6}, "
|
||||
+ "PERM_CUSTOM_7 = #{workbasketAccessItem.permCustom7}, "
|
||||
+ "PERM_CUSTOM_8 = #{workbasketAccessItem.permCustom8}, "
|
||||
+ "PERM_CUSTOM_9 = #{workbasketAccessItem.permCustom9}, "
|
||||
+ "PERM_CUSTOM_10 = #{workbasketAccessItem.permCustom10}, "
|
||||
+ "PERM_CUSTOM_11 = #{workbasketAccessItem.permCustom11}, "
|
||||
+ "PERM_CUSTOM_12 = #{workbasketAccessItem.permCustom12} "
|
||||
+ "WHERE id = #{workbasketAccessItem.id}";
|
||||
}
|
||||
|
||||
public static String delete() {
|
||||
return "DELETE FROM WORKBASKET_ACCESS_LIST WHERE ID = #{id}";
|
||||
}
|
||||
|
||||
public static String deleteAllAccessItemsForWorkbasketId() {
|
||||
return "DELETE FROM WORKBASKET_ACCESS_LIST WHERE WORKBASKET_ID = #{workbasketId}";
|
||||
}
|
||||
|
||||
public static String deleteAccessItemsForAccessId() {
|
||||
return "DELETE FROM WORKBASKET_ACCESS_LIST where ACCESS_ID = #{accessId}";
|
||||
}
|
||||
|
||||
public static String findByWorkbasketAndAccessId() {
|
||||
return "<script>"
|
||||
+ "<choose>"
|
||||
+ "<when test=\"_databaseId == 'db2'\">"
|
||||
+ "SELECT "
|
||||
+ getMaximumPermissionStatement(true)
|
||||
+ "</when>"
|
||||
+ "<otherwise>"
|
||||
+ "SELECT "
|
||||
+ getMaximumPermissionStatement(false)
|
||||
+ "</otherwise>"
|
||||
+ "</choose>"
|
||||
+ "FROM WORKBASKET_ACCESS_LIST "
|
||||
+ "WHERE WORKBASKET_ID = #{workbasketId} AND ACCESS_ID IN"
|
||||
+ "(<foreach item='item' collection='accessIds' separator=',' >#{item}</foreach>) "
|
||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||
+ "</script>";
|
||||
}
|
||||
|
||||
public static String findByWorkbasketKeyDomainAndAccessId() {
|
||||
return "<script>"
|
||||
+ "<choose>"
|
||||
+ "<when test=\"_databaseId == 'db2'\">"
|
||||
+ "SELECT "
|
||||
+ getMaximumPermissionStatement(true)
|
||||
+ "</when>"
|
||||
+ "<otherwise>"
|
||||
+ "SELECT "
|
||||
+ getMaximumPermissionStatement(false)
|
||||
+ "</otherwise>"
|
||||
+ "</choose>"
|
||||
+ "FROM WORKBASKET_ACCESS_LIST "
|
||||
+ "WHERE WORKBASKET_ID in "
|
||||
+ "(SELECT ID FROM WORKBASKET WHERE UPPER(KEY) = UPPER(#{workbasketKey}) AND UPPER(DOMAIN) = UPPER(#{domain}) )"
|
||||
+ "AND ACCESS_ID IN"
|
||||
+ "(<foreach item='item' collection='accessIds' separator=',' >#{item}</foreach>)"
|
||||
+ "<if test=\"_databaseId == 'db2'\">with UR</if>"
|
||||
+ "</script>";
|
||||
}
|
||||
|
||||
private static String getMaximumPermissionStatement(boolean isNotDb2) {
|
||||
return Arrays.stream(WorkbasketPermission.values())
|
||||
.map(
|
||||
perm -> {
|
||||
String temp = "MAX(PERM_" + perm;
|
||||
if (isNotDb2) {
|
||||
temp += "::int";
|
||||
}
|
||||
temp += ") AS P_" + perm;
|
||||
return temp;
|
||||
})
|
||||
.collect(Collectors.joining(", "));
|
||||
}
|
||||
|
||||
private static String commonSelectStatements() {
|
||||
return "WORKBASKET_ID, ACCESS_ID, ACCESS_NAME, "
|
||||
+ Arrays.stream(WorkbasketPermission.values())
|
||||
.map(Objects::toString)
|
||||
.collect(Collectors.joining(", PERM_", "PERM_", " "));
|
||||
}
|
||||
}
|
|
@ -174,9 +174,9 @@ public final class TaskanaEngineTestConfiguration {
|
|||
|
||||
String jdbcDriver = "org.h2.Driver";
|
||||
String jdbcUrl =
|
||||
"jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0;"
|
||||
+ "INIT=CREATE SCHEMA IF NOT EXISTS TASKANA\\;"
|
||||
+ "SET COLLATION DEFAULT_de_DE ";
|
||||
"jdbc:h2:mem:taskana;"
|
||||
// + "IGNORECASE=TRUE;"
|
||||
+ "LOCK_MODE=0;INIT=CREATE SCHEMA IF NOT EXISTS TASKANA\\;SET COLLATION DEFAULT_de_DE ";
|
||||
String dbUserName = "sa";
|
||||
String dbPassword = "sa";
|
||||
PooledDataSource ds =
|
||||
|
|
|
@ -32,7 +32,7 @@ class GetWorkbasketAccTest extends AbstractAccTest {
|
|||
|
||||
@WithAccessId(user = "user-1-2")
|
||||
@Test
|
||||
void testGetWorkbasketById() throws Exception {
|
||||
void should_ReturnWorkbasketWithId_When_IdIsValidAndUserHasPermissions() throws Exception {
|
||||
|
||||
Workbasket workbasket =
|
||||
WORKBASKET_SERVICE.getWorkbasket("WBI:100000000000000000000000000000000007");
|
||||
|
@ -82,9 +82,10 @@ class GetWorkbasketAccTest extends AbstractAccTest {
|
|||
|
||||
@WithAccessId(user = "user-1-2")
|
||||
@Test
|
||||
void testGetWorkbasketByKeyAndDomain() throws Exception {
|
||||
void should_ReturnWorkbasketWithKeyAndDomainAndIgnoreCapitalization_When_KeyAndDomainAreValid()
|
||||
throws Exception {
|
||||
|
||||
Workbasket workbasket = WORKBASKET_SERVICE.getWorkbasket("USER-1-2", "DOMAIN_A");
|
||||
Workbasket workbasket = WORKBASKET_SERVICE.getWorkbasket("user-1-2", "domain_a");
|
||||
|
||||
assertThat(workbasket.getId()).isEqualTo("WBI:100000000000000000000000000000000007");
|
||||
assertThat(workbasket.getDescription()).isEqualTo("PPK User 2 KSC 1");
|
||||
|
@ -103,7 +104,7 @@ class GetWorkbasketAccTest extends AbstractAccTest {
|
|||
|
||||
@WithAccessId(user = "user-1-1", groups = GROUP_1_DN)
|
||||
@Test
|
||||
void testGetWorkbasketPermissions() {
|
||||
void should_ReturnWorkbasketPermissions_When_IdIsValidAndUserHasPermissions() {
|
||||
List<WorkbasketPermission> permissions =
|
||||
WORKBASKET_SERVICE.getPermissionsForWorkbasket("WBI:100000000000000000000000000000000007");
|
||||
|
||||
|
@ -116,7 +117,7 @@ class GetWorkbasketAccTest extends AbstractAccTest {
|
|||
|
||||
@WithAccessId(user = "user-1-1")
|
||||
@Test
|
||||
void testGetWorkbasketPermissionsForInvalidWorkbasketId() {
|
||||
void should_ReturnNoWorkbasketPermissions_When_ProvidingAnInvalidId() {
|
||||
List<WorkbasketPermission> permissions =
|
||||
WORKBASKET_SERVICE.getPermissionsForWorkbasket("WBI:invalid");
|
||||
|
||||
|
@ -125,7 +126,7 @@ class GetWorkbasketAccTest extends AbstractAccTest {
|
|||
|
||||
@WithAccessId(user = "user-1-2")
|
||||
@Test
|
||||
void testGetWorkbasketAsSummary() throws Exception {
|
||||
void should_ReturnWorkbasketSummary_When_IdIsValidAndSummaryIsRequested() throws Exception {
|
||||
|
||||
WorkbasketSummary workbasketSummary =
|
||||
WORKBASKET_SERVICE.getWorkbasket("WBI:100000000000000000000000000000000007").asSummary();
|
||||
|
@ -148,7 +149,7 @@ class GetWorkbasketAccTest extends AbstractAccTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
void testThrowsExceptionIfIdIsInvalid() {
|
||||
void should_ThrowException_When_ProvidingAnInvalidId() {
|
||||
assertThatThrownBy(() -> WORKBASKET_SERVICE.getWorkbasket("INVALID_ID"))
|
||||
.isInstanceOf(WorkbasketNotFoundException.class);
|
||||
}
|
||||
|
@ -156,26 +157,30 @@ class GetWorkbasketAccTest extends AbstractAccTest {
|
|||
@Test
|
||||
void testThrowsExceptionIfKeyOrDomainIsInvalid() {
|
||||
|
||||
assertThatThrownBy(() -> WORKBASKET_SERVICE.getWorkbasket("INVALID_KEY", "INVALID_DOMAIN"))
|
||||
assertThatThrownBy(() -> WORKBASKET_SERVICE.getWorkbasket("USER-1-2", "INVALID_DOMAIN"))
|
||||
.isInstanceOf(WorkbasketNotFoundException.class);
|
||||
assertThatThrownBy(() -> WORKBASKET_SERVICE.getWorkbasket("INVALID_ID", "DOMAIN_A"))
|
||||
.isInstanceOf(WorkbasketNotFoundException.class);
|
||||
assertThatThrownBy(() -> WORKBASKET_SERVICE.getWorkbasket("INAVLID_ID", "INVALID_DOMAIN"))
|
||||
.isInstanceOf(WorkbasketNotFoundException.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetByIdNotAuthorized() {
|
||||
void should_ThrowException_When_TryingToGetByIdWithoutPermissions() {
|
||||
ThrowingCallable call =
|
||||
() -> WORKBASKET_SERVICE.getWorkbasket("WBI:100000000000000000000000000000000001");
|
||||
assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetByKeyDomainNotAuthorized() {
|
||||
void should_ThrowException_When_TryingToGetByKeyAndDomainWithoutPermissions() {
|
||||
assertThatThrownBy(() -> WORKBASKET_SERVICE.getWorkbasket("GPK_KSC", "DOMAIN_A"))
|
||||
.isInstanceOf(NotAuthorizedException.class);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "user-1-1")
|
||||
@Test
|
||||
void testGetWorkbasketByIdNotExisting() {
|
||||
void should_ThrowException_When_TryingToGetWithAnInvalidId() {
|
||||
assertThatThrownBy(() -> WORKBASKET_SERVICE.getWorkbasket("NOT EXISTING ID"))
|
||||
.isInstanceOf(WorkbasketNotFoundException.class);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue