Search in sources :

Example 86 with Property

use of org.hisp.dhis.schema.Property in project dhis2-core by dhis2.

the class QueryUtilsTest method setUp.

@BeforeEach
void setUp() {
    schema = new Schema(Attribute.class, "attribute", "attributes");
    Property property = new Property(String.class);
    property.setName("value1");
    property.setSimple(true);
    schema.addProperty(property);
    property = new Property(String.class);
    property.setName("value2");
    property.setSimple(false);
    schema.addProperty(property);
    property = new Property(String.class);
    property.setName("value3");
    property.setSimple(true);
    schema.addProperty(property);
    property = new Property(Integer.class);
    property.setName("value4");
    property.setSimple(true);
    schema.addProperty(property);
    property = new Property(String.class);
    property.setName("value5");
    property.setSimple(true);
    schema.addProperty(property);
    property = new Property(String.class);
    property.setName("value6");
    property.setSimple(true);
    schema.addProperty(property);
    property = new Property(String.class);
    property.setName("value7");
    property.setSimple(true);
    schema.addProperty(property);
}
Also used : Attribute(org.hisp.dhis.attribute.Attribute) Schema(org.hisp.dhis.schema.Schema) Property(org.hisp.dhis.schema.Property) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 87 with Property

use of org.hisp.dhis.schema.Property in project dhis2-core by dhis2.

the class DefaultQueryPlannerTest method verifyPlanQueryReturnsNonPersistedQueryWithCriterion.

/*
     * Verifies that when adding criteria on non-persisted fields and using OR
     * junction type the planner returns a "non Persisted Query" containing all
     * the criteria - since it will execute filter on the entire dataset from
     * the target table
     */
@Test
void verifyPlanQueryReturnsNonPersistedQueryWithCriterion() throws Exception {
    // Create schema with attributes
    final Attribute attribute = new Attribute();
    final Map<String, Property> propertyMap = new HashMap<>();
    addProperty(propertyMap, attribute, "id", true);
    addProperty(propertyMap, attribute, "uid", true);
    // note that this is a non-persisted attribute!
    addProperty(propertyMap, attribute, "name", false);
    Schema schema = new OrganisationUnitSchemaDescriptor().getSchema();
    schema.setPropertyMap(propertyMap);
    // Add restrictions on a non persisted field
    Query query = Query.from(schema, Junction.Type.OR);
    // adding a criterion on a non-persisted attribute
    query.add(Restrictions.eq("name", "test"));
    query.add(Restrictions.eq("id", 100));
    // method under test
    QueryPlan queryPlan = subject.planQuery(query, false);
    Query persistedQuery = queryPlan.getPersistedQuery();
    assertTrue(persistedQuery.isPlannedQuery());
    assertEquals(persistedQuery.getCriterions().size(), 0);
    assertEquals(persistedQuery.getFirstResult().intValue(), 0);
    assertEquals(persistedQuery.getMaxResults().intValue(), Integer.MAX_VALUE);
    assertEquals(persistedQuery.getRootJunctionType(), Junction.Type.AND);
    Query nonPersistedQuery = queryPlan.getNonPersistedQuery();
    assertEquals(nonPersistedQuery.getCriterions().size(), 2);
    assertTrue(nonPersistedQuery.isPlannedQuery());
    assertEquals(nonPersistedQuery.getRootJunctionType(), Junction.Type.OR);
}
Also used : OrganisationUnitSchemaDescriptor(org.hisp.dhis.schema.descriptors.OrganisationUnitSchemaDescriptor) Query(org.hisp.dhis.query.Query) Attribute(org.hisp.dhis.attribute.Attribute) HashMap(java.util.HashMap) Schema(org.hisp.dhis.schema.Schema) Property(org.hisp.dhis.schema.Property) Test(org.junit.jupiter.api.Test)

Example 88 with Property

use of org.hisp.dhis.schema.Property in project dhis2-core by dhis2.

the class QueryTest method createProperty.

private Property createProperty(Class<?> klazz, String name, boolean simple, boolean persisted) {
    Property property = new Property(klazz);
    property.setName(name);
    property.setFieldName(name);
    property.setSimple(simple);
    property.setPersisted(persisted);
    return property;
}
Also used : Property(org.hisp.dhis.schema.Property)

Example 89 with Property

use of org.hisp.dhis.schema.Property in project dhis2-core by dhis2.

the class JpaQueryUtilsTest method createSelectOrderExpressionSingle.

@Test
void createSelectOrderExpressionSingle() {
    final Property property1 = new Property();
    property1.setName("value1");
    property1.setSimple(true);
    property1.setKlass(String.class);
    property1.setPersisted(true);
    Assertions.assertEquals("lower(value1)", JpaQueryUtils.createSelectOrderExpression(Collections.singletonList(new Order(property1, Direction.ASCENDING).ignoreCase()), null));
}
Also used : Property(org.hisp.dhis.schema.Property) Test(org.junit.jupiter.api.Test)

Example 90 with Property

use of org.hisp.dhis.schema.Property in project dhis2-core by dhis2.

the class JpaQueryUtilsTest method createOrderExpressionAlias.

@Test
void createOrderExpressionAlias() {
    final Property property1 = new Property();
    property1.setName("value1");
    property1.setSimple(true);
    property1.setPersisted(true);
    Assertions.assertEquals("x.value1 asc", JpaQueryUtils.createOrderExpression(Collections.singletonList(new Order(property1, Direction.ASCENDING)), "x"));
}
Also used : Property(org.hisp.dhis.schema.Property) Test(org.junit.jupiter.api.Test)

Aggregations

Property (org.hisp.dhis.schema.Property)126 Schema (org.hisp.dhis.schema.Schema)69 IdentifiableObject (org.hisp.dhis.common.IdentifiableObject)36 ArrayList (java.util.ArrayList)32 HashMap (java.util.HashMap)26 Collection (java.util.Collection)21 BaseIdentifiableObject (org.hisp.dhis.common.BaseIdentifiableObject)21 List (java.util.List)20 Map (java.util.Map)16 Test (org.junit.jupiter.api.Test)16 Attribute (org.hisp.dhis.attribute.Attribute)14 ReflectionUtils (org.hisp.dhis.system.util.ReflectionUtils)14 Collectors (java.util.stream.Collectors)13 User (org.hisp.dhis.user.User)13 JsonProperty (com.fasterxml.jackson.annotation.JsonProperty)12 EmbeddedObject (org.hisp.dhis.common.EmbeddedObject)12 SimpleNode (org.hisp.dhis.node.types.SimpleNode)12 Query (org.hisp.dhis.query.Query)12 SchemaService (org.hisp.dhis.schema.SchemaService)12 Transactional (org.springframework.transaction.annotation.Transactional)12