------------------------------------------------------------ revno: 21206 committer: Morten Olav Hansen <[email protected]> branch nick: dhis2 timestamp: Fri 2015-11-27 15:42:42 +0700 message: auditing for tracked entity data values added: dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAudit.java dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAuditService.java dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAuditStore.java dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/DefaultTrackedEntityDataValueAuditService.java dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/hibernate/HibernateTrackedEntityDataValueAuditStore.java dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/trackedentitydatavalue/hibernate/TrackedEntityDataValueAudit.hbm.xml dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/trackedentitydatavalueaudit/ modified: dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueStore.java dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/DefaultTrackedEntityDataValueService.java dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/hibernate/HibernateTrackedEntityDataValueStore.java 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/org/hisp/dhis/datavalue/hibernate/DataValueAudit.hbm.xml
-- 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
=== added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAudit.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAudit.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAudit.java 2015-11-27 08:42:42 +0000 @@ -0,0 +1,199 @@ +package org.hisp.dhis.trackedentitydatavalue; + +/* + * Copyright (c) 2004-2015, 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 com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import org.hisp.dhis.common.AuditType; +import org.hisp.dhis.common.DxfNamespaces; +import org.hisp.dhis.dataelement.DataElement; +import org.hisp.dhis.program.ProgramStageInstance; + +import java.io.Serializable; +import java.util.Date; +import java.util.Objects; + +/** + * @author Morten Olav Hansen <[email protected]> + */ +public class TrackedEntityDataValueAudit + implements Serializable +{ + private DataElement dataElement; + + private ProgramStageInstance programStageInstance; + + private Date timestamp; + + private String value; + + private Boolean providedElsewhere; + + private String modifiedBy; + + private AuditType auditType; + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + public TrackedEntityDataValueAudit() + { + } + + public TrackedEntityDataValueAudit( TrackedEntityDataValue trackedEntityDataValue, String value, String modifiedBy, Date timestamp, AuditType auditType ) + { + this.dataElement = trackedEntityDataValue.getDataElement(); + this.programStageInstance = trackedEntityDataValue.getProgramStageInstance(); + this.providedElsewhere = trackedEntityDataValue.getProvidedElsewhere(); + + this.value = value; + this.modifiedBy = modifiedBy; + this.timestamp = timestamp; + this.auditType = auditType; + } + + @Override + public int hashCode() + { + return Objects.hash( dataElement, programStageInstance, timestamp, value, providedElsewhere, modifiedBy, auditType ); + } + + @Override + public boolean equals( Object obj ) + { + if ( this == obj ) + { + return true; + } + + if ( obj == null || getClass() != obj.getClass() ) + { + return false; + } + + final TrackedEntityDataValueAudit other = (TrackedEntityDataValueAudit) obj; + + return Objects.equals( this.dataElement, other.dataElement ) + && Objects.equals( this.programStageInstance, other.programStageInstance ) + && Objects.equals( this.timestamp, other.timestamp ) + && Objects.equals( this.value, other.value ) + && Objects.equals( this.providedElsewhere, other.providedElsewhere ) + && Objects.equals( this.modifiedBy, other.modifiedBy ) + && Objects.equals( this.auditType, other.auditType ); + } + + // ------------------------------------------------------------------------- + // Getters and setters + // ------------------------------------------------------------------------- + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public ProgramStageInstance getProgramStageInstance() + { + return programStageInstance; + } + + public void setProgramStageInstance( ProgramStageInstance programStageInstance ) + { + this.programStageInstance = programStageInstance; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public DataElement getDataElement() + { + return dataElement; + } + + public void setDataElement( DataElement dataElement ) + { + this.dataElement = dataElement; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public Date getTimestamp() + { + return timestamp; + } + + public void setTimestamp( Date timestamp ) + { + this.timestamp = timestamp; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public String getValue() + { + return value; + } + + public void setValue( String value ) + { + this.value = value; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public boolean getProvidedElsewhere() + { + return providedElsewhere; + } + + public void setProvidedElsewhere( boolean providedElsewhere ) + { + this.providedElsewhere = providedElsewhere; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public String getModifiedBy() + { + return modifiedBy; + } + + public void setModifiedBy( String modifiedBy ) + { + this.modifiedBy = modifiedBy; + } + + @JsonProperty + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) + public AuditType getAuditType() + { + return auditType; + } + + public void setAuditType( AuditType auditType ) + { + this.auditType = auditType; + } +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAuditService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAuditService.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAuditService.java 2015-11-27 08:42:42 +0000 @@ -0,0 +1,48 @@ +package org.hisp.dhis.trackedentitydatavalue; + +/* + * Copyright (c) 2004-2015, 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.dataelement.DataElement; +import org.hisp.dhis.program.ProgramStageInstance; + +import java.util.List; + +/** + * @author Morten Olav Hansen <[email protected]> + */ +public interface TrackedEntityDataValueAuditService +{ + void addTrackedEntityDataValueAudit( TrackedEntityDataValueAudit trackedEntityDataValueAudit ); + + List<TrackedEntityDataValueAudit> getTrackedEntityDataValueAudits( TrackedEntityDataValue trackedEntityDataValue ); + + List<TrackedEntityDataValueAudit> getTrackedEntityDataValueAudits( DataElement dataElement, ProgramStageInstance programStageInstance ); + + List<TrackedEntityDataValueAudit> getTrackedEntityDataValueAudits( List<DataElement> dataElements, List<ProgramStageInstance> programStageInstances ); +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAuditStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAuditStore.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueAuditStore.java 2015-11-27 08:42:42 +0000 @@ -0,0 +1,44 @@ +package org.hisp.dhis.trackedentitydatavalue; + +/* + * Copyright (c) 2004-2015, 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.dataelement.DataElement; +import org.hisp.dhis.program.ProgramStageInstance; + +import java.util.List; + +/** + * @author Morten Olav Hansen <[email protected]> + */ +public interface TrackedEntityDataValueAuditStore +{ + void addTrackedEntityDataValueAudit( TrackedEntityDataValueAudit trackedEntityDataValueAudit ); + + List<TrackedEntityDataValueAudit> getTrackedEntityDataValueAudits( List<DataElement> dataElements, List<ProgramStageInstance> programStageInstances ); +} === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueStore.java 2015-06-16 13:17:59 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/trackedentitydatavalue/TrackedEntityDataValueStore.java 2015-11-27 08:42:42 +0000 @@ -61,7 +61,7 @@ * * @param programStageInstance ProgramStageInstance. */ - int detele( ProgramStageInstance programStageInstance ); + int delete( ProgramStageInstance programStageInstance ); /** * Retrieve data values of a event === added file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/DefaultTrackedEntityDataValueAuditService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/DefaultTrackedEntityDataValueAuditService.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/DefaultTrackedEntityDataValueAuditService.java 2015-11-27 08:42:42 +0000 @@ -0,0 +1,79 @@ +package org.hisp.dhis.trackedentitydatavalue; + +/* + * Copyright (c) 2004-2015, 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 com.google.common.collect.Lists; +import org.hisp.dhis.dataelement.DataElement; +import org.hisp.dhis.program.ProgramStageInstance; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author Morten Olav Hansen <[email protected]> + */ +@Transactional +public class DefaultTrackedEntityDataValueAuditService implements TrackedEntityDataValueAuditService +{ + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + @Autowired + private TrackedEntityDataValueAuditStore trackedEntityDataValueAuditStore; + + // ------------------------------------------------------------------------- + // Implementation methods + // ------------------------------------------------------------------------- + + @Override + public void addTrackedEntityDataValueAudit( TrackedEntityDataValueAudit trackedEntityDataValueAudit ) + { + trackedEntityDataValueAuditStore.addTrackedEntityDataValueAudit( trackedEntityDataValueAudit ); + } + + @Override + public List<TrackedEntityDataValueAudit> getTrackedEntityDataValueAudits( TrackedEntityDataValue trackedEntityDataValue ) + { + return getTrackedEntityDataValueAudits( trackedEntityDataValue.getDataElement(), trackedEntityDataValue.getProgramStageInstance() ); + } + + @Override + public List<TrackedEntityDataValueAudit> getTrackedEntityDataValueAudits( DataElement dataElement, ProgramStageInstance programStageInstance ) + { + return getTrackedEntityDataValueAudits( Lists.newArrayList( dataElement ), Lists.newArrayList( programStageInstance ) ); + } + + @Override + public List<TrackedEntityDataValueAudit> getTrackedEntityDataValueAudits( List<DataElement> dataElements, List<ProgramStageInstance> programStageInstances ) + { + return trackedEntityDataValueAuditStore.getTrackedEntityDataValueAudits( dataElements, programStageInstances ); + } +} === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/DefaultTrackedEntityDataValueService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/DefaultTrackedEntityDataValueService.java 2015-06-23 15:59:19 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/DefaultTrackedEntityDataValueService.java 2015-11-27 08:42:42 +0000 @@ -28,10 +28,14 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.common.AuditType; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.program.ProgramStageInstance; import org.hisp.dhis.trackedentity.TrackedEntityInstance; +import org.hisp.dhis.user.CurrentUserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; import java.util.Collection; import java.util.Date; @@ -48,12 +52,14 @@ // Dependencies // ------------------------------------------------------------------------- + @Autowired private TrackedEntityDataValueStore dataValueStore; - public void setDataValueStore( TrackedEntityDataValueStore dataValueStore ) - { - this.dataValueStore = dataValueStore; - } + @Autowired + private TrackedEntityDataValueAuditService dataValueAuditService; + + @Autowired + private CurrentUserService currentUserService; // ------------------------------------------------------------------------- // Implementation methods @@ -69,29 +75,46 @@ } @Override - public void deleteTrackedEntityDataValue( TrackedEntityDataValue dataValue ) - { - dataValueStore.delete( dataValue ); - } - - @Override - public void deleteTrackedEntityDataValue( ProgramStageInstance programStageInstance ) - { - dataValueStore.detele( programStageInstance ); - } - - @Override public void updateTrackedEntityDataValue( TrackedEntityDataValue dataValue ) { - if ( dataValue.getValue() == null ) + if ( StringUtils.isEmpty( dataValue.getValue() ) ) { dataValueStore.delete( dataValue ); } else { + TrackedEntityDataValueAudit dataValueAudit = new TrackedEntityDataValueAudit( dataValue, dataValue.getValue(), dataValue.getStoredBy(), + new Date(), AuditType.UPDATE ); + + dataValueAuditService.addTrackedEntityDataValueAudit( dataValueAudit ); dataValueStore.update( dataValue ); } } +w + @Override + public void deleteTrackedEntityDataValue( TrackedEntityDataValue dataValue ) + { + TrackedEntityDataValueAudit dataValueAudit = new TrackedEntityDataValueAudit( dataValue, dataValue.getValue(), currentUserService.getCurrentUsername(), + new Date(), AuditType.DELETE ); + + dataValueAuditService.addTrackedEntityDataValueAudit( dataValueAudit ); + dataValueStore.delete( dataValue ); + } + + @Override + public void deleteTrackedEntityDataValue( ProgramStageInstance programStageInstance ) + { + List<TrackedEntityDataValue> dataValues = dataValueStore.get( programStageInstance ); + String username = currentUserService.getCurrentUsername(); + + for ( TrackedEntityDataValue dataValue : dataValues ) + { + TrackedEntityDataValueAudit dataValueAudit = new TrackedEntityDataValueAudit( dataValue, dataValue.getValue(), username, new Date(), AuditType.DELETE ); + dataValueAuditService.addTrackedEntityDataValueAudit( dataValueAudit ); + } + + dataValueStore.delete( programStageInstance ); + } @Override public List<TrackedEntityDataValue> getTrackedEntityDataValues( ProgramStageInstance programStageInstance ) === added file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/hibernate/HibernateTrackedEntityDataValueAuditStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/hibernate/HibernateTrackedEntityDataValueAuditStore.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/hibernate/HibernateTrackedEntityDataValueAuditStore.java 2015-11-27 08:42:42 +0000 @@ -0,0 +1,91 @@ +package org.hisp.dhis.trackedentitydatavalue.hibernate; + +/* + * Copyright (c) 2004-2015, 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.Criteria; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Restrictions; +import org.hisp.dhis.dataelement.DataElement; +import org.hisp.dhis.program.ProgramStageInstance; +import org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueAudit; +import org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueAuditStore; + +import java.util.List; + +/** + * @author Morten Olav Hansen <[email protected]> + */ +public class HibernateTrackedEntityDataValueAuditStore implements TrackedEntityDataValueAuditStore +{ + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + private SessionFactory sessionFactory; + + public void setSessionFactory( SessionFactory sessionFactory ) + { + this.sessionFactory = sessionFactory; + } + + // ------------------------------------------------------------------------- + // Implementation methods + // ------------------------------------------------------------------------- + + @Override + public void addTrackedEntityDataValueAudit( TrackedEntityDataValueAudit trackedEntityDataValueAudit ) + { + Session session = sessionFactory.getCurrentSession(); + session.save( trackedEntityDataValueAudit ); + } + + @Override + @SuppressWarnings( "unchecked" ) + public List<TrackedEntityDataValueAudit> getTrackedEntityDataValueAudits( List<DataElement> dataElements, List<ProgramStageInstance> programStageInstances ) + { + Session session = sessionFactory.getCurrentSession(); + Criteria criteria = session.createCriteria( TrackedEntityDataValueAudit.class ); + + if ( !dataElements.isEmpty() ) + { + criteria.add( Restrictions.in( "dataElement", dataElements ) ); + } + + if ( !programStageInstances.isEmpty() ) + { + criteria.add( Restrictions.in( "programStageInstance", programStageInstances ) ); + } + + criteria.addOrder( Order.desc( "timestamp" ) ); + + return criteria.list(); + } +} === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/hibernate/HibernateTrackedEntityDataValueStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/hibernate/HibernateTrackedEntityDataValueStore.java 2015-06-23 15:59:19 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentitydatavalue/hibernate/HibernateTrackedEntityDataValueStore.java 2015-11-27 08:42:42 +0000 @@ -57,7 +57,7 @@ } @Override - public int detele( ProgramStageInstance programStageInstance ) + public int delete( ProgramStageInstance programStageInstance ) { Query query = getQuery( "delete from TrackedEntityDataValue where programStageInstance = :programStageInstance" ); query.setEntity( "programStageInstance", programStageInstance ); === 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 2015-11-25 21:09:56 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2015-11-27 08:42:42 +0000 @@ -458,13 +458,13 @@ <property name="sessionFactory" ref="sessionFactory" /> </bean> - <bean id="org.hisp.dhis.program.ProgramStore" + <bean id="org.hisp.dhis.program.ProgramStore" class="org.hisp.dhis.program.hibernate.HibernateProgramStore"> <property name="clazz" value="org.hisp.dhis.program.Program" /> <property name="sessionFactory" ref="sessionFactory" /> <property name="cacheable" value="true" /> </bean> - + <bean id="org.hisp.dhis.program.ProgramTrackedEntityAttributeStore" class="org.hisp.dhis.program.hibernate.HibernateProgramTrackedEntityAttributeStore"> <property name="clazz" value="org.hisp.dhis.program.ProgramTrackedEntityAttribute" /> @@ -478,14 +478,14 @@ <property name="sessionFactory" ref="sessionFactory" /> </bean> - <bean id="org.hisp.dhis.program.ProgramDataElementStore" + <bean id="org.hisp.dhis.program.ProgramDataElementStore" class="org.hisp.dhis.program.hibernate.HibernateProgramDataElementStore"> <property name="clazz" value="org.hisp.dhis.program.ProgramDataElement" /> <property name="sessionFactory" ref="sessionFactory" /> <property name="cacheable" value="true" /> </bean> - <bean id="org.hisp.dhis.program.ProgramExpressionStore" + <bean id="org.hisp.dhis.program.ProgramExpressionStore" class="org.hisp.dhis.hibernate.HibernateGenericStore"> <property name="clazz" value="org.hisp.dhis.program.ProgramExpression" /> <property name="sessionFactory" ref="sessionFactory" /> @@ -519,6 +519,14 @@ <property name="sessionFactory" ref="sessionFactory" /> </bean> + <bean id="org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueAuditStore" + class="org.hisp.dhis.trackedentitydatavalue.hibernate.HibernateTrackedEntityDataValueAuditStore"> + <property name="sessionFactory" ref="sessionFactory" /> + </bean> + + <bean id="org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueAuditService" + class="org.hisp.dhis.trackedentitydatavalue.DefaultTrackedEntityDataValueAuditService" /> + <bean id="org.hisp.dhis.trackedentity.TrackedEntityAttributeGroupStore" class="org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectStore"> <property name="clazz" value="org.hisp.dhis.trackedentity.TrackedEntityAttributeGroup" /> @@ -1220,7 +1228,6 @@ <bean id="org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueService" class="org.hisp.dhis.trackedentitydatavalue.DefaultTrackedEntityDataValueService"> - <property name="dataValueStore" ref="org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueStore" /> </bean> <bean id="org.hisp.dhis.trackedentity.TrackedEntityAttributeGroupService" === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/datavalue/hibernate/DataValueAudit.hbm.xml' --- dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/datavalue/hibernate/DataValueAudit.hbm.xml 2015-09-07 15:18:49 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/datavalue/hibernate/DataValueAudit.hbm.xml 2015-11-27 08:42:42 +0000 @@ -7,36 +7,36 @@ <class name="org.hisp.dhis.datavalue.DataValueAudit" table="datavalueaudit"> <id name="id" column="datavalueauditid"> - <generator class="native"/> + <generator class="native" /> </id> <many-to-one name="dataElement" class="org.hisp.dhis.dataelement.DataElement" column="dataelementid" - foreign-key="fk_datavalueaudit_dataelementid" not-null="true"/> + foreign-key="fk_datavalueaudit_dataelementid" not-null="true" /> <many-to-one name="period" class="org.hisp.dhis.period.Period" column="periodid" - foreign-key="fk_datavalueaudit_periodid" not-null="true"/> + foreign-key="fk_datavalueaudit_periodid" not-null="true" /> <many-to-one name="organisationUnit" class="org.hisp.dhis.organisationunit.OrganisationUnit" column="organisationunitid" - foreign-key="fk_datavalueaudit_organisationunitid" not-null="true"/> + foreign-key="fk_datavalueaudit_organisationunitid" not-null="true" /> <many-to-one name="categoryOptionCombo" class="org.hisp.dhis.dataelement.DataElementCategoryOptionCombo" column="categoryoptioncomboid" - foreign-key="fk_datavalueaudit_categoryoptioncomboid" not-null="true"/> + foreign-key="fk_datavalueaudit_categoryoptioncomboid" not-null="true" /> <many-to-one name="attributeOptionCombo" class="org.hisp.dhis.dataelement.DataElementCategoryOptionCombo" column="attributeoptioncomboid" - foreign-key="fk_datavalueaudit_attributeoptioncomboid"/> + foreign-key="fk_datavalueaudit_attributeoptioncomboid" /> <property name="value" length="50000" /> - <property name="timestamp" column="timestamp" type="timestamp" not-null="true" index="id_datavalueaudit_timestamp"/> + <property name="timestamp" column="timestamp" type="timestamp" not-null="true" index="id_datavalueaudit_timestamp" /> - <property name="modifiedBy" column="modifiedby" length="100"/> + <property name="modifiedBy" column="modifiedby" length="100" /> <property name="auditType" column="audittype" length="100" not-null="true"> - <type name="org.hibernate.type.EnumType"> - <param name="enumClass">org.hisp.dhis.common.AuditType</param> - <param name="type">12</param> - </type> - </property> - + <type name="org.hibernate.type.EnumType"> + <param name="enumClass">org.hisp.dhis.common.AuditType</param> + <param name="type">12</param> + </type> + </property> + </class> </hibernate-mapping> === added file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/trackedentitydatavalue/hibernate/TrackedEntityDataValueAudit.hbm.xml' --- dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/trackedentitydatavalue/hibernate/TrackedEntityDataValueAudit.hbm.xml 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/trackedentitydatavalue/hibernate/TrackedEntityDataValueAudit.hbm.xml 2015-11-27 08:42:42 +0000 @@ -0,0 +1,32 @@ +<?xml version="1.0"?> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> + +<hibernate-mapping> + <class name="org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueAudit" table="trackedentitydatavalueaudit"> + + <composite-id> + <key-many-to-one name="programStageInstance" class="org.hisp.dhis.program.ProgramStageInstance" + column="programstageinstanceid" foreign-key="fk_entityinstancedatavalue_programstageinstanceid" /> + <key-many-to-one name="dataElement" class="org.hisp.dhis.dataelement.DataElement" column="dataelementid" + foreign-key="fk_entityinstancedatavalue_dataelementid" /> + </composite-id> + + <property name="value" length="50000" /> + + <property name="timestamp" type="timestamp" /> + + <property name="providedElsewhere" /> + + <property name="modifiedBy" /> + + <property name="auditType" column="audittype" length="100" not-null="true"> + <type name="org.hibernate.type.EnumType"> + <param name="enumClass">org.hisp.dhis.common.AuditType</param> + <param name="type">12</param> + </type> + </property> + + </class> +</hibernate-mapping> === added directory 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/trackedentitydatavalueaudit'
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : [email protected] Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp

