@Override public void deleteProgram( Program program ) { Collection<ProgramIndicator> indicators = new HashSet<ProgramIndicator>( program.getProgramIndicators() ); Iterator<ProgramIndicator> iter = indicators.iterator(); while ( iter.hasNext() ) { ProgramIndicator indicator = iter.next(); programIndicatorService.deleteProgramIndicator( indicator ); } } }
@Override public Map<ProgramIndicator, String> getInvalidProgramIndicatorExpressions() { Map<ProgramIndicator, String> invalidExpressions = new HashMap<>(); invalidExpressions = programIndicatorService.getAllProgramIndicators().stream() .filter( pi -> ! ProgramIndicator.VALID.equals( programIndicatorService.expressionIsValid( pi.getExpression() ) ) ) .collect( Collectors.toMap( pi -> pi, pi -> pi.getExpression() ) ); return invalidExpressions; }
@Override public Map<ProgramIndicator, String> getInvalidProgramIndicatorFilters() { Map<ProgramIndicator, String> invalidFilters = new HashMap<>(); invalidFilters = programIndicatorService.getAllProgramIndicators().stream() .filter( pi -> ( ! ( pi.hasFilter() ? ProgramIndicator.VALID.equals( programIndicatorService.filterIsValid( pi.getFilter() ) ) : true ) ) ) .collect( Collectors.toMap( pi -> pi, pi -> pi.getFilter() ) ); return invalidFilters; } }
String filter = programIndicatorService.getAnalyticsSQl( params.getProgramIndicator().getFilter(), params.getProgramIndicator(), false, params.getEarliestStartDate(), params.getLatestEndDate() ); String anyValueFilter = programIndicatorService.getAnyValueExistsClauseAnalyticsSql( params.getProgramIndicator().getExpression(), params.getProgramIndicator().getAnalyticsType() );
/** * Returns an SQL to select the expression or column of the item. If the item is * a program indicator, the program indicator expression is returned; if the item * is a data element, the item column name is returned. * * @param item the {@link QueryItem}. */ protected String getSelectSql( QueryItem item, Date startDate, Date endDate ) { if ( item.isProgramIndicator() ) { ProgramIndicator programIndicator = (ProgramIndicator)item.getItem(); return programIndicatorService.getAnalyticsSQl( programIndicator.getExpression(), programIndicator, startDate, endDate ); } else { return getColumn( item ); } }
@Override public void deleteProgramIndicator( ProgramIndicator programIndicator) { for ( ProgramIndicatorGroup group : programIndicator.getGroups() ) { group.getMembers().remove( programIndicator ); programIndicatorService.updateProgramIndicatorGroup( group ); } } }
private QueryItem getQueryItemFromDimension( String dimension, Program program ) { String[] split = dimension.split( ITEM_SEP ); String item = split[0]; LegendSet legendSet = split.length > 1 && split[1] != null ? legendSetService.getLegendSet( split[1] ) : null; DataElement de = dataElementService.getDataElement( item ); if ( de != null && program.containsDataElement( de ) ) { ValueType valueType = legendSet != null ? ValueType.TEXT : de.getValueType(); return new QueryItem( de, legendSet, valueType, de.getAggregationType(), de.getOptionSet() ); } TrackedEntityAttribute at = attributeService.getTrackedEntityAttribute( item ); if ( at != null && program.containsAttribute( at ) ) { ValueType valueType = legendSet != null ? ValueType.TEXT : at.getValueType(); return new QueryItem( at, legendSet, valueType, at.getAggregationType(), at.getOptionSet() ); } ProgramIndicator pi = programIndicatorService.getProgramIndicatorByUid( item ); if ( pi != null && program.getProgramIndicators().contains( pi ) ) { return new QueryItem( pi, legendSet, ValueType.NUMBER, pi.getAggregationType(), null ); } throw new IllegalQueryException( "Item identifier does not reference any data element, attribute or indicator part of the program: " + item ); }
columns.add( "(" + programIndicatorService.getAnalyticsSQl( in.getExpression(), in, params.getEarliestStartDate(), params.getLatestEndDate() ) + ")" + asClause );
String expression = programIndicatorService.getAnalyticsSQl( params.getProgramIndicator().getExpression(), params.getProgramIndicator(), params.getEarliestStartDate(), params.getLatestEndDate() );
String filter = programIndicatorService.getAnalyticsSQl( params.getProgramIndicator().getFilter(), params.getProgramIndicator(), false, params.getEarliestStartDate(), params.getLatestEndDate() );