Search in sources :

Example 81 with Schema

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

the class SqlViewSchemaDescriptor method getSchema.

@Override
public Schema getSchema() {
    Schema schema = new Schema(SqlView.class, SINGULAR, PLURAL);
    schema.setRelativeApiEndpoint(API_ENDPOINT);
    schema.setOrder(1010);
    schema.getAuthorities().add(new Authority(AuthorityType.CREATE_PUBLIC, Lists.newArrayList("F_SQLVIEW_PUBLIC_ADD")));
    schema.getAuthorities().add(new Authority(AuthorityType.CREATE_PRIVATE, Lists.newArrayList("F_SQLVIEW_PRIVATE_ADD")));
    schema.getAuthorities().add(new Authority(AuthorityType.DELETE, Lists.newArrayList("F_SQLVIEW_DELETE")));
    schema.getAuthorities().add(new Authority(AuthorityType.EXTERNALIZE, Lists.newArrayList("F_SQLVIEW_EXTERNAL")));
    return schema;
}
Also used : Authority(org.hisp.dhis.security.Authority) Schema(org.hisp.dhis.schema.Schema)

Example 82 with Schema

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

the class DataElementOperandController method getObjectList.

@GetMapping
@SuppressWarnings("unchecked")
@ResponseBody
public RootNode getObjectList(@RequestParam Map<String, String> rpParameters, OrderParams orderParams) throws QueryParserException {
    Schema schema = schemaService.getDynamicSchema(DataElementOperand.class);
    List<String> fields = Lists.newArrayList(contextService.getParameterValues("fields"));
    List<String> filters = Lists.newArrayList(contextService.getParameterValues("filter"));
    List<Order> orders = orderParams.getOrders(schema);
    if (fields.isEmpty()) {
        fields.addAll(Preset.ALL.getFields());
    }
    WebOptions options = new WebOptions(rpParameters);
    WebMetadata metadata = new WebMetadata();
    List<DataElementOperand> dataElementOperands;
    if (options.isTrue("persisted")) {
        dataElementOperands = Lists.newArrayList(manager.getAll(DataElementOperand.class));
    } else {
        boolean totals = options.isTrue("totals");
        String deg = CollectionUtils.popStartsWith(filters, "dataElement.dataElementGroups.id:eq:");
        deg = deg != null ? deg.substring("dataElement.dataElementGroups.id:eq:".length()) : null;
        String ds = options.get("dataSet");
        if (deg != null) {
            DataElementGroup dataElementGroup = manager.get(DataElementGroup.class, deg);
            dataElementOperands = dataElementCategoryService.getOperands(dataElementGroup.getMembers(), totals);
        } else if (ds != null) {
            DataSet dataSet = manager.get(DataSet.class, ds);
            dataElementOperands = dataElementCategoryService.getOperands(dataSet, totals);
        } else {
            List<DataElement> dataElements = new ArrayList<>(manager.getAllSorted(DataElement.class));
            dataElementOperands = dataElementCategoryService.getOperands(dataElements, totals);
        }
    }
    Query query = queryService.getQueryFromUrl(DataElementOperand.class, filters, orders, options.getRootJunction());
    query.setDefaultOrder();
    query.setObjects(dataElementOperands);
    dataElementOperands = (List<DataElementOperand>) queryService.query(query);
    Pager pager = metadata.getPager();
    if (options.hasPaging() && pager == null) {
        pager = new Pager(options.getPage(), dataElementOperands.size(), options.getPageSize());
        linkService.generatePagerLinks(pager, DataElementOperand.class);
        dataElementOperands = PagerUtils.pageCollection(dataElementOperands, pager);
    }
    RootNode rootNode = NodeUtils.createMetadata();
    if (pager != null) {
        rootNode.addChild(NodeUtils.createPager(pager));
    }
    rootNode.addChild(fieldFilterService.filter(DataElementOperand.class, dataElementOperands, fields));
    return rootNode;
}
Also used : Order(org.hisp.dhis.query.Order) DataElementOperand(org.hisp.dhis.dataelement.DataElementOperand) RootNode(org.hisp.dhis.node.types.RootNode) Query(org.hisp.dhis.query.Query) DataSet(org.hisp.dhis.dataset.DataSet) Schema(org.hisp.dhis.schema.Schema) WebOptions(org.hisp.dhis.webapi.webdomain.WebOptions) WebMetadata(org.hisp.dhis.webapi.webdomain.WebMetadata) Pager(org.hisp.dhis.common.Pager) DataElementGroup(org.hisp.dhis.dataelement.DataElementGroup) ArrayList(java.util.ArrayList) List(java.util.List) GetMapping(org.springframework.web.bind.annotation.GetMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 83 with Schema

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

the class ProgramDataElementController method getObjectList.

@GetMapping
@SuppressWarnings("unchecked")
@ResponseBody
public RootNode getObjectList(@RequestParam Map<String, String> rpParameters, OrderParams orderParams) throws QueryParserException {
    Schema schema = schemaService.getDynamicSchema(ProgramDataElementDimensionItem.class);
    List<String> fields = Lists.newArrayList(contextService.getParameterValues("fields"));
    List<String> filters = Lists.newArrayList(contextService.getParameterValues("filter"));
    List<Order> orders = orderParams.getOrders(schema);
    if (fields.isEmpty()) {
        fields.addAll(Preset.ALL.getFields());
    }
    WebOptions options = new WebOptions(rpParameters);
    WebMetadata metadata = new WebMetadata();
    List<ProgramDataElementDimensionItem> programDataElements;
    Query query = queryService.getQueryFromUrl(ProgramDataElementDimensionItem.class, filters, orders, options.getRootJunction());
    query.setDefaultOrder();
    if (options.contains("program")) {
        String programUid = options.get("program");
        programDataElements = programService.getGeneratedProgramDataElements(programUid);
        query.setObjects(programDataElements);
    }
    programDataElements = (List<ProgramDataElementDimensionItem>) queryService.query(query);
    Pager pager = metadata.getPager();
    if (options.hasPaging() && pager == null) {
        pager = new Pager(options.getPage(), programDataElements.size(), options.getPageSize());
        programDataElements = PagerUtils.pageCollection(programDataElements, pager);
    }
    RootNode rootNode = NodeUtils.createMetadata();
    if (pager != null) {
        rootNode.addChild(NodeUtils.createPager(pager));
    }
    rootNode.addChild(fieldFilterService.filter(ProgramDataElementDimensionItem.class, programDataElements, fields));
    return rootNode;
}
Also used : Order(org.hisp.dhis.query.Order) RootNode(org.hisp.dhis.node.types.RootNode) ProgramDataElementDimensionItem(org.hisp.dhis.program.ProgramDataElementDimensionItem) Query(org.hisp.dhis.query.Query) Schema(org.hisp.dhis.schema.Schema) Pager(org.hisp.dhis.common.Pager) WebOptions(org.hisp.dhis.webapi.webdomain.WebOptions) WebMetadata(org.hisp.dhis.webapi.webdomain.WebMetadata) GetMapping(org.springframework.web.bind.annotation.GetMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 84 with Schema

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

the class CriteriaQueryEngine method query.

@Override
@SuppressWarnings("unchecked")
public List<T> query(Query query) {
    Schema schema = query.getSchema();
    InternalHibernateGenericStore<?> store = getStore((Class<? extends IdentifiableObject>) schema.getKlass());
    if (store == null) {
        return new ArrayList<>();
    }
    if (query.getUser() == null) {
        query.setUser(currentUserService.getCurrentUser());
    }
    if (!query.isPlannedQuery()) {
        QueryPlan queryPlan = queryPlanner.planQuery(query, true);
        query = queryPlan.getPersistedQuery();
    }
    DetachedCriteria detachedCriteria = buildCriteria(store.getSharingDetachedCriteria(query.getUser()), query);
    Criteria criteria = store.getCriteria();
    if (criteria == null) {
        return new ArrayList<>();
    }
    criteria.setFirstResult(query.getFirstResult());
    criteria.setMaxResults(query.getMaxResults());
    for (Order order : query.getOrders()) {
        criteria.addOrder(getHibernateOrder(order));
    }
    return criteria.add(Subqueries.propertyIn("id", detachedCriteria)).list();
}
Also used : Schema(org.hisp.dhis.schema.Schema) ArrayList(java.util.ArrayList) DetachedCriteria(org.hibernate.criterion.DetachedCriteria) Criteria(org.hibernate.Criteria) DetachedCriteria(org.hibernate.criterion.DetachedCriteria) QueryPlan(org.hisp.dhis.query.planner.QueryPlan)

Example 85 with Schema

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

the class CriteriaQueryEngine method count.

@Override
@SuppressWarnings("unchecked")
public int count(Query query) {
    Schema schema = query.getSchema();
    InternalHibernateGenericStore<?> store = getStore((Class<? extends IdentifiableObject>) schema.getKlass());
    if (store == null) {
        return 0;
    }
    if (query.getUser() == null) {
        query.setUser(currentUserService.getCurrentUser());
    }
    if (!query.isPlannedQuery()) {
        QueryPlan queryPlan = queryPlanner.planQuery(query, true);
        query = queryPlan.getPersistedQuery();
    }
    DetachedCriteria detachedCriteria = buildCriteria(store.getSharingDetachedCriteria(query.getUser()), query);
    Criteria criteria = store.getCriteria();
    if (criteria == null) {
        return 0;
    }
    return ((Number) criteria.add(Subqueries.propertyIn("id", detachedCriteria)).setProjection(Projections.countDistinct("id")).uniqueResult()).intValue();
}
Also used : Schema(org.hisp.dhis.schema.Schema) DetachedCriteria(org.hibernate.criterion.DetachedCriteria) Criteria(org.hibernate.Criteria) DetachedCriteria(org.hibernate.criterion.DetachedCriteria) QueryPlan(org.hisp.dhis.query.planner.QueryPlan)

Aggregations

Schema (org.hisp.dhis.schema.Schema)149 Authority (org.hisp.dhis.security.Authority)65 Property (org.hisp.dhis.schema.Property)29 ArrayList (java.util.ArrayList)20 IdentifiableObject (org.hisp.dhis.common.IdentifiableObject)20 Test (org.junit.Test)16 Collection (java.util.Collection)14 List (java.util.List)13 HashMap (java.util.HashMap)12 DhisSpringTest (org.hisp.dhis.DhisSpringTest)12 EmbeddedObject (org.hisp.dhis.common.EmbeddedObject)12 Map (java.util.Map)10 BaseIdentifiableObject (org.hisp.dhis.common.BaseIdentifiableObject)10 User (org.hisp.dhis.user.User)10 AnalyticalObject (org.hisp.dhis.common.AnalyticalObject)9 BaseAnalyticalObject (org.hisp.dhis.common.BaseAnalyticalObject)9 UserCredentials (org.hisp.dhis.user.UserCredentials)9 HashSet (java.util.HashSet)8 Set (java.util.Set)8 Log (org.apache.commons.logging.Log)8