Example usage for org.apache.commons.collections CollectionUtils size

List of usage examples for org.apache.commons.collections CollectionUtils size

Introduction

In this page you can find the example usage for org.apache.commons.collections CollectionUtils size.

Prototype

public static int size(Object object) 

Source Link

Document

Gets the size of the collection/iterator specified.

Usage

From source file:org.openmrs.module.clinicalsummary.evaluator.velocity.VelocityUtils.java

/**
 * Format the result based on the result datatype
 *
 * @param result the result//w w w  .  j a  va 2s .  c  o m
 * @return the String representation of the result object
 */
public String format(final Result result) {
    if (result == null)
        return StringUtils.EMPTY;

    // processing multi results
    if (CollectionUtils.size(result) > 1) {
        StringBuilder builder = new StringBuilder();
        // iterate each result and format them
        Integer counter = 0;
        while (counter < CollectionUtils.size(result)) {
            Result resultElement = result.get(counter++);
            builder.append(format(resultElement));
            if (counter < CollectionUtils.size(result))
                builder.append(", ");
        }
        return builder.toString();
    }

    if (OpenmrsUtil.nullSafeEquals(result.getDatatype(), Result.Datatype.CODED))
        return format(result.toConcept());
    else if (OpenmrsUtil.nullSafeEquals(result.getDatatype(), Result.Datatype.DATETIME))
        return format(result.toDatetime());
    else if (OpenmrsUtil.nullSafeEquals(result.getDatatype(), Result.Datatype.NUMERIC)) {
        Object object = result.getResultObject();
        if (RuleUtils.isValidObsObject(object)) {
            Concept concept = ((Obs) object).getConcept();
            if (concept.isNumeric()) {
                ConceptNumeric conceptNumeric = Context.getConceptService()
                        .getConceptNumeric(concept.getConceptId());
                if (!conceptNumeric.isPrecise())
                    return format(result.toNumber());
            }

            DecimalFormat decimalFormat = new DecimalFormat("#.00");
            return decimalFormat.format(result.toNumber());
        }
    }

    // special case hack
    if (result.getDatatype() == null && result.toDatetime() != null)
        return format(result.toDatetime());

    return StringEscapeUtils.escapeXml(result.toString());
}

From source file:org.openmrs.module.clinicalsummary.rule.adherence.DrugAdherenceRule.java

/**
 * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map)
 *//* w  w w .ja  v a 2s  .  com*/
@Override
protected Result evaluate(final LogicContext context, final Integer patientId,
        final Map<String, Object> parameters) throws LogicException {

    Result result = new Result();
    // list of all dates with missing data
    List<Date> dates = new ArrayList<Date>();
    // time frame for the adherence is six month
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MONTH, -6);
    Date sixMonthsAgo = calendar.getTime();

    EncounterWithRestrictionRule encounterWithRestrictionRule = new EncounterWithStringRestrictionRule();
    Result encounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters);

    Boolean perfect = Boolean.FALSE;

    Concept noConcept = CacheUtils.getConcept(EvaluableNameConstants.NO);
    Concept allConcept = CacheUtils.getConcept(EvaluableNameConstants.ALL);

    for (Result encounterResult : encounterResults) {

        if (encounterResult.getResultDate().after(sixMonthsAgo)) {
            ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule();

            parameters.put(EvaluableConstants.OBS_ENCOUNTER, Arrays.asList(encounterResult.getResultObject()));
            parameters.put(EvaluableConstants.OBS_CONCEPT,
                    Arrays.asList(EvaluableNameConstants.ANTIRETROVIRAL_ADHERENCE_IN_PAST_WEEK,
                            EvaluableNameConstants.OVERALL_DRUG_ADHERENCE_IN_LAST_MONTH));
            Result adherenceResults = obsWithRestrictionRule.eval(context, patientId, parameters);

            Concept arvAdherenceConcept = CacheUtils
                    .getConcept(EvaluableNameConstants.ANTIRETROVIRAL_ADHERENCE_IN_PAST_WEEK);
            Concept overallAdherenceConcept = CacheUtils
                    .getConcept(EvaluableNameConstants.OVERALL_DRUG_ADHERENCE_IN_LAST_MONTH);

            Boolean monthAdherence = Boolean.TRUE;
            Boolean weekAdherence = Boolean.TRUE;

            for (Result adherenceResult : adherenceResults) {
                Obs obs = (Obs) adherenceResult.getResultObject();
                Concept adherenceConcept = adherenceResult.toConcept();
                if (OpenmrsUtil.nullSafeEquals(arvAdherenceConcept, obs.getConcept())
                        && !OpenmrsUtil.nullSafeEquals(adherenceConcept, allConcept))
                    weekAdherence = Boolean.FALSE;
                if (OpenmrsUtil.nullSafeEquals(overallAdherenceConcept, obs.getConcept())
                        && !OpenmrsUtil.nullSafeEquals(adherenceConcept, noConcept))
                    monthAdherence = Boolean.FALSE;
            }

            if (CollectionUtils.isEmpty(adherenceResults) || CollectionUtils.size(adherenceResults) < 2)
                dates.add(encounterResult.getResultDate());
            else {
                perfect = monthAdherence && weekAdherence;
                if (!perfect)
                    return new Result("Imperfect Adherence");
            }
        }
    }

    if (CollectionUtils.isNotEmpty(dates))
        result.setValueText(formatDate(dates));
    else if (perfect)
        result.setValueText("Perfect Adherence");
    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.DatetimeBasedConceptFilteredRule.java

/**
 * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map)
 *//*  ww  w . ja  v  a 2  s  . c o  m*/
@Override
protected Result evaluate(final LogicContext context, final Integer patientId,
        final Map<String, Object> parameters) {
    Result result = new Result();

    Object conceptObjects = parameters.get(EvaluableConstants.OBS_CONCEPT);
    Map<Concept, Integer> conceptNamePositions = searchPositions(conceptObjects);

    ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule();
    Result obsResults = obsWithRestrictionRule.eval(context, patientId, parameters);

    Map<Date, Result[]> obsResultDates = new HashMap<Date, Result[]>();
    for (Result obsResult : obsResults) {
        Obs obs = (Obs) obsResult.getResultObject();
        Date obsDatetime = obs.getObsDatetime();
        // see if we already have obs array for this date
        Result[] obsResultDate = obsResultDates.get(obsDatetime);
        if (obsResultDate == null) {
            obsResultDate = new Result[CollectionUtils.size(conceptNamePositions)];
            obsResultDates.put(obsDatetime, obsResultDate);
        }
        // search the concept in the concept ordering map
        Integer position = conceptNamePositions.get(obs.getConcept());
        if (position != null)
            obsResultDate[position] = obsResult;
    }

    TreeSet<Date> keys = new TreeSet<Date>(new Comparator<Date>() {

        public int compare(final Date firstDate, final Date secondDate) {
            return firstDate.equals(secondDate) ? 0 : firstDate.after(secondDate) ? -1 : 1;
        }
    });
    keys.addAll(obsResultDates.keySet());

    // TODO: need to merge the two loop into one
    Integer counter = 0;
    Iterator<Date> iterator = keys.iterator();
    while (iterator.hasNext() && counter < 5) {
        Date date = iterator.next();
        // create the grouped results
        Result groupedResult = new Result();
        groupedResult.add(new Result(date));
        groupedResult.addAll(Arrays.asList(obsResultDates.get(date)));
        // add them to the main result of the rule
        result.add(groupedResult);
        // increase the counter as we only want last 5
        counter++;
    }

    Collections.reverse(result);

    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.DatetimeBasedConceptFilteredRule.java

@SuppressWarnings("unchecked")
private Map<Concept, Integer> searchPositions(Object conceptNameObjects) {
    Map<Concept, Integer> conceptNamePositions = new HashMap<Concept, Integer>();
    if (RuleUtils.isValidCollectionObject(conceptNameObjects)) {
        List<String> conceptNames = (List<String>) conceptNameObjects;
        for (int i = 0; i < CollectionUtils.size(conceptNames); i++) {
            Concept concept = CacheUtils.getConcept(conceptNames.get(i));
            conceptNamePositions.put(concept, i);
        }//  w  w w . j a v  a 2s . c  o m
    }
    return conceptNamePositions;

}

From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptAnswersFilteredRule.java

/**
 * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map)
 *//*from  www .j  a va2s.com*/
@Override
protected Result evaluate(final LogicContext context, final Integer patientId,
        final Map<String, Object> parameters) throws LogicException {

    Result result = new Result();
    EncounterWithRestrictionRule encounterWithRestrictionRule = new EncounterWithStringRestrictionRule();
    Result encounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters);
    // take out the encounter type for the reference encounter
    Object encounterType = parameters.remove(AncParameters.AFTER_ENCOUNTER_TYPE);
    // prepare the parameters
    parameters.put(EvaluableConstants.ENCOUNTER_FETCH_SIZE, 1);
    parameters.put(EvaluableConstants.ENCOUNTER_TYPE, Arrays.asList(encounterType));
    Result afterEncounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters);
    // see if we can get the reference encounter
    Object afterEncounter = null;
    if (CollectionUtils.isNotEmpty(afterEncounterResults))
        afterEncounter = afterEncounterResults.latest().getResultObject();
    // search the ordering of the observations
    Object codedValueObjects = parameters.get(EvaluableConstants.OBS_VALUE_CODED);
    Map<Concept, Integer> codedPositions = searchPositions(codedValueObjects);

    ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule();

    int counter = 0;
    Boolean foundAfter = Boolean.FALSE;
    while (counter < CollectionUtils.size(encounterResults) && !foundAfter) {
        Result encounterResult = encounterResults.get(counter);

        parameters.put(EvaluableConstants.OBS_ENCOUNTER, Arrays.asList(encounterResult.getResultObject()));
        Result obsResults = obsWithRestrictionRule.eval(context, patientId, parameters);

        Result groupedResult = new Result();
        groupedResult.add(new Result(encounterResult.getResultDate()));
        // initialize result array
        Result[] results = new Result[CollectionUtils.size(codedPositions)];
        for (Result obsResult : obsResults) {
            Integer position = codedPositions.get(obsResult.toConcept());
            if (position != null)
                results[position] = obsResult;
        }
        groupedResult.addAll(Arrays.asList(results));
        result.add(groupedResult);

        if (OpenmrsUtil.nullSafeEquals(afterEncounter, encounterResult.getResultObject()))
            foundAfter = Boolean.TRUE;
        counter++;
    }

    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptAnswersFilteredRule.java

@SuppressWarnings("unchecked")
private Map<Concept, Integer> searchPositions(Object conceptAnswerObjects) {
    Map<Concept, Integer> codedPositions = new HashMap<Concept, Integer>();
    if (RuleUtils.isValidCollectionObject(conceptAnswerObjects)) {
        List<String> codedValueNames = (List<String>) conceptAnswerObjects;
        for (int counter = 0; counter < CollectionUtils.size(codedValueNames); counter++) {
            Concept concept = CacheUtils.getConcept(codedValueNames.get(counter));
            codedPositions.put(concept, counter);
        }/* www.  j  a  v a  2  s  .  c  o  m*/
    }
    return codedPositions;
}

From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptFilteredRule.java

/**
 * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map)
 *//*from w  w  w. j a v  a2  s  . c om*/
@Override
protected Result evaluate(final LogicContext context, final Integer patientId,
        final Map<String, Object> parameters) throws LogicException {

    Result result = new Result();

    EncounterWithRestrictionRule encounterWithRestrictionRule = new EncounterWithStringRestrictionRule();
    Result encounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters);
    // take out the encounter type for the reference encounter
    Object encounterType = parameters.remove(AncParameters.AFTER_ENCOUNTER_TYPE);
    // prepare the parameters
    parameters.put(EvaluableConstants.ENCOUNTER_FETCH_SIZE, 1);
    parameters.put(EvaluableConstants.ENCOUNTER_TYPE, Arrays.asList(encounterType));
    Result afterEncounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters);
    // see if we can get the reference encounter
    Object afterEncounter = null;
    if (CollectionUtils.isNotEmpty(afterEncounterResults))
        afterEncounter = afterEncounterResults.latest().getResultObject();
    // search the ordering of the observations
    Object conceptObjects = parameters.get(EvaluableConstants.OBS_CONCEPT);
    Map<Concept, Integer> conceptNamePositions = searchPositions(conceptObjects);

    ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule();

    int counter = 0;
    Boolean foundAfter = Boolean.FALSE;
    while (counter < CollectionUtils.size(encounterResults) && !foundAfter) {
        Result encounterResult = encounterResults.get(counter);

        parameters.put(EvaluableConstants.OBS_ENCOUNTER, Arrays.asList(encounterResult.getResultObject()));
        Result obsResults = obsWithRestrictionRule.eval(context, patientId, parameters);

        Result groupedResult = new Result();
        groupedResult.add(new Result(encounterResult.getResultDate()));
        // initialize results array
        Result[] results = new Result[CollectionUtils.size(conceptNamePositions)];
        for (Result obsResult : obsResults) {
            Obs obs = (Obs) obsResult.getResultObject();
            Integer position = conceptNamePositions.get(obs.getConcept());
            if (position != null)
                results[position] = obsResult;
        }
        groupedResult.addAll(Arrays.asList(results));
        result.add(groupedResult);

        if (OpenmrsUtil.nullSafeEquals(afterEncounter, encounterResult.getResultObject()))
            foundAfter = Boolean.TRUE;

        counter++;
    }

    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptFilteredRule.java

@SuppressWarnings("unchecked")
private Map<Concept, Integer> searchPositions(Object conceptNameObjects) {
    Map<Concept, Integer> conceptNamePositions = new HashMap<Concept, Integer>();
    if (RuleUtils.isValidCollectionObject(conceptNameObjects)) {
        List<String> conceptNames = (List<String>) conceptNameObjects;
        for (int i = 0; i < CollectionUtils.size(conceptNames); i++) {
            Concept concept = CacheUtils.getConcept(conceptNames.get(i));
            conceptNamePositions.put(concept, i);
        }/*w w w  .j a  va 2  s  .com*/
    }
    return conceptNamePositions;
}

From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptSetFilteredRule.java

/**
 * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map)
 *///from   w ww  .j a va2 s  . c  om
@Override
protected Result evaluate(final LogicContext context, final Integer patientId,
        final Map<String, Object> parameters) throws LogicException {

    Result result = new Result();

    EncounterWithRestrictionRule encounterWithRestrictionRule = new EncounterWithStringRestrictionRule();
    Result encounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters);
    // take out the encounter type for the reference encounter
    Object encounterType = parameters.remove(AncParameters.AFTER_ENCOUNTER_TYPE);
    // prepare the parameters
    parameters.put(EvaluableConstants.ENCOUNTER_FETCH_SIZE, 1);
    parameters.put(EvaluableConstants.ENCOUNTER_TYPE, Arrays.asList(encounterType));
    Result afterEncounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters);
    // see if we can get the reference encounter
    Object afterEncounter = null;
    if (CollectionUtils.isNotEmpty(afterEncounterResults))
        afterEncounter = afterEncounterResults.latest().getResultObject();
    // search the ordering of the observations

    Object conceptSetObjects = parameters.remove(EvaluableConstants.OBS_VALUE_CODED);
    Map<Concept, Integer> codedPositions = searchPositions(conceptSetObjects);

    ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule();

    int counter = 0;
    Boolean foundAfter = Boolean.FALSE;
    while (counter < CollectionUtils.size(encounterResults) && !foundAfter) {
        Result encounterResult = encounterResults.get(counter);

        parameters.put(EvaluableConstants.OBS_ENCOUNTER, Arrays.asList(encounterResult.getResultObject()));
        Result parentObsResults = obsWithRestrictionRule.eval(context, patientId, parameters);

        for (Result parentObsResult : parentObsResults) {
            Obs parentObs = (Obs) parentObsResult.getResultObject();
            if (parentObs.isObsGrouping()) {
                Set<Obs> childObservations = parentObs.getGroupMembers();

                Result groupedResult = new Result();
                groupedResult.setResultDate(encounterResult.getResultDate());

                Result[] results = new Result[CollectionUtils.size(codedPositions)];
                for (Obs childObservation : childObservations) {
                    Integer position = codedPositions.get(childObservation.getConcept());
                    if (position != null)
                        results[position] = new Result(childObservation);
                }
                groupedResult.addAll(Arrays.asList(results));
                result.add(groupedResult);
            }
        }

        if (OpenmrsUtil.nullSafeEquals(afterEncounter, encounterResult.getResultObject()))
            foundAfter = Boolean.TRUE;

        counter++;
    }

    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptSetFilteredRule.java

@SuppressWarnings("unchecked")
private Map<Concept, Integer> searchPositions(Object conceptSetObject) {
    Map<Concept, Integer> codedPositions = new HashMap<Concept, Integer>();
    if (RuleUtils.isValidCollectionObject(conceptSetObject)) {
        List<String> codedValueNames = (List<String>) conceptSetObject;
        for (int counter = 0; counter < CollectionUtils.size(codedValueNames); counter++) {
            Concept concept = CacheUtils.getConcept(codedValueNames.get(counter));
            codedPositions.put(concept, counter);
        }//w  w w .j  a  v a 2s.c  o m
    }
    return codedPositions;
}