=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserCredentials.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserCredentials.java 2014-04-08 19:36:25 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserCredentials.java 2014-04-15 07:43:20 +0000 @@ -39,12 +39,14 @@ import org.hisp.dhis.common.DimensionType; import org.hisp.dhis.common.DimensionalObject; import org.hisp.dhis.common.DxfNamespaces; +import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.common.IdentifiableObjectUtils; import org.hisp.dhis.common.annotation.Scanned; import org.hisp.dhis.common.view.DetailedView; import org.hisp.dhis.common.view.ExportView; import org.hisp.dhis.dataelement.CategoryOptionGroupSet; import org.hisp.dhis.dataset.DataSet; +import org.springframework.util.StringUtils; import java.util.Collection; import java.util.Date; @@ -94,7 +96,7 @@ */ @Scanned private Set userAuthorityGroups = new HashSet(); - + /** * Category option group set dimensions to constrain data analytics aggregation. */ @@ -363,7 +365,7 @@ return token.equals( this.restoreToken ) && code.equals( this.restoreCode ); } - + /** * Returns the dimensions to use as constrains (filters) in data analytics * aggregation. @@ -371,16 +373,16 @@ public Set getDimensionConstraints() { Set constraints = new HashSet(); - + for ( CategoryOptionGroupSet cogs : cogsDimensionConstraints ) { cogs.setDimensionType( DimensionType.CATEGORYOPTION_GROUPSET ); constraints.add( cogs ); } - + return constraints; } - + /** * Indicates whether this user has dimension constraints. */ @@ -447,8 +449,8 @@ } @JsonProperty - @JsonView({ DetailedView.class, ExportView.class }) - @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0) + @JsonView( { DetailedView.class, ExportView.class } ) + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) public Date getPasswordLastUpdated() { return passwordLastUpdated; @@ -460,10 +462,10 @@ } @JsonProperty - @JsonSerialize(contentAs = BaseIdentifiableObject.class) - @JsonView({ DetailedView.class, ExportView.class }) - @JacksonXmlElementWrapper(localName = "userAuthorityGroups", namespace = DxfNamespaces.DXF_2_0) - @JacksonXmlProperty(localName = "userAuthorityGroup", namespace = DxfNamespaces.DXF_2_0) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) + @JsonView( { DetailedView.class, ExportView.class } ) + @JacksonXmlElementWrapper( localName = "userAuthorityGroups", namespace = DxfNamespaces.DXF_2_0 ) + @JacksonXmlProperty( localName = "userAuthorityGroup", namespace = DxfNamespaces.DXF_2_0 ) public Set getUserAuthorityGroups() { return userAuthorityGroups; @@ -475,10 +477,10 @@ } @JsonProperty - @JsonSerialize(contentAs = BaseIdentifiableObject.class) - @JsonView({ DetailedView.class, ExportView.class }) - @JacksonXmlElementWrapper(localName = "cogsDimensionConstraints", namespace = DxfNamespaces.DXF_2_0) - @JacksonXmlProperty(localName = "cogsDimensionConstraint", namespace = DxfNamespaces.DXF_2_0) + @JsonSerialize( contentAs = BaseIdentifiableObject.class ) + @JsonView( { DetailedView.class, ExportView.class } ) + @JacksonXmlElementWrapper( localName = "cogsDimensionConstraints", namespace = DxfNamespaces.DXF_2_0 ) + @JacksonXmlProperty( localName = "cogsDimensionConstraint", namespace = DxfNamespaces.DXF_2_0 ) public Set getCogsDimensionConstraints() { return cogsDimensionConstraints; @@ -490,8 +492,8 @@ } @JsonProperty - @JsonView({ DetailedView.class, ExportView.class }) - @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0) + @JsonView( { DetailedView.class, ExportView.class } ) + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) public String getUsername() { return username; @@ -503,8 +505,8 @@ } @JsonProperty - @JsonView({ DetailedView.class, ExportView.class }) - @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0) + @JsonView( { DetailedView.class, ExportView.class } ) + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) public String getOpenId() { return openId; @@ -516,8 +518,8 @@ } @JsonProperty - @JsonView({ DetailedView.class, ExportView.class }) - @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0) + @JsonView( { DetailedView.class, ExportView.class } ) + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) public Date getLastLogin() { return lastLogin; @@ -559,8 +561,8 @@ } @JsonProperty - @JsonView({ DetailedView.class, ExportView.class }) - @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0) + @JsonView( { DetailedView.class, ExportView.class } ) + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) public boolean isSelfRegistered() { return selfRegistered; @@ -572,8 +574,8 @@ } @JsonProperty - @JsonView({ DetailedView.class, ExportView.class }) - @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0) + @JsonView( { DetailedView.class, ExportView.class } ) + @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) public boolean isDisabled() { return disabled; @@ -585,6 +587,28 @@ } @Override + public void mergeWith( IdentifiableObject other ) + { + super.mergeWith( other ); + + if ( other.getClass().isInstance( this ) ) + { + UserCredentials userCredentials = (UserCredentials) other; + + openId = userCredentials.getOpenId(); + disabled = userCredentials.isDisabled(); + selfRegistered = userCredentials.isSelfRegistered(); + password = StringUtils.isEmpty( userCredentials.getPassword() ) ? password : userCredentials.getPassword(); + + cogsDimensionConstraints.clear(); + cogsDimensionConstraints.addAll( userCredentials.getCogsDimensionConstraints() ); + + userAuthorityGroups.clear(); + userAuthorityGroups.addAll( userCredentials.getUserAuthorityGroups() ); + } + } + + @Override public String toString() { return "UserCredentials{" + === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/importers/DefaultIdentifiableObjectImporter.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/importers/DefaultIdentifiableObjectImporter.java 2014-04-02 10:37:26 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/importers/DefaultIdentifiableObjectImporter.java 2014-04-15 07:43:20 +0000 @@ -112,7 +112,7 @@ @Autowired private AclService aclService; - @Autowired(required = false) + @Autowired( required = false ) private List> objectHandlers; //------------------------------------------------------------------------------------------------------- @@ -582,7 +582,9 @@ { Map> collectionFieldsUserCredentials = detachCollectionFields( userCredentials ); + ((User) persistedObject).getUserCredentials().mergeWith( userCredentials ); reattachCollectionFields( ((User) persistedObject).getUserCredentials(), collectionFieldsUserCredentials ); + sessionFactory.getCurrentSession().saveOrUpdate( ((User) persistedObject).getUserCredentials() ); }