提交 895b976f 编写于 作者: liyi_hz2008's avatar liyi_hz2008

优化内容管理文档权限机制,适应二段[如:unique@P]结构组织对象权限设定

上级 37b51ea2
......@@ -30,7 +30,7 @@ public class QueueDataRowImport extends AbstractQueue<ImportDataRow> {
String titleFlag = excelReadRuntime.wi.getTitle();
//生成一个Document和Data
System.out.println(">>>>>>>>>>>>>>>>>>>QueueDataRowImport.execute正在处理第" + curRow + "行数据:" + printData( colmlist ) );
// System.out.println(">>>>>>>>>>>>>>>>>>>QueueDataRowImport.execute正在处理第" + curRow + "行数据:" + printData( colmlist ) );
if( ListTools.isNotEmpty( colmlist ) ){
Data data = null;
Document document = null;
......@@ -43,8 +43,8 @@ public class QueueDataRowImport extends AbstractQueue<ImportDataRow> {
document.setImportBatchName( batchName );
document.setDocStatus("checking"); //待校验
document.setSummary( null );
document.addReadPersonList( "所有人" );
document.addAuthorPersonList( excelReadRuntime.operatorName );
document.addToReadPersonList( "所有人" );
document.addToAuthorPersonList( excelReadRuntime.operatorName );
if( StringUtils.isNotEmpty( colmlist.get( titleColIndex )+"" )) {
if( StringUtils.isNotEmpty( titleFlag )) {
......
......@@ -42,7 +42,7 @@ public class CmsBatchOperationProcessService {
* @throws Exception
*/
public String process( CmsBatchOperation cmsBatchOperation ) throws Exception {
logger.info( "process -> Cms processing batch operation: " + cmsBatchOperation.toString() );
logger.debug( "process -> Cms processing batch operation: " + cmsBatchOperation.toString() );
//先把cmsBatchOperation状态修改为执行中
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
cmsBatchOperation = emc.find( cmsBatchOperation.getId(), CmsBatchOperation.class );
......@@ -51,7 +51,7 @@ public class CmsBatchOperationProcessService {
emc.beginTransaction( CmsBatchOperation.class );
emc.check( cmsBatchOperation, CheckPersistType.all );
emc.commit();
logger.info( "process -> cms change batch operation running......: " );
logger.debug( "process -> cms change batch operation running......: " );
}
} catch (Exception e) {
throw e;
......
......@@ -162,26 +162,26 @@ public class PermissionOperateService {
if( ListTools.isNotEmpty( permissionList ) ){
for( PermissionInfo permission : permissionList ){
if( "管理".equals( permission.getPermission() )) {
document.addManagerList(permission.getPermissionObjectCode());
document.addToManagerList(permission.getPermissionObjectCode());
}else if( "读者".equals( permission.getPermission() ) || "阅读".equals( permission.getPermission() )) {
if( "人员".equals( permission.getPermissionObjectType() )) {
document.addReadPersonList(permission.getPermissionObjectCode());
document.addToReadPersonList(permission.getPermissionObjectCode());
}else if( "部门".equals( permission.getPermissionObjectType() ) || "组织".equals( permission.getPermissionObjectType() )) {
document.addReadUnitList(permission.getPermissionObjectCode());
document.addToReadUnitList(permission.getPermissionObjectCode());
}else if( "群组".equals( permission.getPermissionObjectType() )) {
document.addReadGroupList(permission.getPermissionObjectCode());
document.addToReadGroupList(permission.getPermissionObjectCode());
}else if( "所有人".equals( permission.getPermissionObjectCode() )) {
document.addReadPersonList("所有人");
document.addToReadPersonList("所有人");
}
}else if( "作者".equals( permission.getPermission() )) {
if( "人员".equals( permission.getPermissionObjectType() )) {
document.addAuthorPersonList(permission.getPermissionObjectCode());
document.addToAuthorPersonList(permission.getPermissionObjectCode());
}else if( "部门".equals( permission.getPermissionObjectType() ) || "组织".equals( permission.getPermissionObjectType() )) {
document.addAuthorUnitList(permission.getPermissionObjectCode());
document.addToAuthorUnitList(permission.getPermissionObjectCode());
}else if( "群组".equals( permission.getPermissionObjectType() )) {
document.addAuthorGroupList(permission.getPermissionObjectCode());
document.addToAuthorGroupList(permission.getPermissionObjectCode());
}else if( "所有人".equals( permission.getPermissionObjectCode() )) {
document.addAuthorPersonList("所有人");
document.addToAuthorPersonList("所有人");
}
}
}
......@@ -190,19 +190,19 @@ public class PermissionOperateService {
if( ListTools.isEmpty( document.getReadPersonList() ) && ListTools.isEmpty( document.getReadUnitList() )
&& ListTools.isEmpty( document.getReadGroupList() )) {
//可读范围都为空,则是所有人可访问
document.addReadPersonList("所有人");
document.addReadPersonList(document.getCreatorPerson());
document.addToReadPersonList("所有人");
document.addToReadPersonList(document.getCreatorPerson());
}
if( ListTools.isEmpty( document.getAuthorPersonList() ) && ListTools.isEmpty( document.getAuthorUnitList() )
&& ListTools.isEmpty( document.getAuthorGroupList() )) {
//编辑全部都为空,则是创建人可编辑
document.addAuthorPersonList( document.getCreatorPerson() );
document.addAuthorPersonList( document.getCreatorPerson() );
document.addToAuthorPersonList( document.getCreatorPerson() );
document.addToAuthorPersonList( document.getCreatorPerson() );
}
if( ListTools.isEmpty( document.getManagerList() ) ) {
//管理全部都为空,则是创建人可以管理
document.addManagerList( document.getCreatorPerson() );
document.addManagerList( document.getCreatorPerson() );
document.addToManagerList( document.getCreatorPerson() );
document.addToManagerList( document.getCreatorPerson() );
}
emc.check( document , CheckPersistType.all );
......@@ -213,111 +213,15 @@ public class PermissionOperateService {
}
}
// /**
// * 根据文档的权限信息组织所有的权限对象列表
// * @param document
// * @throws Exception
// */
// public List<PermissionInfo> composeDocmentAllPermissions( Document document ) throws Exception {
//
// List<PermissionInfo> permissionList = new ArrayList<>();
// //处理创建者
// permissionList.add( new PermissionInfo( PermissionName.READER, "人员", document.getCreatorIdentity(), document.getCreatorIdentity() ) );
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "人员", document.getCreatorIdentity(), document.getCreatorIdentity() ) );
// permissionList.add( new PermissionInfo( PermissionName.MANAGER, "人员", document.getCreatorIdentity(), document.getCreatorIdentity() ) );
//
// if ( ListTools.isEmpty( document.getAuthorPersonList() ) ) {
// for( String permissionCode : document.getAuthorPersonList() ){
// if( !existsPermission(permissionList, PermissionName.AUTHOR, "permissionCode") ){
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "人员", permissionCode, permissionCode ) );
// }
// private boolean existsPermission(List<PermissionInfo> permissionList, String objectType, String permissionCode) {
// if( ListTools.isNotEmpty( permissionList )){
// for ( PermissionInfo permission : permissionList ){
// if( StringUtils.equalsIgnoreCase( permission.getPermissionObjectCode(), permissionCode ) &&
// StringUtils.equalsIgnoreCase( permission.getPermissionObjectType(), objectType )){
// return true;
// }
// }
// }
//
// if ( ListTools.isEmpty( document.getAuthorUnitList() ) ) {
// for( String permissionCode : document.getAuthorUnitList() ){
// if( !existsPermission(permissionList, PermissionName.AUTHOR, "permissionCode") ){
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "组织", permissionCode, permissionCode ) );
// }
// }
// }
// }
//
// if ( ListTools.isEmpty( document.getAuthorGroupList() ) ) {
// for( String permissionCode : document.getAuthorUnitList() ){
// if( !existsPermission(permissionList, PermissionName.AUTHOR, "permissionCode") ){
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.AUTHOR, "群组", permissionCode, permissionCode ) );
// }
// }
// }
// }
//
// if ( ListTools.isEmpty( document.getReadPersonList() ) ) {
// for( String permissionCode : document.getReadPersonList() ){
// if( !existsPermission(permissionList, PermissionName.READER, "permissionCode") ){
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.READER, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.READER, "人员", permissionCode, permissionCode ) );
// }
// }
// }
// }
//
// if ( ListTools.isEmpty( document.getReadUnitList() ) ) {
// for( String permissionCode : document.getReadUnitList() ){
// if( !existsPermission(permissionList, PermissionName.READER, "permissionCode") ) {
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.READER, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.READER, "组织", permissionCode, permissionCode ) );
// }
// }
//
// }
// }
//
// if ( ListTools.isEmpty( document.getReadGroupList() ) ) {
// for( String permissionCode : document.getReadGroupList() ){
// if( !existsPermission(permissionList, PermissionName.READER, "permissionCode") ){
// if( StringUtils.equalsIgnoreCase("所有人", permissionCode )){
// permissionList.add( new PermissionInfo( PermissionName.READER, "所有人", "所有人", "所有人" ) );
// }else{
// permissionList.add( new PermissionInfo( PermissionName.READER, "群组", permissionCode, permissionCode ) );
// }
// }
// }
// }
//
// if ( ListTools.isEmpty( document.getManagerList() ) ) {
// for( String permissionCode : document.getManagerList() ){
// if( !existsPermission(permissionList, PermissionName.MANAGER, "permissionCode") ){
// permissionList.add( new PermissionInfo( PermissionName.MANAGER, "人员", permissionCode, permissionCode ) );
// }
// }
// }
// return permissionList;
// return false;
// }
private boolean existsPermission(List<PermissionInfo> permissionList, String objectType, String permissionCode) {
if( ListTools.isNotEmpty( permissionList )){
for ( PermissionInfo permission : permissionList ){
if( StringUtils.equalsIgnoreCase( permission.getPermissionObjectCode(), permissionCode ) &&
StringUtils.equalsIgnoreCase( permission.getPermissionObjectType(), objectType )){
return true;
}
}
}
return false;
}
}
......@@ -461,13 +461,30 @@ public class ReviewService {
permissionObjs = new ArrayList<>();
}
if( ListTools.isNotEmpty(objNames)){
Person person;
String[] array;
for( String objName : objNames ) {
if(StringUtils.isNotEmpty(objName)){
person = null;
array = null;
if( objName.trim().endsWith( "@P" ) ) {
//直接加入人员
array = objName.split("@");
if( array.length == 2){
person = userManagerService.getPerson(array[0]);
if( person != null ){
objName = person.getDistinguishedName();
}
}
if( !permissionObjs.contains( objName )) {
permissionObjs.add( objName );
}
}else if( objName.trim().endsWith( "@I" ) ) {//将Identity转换为人员
//从身份到人员
array = objName.split("@");
if( array.length == 2){
objName = userManagerService.getPersonNameWithIdentity(array[0]);
}
result = userManagerService.getPersonNameWithIdentity( objName );
permissionObjs = addStringToList( permissionObjs, result );
}else if( objName.trim().endsWith( "@U" ) ) {//将组织拆解为人员
......@@ -552,16 +569,17 @@ public class ReviewService {
//先删除原来所有的Review信息
if( ListTools.isNotEmpty( oldReviewIds )) {
reviews = emc.list( Review.class, oldReviewIds ); //查询该文档所有的Review列表
if( ListTools.isNotEmpty( reviews )) {
emc.beginTransaction( Review.class );
for( Review review_tmp : reviews ) {
//System.out.println(">>>>>>>["+ review_tmp.getTitle() +"] delete review: " + review_tmp.getPermissionObj());
emc.remove( review_tmp, CheckRemoveType.all );
Review oldReview = null;
emc.beginTransaction( Review.class );
for( String reviewId : oldReviewIds ){
oldReview = emc.find( reviewId, Review.class );
if( oldReview != null ){
emc.remove( oldReview, CheckRemoveType.all );
}
emc.commit();
}
emc.commit();
}
//再添加新的Review信息
if( ListTools.isNotEmpty( permissionPersons )) {
permissionPersons = removeSameValue( permissionPersons );
......@@ -569,7 +587,6 @@ public class ReviewService {
Person personObj = null;
String personName = null;
for( String person : permissionPersons ) {
if( !person.equalsIgnoreCase( "*" )) {
//检查一下个人是否存在,防止姓名或者唯一标识变更过了导致文档权限不正确
personObj = userManagerService.getPerson( person );
......
......@@ -33,24 +33,17 @@ public class UserManagerService {
public Person getPerson(String personName) throws Exception {
Business business = null;
Person person = null;
List<Person> personList = null;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
business = new Business(emc);
person = business.organization().person().getObject(personName);
if (person == null) {
if (personName.endsWith("@P") && personName.split("@P").length == 3) {
personList = business.organization().person().listObject(personName.split("@")[1]);
if (ListTools.isNotEmpty(personList)) {
return personList.get(0);
}
return business.organization().person().getObject(personName.split("@")[1]);
}
}
if (person == null) {
if (personName.endsWith("@P") && personName.split("@P").length == 3) {
personList = business.organization().person().listObject(personName.split("@")[0]);
if (ListTools.isNotEmpty(personList)) {
return personList.get(0);
}
if (personName.endsWith("@P") && personName.split("@P").length == 2) {
return business.organization().person().getObject(personName.split("@")[0]);
}
}
} catch (Exception e) {
......@@ -75,7 +68,12 @@ public class UserManagerService {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
business = new Business(emc);
unitNames = business.organization().unit().listWithPerson(personName);
if (unitNames != null && !unitNames.isEmpty()) {
if ( ListTools.isEmpty( unitNames )) {
if (personName.endsWith("@P") && personName.split("@P").length == 2) {
unitNames = business.organization().unit().listWithPerson( personName.split("@")[0] );
}
}
if ( ListTools.isNotEmpty( unitNames )) {
for (String unitName : unitNames) {
unit = business.organization().unit().getObject(unitName);
if (level < unit.getLevel()) {
......@@ -125,7 +123,13 @@ public class UserManagerService {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
business = new Business(emc);
// 兼容一下传过来的perosnName有可能是个人,有可能是身份
personName = business.organization().person().get(personName);
if( StringUtils.isNotEmpty( personName )){
if (personName.endsWith("@P") && personName.split("@P").length == 2) {
personName = business.organization().person().get(personName.split("@")[0]);
}else{
personName = business.organization().person().get(personName);
}
}
identity = getMajorIdentityWithPerson(personName);
if (identity != null && !identity.isEmpty()) {
topUnitName = business.organization().unit().getWithIdentityWithLevel(identity, 1);
......@@ -167,8 +171,13 @@ public class UserManagerService {
Business business = null;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
business = new Business(emc);
// 兼容一下传过来的perosnName有可能是个人,有可能是身份
personName = business.organization().person().get(personName);
if( StringUtils.isNotEmpty( personName )){
if (personName.endsWith("@P") && personName.split("@P").length == 2) {
personName = business.organization().person().get(personName.split("@")[0]);
}else{
personName = business.organization().person().get(personName);
}
}
identities = business.organization().identity().listWithPerson(personName);
if (identities != null && !identities.isEmpty()) {
if( identities.size() == 1 ) {
......@@ -221,6 +230,13 @@ public class UserManagerService {
Business business = null;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
business = new Business(emc);
if( StringUtils.isNotEmpty( personName )){
if (personName.endsWith("@P") && personName.split("@P").length == 2) {
personName = business.organization().person().get(personName.split("@")[0]);
}else{
personName = business.organization().person().get(personName);
}
}
unitNames = business.organization().unit().listWithPersonSupNested(personName);
return unitNames == null ? new ArrayList<>() : unitNames;
} catch (NullPointerException e) {
......@@ -233,18 +249,25 @@ public class UserManagerService {
/**
* 根据用户姓名查询用户所有的身份信息
*
* @param userName
* @param personName
* @return
* @throws Exception
*/
public List<String> listIdentitiesWithPerson(String userName) throws Exception {
if (StringUtils.isEmpty(userName)) {
public List<String> listIdentitiesWithPerson(String personName) throws Exception {
if (StringUtils.isEmpty(personName)) {
throw new Exception("userName is null!");
}
Business business = null;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
business = new Business(emc);
return business.organization().identity().listWithPerson(userName);
if( StringUtils.isNotEmpty( personName )){
if (personName.endsWith("@P") && personName.split("@P").length == 2) {
personName = business.organization().person().get(personName.split("@")[0]);
}else{
personName = business.organization().person().get(personName);
}
}
return business.organization().identity().listWithPerson(personName);
} catch (NullPointerException e) {
return null;
} catch (Exception e) {
......@@ -265,6 +288,13 @@ public class UserManagerService {
List<String> nameList = new ArrayList<String>();
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
business = new Business(emc);
if( StringUtils.isNotEmpty( personName )){
if (personName.endsWith("@P") && personName.split("@P").length == 2) {
personName = business.organization().person().get(personName.split("@")[0]);
}else{
personName = business.organization().person().get(personName);
}
}
roleList = business.organization().role().listWithPerson(personName);
if (roleList != null && roleList.size() > 0) {
roleList.stream().filter(r -> !nameList.contains(r)).distinct().forEach(r -> nameList.add(r));
......@@ -290,6 +320,13 @@ public class UserManagerService {
List<String> nameList = new ArrayList<String>();
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
business = new Business(emc);
if( StringUtils.isNotEmpty( personName )){
if (personName.endsWith("@P") && personName.split("@P").length == 2) {
personName = business.organization().person().get(personName.split("@")[0]);
}else{
personName = business.organization().person().get(personName);
}
}
groupList = business.organization().group().listWithPerson(personName);
if (groupList != null && groupList.size() > 0) {
groupList.stream().filter(g -> !nameList.contains(g)).distinct().forEach(g -> nameList.add(g));
......@@ -321,6 +358,13 @@ public class UserManagerService {
Business business = null;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
business = new Business(emc);
if( StringUtils.isNotEmpty( personName )){
if (personName.endsWith("@P") && personName.split("@P").length == 2) {
personName = business.organization().person().get(personName.split("@")[0]);
}else{
personName = business.organization().person().get(personName);
}
}
roleList = business.organization().role().listWithPerson(personName);
if (roleList != null && !roleList.isEmpty()) {
if (roleList.stream().filter(r -> roleName.equalsIgnoreCase(r)).count() > 0) {
......@@ -402,47 +446,9 @@ public class UserManagerService {
return null;
}
public List<String> getPersonPermissionCodes(String personName) throws Exception {
List<String> queryObjectNames = new ArrayList<>();
List<String> groupNames = null;
List<String> roleNames = null;
List<String> unitNames = null;
// 选查询个人涉及的所有组织角色以及群组编码
groupNames = listGroupNamesByPerson(personName);
roleNames = listRoleNamesByPerson(personName);
unitNames = listUnitNamesWithPerson(personName);
queryObjectNames.add(personName);
// 将三个列表合为一个,再进行分类权限查询
if (groupNames != null && !groupNames.isEmpty()) {
for (String name : groupNames) {
if (!queryObjectNames.contains(name)) {
queryObjectNames.add(name);
}
}
}
if (roleNames != null && !roleNames.isEmpty()) {
for (String name : roleNames) {
if (!queryObjectNames.contains(name)) {
queryObjectNames.add(name);
}
}
}
if (unitNames != null && !unitNames.isEmpty()) {
for (String name : unitNames) {
if (!queryObjectNames.contains(name)) {
queryObjectNames.add(name);
}
}
}
return queryObjectNames;
}
/**
* 根据组织名称,查询组织内所有的人员标识,包括下级组织
*
* 根据组织名称,查询组织内所有的人员标识,包括下级组织<br/>
* 2020-06-12 改为使用唯一标识查询<br/>
* @param unitName
* @return
* @throws Exception
......@@ -453,15 +459,43 @@ public class UserManagerService {
}
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
return business.organization().person().listWithUnitSubNested(unitName);
//2020-06-12 unitName可能有3段,可能有2段,统一使用中间的唯一标识来进行查询
String unique = getUniqueWithName( unitName );
return business.organization().person().listWithUnitSubNested( unique );
} catch (Exception e) {
throw e;
}
}
/**
* 根据群组名称,查询群组内所有的人员标识
*
* 获取组织对象的唯一标识<br/>
*<br/>
* 组织对象标识一般会有3段,如 综合部@1304-73504398-13419-0347@U, 张三@293041-9305983-04258-0943@P<br/>
* 文档权限里也会存在2段,因为第一段经常会变,如组织:行政综合部@1304-73504398-13419-0347@U<br/>
* 所以查询的时候最好只用中间的唯一标识来查询<br/>
* @param orgObjectName
* @return
*/
private String getUniqueWithName(String orgObjectName ) {
if( StringUtils.isNotEmpty( orgObjectName )){
String[] array = orgObjectName.split("@");
if( array.length == 3 ){
return array[1];
}else if( array.length == 2 ){
return array[0];
}else{
return orgObjectName;
}
}
return null;
}
/**
* 根据群组名称,查询群组内所有的人员标识<br/>
* 2020-06-12 改为使用唯一标识查询<br/>
*
* @param groupName
* @return
* @throws Exception
......@@ -472,19 +506,34 @@ public class UserManagerService {
}
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
return business.organization().person().listWithGroup(groupName);
//2020-06-12 unitName可能有3段,可能有2段,统一使用中间的唯一标识来进行查询
String unique = getUniqueWithName( groupName );
return business.organization().person().listWithGroup( unique );
} catch (Exception e) {
throw e;
}
}
/**
* 根据角色名称,查询角色成员内所有的人员标识<br/>
* 2020-06-12 改为使用唯一标识查询<br/>
* @param role
* @return
* @throws Exception
*/
public List<String> listPersonWithRole(String role) throws Exception {
if (StringUtils.isEmpty(role)) {
throw new Exception("role is empty!");
}
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
return business.organization().person().listWithRole(role);
//2020-06-12 unitName可能有3段,可能有2段,统一使用中间的唯一标识来进行查询
String unique = getUniqueWithName( role );
return business.organization().person().listWithRole( unique );
} catch (Exception e) {
throw e;
}
......
......@@ -653,6 +653,13 @@ public class Document extends SliceJpaObject {
return this.authorGroupList;
}
public List<String> getManagerList() {
if (this.managerList == null) {
this.managerList = new ArrayList<>();
}
return this.managerList;
}
public void setReadPersonList(List<String> readPersonList) {
this.readPersonList = readPersonList;
}
......@@ -677,73 +684,10 @@ public class Document extends SliceJpaObject {
this.authorGroupList = authorGroupList;
}
public List<String> getManagerList() {
if (this.managerList == null) {
this.managerList = new ArrayList<>();
}
return this.managerList;
}
public void setManagerList(List<String> managerList) {
this.managerList = managerList;
}
public void addReadPersonList(String readPerson) {
this.readPersonList = addStringToList(this.readPersonList, readPerson);
}
public void addReadUnitList(String readUnit) {
this.readUnitList = addStringToList(this.readUnitList, readUnit);
}
public void addReadGroupList(String readGroup) {
this.readGroupList = addStringToList(this.readGroupList, readGroup);
}
public void addAuthorPersonList(String authorPerson) {
this.authorPersonList = addStringToList(this.authorPersonList, authorPerson);
}
public void addAuthorUnitList(String authorUnit) {
this.authorUnitList = addStringToList(this.authorUnitList, authorUnit);
}
public void addAuthorGroupList(String authorGroup) {
this.authorGroupList = addStringToList(this.authorGroupList, authorGroup);
}
public void removeReadPersonList(String readPerson) {
this.readPersonList = addStringToList(this.readPersonList, readPerson);
}
public void removeReadUnitList(String readUnit) {
this.readUnitList = addStringToList(this.readUnitList, readUnit);
}
public void removeReadGroupList(String readGroup) {
this.readGroupList = addStringToList(this.readGroupList, readGroup);
}
public void removeAuthorPersonList(String authorPerson) {
removeStringFromList(this.authorPersonList, authorPerson);
}
public void removeAuthorUnitList(String authorUnit) {
removeStringFromList(this.authorUnitList, authorUnit);
}
public void removeAuthorGroupList(String authorGroup) {
removeStringFromList(this.authorGroupList, authorGroup);
}
public void addManagerList(String manager) {
addStringToList(this.managerList, manager);
}
public void removeManagerList(String manager) {
removeStringFromList(this.managerList, manager);
}
public String getImportBatchName() {
return importBatchName;
}
......@@ -784,26 +728,6 @@ public class Document extends SliceJpaObject {
this.remindGroupList = remindGroupList;
}
private List<String> addStringToList(List<String> sourceList, String targetString) {
if (sourceList == null) {
sourceList = new ArrayList<>();
}
if (!sourceList.contains(targetString)) {
sourceList.add(targetString);
}
return sourceList;
}
private List<String> removeStringFromList(List<String> sourceList, String targetString) {
if (sourceList == null) {
sourceList = new ArrayList<>();
}
if (sourceList.contains(targetString)) {
sourceList.remove(targetString);
}
return sourceList;
}
public Boolean getReviewed() {
return reviewed;
}
......@@ -918,6 +842,120 @@ public class Document extends SliceJpaObject {
this.sequenceCreatorUnitName = sequenceCreatorUnitName;
}
// -------------------Reader-------------------------
// -------------------2020-06-12 改为只存储DistinguishedName后两段,第一段可能会在运行过程中修改
public void addToReadPersonList(String readPerson) {
this.readPersonList = addStringToList(this.readPersonList, getShortTargetFlag( readPerson ));
}
public void addToReadUnitList(String readUnit) {
this.readUnitList = addStringToList(this.readUnitList, getShortTargetFlag( readUnit ));
}
public void addToReadGroupList(String readGroup) {
this.readGroupList = addStringToList(this.readGroupList, getShortTargetFlag( readGroup ));
}
// --------------------完整的标识要删除,并且也要删除只存储2段的标识
public void removeFromReadPersonList(String readPerson) {
removeStringFromList(this.readPersonList, readPerson);
removeStringFromList(this.readPersonList, getShortTargetFlag( readPerson ));
}
public void removeFromReadUnitList(String readUnit) {
removeStringFromList(this.readUnitList, readUnit);
removeStringFromList(this.readUnitList, getShortTargetFlag( readUnit ));
}
public void removeFromReadGroupList(String readGroup) {
removeStringFromList(this.readGroupList, readGroup);
removeStringFromList(this.readGroupList, getShortTargetFlag( readGroup ));
}
// -------------------Author-------------------------
// -------------------2020-06-12 改为只存储DistinguishedName后两段,第一段可能会在运行过程中修改
public void addToAuthorPersonList(String authorPerson) {
this.authorPersonList = addStringToList(this.authorPersonList, getShortTargetFlag( authorPerson ));
}
public void addToAuthorUnitList(String authorUnit) {
this.authorUnitList = addStringToList(this.authorUnitList, getShortTargetFlag( authorUnit ));
}
public void addToAuthorGroupList(String authorGroup) {
this.authorGroupList = addStringToList(this.authorGroupList, getShortTargetFlag( authorGroup ));
}
// --------------------完整的标识要删除,并且也要删除只存储2段的标识
public void removeFromAuthorPersonList(String authorPerson) {
removeStringFromList(this.authorPersonList, authorPerson);
removeStringFromList(this.authorPersonList, getShortTargetFlag( authorPerson ));
}
public void removeFromAuthorUnitList(String authorUnit) {
removeStringFromList(this.authorUnitList, authorUnit);
removeStringFromList(this.authorUnitList, getShortTargetFlag( authorUnit ));
}
public void removeFromAuthorGroupList(String authorGroup) {
removeStringFromList(this.authorGroupList, authorGroup);
removeStringFromList(this.authorGroupList, getShortTargetFlag( authorGroup ));
}
// -------------------Manager-------------------------
// -------------------2020-06-12 改为只存储DistinguishedName后两段,第一段可能会在运行过程中修改
public void addToManagerList(String manager) {
addStringToList(this.managerList, getShortTargetFlag( manager ));
}
// --------------------完整的标识要删除,并且也要删除只存储2段的标识
public void removeFromManagerList(String manager) {
removeStringFromList(this.managerList, manager);
removeStringFromList(this.managerList, getShortTargetFlag( manager ));
}
/**
* 获取只取两段的组织、人员、群组名称distinguishedName标识,默认应该有3段,第一段变动比较频繁,不适合作为权限标识
* @param distinguishedName
* @return
*/
private String getShortTargetFlag(String distinguishedName) {
String target = null;
if( StringUtils.isNotEmpty( distinguishedName ) ){
String[] array = distinguishedName.split("@");
StringBuffer sb = new StringBuffer();
if( array.length == 3 ){
target = sb.append(array[1]).append("@").append(array[2]).toString();
}else if( array.length == 2 ){
//2段
target = sb.append(array[0]).append("@").append(array[1]).toString();
}else{
target = array[0];
}
}
return target;
}
private List<String> addStringToList(List<String> sourceList, String targetString) {
if (sourceList == null) {
sourceList = new ArrayList<>();
}
if (!sourceList.contains(targetString)) {
sourceList.add(targetString);
}
return sourceList;
}
private List<String> removeStringFromList(List<String> sourceList, String targetString ) {
if (sourceList == null) {
sourceList = new ArrayList<>();
}
if (sourceList.contains(targetString)) {
sourceList.remove(targetString);
}
return sourceList;
}
/**
* 支持提供排序的列名
*/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册