/** * Gets the PeriodTypeExtended from the context object. If not found, * creates a new PeriodTypeExtended object, puts it into the context object, * and returns it. * * @param periodTypeXMap period type map to extended period types. * @param periodType period type to search for * @return period type extended from the context object */ private PeriodTypeExtended getOrCreatePeriodTypeExtended( Map<PeriodType, PeriodTypeExtended> periodTypeXMap, PeriodType periodType ) { PeriodTypeExtended periodTypeX = periodTypeXMap.get( periodType ); if ( periodTypeX == null ) { periodTypeX = new PeriodTypeExtended( periodType ); periodTypeXMap.put( periodType, periodTypeX ); } return periodTypeX; } }
/** * For each period type, allow all the longer period types in validation * queries. * * @param periodTypeXs period types to generate allowed period types from. */ private void generateAllowedPeriods( Collection<PeriodTypeExtended> periodTypeXs ) { for ( PeriodTypeExtended p : periodTypeXs ) { for ( PeriodTypeExtended q : periodTypeXs ) { if ( q.getPeriodType().getFrequencyOrder() >= p.getPeriodType().getFrequencyOrder() ) { p.getAllowedPeriodTypes().add( q.getPeriodType() ); } } } }
params.setDataElements( periodTypeX.getDataElements() ); params.setDataElementOperands( periodTypeX.getDataElementOperands() ); params.setIncludedDate( period.getStartDate() ); params.setOrganisationUnits( new HashSet<>( orgUnits ) ); params.setPeriodTypes( periodTypeX.getAllowedPeriodTypes() ); params.setCoDimensionConstraints( context.getCoDimensionConstraints() ); params.setCogDimensionConstraints( context.getCogDimensionConstraints() ); DataElement dataElement = periodTypeX.getDataElementIdMap().get( dv.getDataElementId() ); String deoIdKey = periodTypeX.getDeoIds( dv.getDataElementId(), dv.getCategoryOptionComboId() ); DataElementOperand dataElementOperand = periodTypeX.getDataElementOperandIdMap().get( deoIdKey ); Period p = getPeriod( dv.getPeriodId() ); int orgUnitId = dv.getSourceId();
periodX.getRuleXs().add( new ValidationRuleExtended( rule ) ); periodTypeX.addDataElementOperand( deo ); periodTypeX.addDataElement( deo.getDataElement() ); periodTypeX.getEventItems().add( item ); periodTypeX.getEventItemsWithoutAttributeOptions().add( item );
public void addDataElementOperand( DataElementOperand deo ) { dataElementOperands.add( deo ); String deoIdKey = getDeoIds( deo.getDataElement().getId(), deo.getCategoryOptionCombo().getId() ); dataElementOperandIdMap.put( deoIdKey, deo ); }
/** * Adds Periods to the context, grouped by period type. * * @param periodTypeXMap period type map to extended period types. * @param periods periods to group and add. */ private void addPeriodsToContext( Map<PeriodType, PeriodTypeExtended> periodTypeXMap, Collection<Period> periods ) { for ( Period period : periods ) { PeriodTypeExtended periodTypeX = getOrCreatePeriodTypeExtended( periodTypeXMap, period.getPeriodType() ); periodTypeX.addPeriod( period ); } generateAllowedPeriods( periodTypeXMap.values() ); }