1
package org.hisp.dhis.de.action;
4
* Copyright (c) 2004-2007, 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.
11
* * Redistributions in binary form must reproduce the above copyright notice,
12
* this list of conditions and the following disclaimer in the documentation
13
* and/or other materials provided with the distribution.
14
* * Neither the name of the HISP project nor the names of its contributors may
15
* be used to endorse or promote products derived from this software without
16
* specific prior written permission.
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
22
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
25
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
import java.util.Date;
32
import org.apache.commons.logging.Log;
33
import org.apache.commons.logging.LogFactory;
34
import org.hisp.dhis.dataelement.DataElement;
35
import org.hisp.dhis.dataelement.DataElementService;
36
import org.hisp.dhis.datavalue.DataValue;
37
import org.hisp.dhis.datavalue.DataValueService;
38
import org.hisp.dhis.de.state.SelectedStateManager;
39
import org.hisp.dhis.organisationunit.OrganisationUnit;
40
import org.hisp.dhis.period.Period;
41
import org.hisp.dhis.user.CurrentUserService;
43
import com.opensymphony.xwork.Action;
46
* @author Torgeir Lorange Ostby
47
* @version $Id: SaveCommentAction.java 3113 2007-03-19 20:47:10Z torgeilo $
49
public class SaveCommentAction
52
private static final Log LOG = LogFactory.getLog( SaveCommentAction.class );
54
// -------------------------------------------------------------------------
56
// -------------------------------------------------------------------------
58
private CurrentUserService currentUserService;
60
public void setCurrentUserService( CurrentUserService currentUserService )
62
this.currentUserService = currentUserService;
65
private DataElementService dataElementService;
67
public void setDataElementService( DataElementService dataElementService )
69
this.dataElementService = dataElementService;
72
private DataValueService dataValueService;
74
public void setDataValueService( DataValueService dataValueService )
76
this.dataValueService = dataValueService;
79
private SelectedStateManager selectedStateManager;
81
public void setSelectedStateManager( SelectedStateManager selectedStateManager )
83
this.selectedStateManager = selectedStateManager;
86
// -------------------------------------------------------------------------
88
// -------------------------------------------------------------------------
90
private String comment;
92
public void setComment( String comment )
94
this.comment = comment;
97
private int dataElementId;
99
public void setDataElementId( int dataElementId )
101
this.dataElementId = dataElementId;
104
public int getDataElementId()
106
return dataElementId;
109
private int statusCode;
111
public int getStatusCode()
116
private Date timestamp;
118
public Date getTimestamp()
123
private String storedBy;
125
public String getStoredBy()
130
// -------------------------------------------------------------------------
131
// Action implementation
132
// -------------------------------------------------------------------------
134
public String execute()
136
OrganisationUnit organisationUnit = selectedStateManager.getSelectedOrganisationUnit();
138
Period period = selectedStateManager.getSelectedPeriod();
140
DataElement dataElement = dataElementService.getDataElement( dataElementId );
142
storedBy = currentUserService.getCurrentUsername();
144
if ( storedBy == null )
146
storedBy = "[unknown]";
149
if ( comment != null && comment.trim().equals( "" ) )
154
// ---------------------------------------------------------------------
156
// ---------------------------------------------------------------------
158
DataValue dataValue = dataValueService.getDataValue( organisationUnit, dataElement, period );
160
if ( dataValue == null )
162
if ( comment != null )
164
LOG.debug( "Adding DataValue, comment added" );
166
dataValue = new DataValue( dataElement, period, organisationUnit, null, storedBy, new Date(), comment );
168
dataValueService.addDataValue( dataValue );
173
LOG.debug( "Updating DataValue, comment added/changed" );
175
dataValue.setComment( comment );
176
dataValue.setTimestamp( new Date() );
177
dataValue.setStoredBy( storedBy );
179
dataValueService.updateDataValue( dataValue );
182
if ( dataValue != null )
184
this.timestamp = dataValue.getTimestamp();
185
this.storedBy = dataValue.getStoredBy();