=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericNameableObjectStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericNameableObjectStore.java 2013-08-23 15:56:19 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericNameableObjectStore.java 2013-09-17 18:07:42 +0000 @@ -32,7 +32,6 @@ /** * @author Lars Helge Overland - * @version $Id$ */ public interface GenericNameableObjectStore extends GenericIdentifiableObjectStore === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttributeOptionStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttributeOptionStore.java 2013-08-23 15:56:19 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientAttributeOptionStore.java 2013-09-17 18:07:42 +0000 @@ -30,15 +30,13 @@ import java.util.Collection; -import org.hisp.dhis.common.GenericNameableObjectStore; +import org.hisp.dhis.common.GenericStore; /** * @author Viet - * - * @version $Id$ */ public interface PatientAttributeOptionStore - extends GenericNameableObjectStore + extends GenericStore { String ID = PatientAttributeOption.class.getName(); === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingStore.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingStore.java 2013-09-17 18:07:42 +0000 @@ -0,0 +1,40 @@ +package org.hisp.dhis.setting; + +/* + * Copyright (c) 2004-2013, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.hisp.dhis.common.GenericStore; + +/** + * @author Lars Helge Overland + */ +public interface SystemSettingStore + extends GenericStore +{ + SystemSetting getByName( String name ); +} === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/hibernate/HibernateIdentifiableObjectStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/hibernate/HibernateIdentifiableObjectStore.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/hibernate/HibernateIdentifiableObjectStore.java 2013-09-17 18:07:42 +0000 @@ -28,15 +28,31 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.hibernate.Query; +import org.hibernate.criterion.Restrictions; +import org.hisp.dhis.common.AuditLogUtil; import org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.common.GenericNameableObjectStore; +import org.hisp.dhis.common.NameableObject; import org.hisp.dhis.hibernate.HibernateGenericStore; +import org.hisp.dhis.hibernate.exception.ReadAccessDeniedException; +import org.hisp.dhis.user.User; /** * @author bobj */ public class HibernateIdentifiableObjectStore - extends HibernateGenericStore + extends HibernateGenericStore implements GenericNameableObjectStore { + private static final Log log = LogFactory.getLog( HibernateIdentifiableObjectStore.class ); + @Override public int save( T object ) { @@ -50,4 +66,588 @@ object.setAutoFields(); super.update( object ); } + + @Override + public final T getByUid( String uid ) + { + T object = getObject( Restrictions.eq( "uid", uid ) ); + + if ( !isReadAllowed( object ) ) + { + AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_READ_DENIED ); + throw new ReadAccessDeniedException( object.toString() ); + } + + return object; + } + + @Override + public final T getByUidNoAcl( String uid ) + { + return getObject( Restrictions.eq( "uid", uid ) ); + } + + @Override + public final void updateNoAcl( T object ) + { + sessionFactory.getCurrentSession().update( object ); + } + + @Override + @Deprecated + public final T getByName( String name ) + { + T object = getObject( Restrictions.eq( "name", name ) ); + + if ( !isReadAllowed( object ) ) + { + AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_READ_DENIED ); + throw new ReadAccessDeniedException( object.toString() ); + } + + return object; + } + + @Override + @Deprecated + public final T getByShortName( String shortName ) + { + T object = getObject( Restrictions.eq( "shortName", shortName ) ); + + if ( !isReadAllowed( object ) ) + { + AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_READ_DENIED ); + throw new ReadAccessDeniedException( object.toString() ); + } + + return object; + } + + @Override + public final T getByCode( String code ) + { + T object = getObject( Restrictions.eq( "code", code ) ); + + if ( !isReadAllowed( object ) ) + { + AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_READ_DENIED ); + throw new ReadAccessDeniedException( object.toString() ); + } + + return object; + } + + @Override + @SuppressWarnings("unchecked") + public List getAllEqName( String name ) + { + Query query = sharingEnabled() ? getQueryAllEqNameAcl( name ) : getQueryAllEqName( name ); + + return query.list(); + } + + private Query getQueryAllEqNameAcl( String name ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where name = :name and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " ) order by c.name"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setString( "name", name ); + + return query; + } + + private Query getQueryAllEqName( String name ) + { + Query query = getQuery( "from " + clazz.getName() + " c where name = :name order by c.name" ); + query.setString( "name", name ); + + return query; + } + + @Override + @SuppressWarnings("unchecked") + public List getAllEqNameIgnoreCase( String name ) + { + Query query = sharingEnabled() ? getQueryAllEqNameAclIgnoreCase( name ) : getQueryAllEqNameIgnoreCase( name ); + + return query.list(); + } + + private Query getQueryAllEqNameAclIgnoreCase( String name ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where lower(name) = :name and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " ) order by c.name"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setString( "name", name.toLowerCase() ); + + return query; + } + + private Query getQueryAllEqNameIgnoreCase( String name ) + { + Query query = getQuery( "from " + clazz.getName() + " c where lower(name) = :name order by c.name" ); + query.setString( "name", name.toLowerCase() ); + + return query; + } + + @Override + @SuppressWarnings("unchecked") + public List getAllEqShortName( String shortName ) + { + Query query = sharingEnabled() ? getQueryAllEqShortNameAcl( shortName ) : getQueryAllEqShortName( shortName ); + + return query.list(); + } + + private Query getQueryAllEqShortNameAcl( String shortName ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where shortName = :shortName and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " ) order by c.shortName"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setString( "shortName", shortName ); + + return query; + } + + private Query getQueryAllEqShortName( String shortName ) + { + Query query = getQuery( "from " + clazz.getName() + " c where shortName = :shortName order by c.shortName" ); + query.setString( "shortName", shortName ); + + return query; + } + + @Override + @SuppressWarnings("unchecked") + public List getAllEqShortNameIgnoreCase( String shortName ) + { + Query query = sharingEnabled() ? getQueryAllEqShortNameAclIgnoreCase( shortName ) : getQueryAllEqShortNameIgnoreCase( shortName ); + + return query.list(); + } + + private Query getQueryAllEqShortNameAclIgnoreCase( String shortName ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where lower(shortName) = :shortName and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " ) order by c.shortName"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setString( "shortName", shortName.toLowerCase() ); + + return query; + } + + private Query getQueryAllEqShortNameIgnoreCase( String shortName ) + { + Query query = getQuery( "from " + clazz.getName() + " c where lower(shortName) = :shortName order by c.shortName" ); + query.setString( "shortName", shortName.toLowerCase() ); + + return query; + } + + @Override + @SuppressWarnings("unchecked") + public List getAllLikeName( String name ) + { + Query query = sharingEnabled() ? getQueryAllLikeNameAcl( name ) : getQueryAllLikeName( name ); + + return query.list(); + } + + private Query getQueryAllLikeNameAcl( String name ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where lower(name) like :name and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " ) order by c.name"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setString( "name", "%" + name.toLowerCase() + "%" ); + + return query; + } + + private Query getQueryAllLikeName( String name ) + { + Query query = getQuery( "from " + clazz.getName() + " c where lower(name) like :name order by c.name" ); + query.setString( "name", "%" + name.toLowerCase() + "%" ); + + return query; + } + + @Override + @SuppressWarnings("unchecked") + public List getAllLikeShortName( String shortName ) + { + if ( NameableObject.class.isAssignableFrom( clazz ) ) + { + Query query = sharingEnabled() ? getQueryAllLikeShortNameAcl( shortName ) : getQueryAllLikeShortName( shortName ); + return query.list(); + } + + // fallback to using name + return getAllLikeName( shortName ); + } + + private Query getQueryAllLikeShortNameAcl( String shortName ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where lower(shortName) like :shortName and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " ) order by c.shortName"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setString( "shortName", "%" + shortName.toLowerCase() + "%" ); + + return query; + } + + private Query getQueryAllLikeShortName( String shortName ) + { + Query query = getQuery( "from " + clazz.getName() + " c where lower(shortName) like :shortName order by c.shortName" ); + query.setString( "shortName", "%" + shortName.toLowerCase() + "%" ); + + return query; + } + + @Override + @SuppressWarnings("unchecked") + public final List getAllOrderedName() + { + Query query = sharingEnabled() ? getQueryAllOrderedNameAcl() : getQueryAllOrderedName(); + + return query.list(); + } + + private Query getQueryAllOrderedNameAcl() + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " order by c.name"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + + return query; + } + + private Query getQueryAllOrderedName() + { + return getQuery( "from " + clazz.getName() + " c order by c.name" ); + } + + @Override + @SuppressWarnings("unchecked") + public List getAllOrderedName( int first, int max ) + { + Query query = sharingEnabled() ? getQueryAllOrderedNameAcl() : getQueryAllOrderedName(); + + query.setFirstResult( first ); + query.setMaxResults( max ); + + return query.list(); + } + + @Override + @SuppressWarnings("unchecked") + public List getAllOrderedLastUpdated( int first, int max ) + { + Query query = sharingEnabled() ? getQueryAllOrderedLastUpdatedAcl() : getQueryAllOrderedLastUpdated(); + + query.setFirstResult( first ); + query.setMaxResults( max ); + + return query.list(); + } + + private Query getQueryAllOrderedLastUpdatedAcl() + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " order by c.lastUpdated desc"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + + return query; + } + + private Query getQueryAllOrderedLastUpdated() + { + return getQuery( "from " + clazz.getName() + " c order by lastUpdated desc" ); + } + + @Override + @SuppressWarnings("unchecked") + public List getAllLikeNameOrderedName( String name, int first, int max ) + { + Query query = sharingEnabled() ? getQueryAllLikeNameOrderedNameAcl( name ) : getQueryAllLikeNameOrderedName( name ); + + query.setFirstResult( first ); + query.setMaxResults( max ); + + return query.list(); + } + + private Query getQueryAllLikeNameOrderedNameAcl( String name ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where lower(c.name) like :name and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " ) order by c.name"; + + Query query = getQuery( hql ); + query.setString( "name", "%" + name.toLowerCase() + "%" ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + + return query; + } + + private Query getQueryAllLikeNameOrderedName( String name ) + { + Query query = getQuery( "from " + clazz.getName() + " c where lower(name) like :name order by name" ); + query.setString( "name", "%" + name.toLowerCase() + "%" ); + + return query; + } + + @Override + public int getCountLikeName( String name ) + { + Query query = sharingEnabled() ? getQueryCountLikeNameAcl( name ) : getQueryCountLikeName( name ); + + return ((Long) query.uniqueResult()).intValue(); + } + + private Query getQueryCountLikeNameAcl( String name ) + { + String hql = "select count(distinct c) from " + clazz.getName() + " c" + + " where lower(name) like :name and (c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " )"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setString( "name", "%" + name.toLowerCase() + "%" ); + + return query; + } + + private Query getQueryCountLikeName( String name ) + { + Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c where lower(name) like :name" ); + query.setString( "name", "%" + name.toLowerCase() + "%" ); + + return query; + } + + @Override + public long getCountGeLastUpdated( Date lastUpdated ) + { + Query query = sharingEnabled() ? getQueryCountGeLastUpdatedAcl( lastUpdated ) : getQueryCountGeLastUpdated( lastUpdated ); + + return ((Long) query.uniqueResult()).intValue(); + } + + private Query getQueryCountGeLastUpdatedAcl( Date lastUpdated ) + { + String hql = "select count(distinct c) from " + clazz.getName() + " c" + + " where c.lastUpdated >= :lastUpdated and (c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " )"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setTimestamp( "lastUpdated", lastUpdated ); + + return query; + } + + private Query getQueryCountGeLastUpdated( Date lastUpdated ) + { + Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c where lastUpdated >= :lastUpdated" ); + query.setTimestamp( "lastUpdated", lastUpdated ); + + return query; + } + + @Override + @SuppressWarnings("unchecked") + public List getAllGeLastUpdated( Date lastUpdated ) + { + Query query = sharingEnabled() ? getQueryAllGeLastUpdatedAcl( lastUpdated ) : getQueryAllGeLastUpdated( lastUpdated ); + + return query.list(); + } + + private Query getQueryAllGeLastUpdatedAcl( Date lastUpdated ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where c.lastUpdated >= :lastUpdated and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " )"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setTimestamp( "lastUpdated", lastUpdated ); + + return query; + } + + private Query getQueryAllGeLastUpdated( Date lastUpdated ) + { + Query query = getQuery( "from " + clazz.getName() + " c where c.lastUpdated >= :lastUpdated" ); + query.setTimestamp( "lastUpdated", lastUpdated ); + + return query; + } + + @Override + @SuppressWarnings("unchecked") + public List getAllGeCreated( Date created ) + { + Query query = sharingEnabled() ? getQueryAllGeCreatedAcl( created ) : getQueryAllGeCreated( created ); + + return query.list(); + } + + private Query getQueryAllGeCreatedAcl( Date created ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where c.created >= :created and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " ) order by c.name"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setTimestamp( "created", created ); + + return query; + } + + private Query getQueryAllGeCreated( Date created ) + { + Query query = getQuery( "from " + clazz.getName() + " c where c.created >= :created" ); + query.setTimestamp( "created", created ); + + return query; + } + + @Override + @SuppressWarnings("unchecked") + public List getAllGeLastUpdatedOrderedName( Date lastUpdated ) + { + Query query = sharingEnabled() ? getQueryAllGeLastUpdatedOrderedNameAcl( lastUpdated ) : getQueryAllGeLastUpdatedOrderedName( lastUpdated ); + + return query.list(); + } + + private Query getQueryAllGeLastUpdatedOrderedNameAcl( Date lastUpdated ) + { + String hql = "select distinct c from " + clazz.getName() + " c" + + " where c.lastUpdated >= :lastUpdated and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" + + " or exists " + + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" + + " ) order by c.name"; + + Query query = getQuery( hql ); + query.setEntity( "user", currentUserService.getCurrentUser() ); + query.setTimestamp( "lastUpdated", lastUpdated ); + + return query; + } + + private Query getQueryAllGeLastUpdatedOrderedName( Date lastUpdated ) + { + Query query = getQuery( "from " + clazz.getName() + " c where c.lastUpdated >= :lastUpdated order by c.name" ); + query.setTimestamp( "lastUpdated", lastUpdated ); + + return query; + } + + @Override + @SuppressWarnings("unchecked") + public List getByUser( User user ) + { + Query query = getQuery( "from " + clazz.getName() + " c where user = :user" ); + query.setEntity( "user", user ); + + return query.list(); + } + + @Override + public List getByUid( Collection uids ) + { + List list = new ArrayList(); + + if ( uids != null ) + { + for ( String uid : uids ) + { + T object = getByUid( uid ); + + if ( object != null ) + { + list.add( object ); + } + } + } + + return list; + } + + //---------------------------------------------------------------------------------------------------------------- + // No ACL (unfiltered methods) + //---------------------------------------------------------------------------------------------------------------- + + @Override + public int getCountEqNameNoAcl( String name ) + { + Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c where c.name = :name" ); + query.setParameter( "name", name ); + + return ((Long) query.uniqueResult()).intValue(); + } + + @Override + public int getCountEqShortNameNoAcl( String shortName ) + { + Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c where c.shortName = :shortName" ); + query.setParameter( "shortName", shortName ); + + return ((Long) query.uniqueResult()).intValue(); + } } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultSystemSettingManager.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultSystemSettingManager.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultSystemSettingManager.java 2013-09-17 18:07:42 +0000 @@ -34,7 +34,6 @@ import java.util.List; import org.apache.commons.lang.StringUtils; -import org.hisp.dhis.common.GenericIdentifiableObjectStore; import org.springframework.transaction.annotation.Transactional; /** @@ -49,9 +48,9 @@ // Dependencies // ------------------------------------------------------------------------- - private GenericIdentifiableObjectStore systemSettingStore; + private SystemSettingStore systemSettingStore; - public void setSystemSettingStore( GenericIdentifiableObjectStore systemSettingStore ) + public void setSystemSettingStore( SystemSettingStore systemSettingStore ) { this.systemSettingStore = systemSettingStore; } === added directory 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/hibernate' === added file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/hibernate/HibernateSystemSettingStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/hibernate/HibernateSystemSettingStore.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/hibernate/HibernateSystemSettingStore.java 2013-09-17 18:07:42 +0000 @@ -0,0 +1,47 @@ +package org.hisp.dhis.setting.hibernate; + +/* + * Copyright (c) 2004-2013, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.hibernate.criterion.Restrictions; +import org.hisp.dhis.hibernate.HibernateGenericStore; +import org.hisp.dhis.setting.SystemSetting; +import org.hisp.dhis.setting.SystemSettingStore; + +/** + * @author Lars Helge Overland + */ +public class HibernateSystemSettingStore + extends HibernateGenericStore implements SystemSettingStore +{ + @Override + public SystemSetting getByName( String name ) + { + return (SystemSetting) getCriteria( Restrictions.eq( "name", name ) ).uniqueResult(); + } +} === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2013-09-17 16:22:09 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2013-09-17 18:07:42 +0000 @@ -125,7 +125,7 @@ - + @@ -144,8 +144,7 @@ - + @@ -294,7 +293,7 @@ - + === modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/setting/SystemSettingStoreTest.java' --- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/setting/SystemSettingStoreTest.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/setting/SystemSettingStoreTest.java 2013-09-17 18:07:42 +0000 @@ -35,29 +35,25 @@ import java.util.Collection; import org.hisp.dhis.DhisSpringTest; -import org.hisp.dhis.common.GenericIdentifiableObjectStore; -import org.hisp.dhis.setting.SystemSetting; import org.junit.Test; /** * @author Stian Strandli - * @version $Id: SystemSettingStoreTest.java 4866 2008-04-11 10:40:35Z larshelg $ */ public class SystemSettingStoreTest extends DhisSpringTest { - private GenericIdentifiableObjectStore systemSettingStore; + private SystemSettingStore systemSettingStore; private SystemSetting settingA; private SystemSetting settingB; private SystemSetting settingC; @Override - @SuppressWarnings( "unchecked" ) public void setUpTest() throws Exception { - systemSettingStore = (GenericIdentifiableObjectStore) getBean( "org.hisp.dhis.setting.SystemSettingStore" ); + systemSettingStore = (SystemSettingStore) getBean( "org.hisp.dhis.setting.SystemSettingStore" ); settingA = new SystemSetting(); settingA.setName( "Setting1" ); === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientAttributeOptionStore.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientAttributeOptionStore.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientAttributeOptionStore.java 2013-09-17 18:07:42 +0000 @@ -38,8 +38,6 @@ /** * @author Viet - * - * @version $Id$ */ public class HibernatePatientAttributeOptionStore extends HibernateGenericStore === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientIdentifierStore.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientIdentifierStore.java 2013-09-17 06:08:16 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientIdentifierStore.java 2013-09-17 18:07:42 +0000 @@ -33,7 +33,7 @@ import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; -import org.hisp.dhis.hibernate.HibernateGenericStore; +import org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectStore; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.patient.Patient; import org.hisp.dhis.patient.PatientIdentifier; @@ -50,7 +50,7 @@ * @version $Id$ */ public class HibernatePatientIdentifierStore - extends HibernateGenericStore + extends HibernateIdentifiableObjectStore implements PatientIdentifierStore { // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patientcomment/DefaultPatientCommentService.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patientcomment/DefaultPatientCommentService.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patientcomment/DefaultPatientCommentService.java 2013-09-17 18:07:42 +0000 @@ -30,7 +30,7 @@ import java.util.Collection; -import org.hisp.dhis.common.GenericIdentifiableObjectStore; +import org.hisp.dhis.common.GenericStore; /** * @author Chau Thu Tran @@ -44,9 +44,9 @@ // Dependencies // ------------------------------------------------------------------------- - private GenericIdentifiableObjectStore patientCommentStore; + private GenericStore patientCommentStore; - public void setPatientCommentStore( GenericIdentifiableObjectStore patientCommentStore ) + public void setPatientCommentStore( GenericStore patientCommentStore ) { this.patientCommentStore = patientCommentStore; } @@ -84,5 +84,4 @@ { return patientCommentStore.getAll(); } - } === 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-09-13 11:51:49 +0000 +++ dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.java 2013-09-17 18:07:42 +0000 @@ -28,6 +28,9 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.util.HashSet; +import java.util.List; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.Criteria; @@ -36,13 +39,11 @@ import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.criterion.Criterion; -import org.hibernate.criterion.Restrictions; import org.hisp.dhis.common.AccessStringHelper; import org.hisp.dhis.common.AuditLogUtil; import org.hisp.dhis.common.BaseIdentifiableObject; -import org.hisp.dhis.common.GenericNameableObjectStore; +import org.hisp.dhis.common.GenericStore; import org.hisp.dhis.common.IdentifiableObject; -import org.hisp.dhis.common.NameableObject; import org.hisp.dhis.common.SharingUtils; import org.hisp.dhis.dashboard.Dashboard; import org.hisp.dhis.hibernate.exception.CreateAccessDeniedException; @@ -50,24 +51,17 @@ import org.hisp.dhis.hibernate.exception.ReadAccessDeniedException; import org.hisp.dhis.hibernate.exception.UpdateAccessDeniedException; import org.hisp.dhis.user.CurrentUserService; -import org.hisp.dhis.user.User; import org.hisp.dhis.user.UserGroupAccess; 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; -import java.util.Date; -import java.util.HashSet; -import java.util.List; - /** * @author Lars Helge Overland */ public class HibernateGenericStore - implements GenericNameableObjectStore + implements GenericStore { private static final Log log = LogFactory.getLog( HibernateGenericStore.class ); @@ -87,9 +81,9 @@ } @Autowired - private CurrentUserService currentUserService; + protected CurrentUserService currentUserService; - private Class clazz; + protected Class clazz; /** * Could be overridden programmatically. @@ -108,7 +102,7 @@ this.clazz = clazz; } - private boolean cacheable = false; + protected boolean cacheable = false; /** * Could be overridden programmatically. @@ -318,76 +312,6 @@ } @Override - public final T getByUid( String uid ) - { - T object = getObject( Restrictions.eq( "uid", uid ) ); - - if ( !isReadAllowed( object ) ) - { - AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_READ_DENIED ); - throw new ReadAccessDeniedException( object.toString() ); - } - - return object; - } - - @Override - public final T getByUidNoAcl( String uid ) - { - return getObject( Restrictions.eq( "uid", uid ) ); - } - - @Override - public final void updateNoAcl( T object ) - { - sessionFactory.getCurrentSession().update( object ); - } - - @Override - @Deprecated - public final T getByName( String name ) - { - T object = getObject( Restrictions.eq( "name", name ) ); - - if ( !isReadAllowed( object ) ) - { - AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_READ_DENIED ); - throw new ReadAccessDeniedException( object.toString() ); - } - - return object; - } - - @Override - @Deprecated - public final T getByShortName( String shortName ) - { - T object = getObject( Restrictions.eq( "shortName", shortName ) ); - - if ( !isReadAllowed( object ) ) - { - AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_READ_DENIED ); - throw new ReadAccessDeniedException( object.toString() ); - } - - return object; - } - - @Override - public final T getByCode( String code ) - { - T object = getObject( Restrictions.eq( "code", code ) ); - - if ( !isReadAllowed( object ) ) - { - AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_READ_DENIED ); - throw new ReadAccessDeniedException( object.toString() ); - } - - return object; - } - - @Override public final void delete( T object ) { if ( !isDeleteAllowed( object ) ) @@ -428,309 +352,6 @@ } @Override - @SuppressWarnings("unchecked") - public List getAllEqName( String name ) - { - Query query = sharingEnabled() ? getQueryAllEqNameAcl( name ) : getQueryAllEqName( name ); - - return query.list(); - } - - private Query getQueryAllEqNameAcl( String name ) - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where name = :name and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " ) order by c.name"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - query.setString( "name", name ); - - return query; - } - - private Query getQueryAllEqName( String name ) - { - Query query = getQuery( "from " + clazz.getName() + " c where name = :name order by c.name" ); - query.setString( "name", name ); - - return query; - } - - @Override - @SuppressWarnings("unchecked") - public List getAllEqNameIgnoreCase( String name ) - { - Query query = sharingEnabled() ? getQueryAllEqNameAclIgnoreCase( name ) : getQueryAllEqNameIgnoreCase( name ); - - return query.list(); - } - - private Query getQueryAllEqNameAclIgnoreCase( String name ) - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where lower(name) = :name and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " ) order by c.name"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - query.setString( "name", name.toLowerCase() ); - - return query; - } - - private Query getQueryAllEqNameIgnoreCase( String name ) - { - Query query = getQuery( "from " + clazz.getName() + " c where lower(name) = :name order by c.name" ); - query.setString( "name", name.toLowerCase() ); - - return query; - } - - @Override - @SuppressWarnings("unchecked") - public List getAllEqShortName( String shortName ) - { - Query query = sharingEnabled() ? getQueryAllEqShortNameAcl( shortName ) : getQueryAllEqShortName( shortName ); - - return query.list(); - } - - private Query getQueryAllEqShortNameAcl( String shortName ) - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where shortName = :shortName and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " ) order by c.shortName"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - query.setString( "shortName", shortName ); - - return query; - } - - private Query getQueryAllEqShortName( String shortName ) - { - Query query = getQuery( "from " + clazz.getName() + " c where shortName = :shortName order by c.shortName" ); - query.setString( "shortName", shortName ); - - return query; - } - - @Override - @SuppressWarnings("unchecked") - public List getAllEqShortNameIgnoreCase( String shortName ) - { - Query query = sharingEnabled() ? getQueryAllEqShortNameAclIgnoreCase( shortName ) : getQueryAllEqShortNameIgnoreCase( shortName ); - - return query.list(); - } - - private Query getQueryAllEqShortNameAclIgnoreCase( String shortName ) - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where lower(shortName) = :shortName and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " ) order by c.shortName"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - query.setString( "shortName", shortName.toLowerCase() ); - - return query; - } - - private Query getQueryAllEqShortNameIgnoreCase( String shortName ) - { - Query query = getQuery( "from " + clazz.getName() + " c where lower(shortName) = :shortName order by c.shortName" ); - query.setString( "shortName", shortName.toLowerCase() ); - - return query; - } - - @Override - @SuppressWarnings("unchecked") - public List getAllLikeName( String name ) - { - Query query = sharingEnabled() ? getQueryAllLikeNameAcl( name ) : getQueryAllLikeName( name ); - - return query.list(); - } - - private Query getQueryAllLikeNameAcl( String name ) - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where lower(name) like :name and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " ) order by c.name"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - query.setString( "name", "%" + name.toLowerCase() + "%" ); - - return query; - } - - private Query getQueryAllLikeName( String name ) - { - Query query = getQuery( "from " + clazz.getName() + " c where lower(name) like :name order by c.name" ); - query.setString( "name", "%" + name.toLowerCase() + "%" ); - - return query; - } - - @Override - @SuppressWarnings("unchecked") - public List getAllLikeShortName( String shortName ) - { - if ( NameableObject.class.isAssignableFrom( clazz ) ) - { - Query query = sharingEnabled() ? getQueryAllLikeShortNameAcl( shortName ) : getQueryAllLikeShortName( shortName ); - return query.list(); - } - - // fallback to using name - return getAllLikeName( shortName ); - } - - private Query getQueryAllLikeShortNameAcl( String shortName ) - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where lower(shortName) like :shortName and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " ) order by c.shortName"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - query.setString( "shortName", "%" + shortName.toLowerCase() + "%" ); - - return query; - } - - private Query getQueryAllLikeShortName( String shortName ) - { - Query query = getQuery( "from " + clazz.getName() + " c where lower(shortName) like :shortName order by c.shortName" ); - query.setString( "shortName", "%" + shortName.toLowerCase() + "%" ); - - return query; - } - - @Override - @SuppressWarnings("unchecked") - public final List getAllOrderedName() - { - Query query = sharingEnabled() ? getQueryAllOrderedNameAcl() : getQueryAllOrderedName(); - - return query.list(); - } - - private Query getQueryAllOrderedNameAcl() - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " order by c.name"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - - return query; - } - - private Query getQueryAllOrderedName() - { - return getQuery( "from " + clazz.getName() + " c order by c.name" ); - } - - @Override - @SuppressWarnings("unchecked") - public List getAllOrderedName( int first, int max ) - { - Query query = sharingEnabled() ? getQueryAllOrderedNameAcl() : getQueryAllOrderedName(); - - query.setFirstResult( first ); - query.setMaxResults( max ); - - return query.list(); - } - - @Override - @SuppressWarnings("unchecked") - public List getAllOrderedLastUpdated( int first, int max ) - { - Query query = sharingEnabled() ? getQueryAllOrderedLastUpdatedAcl() : getQueryAllOrderedLastUpdated(); - - query.setFirstResult( first ); - query.setMaxResults( max ); - - return query.list(); - } - - private Query getQueryAllOrderedLastUpdatedAcl() - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " order by c.lastUpdated desc"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - - return query; - } - - private Query getQueryAllOrderedLastUpdated() - { - return getQuery( "from " + clazz.getName() + " c order by lastUpdated desc" ); - } - - @Override - @SuppressWarnings("unchecked") - public List getAllLikeNameOrderedName( String name, int first, int max ) - { - Query query = sharingEnabled() ? getQueryAllLikeNameOrderedNameAcl( name ) : getQueryAllLikeNameOrderedName( name ); - - query.setFirstResult( first ); - query.setMaxResults( max ); - - return query.list(); - } - - private Query getQueryAllLikeNameOrderedNameAcl( String name ) - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where lower(c.name) like :name and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " ) order by c.name"; - - Query query = getQuery( hql ); - query.setString( "name", "%" + name.toLowerCase() + "%" ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - - return query; - } - - private Query getQueryAllLikeNameOrderedName( String name ) - { - Query query = getQuery( "from " + clazz.getName() + " c where lower(name) like :name order by name" ); - query.setString( "name", "%" + name.toLowerCase() + "%" ); - - return query; - } - - @Override public int getCount() { Query query = sharingEnabled() ? getQueryCountAcl() : getQueryCount(); @@ -756,217 +377,6 @@ return getQuery( "select count(distinct c) from " + clazz.getName() + " c" ); } - @Override - public int getCountLikeName( String name ) - { - Query query = sharingEnabled() ? getQueryCountLikeNameAcl( name ) : getQueryCountLikeName( name ); - - return ((Long) query.uniqueResult()).intValue(); - } - - private Query getQueryCountLikeNameAcl( String name ) - { - String hql = "select count(distinct c) from " + clazz.getName() + " c" - + " where lower(name) like :name and (c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " )"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - query.setString( "name", "%" + name.toLowerCase() + "%" ); - - return query; - } - - private Query getQueryCountLikeName( String name ) - { - Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c where lower(name) like :name" ); - query.setString( "name", "%" + name.toLowerCase() + "%" ); - - return query; - } - - @Override - public long getCountGeLastUpdated( Date lastUpdated ) - { - Query query = sharingEnabled() ? getQueryCountGeLastUpdatedAcl( lastUpdated ) : getQueryCountGeLastUpdated( lastUpdated ); - - return ((Long) query.uniqueResult()).intValue(); - } - - private Query getQueryCountGeLastUpdatedAcl( Date lastUpdated ) - { - String hql = "select count(distinct c) from " + clazz.getName() + " c" - + " where c.lastUpdated >= :lastUpdated and (c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " )"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - query.setTimestamp( "lastUpdated", lastUpdated ); - - return query; - } - - private Query getQueryCountGeLastUpdated( Date lastUpdated ) - { - Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c where lastUpdated >= :lastUpdated" ); - query.setTimestamp( "lastUpdated", lastUpdated ); - - return query; - } - - @Override - @SuppressWarnings("unchecked") - public List getAllGeLastUpdated( Date lastUpdated ) - { - Query query = sharingEnabled() ? getQueryAllGeLastUpdatedAcl( lastUpdated ) : getQueryAllGeLastUpdated( lastUpdated ); - - return query.list(); - } - - private Query getQueryAllGeLastUpdatedAcl( Date lastUpdated ) - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where c.lastUpdated >= :lastUpdated and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " )"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - query.setTimestamp( "lastUpdated", lastUpdated ); - - return query; - } - - private Query getQueryAllGeLastUpdated( Date lastUpdated ) - { - Query query = getQuery( "from " + clazz.getName() + " c where c.lastUpdated >= :lastUpdated" ); - query.setTimestamp( "lastUpdated", lastUpdated ); - - return query; - } - - @Override - @SuppressWarnings("unchecked") - public List getAllGeCreated( Date created ) - { - Query query = sharingEnabled() ? getQueryAllGeCreatedAcl( created ) : getQueryAllGeCreated( created ); - - return query.list(); - } - - private Query getQueryAllGeCreatedAcl( Date created ) - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where c.created >= :created and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " ) order by c.name"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - query.setTimestamp( "created", created ); - - return query; - } - - private Query getQueryAllGeCreated( Date created ) - { - Query query = getQuery( "from " + clazz.getName() + " c where c.created >= :created" ); - query.setTimestamp( "created", created ); - - return query; - } - - @Override - @SuppressWarnings("unchecked") - public List getAllGeLastUpdatedOrderedName( Date lastUpdated ) - { - Query query = sharingEnabled() ? getQueryAllGeLastUpdatedOrderedNameAcl( lastUpdated ) : getQueryAllGeLastUpdatedOrderedName( lastUpdated ); - - return query.list(); - } - - private Query getQueryAllGeLastUpdatedOrderedNameAcl( Date lastUpdated ) - { - String hql = "select distinct c from " + clazz.getName() + " c" - + " where c.lastUpdated >= :lastUpdated and ( c.publicAccess like 'r%' or c.user IS NULL or c.user=:user" - + " or exists " - + " (from c.userGroupAccesses uga join uga.userGroup ug join ug.members ugm where ugm = :user and uga.access like 'r%')" - + " ) order by c.name"; - - Query query = getQuery( hql ); - query.setEntity( "user", currentUserService.getCurrentUser() ); - query.setTimestamp( "lastUpdated", lastUpdated ); - - return query; - } - - private Query getQueryAllGeLastUpdatedOrderedName( Date lastUpdated ) - { - Query query = getQuery( "from " + clazz.getName() + " c where c.lastUpdated >= :lastUpdated order by c.name" ); - query.setTimestamp( "lastUpdated", lastUpdated ); - - return query; - } - - @Override - @SuppressWarnings("unchecked") - public List getByUser( User user ) - { - Query query = getQuery( "from " + clazz.getName() + " c where user = :user" ); - query.setEntity( "user", user ); - - return query.list(); - } - - @Override - public List getByUid( Collection uids ) - { - List list = new ArrayList(); - - if ( uids != null ) - { - for ( String uid : uids ) - { - T object = getByUid( uid ); - - if ( object != null ) - { - list.add( object ); - } - } - } - - return list; - } - - //---------------------------------------------------------------------------------------------------------------- - // No ACL (unfiltered methods) - //---------------------------------------------------------------------------------------------------------------- - - @Override - public int getCountEqNameNoAcl( String name ) - { - Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c where c.name = :name" ); - query.setParameter( "name", name ); - - return ((Long) query.uniqueResult()).intValue(); - } - - @Override - public int getCountEqShortNameNoAcl( String shortName ) - { - Query query = getQuery( "select count(distinct c) from " + clazz.getName() + " c where c.shortName = :shortName" ); - query.setParameter( "shortName", shortName ); - - return ((Long) query.uniqueResult()).intValue(); - } - //---------------------------------------------------------------------------------------------------------------- // Helpers //---------------------------------------------------------------------------------------------------------------- === modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/style/dashboard.css' --- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/style/dashboard.css 2013-09-17 17:15:10 +0000 +++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/style/dashboard.css 2013-09-17 18:07:42 +0000 @@ -474,7 +474,7 @@ { color: #777; font-size: 11pt; - margin-bottom: 9px; + margin-bottom: 15px; } .interpretationContainer @@ -530,7 +530,7 @@ .commentArea { height: 18px; - width: 360px; + width: 390px; border: 1px solid #ccc; resize: none; overflow: auto;