use of org.hisp.dhis.schema.Property in project dhis2-core by dhis2.
the class SchemaToDataFetcher method mapUniqueFields.
@SuppressWarnings("unchecked")
private List<? extends IdentifiableObject> mapUniqueFields(Schema schema) {
List<Property> uniqueProperties = schema.getUniqueProperties();
List objects = new ArrayList();
if (!uniqueProperties.isEmpty()) {
final String fields = extractUniqueFields(uniqueProperties);
objects = sessionFactory.getCurrentSession().createQuery("SELECT " + fields + " from " + schema.getKlass().getSimpleName()).setReadOnly(true).getResultList();
}
// or a "simple" List if only one columns is used in the query
return uniqueProperties.size() == 1 ? handleSingleColumn(objects, uniqueProperties, schema) : handleMultipleColumn(objects, uniqueProperties, schema);
}
use of org.hisp.dhis.schema.Property in project dhis2-core by dhis2.
the class OrderTest method setUp.
@BeforeEach
void setUp() throws Exception {
object1 = new TestObject();
object2 = new TestObject();
PropertyDescriptor propertyDescriptor = PropertyUtils.getPropertyDescriptor(object1, "value");
valueProperty = new Property(String.class, propertyDescriptor.getReadMethod(), propertyDescriptor.getWriteMethod());
valueProperty.setName("value");
orderAsc = new Order(valueProperty, Direction.ASCENDING);
orderDesc = new Order(valueProperty, Direction.DESCENDING);
}
use of org.hisp.dhis.schema.Property in project dhis2-core by dhis2.
the class DefaultQueryPlannerTest method verifyPlanQueryReturnsPersistedAndNotPersistedQueries.
@Test
void verifyPlanQueryReturnsPersistedAndNotPersistedQueries() 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);
Schema schema = new OrganisationUnitSchemaDescriptor().getSchema();
schema.setPropertyMap(propertyMap);
// Add restriction
Query query = Query.from(schema, Junction.Type.OR);
query.add(Restrictions.eq("id", 100L));
// method under test
QueryPlan queryPlan = subject.planQuery(query, true);
Query persistedQuery = queryPlan.getPersistedQuery();
assertTrue(persistedQuery.isPlannedQuery());
assertEquals(persistedQuery.getCriterions().size(), 1);
assertEquals(persistedQuery.getFirstResult().intValue(), 0);
assertEquals(persistedQuery.getMaxResults().intValue(), Integer.MAX_VALUE);
assertEquals(persistedQuery.getRootJunctionType(), Junction.Type.OR);
Query nonPersistedQuery = queryPlan.getNonPersistedQuery();
assertEquals(nonPersistedQuery.getCriterions().size(), 0);
assertTrue(nonPersistedQuery.isPlannedQuery());
}
use of org.hisp.dhis.schema.Property in project dhis2-core by dhis2.
the class DefaultQueryPlannerTest method verifyPlanQueryReturnsNonPersistedQueryWithCriterion2.
@Test
void verifyPlanQueryReturnsNonPersistedQueryWithCriterion2() 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);
addProperty(propertyMap, attribute, "name", true);
Schema schema = new OrganisationUnitSchemaDescriptor().getSchema();
schema.setPropertyMap(propertyMap);
// Add restrictions on a non persisted field
Query query = Query.from(schema, Junction.Type.AND);
query.setMaxResults(10);
query.setFirstResult(500);
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(), 2);
assertEquals(persistedQuery.getFirstResult().intValue(), 500);
assertEquals(persistedQuery.getMaxResults().intValue(), 10);
assertEquals(persistedQuery.getRootJunctionType(), Junction.Type.AND);
Query nonPersistedQuery = queryPlan.getNonPersistedQuery();
assertEquals(nonPersistedQuery.getCriterions().size(), 0);
assertTrue(nonPersistedQuery.isPlannedQuery());
assertEquals(nonPersistedQuery.getRootJunctionType(), Junction.Type.AND);
}
use of org.hisp.dhis.schema.Property in project dhis2-core by dhis2.
the class DefaultQueryPlannerTest method addProperty.
private void addProperty(Map<String, Property> propertyMap, Object bean, String property, boolean persisted) throws Exception {
PropertyDescriptor pd = PropertyUtils.getPropertyDescriptor(bean, property);
Property p = new Property(pd.getPropertyType(), pd.getReadMethod(), pd.getWriteMethod());
p.setName(pd.getName());
p.setReadable(true);
p.setPersisted(persisted);
propertyMap.put(pd.getName(), p);
}
Aggregations