1
package org.hisp.dhis.dxf2.metadata2.objectbundle.hooks;
4
* Copyright (c) 2004-2016, University of Oslo
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions are met:
9
* Redistributions of source code must retain the above copyright notice, this
10
* list of conditions and the following disclaimer.
12
* Redistributions in binary form must reproduce the above copyright notice,
13
* this list of conditions and the following disclaimer in the documentation
14
* and/or other materials provided with the distribution.
15
* Neither the name of the HISP project nor the names of its contributors may
16
* be used to endorse or promote products derived from this software without
17
* specific prior written permission.
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
23
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
import org.hisp.dhis.common.IdentifiableObject;
32
import org.hisp.dhis.dataelement.DataElementOperand;
33
import org.hisp.dhis.dataset.DataSet;
34
import org.hisp.dhis.dataset.Section;
35
import org.hisp.dhis.dxf2.metadata2.objectbundle.ObjectBundle;
36
import org.springframework.stereotype.Component;
42
* @author Morten Olav Hansen <mortenoh@gmail.com>
45
public class DataSetObjectBundleHook extends AbstractObjectBundleHook
48
public void preCreate( IdentifiableObject identifiableObject, ObjectBundle objectBundle )
50
if ( !DataSet.class.isInstance( identifiableObject ) ) return;
51
DataSet dataSet = (DataSet) identifiableObject;
53
for ( DataElementOperand dataElementOperand : dataSet.getCompulsoryDataElementOperands() )
55
preheatService.connectReferences( dataElementOperand, objectBundle.getPreheat(), objectBundle.getPreheatIdentifier() );
56
sessionFactory.getCurrentSession().save( dataElementOperand );
61
public void preUpdate( IdentifiableObject identifiableObject, ObjectBundle objectBundle )
63
if ( !DataSet.class.isInstance( identifiableObject ) ) return;
64
DataSet dataSet = (DataSet) identifiableObject;
65
dataSet.getCompulsoryDataElementOperands().clear();
69
@SuppressWarnings( "unchecked" )
70
public void postUpdate( IdentifiableObject identifiableObject, ObjectBundle objectBundle )
72
if ( !DataSet.class.isInstance( identifiableObject ) ) return;
73
if ( !objectBundle.getObjectReferences().containsKey( Section.class ) ) return;
74
DataSet dataSet = (DataSet) identifiableObject;
76
Map<String, Object> references = objectBundle.getObjectReferences( Section.class ).get( dataSet.getUid() );
77
if ( references == null ) return;
79
Set<DataElementOperand> dataElementOperands = (Set<DataElementOperand>) references.get( "compulsoryDataElementOperands" );
80
if ( dataElementOperands == null || dataElementOperands.isEmpty() ) return;
82
for ( DataElementOperand dataElementOperand : dataElementOperands )
84
preheatService.connectReferences( dataElementOperand, objectBundle.getPreheat(), objectBundle.getPreheatIdentifier() );
85
sessionFactory.getCurrentSession().save( dataElementOperand );
86
dataSet.getCompulsoryDataElementOperands().add( dataElementOperand );
89
sessionFactory.getCurrentSession().update( dataSet );