From: <jos...@us...> - 2009-08-12 11:35:24
|
Revision: 4874 http://geonetwork.svn.sourceforge.net/geonetwork/?rev=4874&view=rev Author: josegar74 Date: 2009-08-12 11:35:17 +0000 (Wed, 12 Aug 2009) Log Message: ----------- filterMetadata method Modified Paths: -------------- sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-services/src/main/java/org/geonetwork/gaap/services/MetadataPermissionsService.java sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-services/src/main/java/org/geonetwork/gaap/services/MetadataPermissionsServiceImpl.java Modified: sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-services/src/main/java/org/geonetwork/gaap/services/MetadataPermissionsService.java =================================================================== --- sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-services/src/main/java/org/geonetwork/gaap/services/MetadataPermissionsService.java 2009-08-12 11:08:46 UTC (rev 4873) +++ sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-services/src/main/java/org/geonetwork/gaap/services/MetadataPermissionsService.java 2009-08-12 11:35:17 UTC (rev 4874) @@ -11,6 +11,6 @@ * @author Jose */ public interface MetadataPermissionsService { - public List<String> filterMetadata(List<String> metadataUuids, String userName); + public List<String> filterMetadata(List<String> metadataUuids, String userName) throws GaapServiceException; public void savePermissions(MetadataPermissions permissions) throws GaapServiceException; } Modified: sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-services/src/main/java/org/geonetwork/gaap/services/MetadataPermissionsServiceImpl.java =================================================================== --- sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-services/src/main/java/org/geonetwork/gaap/services/MetadataPermissionsServiceImpl.java 2009-08-12 11:08:46 UTC (rev 4873) +++ sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-services/src/main/java/org/geonetwork/gaap/services/MetadataPermissionsServiceImpl.java 2009-08-12 11:35:17 UTC (rev 4874) @@ -9,9 +9,16 @@ import org.geonetwork.gaap.dao.OperationDao; import org.geonetwork.gaap.dao.GroupDao; import org.geonetwork.gaap.dao.UserDao; +import org.geonetwork.gaap.dao.PermissionDao; +import org.apache.lucene.search.BooleanQuery; +import org.apache.lucene.search.TermQuery; +import org.apache.lucene.search.BooleanClause; +import org.apache.lucene.index.Term; import java.util.List; import java.util.ArrayList; +import java.util.Set; +import java.util.HashSet; /** * Service to manage GeoNetwork metadata permissions. @@ -19,24 +26,45 @@ * @author Jose */ public class MetadataPermissionsServiceImpl implements MetadataPermissionsService { + private static final String GROUP_ALL_NAME = "All"; + private static final String VIEW_OPERATION_NAME = "view"; + OperationDao operationDao; UserDao userDao; GroupDao groupDao; + PermissionDao permissionDao; - public List<String> filterMetadata(List<String> metadataUuids, String userName) { - List<String> resultMetadataUuids = new ArrayList<String>(); - + /** + * Filter a list of metadata uuids that are allowed to view for the provided user. + * If the user is not valid returns only public metadata uuids + * + * @param metadataUuids List of metadata uuids to filter + * @param userName User to check permissions + * @return Filtered list of metadata uuids allowed to view for the user + * @throws GaapServiceException + */ + // TODO: Authenticate user here or in the web layer before invoke this service?? + public List<String> filterMetadata(List<String> metadataUuids, String userName) throws GaapServiceException { + List<String> resultMetadataUuids; + Set<Group> filterGroups = new HashSet<Group>(); + User user = userDao.findUserByUsername(userName); + if (user != null) { + filterGroups.addAll(user.getUserGroups()); + } + filterGroups.add(groupDao.findGroupByName(GROUP_ALL_NAME)); + Operation op = operationDao.findOperationByName(VIEW_OPERATION_NAME); - if (user == null) return resultMetadataUuids; + try { + resultMetadataUuids = permissionDao.filterMetadataAllowed(metadataUuids, new ArrayList(filterGroups), op); + } catch (Exception e) { + e.printStackTrace(); + throw new GaapServiceException(e); + } - - // TODO: Implement - return resultMetadataUuids; } - /** * Save permissions for a metadata record * The permissions retrieved from jibx are like: @@ -59,7 +87,7 @@ String metadataUuid = metadataPermissions.getMetadataUuid(); // Remove current permissions - operationDao.deletePermissionsByMetadataUuid(metadataUuid); + permissionDao.deletePermissionsByMetadataUuid(metadataUuid); // Save new permissions for (Permission permission : metadataPermissions.getPermissions()) { @@ -75,7 +103,7 @@ Operation op = operationDao.findOperationByName(opName); permissionToSave.setOperation(op); - operationDao.savePermission(permissionToSave); + permissionDao.savePermission(permissionToSave); } } catch (Exception x) { @@ -94,4 +122,8 @@ public void setOperationDao(OperationDao operationDao) { this.operationDao = operationDao; } + + public void setPermissionDao(PermissionDao permissionDao) { + this.permissionDao = permissionDao; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |