~mortenoh/+junk/dhis2-detailed-import-export

« back to all changes in this revision

Viewing changes to dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/SaveCommentAction.java

  • Committer: larshelge at gmail
  • Date: 2009-03-03 16:46:36 UTC
  • Revision ID: larshelge@gmail.com-20090303164636-2sjlrquo7ib1gf7r
Initial check-in

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.hisp.dhis.de.action;
 
2
 
 
3
/*
 
4
 * Copyright (c) 2004-2007, University of Oslo
 
5
 * All rights reserved.
 
6
 *
 
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.
 
17
 *
 
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.
 
28
 */
 
29
 
 
30
import java.util.Date;
 
31
 
 
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;
 
42
 
 
43
import com.opensymphony.xwork.Action;
 
44
 
 
45
/**
 
46
 * @author Torgeir Lorange Ostby
 
47
 * @version $Id: SaveCommentAction.java 3113 2007-03-19 20:47:10Z torgeilo $
 
48
 */
 
49
public class SaveCommentAction
 
50
    implements Action
 
51
{
 
52
    private static final Log LOG = LogFactory.getLog( SaveCommentAction.class );
 
53
 
 
54
    // -------------------------------------------------------------------------
 
55
    // Dependencies
 
56
    // -------------------------------------------------------------------------
 
57
 
 
58
    private CurrentUserService currentUserService;
 
59
 
 
60
    public void setCurrentUserService( CurrentUserService currentUserService )
 
61
    {
 
62
        this.currentUserService = currentUserService;
 
63
    }
 
64
 
 
65
    private DataElementService dataElementService;
 
66
 
 
67
    public void setDataElementService( DataElementService dataElementService )
 
68
    {
 
69
        this.dataElementService = dataElementService;
 
70
    }
 
71
 
 
72
    private DataValueService dataValueService;
 
73
 
 
74
    public void setDataValueService( DataValueService dataValueService )
 
75
    {
 
76
        this.dataValueService = dataValueService;
 
77
    }
 
78
 
 
79
    private SelectedStateManager selectedStateManager;
 
80
 
 
81
    public void setSelectedStateManager( SelectedStateManager selectedStateManager )
 
82
    {
 
83
        this.selectedStateManager = selectedStateManager;
 
84
    }
 
85
 
 
86
    // -------------------------------------------------------------------------
 
87
    // Input/output
 
88
    // -------------------------------------------------------------------------
 
89
 
 
90
    private String comment;
 
91
 
 
92
    public void setComment( String comment )
 
93
    {
 
94
        this.comment = comment;
 
95
    }
 
96
 
 
97
    private int dataElementId;
 
98
 
 
99
    public void setDataElementId( int dataElementId )
 
100
    {
 
101
        this.dataElementId = dataElementId;
 
102
    }
 
103
 
 
104
    public int getDataElementId()
 
105
    {
 
106
        return dataElementId;
 
107
    }
 
108
 
 
109
    private int statusCode;
 
110
 
 
111
    public int getStatusCode()
 
112
    {
 
113
        return statusCode;
 
114
    }
 
115
 
 
116
    private Date timestamp;
 
117
 
 
118
    public Date getTimestamp()
 
119
    {
 
120
        return timestamp;
 
121
    }
 
122
 
 
123
    private String storedBy;
 
124
 
 
125
    public String getStoredBy()
 
126
    {
 
127
        return storedBy;
 
128
    }
 
129
 
 
130
    // -------------------------------------------------------------------------
 
131
    // Action implementation
 
132
    // -------------------------------------------------------------------------
 
133
 
 
134
    public String execute()
 
135
    {
 
136
        OrganisationUnit organisationUnit = selectedStateManager.getSelectedOrganisationUnit();
 
137
 
 
138
        Period period = selectedStateManager.getSelectedPeriod();
 
139
 
 
140
        DataElement dataElement = dataElementService.getDataElement( dataElementId );
 
141
 
 
142
        storedBy = currentUserService.getCurrentUsername();
 
143
 
 
144
        if ( storedBy == null )
 
145
        {
 
146
            storedBy = "[unknown]";
 
147
        }
 
148
 
 
149
        if ( comment != null && comment.trim().equals( "" ) )
 
150
        {
 
151
            comment = null;
 
152
        }
 
153
 
 
154
        // ---------------------------------------------------------------------
 
155
        // Update DB
 
156
        // ---------------------------------------------------------------------
 
157
 
 
158
        DataValue dataValue = dataValueService.getDataValue( organisationUnit, dataElement, period );
 
159
 
 
160
        if ( dataValue == null )
 
161
        {
 
162
            if ( comment != null )
 
163
            {
 
164
                LOG.debug( "Adding DataValue, comment added" );
 
165
 
 
166
                dataValue = new DataValue( dataElement, period, organisationUnit, null, storedBy, new Date(), comment );
 
167
 
 
168
                dataValueService.addDataValue( dataValue );
 
169
            }
 
170
        }
 
171
        else
 
172
        {
 
173
            LOG.debug( "Updating DataValue, comment added/changed" );
 
174
 
 
175
            dataValue.setComment( comment );
 
176
            dataValue.setTimestamp( new Date() );
 
177
            dataValue.setStoredBy( storedBy );
 
178
 
 
179
            dataValueService.updateDataValue( dataValue );
 
180
        }
 
181
 
 
182
        if ( dataValue != null )
 
183
        {
 
184
            this.timestamp = dataValue.getTimestamp();
 
185
            this.storedBy = dataValue.getStoredBy();
 
186
        }
 
187
 
 
188
        return SUCCESS;
 
189
    }
 
190
}