2
* Copyright (c) 2004-2009, University of Oslo
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
* * Redistributions of source code must retain the above copyright notice, this
8
* list of conditions and the following disclaimer.
9
* * Redistributions in binary form must reproduce the above copyright notice,
10
* this list of conditions and the following disclaimer in the documentation
11
* and/or other materials provided with the distribution.
12
* * Neither the name of the HISP project nor the names of its contributors may
13
* be used to endorse or promote products derived from this software without
14
* specific prior written permission.
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
20
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
23
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
package org.hisp.dhis.patient.action.relationship;
29
import org.hisp.dhis.i18n.I18n;
30
import org.hisp.dhis.patient.Patient;
31
import org.hisp.dhis.patient.PatientService;
32
import org.hisp.dhis.patient.state.SelectedStateManager;
33
import org.hisp.dhis.relationship.Relationship;
34
import org.hisp.dhis.relationship.RelationshipService;
35
import org.hisp.dhis.relationship.RelationshipType;
36
import org.hisp.dhis.relationship.RelationshipTypeService;
38
import com.opensymphony.xwork2.Action;
41
* @author Abyot Asalefew Gizaw
44
public class SaveRelationshipAction
47
// -------------------------------------------------------------------------
49
// -------------------------------------------------------------------------
51
private PatientService patientService;
53
public void setPatientService( PatientService patientService )
55
this.patientService = patientService;
58
private SelectedStateManager selectedStateManager;
60
public void setSelectedStateManager( SelectedStateManager selectedStateManager )
62
this.selectedStateManager = selectedStateManager;
65
private RelationshipTypeService relationshipTypeService;
67
public void setRelationshipTypeService( RelationshipTypeService relationshipTypeService )
69
this.relationshipTypeService = relationshipTypeService;
72
private RelationshipService relationshipService;
74
public void setRelationshipService( RelationshipService relationshipService )
76
this.relationshipService = relationshipService;
79
// -------------------------------------------------------------------------
81
// -------------------------------------------------------------------------
83
private Integer patientId;
85
public void setPatientId( Integer patientId )
87
this.patientId = patientId;
90
private Integer partnerId;
92
public void setPartnerId( Integer partnerId )
94
this.partnerId = partnerId;
97
private Integer relationshipTypeId;
99
public void setRelationshipTypeId( Integer relationshipTypeId )
101
this.relationshipTypeId = relationshipTypeId;
104
private String relationshipName;
106
public void setRelationshipName( String relationshipName )
108
this.relationshipName = relationshipName;
111
private String message;
113
public String getMessage()
120
public void setI18n( I18n i18n )
125
// -------------------------------------------------------------------------
126
// Action implementation
127
// -------------------------------------------------------------------------
129
public String execute()
132
Patient patient = patientService.getPatient( patientId );
134
Patient partner = patientService.getPatient( partnerId );
136
RelationshipType relationshipType = relationshipTypeService.getRelationshipType( relationshipTypeId );
138
Relationship relationship = relationshipService.getRelationship( patient, partner, relationshipType );
140
if ( relationship != null )
142
message = i18n.getString( "the_relationship_already_exists" );
147
// ---------------------------------------------------------------------
148
// Validation success
149
// ---------------------------------------------------------------------
151
relationship = new Relationship();
153
if ( relationshipType.getaIsToB().equalsIgnoreCase( relationshipName ) )
155
relationship.setPatientA( partner );
156
relationship.setPatientB( patient );
158
relationship.setRelationshipType( relationshipType );
159
relationshipService.saveRelationship( relationship );
162
else if ( relationshipType.getbIsToA().equalsIgnoreCase( relationshipName ) )
164
relationship.setPatientA( patient );
165
relationship.setPatientB( partner );
167
relationship.setRelationshipType( relationshipType );
168
relationshipService.saveRelationship( relationship );