Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
150 commits
Select commit Hold shift + click to select a range
7f86e82
fix: Update code
larshelge Jun 19, 2025
43a9435
fix: Update code
larshelge Jun 19, 2025
53b8c07
merge: Merge from master branch
larshelge Jun 19, 2025
7250623
fix: Update code
larshelge Jun 19, 2025
bbbd73f
merge: Merge from master branch
larshelge Jun 19, 2025
33478ca
fix: Update code
larshelge Jun 19, 2025
38bcdeb
merge: Merge from master branch
larshelge Jun 19, 2025
09e3a3b
merge: Merge from master branch
larshelge Jun 19, 2025
7dda231
fix: Update code
larshelge Jun 19, 2025
77326a6
fix: Update code
larshelge Jun 19, 2025
3b99ab1
fix: Update code
larshelge Jun 19, 2025
964c56c
fix: Update code
larshelge Jun 19, 2025
be0a0e0
fix: Update code
larshelge Jun 19, 2025
169cd34
merge: Merge from master branch
larshelge Jun 19, 2025
121205e
fix: Update code
larshelge Jun 22, 2025
adadaa8
fix: Update code
larshelge Jun 22, 2025
439f87f
merge: Merge from master branch
larshelge Jun 22, 2025
1f0b6ee
fix: Update code
larshelge Jun 23, 2025
5547900
merge: Merge from master branch
larshelge Jun 23, 2025
e421810
merge: Merge from master branch
larshelge Jun 23, 2025
3a42475
fix: Update code
larshelge Jun 24, 2025
22054a6
fix: Update code
larshelge Jun 24, 2025
c9e7676
merge: Merge from master branch
larshelge Jun 24, 2025
06dc5b1
merge: Merge from master branch
larshelge Jun 24, 2025
06a909e
fix: Update code
larshelge Jun 24, 2025
fafcc63
merge: Merge from master branch
larshelge Jun 24, 2025
66c3d78
fix: Update code
larshelge Jun 24, 2025
9f11b41
merge: Merge from master branch
larshelge Jun 24, 2025
0d9a9e1
fix: Update code
larshelge Jun 24, 2025
edebfe1
fix: Update code
larshelge Jun 24, 2025
e1556ff
Merge branch 'master' into lars-dev
larshelge Jun 24, 2025
2477fac
fix: Update code
larshelge Jun 24, 2025
a0e9cd0
fix: Update code
larshelge Jun 24, 2025
a7c29de
merge: Merge from master branch
larshelge Jun 24, 2025
f277f3c
fix: Update code
larshelge Jun 24, 2025
20519d8
fix: Update code
larshelge Jun 24, 2025
e0a0f4b
fix: Update code
larshelge Jun 24, 2025
9ac16d8
merge: Merge from master branch
larshelge Jun 24, 2025
b90b2c4
fix: Update code
larshelge Jun 24, 2025
b2fa6ad
fix: Update code
larshelge Jun 24, 2025
3d0a742
merge: Merge from master branch
larshelge Jun 24, 2025
468fa01
fix: Update code
larshelge Jun 25, 2025
1903e51
fix: Update code
larshelge Jun 25, 2025
d915b22
merge: Merge from master branch
larshelge Jun 25, 2025
768354e
fix: Update code
larshelge Jun 26, 2025
2613840
fix: Update code
larshelge Jun 26, 2025
e4f8851
merge: Merge from master branch
larshelge Jun 26, 2025
8f7ad3b
fix: Update code
larshelge Jun 27, 2025
62f9a06
merge: Merge from master branch
larshelge Jun 27, 2025
0cdae50
fix: Update code
larshelge Jun 28, 2025
63a6adc
fix: Update code
larshelge Jun 28, 2025
f2294dd
fix: Update code
larshelge Jun 28, 2025
98745be
fix: Update code
larshelge Jun 28, 2025
4a52be0
fix: Update code
larshelge Jun 28, 2025
0b0f4c3
fix: Update code
larshelge Jun 28, 2025
3484382
fix: Update code
larshelge Jun 28, 2025
9d516ec
fix: Update code
larshelge Jun 30, 2025
df17209
fix: Update code
larshelge Jun 30, 2025
91b697f
merge: Merge from master branch
larshelge Jun 30, 2025
213eb0b
fix: Update code
larshelge Jun 30, 2025
5e79dcb
fix: Update code
larshelge Jun 30, 2025
fafdfb7
fix: Update code
larshelge Jun 30, 2025
5ff3358
fix: Update code
larshelge Jun 30, 2025
0ab8a2c
fix: Update code
larshelge Jun 30, 2025
d05bfae
merge: Merge from master branch
larshelge Jun 30, 2025
3a0115f
fix: Update code
larshelge Jun 30, 2025
5469073
merge: Merge from master branch
larshelge Jun 30, 2025
54549f2
fix: Update code
larshelge Jun 30, 2025
acdf8cd
merge: Merge from master branch
larshelge Jun 30, 2025
650eeaa
fix: Update code
larshelge Jun 30, 2025
4b69818
fix: Update code
larshelge Jun 30, 2025
824bb6e
merge: Merge from master branch
larshelge Jun 30, 2025
6521c11
fix: Update code
larshelge Jul 3, 2025
c4a5d52
fix: Update code
larshelge Jul 3, 2025
52e08c8
merge: Merge from master branch
larshelge Jul 3, 2025
55f4166
fix: Update code
larshelge Jul 3, 2025
ba57bff
fix: Update code
larshelge Jul 3, 2025
d2c9871
fix: Update code
larshelge Jul 3, 2025
23a01de
fix: Update code
larshelge Jul 3, 2025
e951a4e
merge: Merge from master branch
larshelge Jul 3, 2025
137cd1f
fix: Update code
larshelge Jul 3, 2025
23b25b3
merge: Merge from master branch
larshelge Jul 3, 2025
fe06194
merge: Merge from master branch
larshelge Jul 3, 2025
1da8bf9
fix: Update code
larshelge Jul 3, 2025
eb3fb7e
fix: Update code
larshelge Jul 3, 2025
fa6ca5d
merge: Merge from master branch
larshelge Jul 3, 2025
4abdb50
fix: Update code
larshelge Jul 4, 2025
e524d08
fix: Update code
larshelge Jul 4, 2025
e9a670f
fix: Update code
larshelge Jul 4, 2025
7ed8ed3
fix: Update code
larshelge Jul 4, 2025
f642ee9
fix: Update code
larshelge Jul 4, 2025
3d53320
fix: Update code
larshelge Jul 4, 2025
1aba86f
merge: Merge from master branch
larshelge Jul 4, 2025
e4cdfd9
fix: Update code
larshelge Jul 4, 2025
c4be404
merge: Merge from master branch
larshelge Jul 4, 2025
8c9a1d7
merge: Merge from master branch
larshelge Jul 4, 2025
87ec844
fix: Update code
larshelge Jul 5, 2025
6ad545a
merge: Merge from master branch
larshelge Jul 5, 2025
caadcc5
fix: Update code
larshelge Jul 5, 2025
da51a30
merge: Merge from master branch
larshelge Jul 5, 2025
e6f143e
Merge branch 'master' into lars-dev
larshelge Jul 5, 2025
a7544c6
fix: Update code
larshelge Jul 5, 2025
ea41e77
fix: Update code
larshelge Jul 5, 2025
2af60ad
merge: Merge from master branch
larshelge Jul 5, 2025
7ebf090
fix: Update code
larshelge Jul 6, 2025
3f68c0d
fix: Update code
larshelge Jul 6, 2025
4be971c
merge: Merge from master branch
larshelge Jul 6, 2025
51f747a
fix: Update code
larshelge Jul 6, 2025
569ae32
merge: Merge from master branch
larshelge Jul 6, 2025
bd14021
fix: Update code
larshelge Jul 6, 2025
37633bf
merge: Merge from master branch
larshelge Jul 6, 2025
80aca75
fix: Update code
larshelge Jul 6, 2025
aec9d1e
merge: Merge from master branch
larshelge Jul 6, 2025
8099226
fix: Update code
larshelge Jul 6, 2025
fe4ddfa
merge: Merge from master branch
larshelge Jul 6, 2025
f036332
fix: Update code
larshelge Jul 6, 2025
d3d6c0b
fix: Update code
larshelge Jul 6, 2025
087c5a9
fix: Update code
larshelge Jul 6, 2025
b718c2b
fix: Update code
larshelge Jul 6, 2025
9ab9ae7
fix: Update code
larshelge Jul 6, 2025
944e956
merge: Merge from master branch
larshelge Jul 6, 2025
b26db92
fix: Update code
larshelge Jul 6, 2025
12db78b
fix: Update code
larshelge Jul 6, 2025
0854c36
fix: Update code
larshelge Jul 6, 2025
53cb5b6
fix: Update code
larshelge Jul 15, 2025
4b835f2
fix: Update code
larshelge Jul 15, 2025
2f78c1f
fix: Update code
larshelge Jul 15, 2025
69b1490
fix: Update code
larshelge Jul 15, 2025
5a9d128
merge: Merge from master branch
larshelge Jul 15, 2025
92780d4
fix: Update code
larshelge Jul 15, 2025
54929ec
fix: Update code
larshelge Jul 15, 2025
1d984f0
fix: Update code
larshelge Jul 15, 2025
2acd8d4
fix: Update code
larshelge Jul 15, 2025
cc5b3f7
merge: Merge from master branch
larshelge Jul 15, 2025
119fc8b
fix: Update code
larshelge Jul 15, 2025
1f70a85
fix: Update code
larshelge Jul 15, 2025
96cd15f
fix: Update code
larshelge Jul 15, 2025
4a5b759
merge: Merge from master branch
larshelge Jul 15, 2025
ecaa027
fix: Update code
larshelge Jul 15, 2025
d6354db
fix: Update code
larshelge Jul 15, 2025
be78a87
merge: Merge from master branch
larshelge Jul 15, 2025
df9aef4
fix: Update code
larshelge Jul 15, 2025
6cb9f58
merge: Merge from master branch
larshelge Jul 15, 2025
08a4256
fix: Update code
larshelge Jul 15, 2025
644a85f
merge: Merge from master branch
larshelge Jul 15, 2025
c8ad39d
fix: Update code
larshelge Jul 15, 2025
92ff69d
fix: Update code
larshelge Jul 15, 2025
6dd34a9
fix: Update code
larshelge Jul 15, 2025
03f1eec
fix: Update code
larshelge Jul 15, 2025
a3d8c6d
fix: Update code
larshelge Jul 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 33 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,19 +195,50 @@ boolean success = response.getHttpStatus().is2xxSuccessful();
String message = response.getMessage();
```

## Metadata objects

This section explains generic metadata object operations. In scenarios where dynamic handling of metadata is needed, several generic metadata objects are available.

To create a metadata object, in this case a data element:

```java
DataElement dataElement = new DataElement();
dataElement.setId("n5U1wOiyoUr");
dataElement.setCode("BCG_DOSE");
dataElement.setName("BCG doses given");
dataElement.setShortName("BCG doses given");
dataElement.setValueType(ValueType.INTEGER);
dataElement.setAggregationType(AggregationType.SUM);
dataElement.setDomainType(DataDomain.AGGREGATE);

ObjectResponse response = dhis2.saveMetadataObject(dataElement);
```

To update a metadata object:

```java
ObjectResponse response = dhis2.updateMetadataObject(dataElement);
```

To remove a metadata object:

```java
ObjectResponse response = dhis2.removeMetadataObject(dataElement);
```

## Users

This section explains operations for DHIS2 users.

### Get user

To get a user by ID.
To get a user by ID:

```java
User user = dhis2.getUser("xE7jOejl9FI");
```

To get a user by username.
To get a user by username:

```java
List<User> users = dhis2.getUsers(Query.instance()
Expand Down
97 changes: 97 additions & 0 deletions src/test/java/org/hisp/dhis/MetadataObjectApiTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
/*
* Copyright (c) 2004-2025, University of Oslo
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* Neither the name of the HISP project nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.hisp.dhis;

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.hisp.dhis.model.AggregationType;
import org.hisp.dhis.model.DataDomain;
import org.hisp.dhis.model.DataElement;
import org.hisp.dhis.model.MetadataEntity;
import org.hisp.dhis.model.ValueType;
import org.hisp.dhis.response.HttpStatus;
import org.hisp.dhis.response.Status;
import org.hisp.dhis.response.object.ObjectResponse;
import org.hisp.dhis.support.TestTags;
import org.hisp.dhis.util.UidUtils;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

@Tag(TestTags.INTEGRATION)
class MetadataObjectApiTest {
@Test
void testSaveRemove() {
Dhis2 dhis2 = new Dhis2(TestFixture.DEFAULT_CONFIG);

String uidA = UidUtils.generateUid();
String uidB = UidUtils.generateUid();
MetadataEntity entity = MetadataEntity.DATA_ELEMENT;
DataElement object = getDataElement(uidA);

// Save

ObjectResponse createResponse = dhis2.saveMetadataObject(object);

assertEquals(Status.OK, createResponse.getStatus());
assertEquals(HttpStatus.CREATED, createResponse.getHttpStatus());

// Update

object.setName(uidB);

ObjectResponse updateResponse = dhis2.updateMetadataObject(object);

assertEquals(Status.OK, updateResponse.getStatus());
assertEquals(HttpStatus.OK, updateResponse.getHttpStatus());

// Remove

ObjectResponse removeResponse = dhis2.removeMetadataObject(entity, uidA);

assertEquals(Status.OK, removeResponse.getStatus());
assertEquals(HttpStatus.OK, removeResponse.getHttpStatus());
}

/**
* Creates a {@link DataElement}.
*
* @param uid the identifier.
* @return a {@link DataElement}.
*/
private DataElement getDataElement(String uid) {
DataElement object = new DataElement();
object.setId(uid);
object.setCode(uid);
object.setName(uid);
object.setShortName(uid);
object.setValueType(ValueType.INTEGER);
object.setAggregationType(AggregationType.SUM);
object.setDomainType(DataDomain.AGGREGATE);
return object;
}
}