RM-2586 Add method on CaveatDAOInterface to get a single group.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/DEV/caveatmarkdatatype@114356 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tom Page
2015-10-14 15:47:17 +00:00
parent e0d4480a59
commit 66384de5c2
4 changed files with 64 additions and 2 deletions

View File

@@ -42,6 +42,18 @@ public class CaveatException extends AlfrescoRuntimeException
super(msgId, cause); super(msgId, cause);
} }
/** The supplied caveat group id was not found in the configured list. */
public static class CaveatGroupNotFound extends CaveatException
{
/** serial version uid */
private static final long serialVersionUID = -3547790332616121911L;
public CaveatGroupNotFound(String caveatGroupId)
{
super("Could not find caveat group with id " + caveatGroupId);
}
}
/** The supplied caveat mark id was not found in the configured list. */ /** The supplied caveat mark id was not found in the configured list. */
public static class CaveatMarkNotFound extends CaveatException public static class CaveatMarkNotFound extends CaveatException
{ {

View File

@@ -16,9 +16,12 @@
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/ */
package org.alfresco.module.org_alfresco_module_rm.caveat.dao; package org.alfresco.module.org_alfresco_module_rm.caveat.dao;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import org.alfresco.module.org_alfresco_module_rm.caveat.CaveatException.CaveatGroupNotFound;
import org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatGroup; import org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatGroup;
/** /**
@@ -39,12 +42,33 @@ public class CaveatDAOCache implements CaveatDAOInterface
*/ */
@Override @Override
public ImmutableMap<String, CaveatGroup> getCaveatGroups() public ImmutableMap<String, CaveatGroup> getCaveatGroups()
{
ensureCachePopulated();
return caveatGroups;
}
/**
* {@inheritDoc} The first call to this method will populate the cache for future calls.
*/
@Override
public CaveatGroup getGroupById(String groupId) throws CaveatGroupNotFound
{
ensureCachePopulated();
CaveatGroup caveatGroup = caveatGroups.get(groupId);
if (caveatGroup == null)
{
throw new CaveatGroupNotFound(groupId);
}
return caveatGroup;
}
/** The first call to this method will populate the cache, subsequent calls will do nothing. */
private void ensureCachePopulated()
{ {
if (caveatGroups == null) if (caveatGroups == null)
{ {
caveatGroups = caveatDAO.getCaveatGroups(); caveatGroups = caveatDAO.getCaveatGroups();
} }
return caveatGroups;
} }
/** /**

View File

@@ -28,6 +28,7 @@ import java.util.Set;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.ImmutableMap.Builder;
import org.alfresco.module.org_alfresco_module_rm.caveat.CaveatException.CaveatGroupNotFound;
import org.alfresco.module.org_alfresco_module_rm.caveat.CaveatException.MalformedConfiguration; import org.alfresco.module.org_alfresco_module_rm.caveat.CaveatException.MalformedConfiguration;
import org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatGroup; import org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatGroup;
import org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatGroupType; import org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatGroupType;
@@ -120,6 +121,22 @@ public class CaveatDAOFromJSON implements CaveatDAOInterface
return map; return map;
} }
/**
* {@inheritDoc}
* <p>
* This method loads all caveat groups just to return a single group.
*/
@Override
public CaveatGroup getGroupById(String groupId)
{
CaveatGroup caveatGroup = getCaveatGroups().get(groupId);
if (caveatGroup == null)
{
throw new CaveatGroupNotFound(groupId);
}
return caveatGroup;
}
/** /**
* Create a caveat group from the supplied JSON. * Create a caveat group from the supplied JSON.
* *

View File

@@ -20,9 +20,9 @@
package org.alfresco.module.org_alfresco_module_rm.caveat.dao; package org.alfresco.module.org_alfresco_module_rm.caveat.dao;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import org.alfresco.module.org_alfresco_module_rm.caveat.CaveatException.CaveatGroupNotFound;
import org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatGroup; import org.alfresco.module.org_alfresco_module_rm.caveat.scheme.CaveatGroup;
/** /**
* An object responsible for providing access to the configured caveat groups and marks. * An object responsible for providing access to the configured caveat groups and marks.
* *
@@ -35,4 +35,13 @@ public interface CaveatDAOInterface
* Gets a map of all the available caveat groups keyed by id. * Gets a map of all the available caveat groups keyed by id.
*/ */
ImmutableMap<String, CaveatGroup> getCaveatGroups(); ImmutableMap<String, CaveatGroup> getCaveatGroups();
/**
* Gets the caveat group for a given id.
*
* @param groupId The group id to look up.
* @return The caveat group.
* @throws CaveatGroupNotFound if the caveat group is not found.
*/
CaveatGroup getGroupById(String groupId) throws CaveatGroupNotFound;
} }