mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-3134: Revert change to rm-community caveat code as legacy feature isn't being renamed
This commit is contained in:
@@ -30,7 +30,7 @@
|
||||
<constraints>
|
||||
|
||||
<!-- Note: intentionally empty list of values - allowed values can be added/updated dynamically -->
|
||||
<constraint name="rmc:smList" type="org.alfresco.module.org_alfresco_module_rm.securitymarks.RMListOfValuesConstraint">
|
||||
<constraint name="rmc:smList" type="org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint">
|
||||
<title>listconstraint.rmc_smList.title</title>
|
||||
<parameter name="allowedValues">
|
||||
<list>
|
||||
@@ -40,7 +40,7 @@
|
||||
</constraint>
|
||||
|
||||
<!-- Note: intentionally empty list of values - allowed values can be added/updated dynamically -->
|
||||
<constraint name="rmc:tlList" type="org.alfresco.module.org_alfresco_module_rm.securitymarks.RMListOfValuesConstraint">
|
||||
<constraint name="rmc:tlList" type="org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint">
|
||||
<title>listconstraint.rmc_tlList.title</title>
|
||||
<parameter name="allowedValues">
|
||||
<list>
|
||||
|
@@ -200,7 +200,7 @@
|
||||
</bean>
|
||||
|
||||
<!-- Java script interface for rm caveat config-->
|
||||
<bean id="rmConfigServiceScript" parent="baseJavaScriptExtension" class="org.alfresco.module.org_alfresco_module_rm.securitymarks.ScriptRMCaveatConfigService">
|
||||
<bean id="rmConfigServiceScript" parent="baseJavaScriptExtension" class="org.alfresco.module.org_alfresco_module_rm.caveat.ScriptRMCaveatConfigService">
|
||||
<property name="extensionName">
|
||||
<value>caveatConfig</value>
|
||||
</property>
|
||||
|
@@ -1296,7 +1296,7 @@
|
||||
|
||||
<!-- RM caveats -->
|
||||
|
||||
<bean id="caveatConfigService" class="org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigServiceImpl">
|
||||
<bean id="caveatConfigService" class="org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigServiceImpl">
|
||||
<property name="caveatConfigComponent" ref="caveatConfigComponent"/>
|
||||
<property name="dictionaryService" ref="dictionaryService"/>
|
||||
<property name="namespaceService" ref="namespaceService" />
|
||||
@@ -1304,7 +1304,7 @@
|
||||
</bean>
|
||||
|
||||
<bean id="caveatConfigComponent"
|
||||
class="org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigComponentImpl"
|
||||
class="org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigComponentImpl"
|
||||
depends-on="org_alfresco_module_rm_dictionaryBootstrap">
|
||||
<property name="contentService" ref="contentService"/>
|
||||
<property name="dictionaryService" ref="dictionaryService"/>
|
||||
@@ -1355,30 +1355,30 @@
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
|
||||
<bean id="rmListOfValuesContraintInit" class="org.alfresco.module.org_alfresco_module_rm.securitymarks.RMListOfValuesConstraint">
|
||||
<bean id="rmListOfValuesContraintInit" class="org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint">
|
||||
<property name="caveatConfigService" ref="caveatConfigService"/>
|
||||
</bean>
|
||||
|
||||
<bean id="CaveatConfigService_security" parent="baseSecurity">
|
||||
<property name="objectDefinitionSource">
|
||||
<value>
|
||||
<![CDATA[
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.getRMAllowedValues=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.hasAccess=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.getRMConstraint=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.getAllRMConstraints=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.getListDetails=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.updateOrCreateCaveatConfig=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.addRMConstraint=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.updateRMConstraintAllowedValues=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.updateRMConstraintTitle=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.deleteRMConstraint=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.addRMConstraintListValue=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.updateRMConstraintListAuthority=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.removeRMConstraintListAuthority=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.updateRMConstraintListValue=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.removeRMConstraintListValue=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService.*=RM_DENY
|
||||
<![CDATA[
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.getRMAllowedValues=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.hasAccess=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.getRMConstraint=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.getAllRMConstraints=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.getListDetails=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.updateOrCreateCaveatConfig=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.addRMConstraint=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.updateRMConstraintAllowedValues=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.updateRMConstraintTitle=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.deleteRMConstraint=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.addRMConstraintListValue=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.updateRMConstraintListAuthority=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.removeRMConstraintListAuthority=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.updateRMConstraintListValue=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.removeRMConstraintListValue=RM_ALLOW
|
||||
org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService.*=RM_DENY
|
||||
]]>
|
||||
</value>
|
||||
</property>
|
||||
@@ -1398,7 +1398,7 @@
|
||||
<bean id="CaveatConfigService" class="org.springframework.aop.framework.ProxyFactoryBean">
|
||||
<property name="proxyInterfaces">
|
||||
<list>
|
||||
<value>org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService</value>
|
||||
<value>org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService</value>
|
||||
</list>
|
||||
</property>
|
||||
<property name="targetName">
|
||||
|
@@ -35,7 +35,7 @@ package org.alfresco.module.org_alfresco_module_dod5015.caveat;
|
||||
*
|
||||
* @author Roy Wetherall
|
||||
*/
|
||||
public class RMListOfValuesConstraint extends org.alfresco.module.org_alfresco_module_rm.securitymarks.RMListOfValuesConstraint
|
||||
public class RMListOfValuesConstraint extends org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint
|
||||
{
|
||||
// No implementation
|
||||
}
|
||||
|
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/* package scope */ final class PivotUtil
|
||||
{
|
||||
private PivotUtil()
|
||||
{
|
||||
// Will not be called
|
||||
}
|
||||
|
||||
static Map<String, List<String>> getPivot(Map<String, List<String>> source)
|
||||
{
|
||||
|
||||
Map<String, List<String>> pivot = new HashMap<String, List<String>>();
|
||||
|
||||
for (Map.Entry<String, List<String>> entry : source.entrySet())
|
||||
{
|
||||
List<String>values = entry.getValue();
|
||||
for (String value : values)
|
||||
{
|
||||
String authority = entry.getKey();
|
||||
if (pivot.containsKey(value))
|
||||
{
|
||||
// already exists
|
||||
List<String> list = pivot.get(value);
|
||||
list.add(authority );
|
||||
}
|
||||
else
|
||||
{
|
||||
// New value
|
||||
List<String> list = new ArrayList<String>();
|
||||
list.add(authority);
|
||||
pivot.put(value, list);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return pivot;
|
||||
}
|
||||
}
|
@@ -0,0 +1,121 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
public interface RMCaveatConfigComponent
|
||||
{
|
||||
void init();
|
||||
|
||||
/**
|
||||
* Get allowed values for given caveat list (for current user)
|
||||
*
|
||||
* @param constraintName
|
||||
* @return
|
||||
*/
|
||||
List<String> getRMAllowedValues(String constraintName);
|
||||
|
||||
/**
|
||||
* Get custom caveat models
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<QName> getRMCaveatModels();
|
||||
|
||||
/**
|
||||
* Check whether access to 'record component' node is vetoed for current user due to caveat(s)
|
||||
*
|
||||
* @param nodeRef
|
||||
* @return false, if caveat(s) veto access otherwise return true
|
||||
*/
|
||||
boolean hasAccess(NodeRef nodeRef);
|
||||
|
||||
/**
|
||||
* Get RM constraint list
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
*/
|
||||
RMConstraintInfo getRMConstraint(String listName);
|
||||
|
||||
/**
|
||||
* Add RM constraint
|
||||
*/
|
||||
void addRMConstraint(String listName);
|
||||
|
||||
/**
|
||||
* Add RM constraint value for given authority
|
||||
*/
|
||||
void addRMConstraintListValue(String listName, String authorityName, String value);
|
||||
|
||||
/**
|
||||
* Update RM constraint values for given authority
|
||||
*/
|
||||
void updateRMConstraintListAuthority(String listName, String authorityName, List<String>values);
|
||||
|
||||
/**
|
||||
* Update RM constraint authorities for given value
|
||||
*/
|
||||
void updateRMConstraintListValue(String listName, String valueName, List<String>authorities);
|
||||
|
||||
/**
|
||||
* Remove RM constraint value (all authorities)
|
||||
*/
|
||||
void removeRMConstraintListValue(String listName, String valueName);
|
||||
|
||||
/**
|
||||
* Remove RM constraint authority (all values)
|
||||
*/
|
||||
void removeRMConstraintListAuthority(String listName, String authorityName);
|
||||
|
||||
/**
|
||||
* Delete RM Constraint
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
*/
|
||||
void deleteRMConstraint(String listName);
|
||||
|
||||
/**
|
||||
* Get the details of a caveat list
|
||||
* @param listName
|
||||
* @return
|
||||
*/
|
||||
Map<String, List<String>> getListDetails(String listName);
|
||||
|
||||
NodeRef updateOrCreateCaveatConfig(File jsonFile);
|
||||
|
||||
NodeRef updateOrCreateCaveatConfig(String jsonString);
|
||||
|
||||
NodeRef updateOrCreateCaveatConfig(InputStream is);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,161 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
|
||||
public interface RMCaveatConfigService
|
||||
{
|
||||
void init();
|
||||
|
||||
/**
|
||||
* Get allowed values for given caveat list (for current user)
|
||||
* @param constraintName
|
||||
* @return
|
||||
*/
|
||||
List<String> getRMAllowedValues(String constraintName);
|
||||
|
||||
/**
|
||||
* Check whether access to 'record component' node is vetoed for current user due to caveat(s)
|
||||
*
|
||||
* @param nodeRef
|
||||
* @return false, if caveat(s) veto access otherwise return true
|
||||
*/
|
||||
boolean hasAccess(NodeRef nodeRef);
|
||||
|
||||
/*
|
||||
* Get a single RM constraint
|
||||
*/
|
||||
RMConstraintInfo getRMConstraint(String listName);
|
||||
|
||||
/*
|
||||
* Get the names of all the caveat lists
|
||||
*/
|
||||
Set<RMConstraintInfo> getAllRMConstraints();
|
||||
|
||||
/**
|
||||
* Get the details of a caveat list
|
||||
* @param listName
|
||||
* @return
|
||||
*/
|
||||
Map<String, List<String>> getListDetails(String listName);
|
||||
|
||||
NodeRef updateOrCreateCaveatConfig(File jsonFile);
|
||||
|
||||
NodeRef updateOrCreateCaveatConfig(String jsonString);
|
||||
|
||||
NodeRef updateOrCreateCaveatConfig(InputStream is);
|
||||
|
||||
/**
|
||||
* add RM constraint list
|
||||
* @param listName the name of the RMConstraintList
|
||||
* @param listTitle
|
||||
*/
|
||||
RMConstraintInfo addRMConstraint(String listName, String listTitle, String[] allowedValues);
|
||||
|
||||
/**
|
||||
* update RM constraint list allowed values
|
||||
* @param listName the name of the RMConstraintList - can not be changed
|
||||
* @param allowedValues
|
||||
*/
|
||||
RMConstraintInfo updateRMConstraintAllowedValues(String listName, String[] allowedValues);
|
||||
|
||||
/**
|
||||
* update RM constraint Title
|
||||
* @param listName the name of the RMConstraintList - can not be changed
|
||||
* @param allowedValues
|
||||
*/
|
||||
RMConstraintInfo updateRMConstraintTitle(String listName, String newTitle);
|
||||
|
||||
|
||||
/**
|
||||
* delete RM Constraint
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
*/
|
||||
void deleteRMConstraint(String listName);
|
||||
|
||||
/**
|
||||
* Add a single value to an authority in a list. The existing values of the list remain.
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
* @param authorityName
|
||||
* @param values
|
||||
* @throws AlfrescoRuntimeException if either the list or the authority do not already exist.
|
||||
*/
|
||||
void addRMConstraintListValue(String listName, String authorityName, String value);
|
||||
|
||||
/**
|
||||
* Replace the values for an authority in a list.
|
||||
* The existing values are removed.
|
||||
*
|
||||
* If the authority does not already exist in the list, it will be added
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
* @param authorityName
|
||||
* @param values
|
||||
*/
|
||||
void updateRMConstraintListAuthority(String listName, String authorityName, List<String>values);
|
||||
|
||||
/**
|
||||
* Remove an authority from a list
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
* @param authorityName
|
||||
* @param values
|
||||
*/
|
||||
void removeRMConstraintListAuthority(String listName, String authorityName);
|
||||
|
||||
/**
|
||||
* Replace the values for an authority in a list.
|
||||
* The existing values are removed.
|
||||
*
|
||||
* If the authority does not already exist in the list, it will be added
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
* @param value
|
||||
* @param authorities
|
||||
*/
|
||||
void updateRMConstraintListValue(String listName, String value, List<String>authorities);
|
||||
|
||||
/**
|
||||
* Remove an authority from a list
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
* @param authorityName
|
||||
* @param value
|
||||
*/
|
||||
void removeRMConstraintListValue(String listName, String valueName);
|
||||
}
|
@@ -0,0 +1,437 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint.MatchLogic;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementCustomModel;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||
import org.alfresco.service.cmr.dictionary.Constraint;
|
||||
import org.alfresco.service.cmr.dictionary.ConstraintDefinition;
|
||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
/**
|
||||
* RM Caveat Config Service impl
|
||||
*
|
||||
* @author janv
|
||||
*/
|
||||
public class RMCaveatConfigServiceImpl implements RMCaveatConfigService
|
||||
{
|
||||
private static Log logger = LogFactory.getLog(RMCaveatConfigServiceImpl.class);
|
||||
|
||||
private NamespaceService namespaceService;
|
||||
private DictionaryService dictionaryService;
|
||||
|
||||
private RMCaveatConfigComponent rmCaveatConfigComponent;
|
||||
private RecordsManagementAdminService recordsManagementAdminService;
|
||||
|
||||
|
||||
public void setNamespaceService(NamespaceService namespaceService)
|
||||
{
|
||||
this.namespaceService = namespaceService;
|
||||
}
|
||||
|
||||
public void setDictionaryService(DictionaryService dictionaryService)
|
||||
{
|
||||
this.dictionaryService = dictionaryService;
|
||||
}
|
||||
|
||||
public void setCaveatConfigComponent(RMCaveatConfigComponent rmCaveatConfigComponent)
|
||||
{
|
||||
this.rmCaveatConfigComponent = rmCaveatConfigComponent;
|
||||
}
|
||||
|
||||
public void setRecordsManagementAdminService(RecordsManagementAdminService recordsManagementAdminService)
|
||||
{
|
||||
this.recordsManagementAdminService = recordsManagementAdminService;
|
||||
}
|
||||
|
||||
public RecordsManagementAdminService getRecordsManagementAdminService()
|
||||
{
|
||||
return recordsManagementAdminService;
|
||||
}
|
||||
|
||||
public void init()
|
||||
{
|
||||
rmCaveatConfigComponent.init();
|
||||
}
|
||||
|
||||
public NodeRef updateOrCreateCaveatConfig(InputStream is)
|
||||
{
|
||||
return rmCaveatConfigComponent.updateOrCreateCaveatConfig(is);
|
||||
}
|
||||
|
||||
public NodeRef updateOrCreateCaveatConfig(File jsonFile)
|
||||
{
|
||||
return rmCaveatConfigComponent.updateOrCreateCaveatConfig(jsonFile);
|
||||
}
|
||||
|
||||
public NodeRef updateOrCreateCaveatConfig(String jsonString)
|
||||
{
|
||||
return rmCaveatConfigComponent.updateOrCreateCaveatConfig(jsonString);
|
||||
}
|
||||
|
||||
// Get allowed values for given caveat (for current user)
|
||||
public List<String> getRMAllowedValues(String constraintName)
|
||||
{
|
||||
return rmCaveatConfigComponent.getRMAllowedValues(constraintName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether access to 'record component' node is vetoed for current user due to caveat(s)
|
||||
*
|
||||
* @param nodeRef
|
||||
* @return false, if caveat(s) veto access otherwise return true
|
||||
*/
|
||||
public boolean hasAccess(NodeRef nodeRef)
|
||||
{
|
||||
return rmCaveatConfigComponent.hasAccess(nodeRef);
|
||||
}
|
||||
|
||||
/**
|
||||
* add RM constraint list
|
||||
* @param listName the name of the RMConstraintList
|
||||
*/
|
||||
public RMConstraintInfo addRMConstraint(String listName, String title, String[] values)
|
||||
{
|
||||
return addRMConstraint(listName, title, values, MatchLogic.AND);
|
||||
}
|
||||
|
||||
public RMConstraintInfo addRMConstraint(String listName, String title, String[] values, MatchLogic matchLogic)
|
||||
{
|
||||
if (listName == null)
|
||||
{
|
||||
// Generate a list name
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(RecordsManagementCustomModel.RM_CUSTOM_PREFIX);
|
||||
sb.append(QName.NAMESPACE_PREFIX);
|
||||
sb.append(UUID.randomUUID().toString());
|
||||
listName = sb.toString();
|
||||
}
|
||||
|
||||
List<String>allowedValues = new ArrayList<String>();
|
||||
for(String value : values)
|
||||
{
|
||||
allowedValues.add(value);
|
||||
}
|
||||
|
||||
QName listQName = QName.createQName(listName, namespaceService);
|
||||
|
||||
// TEMP review - if it already exists then change it for now
|
||||
try
|
||||
{
|
||||
recordsManagementAdminService.addCustomConstraintDefinition(listQName, title, true, allowedValues, matchLogic);
|
||||
}
|
||||
catch (AlfrescoRuntimeException e)
|
||||
{
|
||||
if (e.getMessage().contains("Constraint already exists"))
|
||||
{
|
||||
recordsManagementAdminService.changeCustomConstraintValues(listQName, allowedValues);
|
||||
recordsManagementAdminService.changeCustomConstraintTitle(listQName, title);
|
||||
}
|
||||
}
|
||||
|
||||
rmCaveatConfigComponent.addRMConstraint(listName);
|
||||
|
||||
RMConstraintInfo info = new RMConstraintInfo();
|
||||
info.setName(listQName.toPrefixString());
|
||||
info.setTitle(title);
|
||||
info.setAllowedValues(values);
|
||||
info.setCaseSensitive(true);
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* delete RM Constraint List
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
*/
|
||||
public void deleteRMConstraint(String listName)
|
||||
{
|
||||
rmCaveatConfigComponent.deleteRMConstraint(listName);
|
||||
|
||||
QName listQName = QName.createQName(listName, namespaceService);
|
||||
|
||||
recordsManagementAdminService.removeCustomConstraintDefinition(listQName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a single value to an authority in a list. The existing values of the list remain.
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
* @param authorityName
|
||||
* @param values
|
||||
* @throws AlfrescoRuntimeException if either the list or the authority do not already exist.
|
||||
*/
|
||||
public void addRMConstraintListValue(String listName, String authorityName, String value)
|
||||
{
|
||||
rmCaveatConfigComponent.addRMConstraintListValue(listName, authorityName, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the details of the specified list
|
||||
* @param listName
|
||||
* @return the details of the specified list
|
||||
*/
|
||||
public Map<String, List<String>> getListDetails(String listName)
|
||||
{
|
||||
return rmCaveatConfigComponent.getListDetails(listName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace the values for an authority in a list.
|
||||
* The existing values are removed.
|
||||
*
|
||||
* If the authority does not already exist in the list, it will be added
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
* @param authorityName
|
||||
* @param values
|
||||
*/
|
||||
public void updateRMConstraintListAuthority(String listName, String authorityName, List<String>values)
|
||||
{
|
||||
rmCaveatConfigComponent.updateRMConstraintListAuthority(listName, authorityName, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace the authorities for a value in a list
|
||||
*
|
||||
* @param listName
|
||||
* @param valueName
|
||||
* @param authorities
|
||||
*/
|
||||
public void updateRMConstraintListValue(String listName, String valueName, List<String>authorities)
|
||||
{
|
||||
rmCaveatConfigComponent.updateRMConstraintListValue(listName, valueName, authorities);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove an authority from a list
|
||||
*
|
||||
* @param listName the name of the RMConstraintList
|
||||
* @param authorityName
|
||||
* @param values
|
||||
*/
|
||||
public void removeRMConstraintListAuthority(String listName, String authorityName)
|
||||
{
|
||||
rmCaveatConfigComponent.removeRMConstraintListAuthority(listName, authorityName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all Constraint Lists
|
||||
*/
|
||||
public Set<RMConstraintInfo> getAllRMConstraints()
|
||||
{
|
||||
Set<RMConstraintInfo> info = new HashSet<RMConstraintInfo>();
|
||||
|
||||
List<ConstraintDefinition> defs = new ArrayList<ConstraintDefinition>(10);
|
||||
for (QName caveatModelQName : rmCaveatConfigComponent.getRMCaveatModels())
|
||||
{
|
||||
defs.addAll(recordsManagementAdminService.getCustomConstraintDefinitions(caveatModelQName));
|
||||
}
|
||||
|
||||
for(ConstraintDefinition dictionaryDef : defs)
|
||||
{
|
||||
Constraint con = dictionaryDef.getConstraint();
|
||||
if (con instanceof RMListOfValuesConstraint)
|
||||
{
|
||||
final RMListOfValuesConstraint def = (RMListOfValuesConstraint)con;
|
||||
RMConstraintInfo i = new RMConstraintInfo();
|
||||
i.setName(def.getShortName());
|
||||
i.setTitle(def.getTitle());
|
||||
|
||||
// note: assumes only one caveat/LOV against a given property
|
||||
List<String> allowedValues = AuthenticationUtil.runAs(new RunAsWork<List<String>>()
|
||||
{
|
||||
public List<String> doWork()
|
||||
{
|
||||
return def.getAllowedValues();
|
||||
}
|
||||
}, AuthenticationUtil.getSystemUserName());
|
||||
|
||||
i.setAllowedValues(allowedValues.toArray(new String[allowedValues.size()]));
|
||||
i.setCaseSensitive(def.isCaseSensitive());
|
||||
info.add(i);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an RMConstraintInfo
|
||||
* @param listQName
|
||||
* @return the constraint or null if it does not exist
|
||||
*/
|
||||
public RMConstraintInfo getRMConstraint(QName listQName)
|
||||
{
|
||||
ConstraintDefinition dictionaryDef = dictionaryService.getConstraint(listQName);
|
||||
if(dictionaryDef != null)
|
||||
{
|
||||
Constraint con = dictionaryDef.getConstraint();
|
||||
if (con instanceof RMListOfValuesConstraint)
|
||||
{
|
||||
final RMListOfValuesConstraint def = (RMListOfValuesConstraint)con;
|
||||
|
||||
RMConstraintInfo info = new RMConstraintInfo();
|
||||
info.setName(listQName.toPrefixString());
|
||||
info.setTitle(con.getTitle());
|
||||
List<String> allowedValues = AuthenticationUtil.runAs(new RunAsWork<List<String>>()
|
||||
{
|
||||
public List<String> doWork()
|
||||
{
|
||||
return def.getAllowedValues();
|
||||
}
|
||||
}, AuthenticationUtil.getSystemUserName());
|
||||
|
||||
info.setAllowedValues(allowedValues.toArray(new String[allowedValues.size()]));
|
||||
info.setCaseSensitive(def.isCaseSensitive());
|
||||
return info;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get RM Constraint detail.
|
||||
*
|
||||
* @return the constraintInfo or null
|
||||
*/
|
||||
public RMConstraintInfo getRMConstraint(String listName)
|
||||
{
|
||||
QName listQName = QName.createQName(listName, namespaceService);
|
||||
return getRMConstraint(listQName);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Update The allowed values for an RM Constraint.
|
||||
*
|
||||
* @param listName The name of the list.
|
||||
* @param allowedValues the new alowed values
|
||||
*
|
||||
*/
|
||||
public RMConstraintInfo updateRMConstraintAllowedValues(String listName, String[] allowedValues)
|
||||
{
|
||||
QName listQName = QName.createQName(listName, namespaceService);
|
||||
|
||||
if(allowedValues != null)
|
||||
{
|
||||
List<String>allowedValueList = new ArrayList<String>();
|
||||
for(String value : allowedValues)
|
||||
{
|
||||
allowedValueList.add(value);
|
||||
}
|
||||
|
||||
ConstraintDefinition dictionaryDef = dictionaryService.getConstraint(listQName);
|
||||
Constraint con = dictionaryDef.getConstraint();
|
||||
if (con instanceof RMListOfValuesConstraint)
|
||||
{
|
||||
final RMListOfValuesConstraint def = (RMListOfValuesConstraint)con;
|
||||
List<String> oldAllowedValues = AuthenticationUtil.runAs(new RunAsWork<List<String>>()
|
||||
{
|
||||
public List<String> doWork()
|
||||
{
|
||||
return def.getAllowedValues();
|
||||
}
|
||||
}, AuthenticationUtil.getSystemUserName());
|
||||
|
||||
/**
|
||||
* Deal with any additions
|
||||
*/
|
||||
for(String newValue : allowedValueList)
|
||||
{
|
||||
if(!oldAllowedValues.contains(newValue) && logger.isDebugEnabled())
|
||||
{
|
||||
// This is an addition
|
||||
logger.debug("value added to list:" + listQName + ":" + newValue);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deal with any deletions
|
||||
*/
|
||||
for(String oldValue : oldAllowedValues)
|
||||
{
|
||||
if(!allowedValueList.contains(oldValue))
|
||||
{
|
||||
// This is a deletion
|
||||
if(logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("value removed from list:" + listQName + ":" + oldValue);
|
||||
}
|
||||
removeRMConstraintListValue(listName, oldValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
recordsManagementAdminService.changeCustomConstraintValues(listQName, allowedValueList);
|
||||
}
|
||||
|
||||
return getRMConstraint(listName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a value from a list and cascade delete.
|
||||
*/
|
||||
public void removeRMConstraintListValue(String listName, String valueName)
|
||||
{
|
||||
//TODO need to update the rm constraint definition
|
||||
// recordsManagementAdminService.
|
||||
|
||||
rmCaveatConfigComponent.removeRMConstraintListValue(listName, valueName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the title of this RM Constraint.
|
||||
*/
|
||||
public RMConstraintInfo updateRMConstraintTitle(String listName, String newTitle)
|
||||
{
|
||||
QName listQName = QName.createQName(listName, namespaceService);
|
||||
|
||||
recordsManagementAdminService.changeCustomConstraintTitle(listQName, newTitle);
|
||||
return getRMConstraint(listName);
|
||||
}
|
||||
}
|
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class RMConstraintInfo
|
||||
{
|
||||
private String name;
|
||||
private String title;
|
||||
private boolean caseSensitive;
|
||||
private String[] allowedValues;
|
||||
|
||||
public void setName(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
public void setTitle(String title)
|
||||
{
|
||||
this.title = title;
|
||||
}
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
}
|
||||
public void setCaseSensitive(boolean caseSensitive)
|
||||
{
|
||||
this.caseSensitive = caseSensitive;
|
||||
}
|
||||
public boolean isCaseSensitive()
|
||||
{
|
||||
return caseSensitive;
|
||||
}
|
||||
public void setAllowedValues(String[] values)
|
||||
{
|
||||
this.allowedValues = values.clone();
|
||||
}
|
||||
public String[] getAllowedValues()
|
||||
{
|
||||
return allowedValues;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("RMConstraintInfo [name=");
|
||||
builder.append(this.name);
|
||||
builder.append(", title=");
|
||||
builder.append(this.title);
|
||||
builder.append(", caseSensitive=");
|
||||
builder.append(this.caseSensitive);
|
||||
builder.append(", allowedValues=");
|
||||
builder.append(Arrays.toString(this.allowedValues));
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
/**
|
||||
* A class to hold I18N keys for messages related to constraint validation.
|
||||
*
|
||||
* @author tpage
|
||||
*/
|
||||
public class RMConstraintMessageKeys
|
||||
{
|
||||
public static final String ERR_NON_STRING = "d_dictionary.constraint.string_length.non_string";
|
||||
public static final String ERR_INVALID_VALUE = "d_dictionary.constraint.list_of_values.invalid_value";
|
||||
}
|
@@ -0,0 +1,259 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.repo.dictionary.constraint.ListOfValuesConstraint;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.service.cmr.dictionary.ConstraintException;
|
||||
import org.alfresco.service.cmr.i18n.MessageLookup;
|
||||
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
||||
import org.alfresco.service.cmr.repository.datatype.TypeConversionException;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.extensions.surf.util.I18NUtil;
|
||||
|
||||
/**
|
||||
* RM Constraint implementation that ensures the value is one of a constrained
|
||||
* <i>list of values</i>. By default, this constraint is case-sensitive.
|
||||
*
|
||||
* @see #setAllowedValues(List)
|
||||
* @see #setCaseSensitive(boolean)
|
||||
*
|
||||
* @author janv
|
||||
*/
|
||||
public class RMListOfValuesConstraint extends ListOfValuesConstraint
|
||||
{
|
||||
private static final String LOV_CONSTRAINT_VALUE = "listconstraint";
|
||||
private List<String> allowedValues;
|
||||
private List<String> allowedValuesUpper;
|
||||
// defined match logic used by caveat matching (default = "AND")
|
||||
private MatchLogic matchLogic = MatchLogic.AND;
|
||||
|
||||
public enum MatchLogic
|
||||
{
|
||||
// closed marking - all values must match
|
||||
AND,
|
||||
// open marking - at least one value must match
|
||||
OR;
|
||||
}
|
||||
|
||||
// note: alternative to static init could be to use 'registered' constraint
|
||||
private static RMCaveatConfigService caveatConfigService;
|
||||
|
||||
public void setCaveatConfigService(RMCaveatConfigService caveatConfigService)
|
||||
{
|
||||
RMListOfValuesConstraint.caveatConfigService = caveatConfigService;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder(80);
|
||||
sb.append("RMListOfValuesConstraint")
|
||||
.append("[allowedValues=").append(getAllowedValues())
|
||||
.append(", caseSensitive=").append(isCaseSensitive())
|
||||
.append(", sorted=").append(isSorted())
|
||||
.append(", matchLogic=").append(getMatchLogic())
|
||||
.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public RMListOfValuesConstraint()
|
||||
{
|
||||
super();
|
||||
|
||||
// Set RM list of value constraints to be sorted by default
|
||||
sorted = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the allowed values. Note that these are <tt>String</tt> instances, but may
|
||||
* represent non-<tt>String</tt> values. It is up to the caller to distinguish.
|
||||
*
|
||||
* @return Returns the values allowed
|
||||
*/
|
||||
@Override
|
||||
public List<String> getRawAllowedValues()
|
||||
{
|
||||
String runAsUser = AuthenticationUtil.getRunAsUser();
|
||||
if ((runAsUser != null) && (! runAsUser.equals(AuthenticationUtil.getSystemUserName())) && (caveatConfigService != null))
|
||||
{
|
||||
// get allowed values for current user
|
||||
List<String> allowedForUser = caveatConfigService.getRMAllowedValues(getShortName());
|
||||
|
||||
List<String> filteredList = new ArrayList<String>(allowedForUser.size());
|
||||
for (String allowed : allowedForUser)
|
||||
{
|
||||
if (this.allowedValues.contains(allowed))
|
||||
{
|
||||
filteredList.add(allowed);
|
||||
}
|
||||
}
|
||||
|
||||
return filteredList;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.allowedValues;
|
||||
}
|
||||
}
|
||||
|
||||
public String getDisplayLabel(String constraintAllowableValue, MessageLookup messageLookup)
|
||||
{
|
||||
if (!this.allowedValues.contains(constraintAllowableValue))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String key = LOV_CONSTRAINT_VALUE;
|
||||
key += "." + this.getShortName();
|
||||
key += "." + constraintAllowableValue;
|
||||
key = StringUtils.replace(key, ":", "_");
|
||||
|
||||
String message = messageLookup.getMessage(key, I18NUtil.getLocale());
|
||||
return message == null ? constraintAllowableValue : message;
|
||||
}
|
||||
|
||||
private List<String> getAllowedValuesUpper()
|
||||
{
|
||||
String runAsUser = AuthenticationUtil.getRunAsUser();
|
||||
if ((runAsUser != null) && (! runAsUser.equals(AuthenticationUtil.getSystemUserName())) && (caveatConfigService != null))
|
||||
{
|
||||
// get allowed values for current user
|
||||
List<String> allowedForUser = caveatConfigService.getRMAllowedValues(getType());
|
||||
|
||||
List<String> filteredList = new ArrayList<String>(allowedForUser.size());
|
||||
for (String allowed : allowedForUser)
|
||||
{
|
||||
if (this.allowedValuesUpper.contains(allowed.toUpperCase()))
|
||||
{
|
||||
filteredList.add(allowed);
|
||||
}
|
||||
}
|
||||
|
||||
return filteredList;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.allowedValuesUpper;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Set the values that are allowed by the constraint.
|
||||
*
|
||||
* @param values a list of allowed values
|
||||
*/
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
@Override
|
||||
public void setAllowedValues(List allowedValues)
|
||||
{
|
||||
if (allowedValues == null)
|
||||
{
|
||||
allowedValues = new ArrayList<String>(0);
|
||||
}
|
||||
int valueCount = allowedValues.size();
|
||||
this.allowedValues = Collections.unmodifiableList(allowedValues);
|
||||
|
||||
// make the upper case versions
|
||||
this.allowedValuesUpper = new ArrayList<String>(valueCount);
|
||||
for (String allowedValue : this.allowedValues)
|
||||
{
|
||||
allowedValuesUpper.add(allowedValue.toUpperCase());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize()
|
||||
{
|
||||
checkPropertyNotNull("allowedValues", allowedValues);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getParameters()
|
||||
{
|
||||
Map<String, Object> params = new HashMap<String, Object>(2);
|
||||
|
||||
params.put("caseSensitive", isCaseSensitive());
|
||||
params.put("allowedValues", getAllowedValues());
|
||||
params.put("sorted", isSorted());
|
||||
params.put("matchLogic", getMatchLogic());
|
||||
|
||||
return params;
|
||||
}
|
||||
|
||||
public MatchLogic getMatchLogicEnum()
|
||||
{
|
||||
return matchLogic;
|
||||
}
|
||||
|
||||
public String getMatchLogic()
|
||||
{
|
||||
return matchLogic.toString();
|
||||
}
|
||||
|
||||
public void setMatchLogic(String matchLogicStr)
|
||||
{
|
||||
this.matchLogic = MatchLogic.valueOf(matchLogicStr);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void evaluateSingleValue(Object value)
|
||||
{
|
||||
// convert the value to a String
|
||||
String valueStr = null;
|
||||
try
|
||||
{
|
||||
valueStr = DefaultTypeConverter.INSTANCE.convert(String.class, value);
|
||||
}
|
||||
catch (TypeConversionException e)
|
||||
{
|
||||
throw new ConstraintException(RMConstraintMessageKeys.ERR_NON_STRING, value, e);
|
||||
}
|
||||
// check that the value is in the set of allowed values
|
||||
if (isCaseSensitive())
|
||||
{
|
||||
if (!getAllowedValues().contains(valueStr))
|
||||
{
|
||||
throw new ConstraintException(RMConstraintMessageKeys.ERR_INVALID_VALUE, value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!getAllowedValuesUpper().contains(valueStr.toUpperCase()))
|
||||
{
|
||||
throw new ConstraintException(RMConstraintMessageKeys.ERR_INVALID_VALUE, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
public class ScriptAuthority implements Serializable
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
private String authorityTitle;
|
||||
private String authorityName;
|
||||
|
||||
public void setAuthorityName(String authorityName)
|
||||
{
|
||||
this.authorityName = authorityName;
|
||||
}
|
||||
public String getAuthorityName()
|
||||
{
|
||||
return authorityName;
|
||||
}
|
||||
public void setAuthorityTitle(String authorityName)
|
||||
{
|
||||
this.authorityTitle = authorityName;
|
||||
}
|
||||
public String getAuthorityTitle()
|
||||
{
|
||||
return authorityTitle;
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,270 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.service.cmr.security.AuthorityService;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class ScriptConstraint implements Serializable
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private RMConstraintInfo info;
|
||||
|
||||
private RMCaveatConfigService rmCaveatconfigService;
|
||||
|
||||
private AuthorityService authorityService;
|
||||
|
||||
ScriptConstraint(RMConstraintInfo info, RMCaveatConfigService rmCaveatconfigService, AuthorityService authorityService)
|
||||
{
|
||||
this.info = info;
|
||||
this.rmCaveatconfigService = rmCaveatconfigService;
|
||||
this.authorityService = authorityService;
|
||||
}
|
||||
|
||||
public void setTitle(String title)
|
||||
{
|
||||
info.setTitle(title);
|
||||
}
|
||||
public String getTitle()
|
||||
{
|
||||
return info.getTitle();
|
||||
}
|
||||
public void setName(String name)
|
||||
{
|
||||
info.setName(name);
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return info.getName().replace(":", "_");
|
||||
}
|
||||
|
||||
public boolean isCaseSensitive()
|
||||
{
|
||||
return info.isCaseSensitive();
|
||||
}
|
||||
|
||||
public String[] getAllowedValues()
|
||||
{
|
||||
return info.getAllowedValues();
|
||||
}
|
||||
|
||||
public ScriptConstraintAuthority[] getAuthorities()
|
||||
{
|
||||
Map<String, List<String>> values = rmCaveatconfigService.getListDetails(info.getName());
|
||||
|
||||
if (values == null)
|
||||
{
|
||||
return new ScriptConstraintAuthority[0];
|
||||
}
|
||||
|
||||
// Here with some data to return
|
||||
Set<String> authorities = values.keySet();
|
||||
|
||||
ArrayList<ScriptConstraintAuthority> constraints = new ArrayList<ScriptConstraintAuthority>(values.size());
|
||||
for(String authority : authorities)
|
||||
{
|
||||
ScriptConstraintAuthority constraint = new ScriptConstraintAuthority();
|
||||
constraint.setAuthorityName(authority);
|
||||
constraint.setValues(values.get(authority));
|
||||
constraints.add(constraint);
|
||||
}
|
||||
|
||||
ScriptConstraintAuthority[] retVal = constraints.toArray(new ScriptConstraintAuthority[constraints.size()]);
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/**
|
||||
* updateTitle
|
||||
*/
|
||||
public void updateTitle(String newTitle)
|
||||
{
|
||||
info.setTitle(newTitle);
|
||||
rmCaveatconfigService.updateRMConstraintTitle(info.getName(), newTitle) ;
|
||||
}
|
||||
|
||||
/**
|
||||
* updateAllowedValues
|
||||
*/
|
||||
public void updateAllowedValues(String[] allowedValues)
|
||||
{
|
||||
info.setAllowedValues(allowedValues);
|
||||
rmCaveatconfigService.updateRMConstraintAllowedValues(info.getName(), allowedValues);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a value
|
||||
* @param values
|
||||
* @param authorities
|
||||
*/
|
||||
public void updateValues(JSONArray bodge) throws Exception
|
||||
{
|
||||
for(int i = 0; i < bodge.length(); i++)
|
||||
{
|
||||
|
||||
JSONObject obj = bodge.getJSONObject(i);
|
||||
String value = obj.getString("value");
|
||||
JSONArray authorities = obj.getJSONArray("authorities");
|
||||
List<String> aList = new ArrayList<String>();
|
||||
for(int j = 0; j < authorities.length();j++)
|
||||
{
|
||||
aList.add(authorities.getString(j));
|
||||
}
|
||||
rmCaveatconfigService.updateRMConstraintListValue(info.getName(), value, aList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a value
|
||||
* @param values
|
||||
* @param authorities
|
||||
*/
|
||||
public void updateValues(String value, String[] authorities)
|
||||
{
|
||||
List<String> list = Arrays.asList(authorities);
|
||||
rmCaveatconfigService.updateRMConstraintListValue(info.getName(), value, list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cascade delete an authority
|
||||
* @param authority
|
||||
*/
|
||||
public void deleteAuthority(String authority)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Cascade delete a value
|
||||
* @param value
|
||||
*/
|
||||
public void deleteValue(String value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get a single value
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
public ScriptConstraintValue getValue(String value)
|
||||
{
|
||||
ScriptConstraintValue[] values = getValues();
|
||||
|
||||
for(ScriptConstraintValue val : values)
|
||||
{
|
||||
if(val.getValueName().equalsIgnoreCase(value))
|
||||
{
|
||||
return val;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public ScriptConstraintValue[] getValues()
|
||||
{
|
||||
// authority, values
|
||||
Map<String, List<String>> details = rmCaveatconfigService.getListDetails(info.getName());
|
||||
|
||||
if (details == null)
|
||||
{
|
||||
details = new HashMap<String, List<String>>();
|
||||
}
|
||||
|
||||
// values, authorities
|
||||
Map<String, List<String>> pivot = PivotUtil.getPivot(details);
|
||||
|
||||
// Here with some data to return
|
||||
Set<String> values = pivot.keySet();
|
||||
|
||||
ArrayList<ScriptConstraintValue> constraints = new ArrayList<ScriptConstraintValue>(pivot.size());
|
||||
for(String value : values)
|
||||
{
|
||||
ScriptConstraintValue constraint = new ScriptConstraintValue();
|
||||
constraint.setValueName(value);
|
||||
constraint.setValueTitle(value);
|
||||
|
||||
List<String>authorities = pivot.get(value);
|
||||
List<ScriptAuthority> sauth = new ArrayList<ScriptAuthority>();
|
||||
for(String authority : authorities)
|
||||
{
|
||||
ScriptAuthority a = new ScriptAuthority();
|
||||
a.setAuthorityName(authority);
|
||||
|
||||
String displayName = authorityService.getAuthorityDisplayName(authority);
|
||||
if(StringUtils.isNotBlank(displayName))
|
||||
{
|
||||
a.setAuthorityTitle(displayName);
|
||||
}
|
||||
else
|
||||
{
|
||||
a.setAuthorityTitle(authority);
|
||||
}
|
||||
sauth.add(a);
|
||||
}
|
||||
constraint.setAuthorities(sauth);
|
||||
constraints.add(constraint);
|
||||
}
|
||||
|
||||
/**
|
||||
* Now go through and add any "empty" values
|
||||
*/
|
||||
for(String value : info.getAllowedValues())
|
||||
{
|
||||
if(!values.contains(value))
|
||||
{
|
||||
ScriptConstraintValue constraint = new ScriptConstraintValue();
|
||||
constraint.setValueName(value);
|
||||
constraint.setValueTitle(value);
|
||||
List<ScriptAuthority> sauth = new ArrayList<ScriptAuthority>();
|
||||
constraint.setAuthorities(sauth);
|
||||
constraints.add(constraint);
|
||||
}
|
||||
}
|
||||
|
||||
return constraints.toArray(new ScriptConstraintValue[constraints.size()]);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
public class ScriptConstraintAuthority implements Serializable
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -4659454215122271811L;
|
||||
private String authorityName;
|
||||
private List<String>values;
|
||||
|
||||
public void setValues(List<String> values)
|
||||
{
|
||||
this.values = values;
|
||||
}
|
||||
public List<String> getValues()
|
||||
{
|
||||
return values;
|
||||
}
|
||||
public void setAuthorityName(String authorityName)
|
||||
{
|
||||
this.authorityName = authorityName;
|
||||
}
|
||||
public String getAuthorityName()
|
||||
{
|
||||
return authorityName;
|
||||
}
|
||||
}
|
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
public class ScriptConstraintValue implements Serializable
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -4659454215122271811L;
|
||||
private String value;
|
||||
private List<ScriptAuthority>authorities;
|
||||
|
||||
public void setAuthorities(List<ScriptAuthority> values)
|
||||
{
|
||||
this.authorities = values;
|
||||
}
|
||||
public List<ScriptAuthority> getAuthorities()
|
||||
{
|
||||
return authorities;
|
||||
}
|
||||
public void setValueName(String authorityName)
|
||||
{
|
||||
this.value = authorityName;
|
||||
}
|
||||
public String getValueName()
|
||||
{
|
||||
return value;
|
||||
}
|
||||
public void setValueTitle(String authorityName)
|
||||
{
|
||||
this.value = authorityName;
|
||||
}
|
||||
public String getValueTitle()
|
||||
{
|
||||
return value;
|
||||
}
|
||||
}
|
@@ -0,0 +1,174 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Records Management Module
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* -
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
* -
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* -
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
* -
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.module.org_alfresco_module_rm.caveat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.repo.jscript.BaseScopableProcessorExtension;
|
||||
import org.alfresco.service.cmr.security.AuthorityService;
|
||||
|
||||
/**
|
||||
* Script projection of RM Caveat Config Service
|
||||
*
|
||||
* @author Mark Rogers
|
||||
*/
|
||||
public class ScriptRMCaveatConfigService extends BaseScopableProcessorExtension
|
||||
{
|
||||
private RMCaveatConfigService caveatConfigService;
|
||||
private AuthorityService authorityService;
|
||||
|
||||
public void setCaveatConfigService(RMCaveatConfigService rmCaveatConfigService)
|
||||
{
|
||||
this.caveatConfigService = rmCaveatConfigService;
|
||||
}
|
||||
|
||||
public RMCaveatConfigService getRmCaveatConfigService()
|
||||
{
|
||||
return caveatConfigService;
|
||||
}
|
||||
|
||||
public void setAuthorityService(AuthorityService authorityService)
|
||||
{
|
||||
this.authorityService = authorityService;
|
||||
}
|
||||
|
||||
public AuthorityService getAuthorityService()
|
||||
{
|
||||
return authorityService;
|
||||
}
|
||||
|
||||
public ScriptConstraint getConstraint(String listName)
|
||||
{
|
||||
//TODO Temporary conversion
|
||||
String xxx = listName.replace("_", ":");
|
||||
|
||||
RMConstraintInfo info = caveatConfigService.getRMConstraint(xxx);
|
||||
|
||||
if(info != null)
|
||||
{
|
||||
return new ScriptConstraint(info, caveatConfigService, getAuthorityService());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public ScriptConstraint[] getAllConstraints()
|
||||
{
|
||||
return getConstraints(true);
|
||||
}
|
||||
|
||||
public ScriptConstraint[] getConstraintsWithoutEmptyList()
|
||||
{
|
||||
return getConstraints(false);
|
||||
}
|
||||
|
||||
private ScriptConstraint[] getConstraints(boolean includeEmptyList)
|
||||
{
|
||||
Set<RMConstraintInfo> values = caveatConfigService.getAllRMConstraints();
|
||||
|
||||
List<ScriptConstraint> vals = new ArrayList<ScriptConstraint>(values.size());
|
||||
for(RMConstraintInfo value : values)
|
||||
{
|
||||
ScriptConstraint c = new ScriptConstraint(value, caveatConfigService, getAuthorityService());
|
||||
if (includeEmptyList)
|
||||
{
|
||||
vals.add(c);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (c.getValues().length > 0)
|
||||
{
|
||||
vals.add(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return vals.toArray(new ScriptConstraint[vals.size()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete list
|
||||
* @param listName
|
||||
|
||||
*/
|
||||
public void deleteConstraintList(String listName)
|
||||
{
|
||||
//TODO Temporary conversion
|
||||
String xxx = listName.replace("_", ":");
|
||||
caveatConfigService.deleteRMConstraint(xxx);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Update value
|
||||
*/
|
||||
public void updateConstraintValues(String listName, String authorityName, String[]values)
|
||||
{
|
||||
List<String> vals = new ArrayList<String>();
|
||||
caveatConfigService.updateRMConstraintListAuthority(listName, authorityName, vals);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete the constraint values. i.e remove an authority from a constraint list
|
||||
*/
|
||||
public void deleteRMConstraintListAuthority(String listName, String authorityName)
|
||||
{
|
||||
//TODO Temporary conversion
|
||||
String xxx = listName.replace("_", ":");
|
||||
|
||||
caveatConfigService.removeRMConstraintListAuthority(xxx, authorityName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete the constraint values. i.e remove a value from a constraint list
|
||||
*/
|
||||
public void deleteRMConstraintListValue(String listName, String valueName)
|
||||
{
|
||||
//TODO Temporary conversion
|
||||
String xxx = listName.replace("_", ":");
|
||||
|
||||
caveatConfigService.removeRMConstraintListValue(xxx, valueName);
|
||||
|
||||
}
|
||||
|
||||
public ScriptConstraint createConstraint(String listName, String title, String[] allowedValues)
|
||||
{
|
||||
//TODO Temporary conversion
|
||||
if(listName != null)
|
||||
{
|
||||
listName = listName.replace("_", ":");
|
||||
}
|
||||
|
||||
RMConstraintInfo info = caveatConfigService.addRMConstraint(listName, title, allowedValues);
|
||||
return new ScriptConstraint(info, caveatConfigService, getAuthorityService());
|
||||
}
|
||||
|
||||
}
|
@@ -32,7 +32,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.module.org_alfresco_module_rm.securitymarks.RMListOfValuesConstraint.MatchLogic;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint.MatchLogic;
|
||||
import org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipService;
|
||||
import org.alfresco.service.cmr.dictionary.AssociationDefinition;
|
||||
import org.alfresco.service.cmr.dictionary.ConstraintDefinition;
|
||||
|
@@ -41,8 +41,8 @@ import java.util.Set;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.securitymarks.RMListOfValuesConstraint;
|
||||
import org.alfresco.module.org_alfresco_module_rm.securitymarks.RMListOfValuesConstraint.MatchLogic;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint.MatchLogic;
|
||||
import org.alfresco.module.org_alfresco_module_rm.compatibility.CompatibilityModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementCustomModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||
@@ -99,7 +99,7 @@ public class RecordsManagementAdminServiceImpl extends RecordsManagementAdminBas
|
||||
private static final String MSG_ERROR_CLIENT_ID = "rm.admin.error-client-id";
|
||||
|
||||
/** Constants */
|
||||
private static final String CUSTOM_CONSTRAINT_TYPE = org.alfresco.module.org_alfresco_module_rm.securitymarks.RMListOfValuesConstraint.class.getName();
|
||||
private static final String CUSTOM_CONSTRAINT_TYPE = org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint.class.getName();
|
||||
private static final String CAPATIBILITY_CUSTOM_CONTRAINT_TYPE = org.alfresco.module.org_alfresco_module_dod5015.caveat.RMListOfValuesConstraint.class.getName();
|
||||
private static final String PARAM_ALLOWED_VALUES = "allowedValues";
|
||||
private static final String PARAM_CASE_SENSITIVE = "caseSensitive";
|
||||
@@ -1068,7 +1068,7 @@ public class RecordsManagementAdminServiceImpl extends RecordsManagementAdminBas
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService#addCustomConstraintDefinition(org.alfresco.service.namespace.QName, java.lang.String, boolean, java.util.List, org.alfresco.module.org_alfresco_module_rm.securitymarks.RMListOfValuesConstraint.MatchLogic)
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService#addCustomConstraintDefinition(org.alfresco.service.namespace.QName, java.lang.String, boolean, java.util.List, org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint.MatchLogic)
|
||||
*/
|
||||
public void addCustomConstraintDefinition(QName constraintName, String title, boolean caseSensitive, List<String> allowedValues, MatchLogic matchLogic)
|
||||
{
|
||||
|
@@ -29,7 +29,7 @@ package org.alfresco.module.org_alfresco_module_rm.bootstrap;
|
||||
|
||||
import org.alfresco.module.org_alfresco_module_rm.action.impl.SplitEmailAction;
|
||||
import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.email.CustomEmailMappingService;
|
||||
import org.alfresco.repo.action.parameter.NodeParameterSuggesterBootstrap;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
|
@@ -30,7 +30,7 @@ package org.alfresco.module.org_alfresco_module_rm.capability;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.module.org_alfresco_module_rm.capability.impl.ViewRecordsCapability;
|
||||
import org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigComponent;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigComponent;
|
||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
|
@@ -31,7 +31,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService;
|
||||
import org.springframework.extensions.webscripts.Cache;
|
||||
import org.springframework.extensions.webscripts.DeclarativeWebScript;
|
||||
import org.springframework.extensions.webscripts.Status;
|
||||
|
@@ -33,8 +33,8 @@ import java.util.List;
|
||||
import javax.transaction.UserTransaction;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigServiceImpl;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigServiceImpl;
|
||||
import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||
|
@@ -39,8 +39,8 @@ import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.Befo
|
||||
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnCreateReference;
|
||||
import org.alfresco.module.org_alfresco_module_rm.admin.CustomMetadataException;
|
||||
import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.securitymarks.RMListOfValuesConstraint;
|
||||
import org.alfresco.module.org_alfresco_module_rm.securitymarks.RMListOfValuesConstraint.MatchLogic;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint.MatchLogic;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementCustomModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipDefinition;
|
||||
|
@@ -36,7 +36,7 @@ import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction
|
||||
import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.securitymarks.RMCaveatConfigService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.caveat.RMCaveatConfigService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule;
|
||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService;
|
||||
|
Reference in New Issue
Block a user