------------------------------------------------------------ revno: 11450 committer: Morten Olav Hansen <morte...@gmail.com> branch nick: dhis2 timestamp: Fri 2013-07-19 16:29:54 +0700 message: added F_METADATA_EXPORT as sharing override modified: dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/SharingUtils.java dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.java
-- lp:dhis2 https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk Your team DHIS 2 developers is subscribed to branch lp:dhis2. To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/SharingUtils.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/SharingUtils.java 2013-05-23 14:28:28 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/SharingUtils.java 2013-07-19 09:29:54 +0000 @@ -42,9 +42,13 @@ import org.hisp.dhis.user.User; import org.hisp.dhis.user.UserGroup; import org.hisp.dhis.user.UserGroupAccess; +import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -59,59 +63,42 @@ public static final Map<String, Class<? extends IdentifiableObject>> SUPPORTED_TYPES = new HashMap<String, Class<? extends IdentifiableObject>>(); - public static final String SHARING_OVERRIDE_AUTHORITY = "ALL"; + public static final List<String> SHARING_OVERRIDE_AUTHORITIES = Arrays.asList( "ALL", "F_METADATA_IMPORT" ); + + private static void addType( Class<? extends IdentifiableObject> clazz, String name, String publicAuth, String privateAuth ) + { + Assert.notNull( clazz ); + Assert.hasLength( name ); + + SUPPORTED_TYPES.put( name, clazz ); + + if ( publicAuth != null ) + { + PUBLIC_AUTHORITIES.put( clazz, publicAuth ); + } + + if ( privateAuth != null ) + { + PRIVATE_AUTHORITIES.put( clazz, privateAuth ); + } + } static { - SUPPORTED_TYPES.put( "document", Document.class ); - PUBLIC_AUTHORITIES.put( Document.class, "F_DOCUMENT_PUBLIC_ADD" ); - PRIVATE_AUTHORITIES.put( Document.class, "F_DOCUMENT_PRIVATE_ADD" ); - - SUPPORTED_TYPES.put( "report", Report.class ); - PUBLIC_AUTHORITIES.put( Report.class, "F_REPORT_PUBLIC_ADD" ); - PRIVATE_AUTHORITIES.put( Report.class, "F_REPORT_PRIVATE_ADD" ); - - SUPPORTED_TYPES.put( "dataSet", DataSet.class ); - PUBLIC_AUTHORITIES.put( DataSet.class, "F_DATASET_PUBLIC_ADD" ); - PRIVATE_AUTHORITIES.put( DataSet.class, "F_DATASET_PRIVATE_ADD" ); - - SUPPORTED_TYPES.put( "dataDictionary", DataDictionary.class ); - PUBLIC_AUTHORITIES.put( DataDictionary.class, "F_DATADICTIONARY_PUBLIC_ADD" ); - PRIVATE_AUTHORITIES.put( DataDictionary.class, "F_DATADICTIONARY_PRIVATE_ADD" ); - - SUPPORTED_TYPES.put( "indicator", Indicator.class ); - PUBLIC_AUTHORITIES.put( Indicator.class, "F_INDICATOR_PUBLIC_ADD" ); - PRIVATE_AUTHORITIES.put( Indicator.class, "F_INDICATOR_PRIVATE_ADD" ); - - SUPPORTED_TYPES.put( "indicatorGroup", IndicatorGroup.class ); - PUBLIC_AUTHORITIES.put( IndicatorGroup.class, "F_INDICATORGROUP_PUBLIC_ADD" ); - PRIVATE_AUTHORITIES.put( IndicatorGroup.class, "F_INDICATORGROUP_PRIVATE_ADD" ); - - SUPPORTED_TYPES.put( "indicatorGroupSet", IndicatorGroupSet.class ); - PUBLIC_AUTHORITIES.put( IndicatorGroupSet.class, "F_INDICATORGROUPSET_PUBLIC_ADD" ); - PRIVATE_AUTHORITIES.put( IndicatorGroupSet.class, "F_INDICATORGROUPSET_PRIVATE_ADD" ); - - SUPPORTED_TYPES.put( "program", Program.class ); - PUBLIC_AUTHORITIES.put( Program.class, "F_PROGRAM_PUBLIC_ADD" ); - PRIVATE_AUTHORITIES.put( Program.class, "F_PROGRAM_PRIVATE_ADD" ); - - SUPPORTED_TYPES.put( "userGroup", UserGroup.class ); - PUBLIC_AUTHORITIES.put( UserGroup.class, "F_USERGROUP_PUBLIC_ADD" ); - - SUPPORTED_TYPES.put( "reportTable", ReportTable.class ); - PUBLIC_AUTHORITIES.put( ReportTable.class, "F_REPORTTABLE_PUBLIC_ADD" ); - - SUPPORTED_TYPES.put( "map", org.hisp.dhis.mapping.Map.class ); - PUBLIC_AUTHORITIES.put( org.hisp.dhis.mapping.Map.class, "F_MAP_PUBLIC_ADD" ); - - SUPPORTED_TYPES.put( "chart", Chart.class ); - PUBLIC_AUTHORITIES.put( Chart.class, "F_CHART_PUBLIC_ADD" ); - - SUPPORTED_TYPES.put( "patientTabularReport", PatientTabularReport.class ); - PUBLIC_AUTHORITIES.put( PatientTabularReport.class, "F_PATIENT_TABULAR_REPORT_PUBLIC_ADD" ); - - SUPPORTED_TYPES.put( "patientAggregateReport", PatientAggregateReport.class ); - PUBLIC_AUTHORITIES.put( PatientAggregateReport.class, "F_PATIENT_TABULAR_REPORT_PUBLIC_ADD" ); + addType( Document.class, "document", "F_DOCUMENT_PUBLIC_ADD", "F_DOCUMENT_PRIVATE_ADD" ); + addType( Report.class, "report", "F_REPORT_PUBLIC_ADD", "F_REPORT_PRIVATE_ADD" ); + addType( DataSet.class, "dataSet", "F_DATASET_PUBLIC_ADD", "F_DATASET_PRIVATE_ADD" ); + addType( DataDictionary.class, "dataDictionary", "F_DATADICTIONARY_PUBLIC_ADD", "F_DATADICTIONARY_PRIVATE_ADD" ); + addType( Indicator.class, "indicator", "F_INDICATOR_PUBLIC_ADD", "F_INDICATOR_PRIVATE_ADD" ); + addType( IndicatorGroup.class, "indicatorGroup", "F_INDICATORGROUP_PUBLIC_ADD", "F_INDICATORGROUP_PRIVATE_ADD" ); + addType( IndicatorGroupSet.class, "indicatorGroupSet", "F_INDICATORGROUPSET_PUBLIC_ADD", "F_INDICATORGROUPSET_PRIVATE_ADD" ); + addType( Program.class, "program", "F_PROGRAM_PUBLIC_ADD", "F_PROGRAM_PRIVATE_ADD" ); + addType( UserGroup.class, "userGroup", "F_USERGROUP_PUBLIC_ADD", null ); + addType( ReportTable.class, "reportTable", "F_REPORTTABLE_PUBLIC_ADD", null ); + addType( org.hisp.dhis.mapping.Map.class, "map", "F_MAP_PUBLIC_ADD", null ); + addType( Chart.class, "chart", "F_CHART_PUBLIC_ADD", null ); + addType( PatientTabularReport.class, "patientTabularReport", "F_PATIENT_TABULAR_REPORT_PUBLIC_ADD", null ); + addType( PatientAggregateReport.class, "patientAggregateReport", "F_PATIENT_TABULAR_REPORT_PUBLIC_ADD", null ); } public static boolean isSupported( String type ) @@ -147,7 +134,7 @@ public static <T extends IdentifiableObject> boolean canCreatePublic( User user, Class<T> clazz ) { Set<String> authorities = user != null ? user.getUserCredentials().getAllAuthorities() : new HashSet<String>(); - return authorities.contains( SHARING_OVERRIDE_AUTHORITY ) || authorities.contains( PUBLIC_AUTHORITIES.get( clazz ) ); + return CollectionUtils.containsAny( authorities, SHARING_OVERRIDE_AUTHORITIES ) || authorities.contains( PUBLIC_AUTHORITIES.get( clazz ) ); } public static boolean canCreatePublic( User user, IdentifiableObject identifiableObject ) @@ -173,7 +160,7 @@ public static <T extends IdentifiableObject> boolean canCreatePrivate( User user, Class<T> clazz ) { Set<String> authorities = user != null ? user.getUserCredentials().getAllAuthorities() : new HashSet<String>(); - return authorities.contains( SHARING_OVERRIDE_AUTHORITY ) + return CollectionUtils.containsAny( authorities, SHARING_OVERRIDE_AUTHORITIES ) || PRIVATE_AUTHORITIES.get( clazz ) == null || authorities.contains( PRIVATE_AUTHORITIES.get( clazz ) ); } @@ -323,7 +310,7 @@ private static boolean sharingOverrideAuthority( User user ) { - return user == null || user.getUserCredentials().getAllAuthorities().contains( SHARING_OVERRIDE_AUTHORITY ); + return user == null || CollectionUtils.containsAny( user.getUserCredentials().getAllAuthorities(), SHARING_OVERRIDE_AUTHORITIES ); } private SharingUtils() === modified file 'dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.java' --- dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.java 2013-03-22 10:30:47 +0000 +++ dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.java 2013-07-19 09:29:54 +0000 @@ -51,6 +51,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Required; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Collection; @@ -189,7 +190,7 @@ * @param expressions the Criterions for the Criteria. * @return an object of the implementation Class type. */ - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) protected final T getObject( Criterion... expressions ) { return (T) getCriteria( expressions ).uniqueResult(); @@ -201,7 +202,7 @@ * @param expressions the Criterions for the Criteria. * @return a List with objects of the implementation Class type. */ - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) protected final List<T> getList( Criterion... expressions ) { return getCriteria( expressions ).list(); @@ -265,7 +266,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public final T get( int id ) { T object = (T) sessionFactory.getCurrentSession().get( getClazz(), id ); @@ -280,7 +281,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public final T load( int id ) { T object = (T) sessionFactory.getCurrentSession().load( getClazz(), id ); @@ -378,7 +379,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public final List<T> getAll() { Query query = sharingEnabled() ? getQueryAllAcl() : getQueryAll(); @@ -405,7 +406,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getAllEqName( String name ) { Query query = sharingEnabled() ? getQueryAllEqNameAcl( name ) : getQueryAllEqName( name ); @@ -437,7 +438,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getAllEqNameIgnoreCase( String name ) { Query query = sharingEnabled() ? getQueryAllEqNameAclIgnoreCase( name ) : getQueryAllEqNameIgnoreCase( name ); @@ -469,7 +470,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getAllEqShortName( String shortName ) { Query query = sharingEnabled() ? getQueryAllEqShortNameAcl( shortName ) : getQueryAllEqShortName( shortName ); @@ -501,7 +502,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getAllEqShortNameIgnoreCase( String shortName ) { Query query = sharingEnabled() ? getQueryAllEqShortNameAclIgnoreCase( shortName ) : getQueryAllEqShortNameIgnoreCase( shortName ); @@ -533,7 +534,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getAllLikeName( String name ) { Query query = sharingEnabled() ? getQueryAllLikeNameAcl( name ) : getQueryAllLikeName( name ); @@ -565,7 +566,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public final List<T> getAllOrderedName() { Query query = sharingEnabled() ? getQueryAllOrderedNameAcl() : getQueryAllOrderedName(); @@ -593,7 +594,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getAllOrderedName( int first, int max ) { Query query = sharingEnabled() ? getQueryAllOrderedNameAcl() : getQueryAllOrderedName(); @@ -605,7 +606,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getAllOrderedLastUpdated( int first, int max ) { Query query = sharingEnabled() ? getQueryAllOrderedLastUpdatedAcl() : getQueryAllOrderedLastUpdated(); @@ -636,7 +637,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getAllLikeNameOrderedName( String name, int first, int max ) { Query query = sharingEnabled() ? getQueryAllLikeNameOrderedNameAcl( name ) : getQueryAllLikeNameOrderedName( name ); @@ -759,7 +760,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getAllGeLastUpdated( Date lastUpdated ) { Query query = sharingEnabled() ? getQueryAllGeLastUpdatedAcl( lastUpdated ) : getQueryAllGeLastUpdated( lastUpdated ); @@ -791,7 +792,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getAllGeCreated( Date created ) { Query query = sharingEnabled() ? getQueryAllGeCreatedAcl( created ) : getQueryAllGeCreated( created ); @@ -823,7 +824,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getAllGeLastUpdatedOrderedName( Date lastUpdated ) { Query query = sharingEnabled() ? getQueryAllGeLastUpdatedOrderedNameAcl( lastUpdated ) : getQueryAllGeLastUpdatedOrderedName( lastUpdated ); @@ -855,7 +856,7 @@ } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) public List<T> getByUser( User user ) { Query query = getQuery( "from " + clazz.getName() + " c where user = :user" ); @@ -914,7 +915,7 @@ protected boolean sharingEnabled() { return SharingUtils.isSupported( clazz ) && !(currentUserService.getCurrentUser() == null || - currentUserService.getCurrentUser().getUserCredentials().getAllAuthorities().contains( SharingUtils.SHARING_OVERRIDE_AUTHORITY )); + CollectionUtils.containsAny( currentUserService.getCurrentUser().getUserCredentials().getAllAuthorities(), SharingUtils.SHARING_OVERRIDE_AUTHORITIES )); } protected boolean isReadAllowed( T object )
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : dhis2-devs@lists.launchpad.net Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp