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;
}
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;
}
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;
}
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();
}
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();
}
Aggregations