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.rule.reminder.adult.general.HighCreatinineReminderRule.java

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

    ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule();
    parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2);
    parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.SERUM_CREATININE));
    Result creatinineResults = obsWithRestrictionRule.eval(context, patientId, parameters);
    // only when we have 2 or more creatinine results
    if (CollectionUtils.size(creatinineResults) >= 2) {
        Boolean displayReminder = Boolean.TRUE;

        Integer counter = 0;
        while (counter < CollectionUtils.size(creatinineResults) && counter < 2) {
            Result creatinineResult = creatinineResults.get(counter++);
            if (creatinineResult.toNumber() < 200)
                displayReminder = Boolean.FALSE;
        }

        if (displayReminder)
            result.add(new Result(String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT))));
    }

    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.reminder.adult.general.LowCorpuscularVolumeReminderRule.java

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

    Result result = new Result();

    ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule();
    parameters.put(EvaluableConstants.OBS_CONCEPT,
            Arrays.asList(EvaluableNameConstants.MEAN_CORPUSCULAR_VOLUME));
    parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 1);
    Result corpuscularResults = obsWithRestrictionRule.eval(context, patientId, parameters);
    if (CollectionUtils.isNotEmpty(corpuscularResults)) {
        Result latestCorpuscularResult = corpuscularResults.latest();
        if (latestCorpuscularResult.toNumber() < 75) {
            parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.HEMOGLOBIN));
            Result hbResults = obsWithRestrictionRule.eval(context, patientId, parameters);
            if (CollectionUtils.isNotEmpty(hbResults)) {
                Result latestHbResult = hbResults.latest();
                if (latestHbResult.toNumber() < 10) {
                    Boolean displayReminder = Boolean.TRUE;

                    Result medicationResults;
                    parameters.put(EvaluableConstants.OBS_CONCEPT,
                            Arrays.asList(EvaluableNameConstants.MEDICATION_ADDED,
                                    "RECEIVED ANTENATAL CARE SERVICE THIS VISIT",
                                    "PATIENT REPORTED CURRENT ANTENATAL CARE TREATMENT",
                                    "RECIEVED POSTNATAL CARE SERVICE THIS VISIT", "CURRENT MEDICATIONS"));
                    parameters.put(EvaluableConstants.OBS_VALUE_CODED,
                            Arrays.asList(EvaluableNameConstants.IRON_SUPPLEMENT, "FERROUS SULFATE",
                                    "FERROUS SULFATE AND FOLIC ACID"));
                    medicationResults = obsWithRestrictionRule.eval(context, patientId, parameters);
                    if (CollectionUtils.isEmpty(medicationResults)) {
                        // see if any of the medication is after the low corpuscular volume
                        Integer counter = 0;
                        while (counter < CollectionUtils.size(medicationResults)) {
                            Result medicationResult = medicationResults.get(counter++);
                            if (medicationResult.getResultDate().after(latestCorpuscularResult.getResultDate())
                                    || DateUtils.isSameDay(medicationResult.getResultDate(),
                                            latestCorpuscularResult.getResultDate())) {
                                displayReminder = Boolean.FALSE;
                                break;
                            }
                        }
                    }

                    // no iron supplement found
                    if (displayReminder) {
                        result.add(new Result(
                                String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT))));
                    }
                }
            }
        }
    }

    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.reminder.adult.general.RepeatCreatinineReminderRule.java

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

    ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule();
    parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2);
    parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.SERUM_CREATININE));
    Result creatinineResults = obsWithRestrictionRule.eval(context, patientId, parameters);
    if (CollectionUtils.size(creatinineResults) == 1) {
        // get the latest test ordered
        Result latestCreatinineResult = creatinineResults.latest();

        parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 1);
        parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.TESTS_ORDERED));
        parameters.put(EvaluableConstants.OBS_VALUE_CODED,
                Arrays.asList(EvaluableNameConstants.CHEMISTRY_LAB_TESTS,
                        EvaluableNameConstants.SERUM_CREATININE, EvaluableNameConstants.SERUM_ELECTROLYTES));

        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH, -6);
        Date sixMonths = calendar.getTime();

        Result testResults = obsWithRestrictionRule.eval(context, patientId, parameters);

        // if creatinine > 200 and no test or the test was ordered more than six months ago, then show the reminder
        if (latestCreatinineResult.toNumber() > 200
                && (CollectionUtils.isEmpty(testResults) || testResults.getResultDate().before(sixMonths))) {
            // prepare the search for referrals
            parameters.put(EvaluableConstants.OBS_CONCEPT,
                    Arrays.asList(EvaluableNameConstants.REFERRALS_ORDERED));
            parameters.put(EvaluableConstants.OBS_VALUE_CODED,
                    Arrays.asList(EvaluableNameConstants.REFERRAL_CONSULTANT,
                            EvaluableNameConstants.REFERRAL_MEDICAL_OFFICER));
            Result referralResults = obsWithRestrictionRule.eval(context, patientId, parameters);
            if (CollectionUtils.isEmpty(referralResults))
                result.add(
                        new Result(String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT))));
        }
    }

    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.reminder.adult.pregnancy.SecondLineViralLoadReminderRule.java

@Override
protected Result evaluate(LogicContext context, Integer patientId, Map<String, Object> parameters) {
    Result result = new Result();

    ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule();

    parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList("HIV VIRAL LOAD, QUANTITATIVE"));
    parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2);
    Result viralLoadResults = obsWithRestrictionRule.eval(context, patientId, parameters);

    if (CollectionUtils.isNotEmpty(viralLoadResults) && CollectionUtils.size(viralLoadResults) == 2) {

        Result latestViralLoadResult = viralLoadResults.get(0);
        Result beforeLatestViralLoadResult = viralLoadResults.get(1);

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(latestViralLoadResult.getResultDate());
        calendar.add(Calendar.MONTH, -3);
        Date threeMonthsAgo = calendar.getTime();

        if ((beforeLatestViralLoadResult.getResultDate().before(threeMonthsAgo)
                || DateUtils.isSameDay(beforeLatestViralLoadResult.getResultDate(), threeMonthsAgo))
                && latestViralLoadResult.toNumber() > 1000 && beforeLatestViralLoadResult.toNumber() > 1000) {

            parameters.put(EvaluableConstants.OBS_CONCEPT,
                    Arrays.asList("HIV ANTIRETROVIRAL DRUG PLAN TREATMENT CATEGORY"));
            parameters.put(EvaluableConstants.OBS_VALUE_CODED,
                    Arrays.asList("SECOND LINE HIV ANTIRETROVIRAL DRUG TREATMENT"));
            Result antiretroviralPlanResults = obsWithRestrictionRule.eval(context, patientId, parameters);

            if (CollectionUtils.isNotEmpty(antiretroviralPlanResults)) {
                result.add(//from www .  jav a2  s .c om
                        new Result(String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT))));
                return result;
            }
        }
    }
    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.reminder.adult.pregnancy.SwitchLineViralLoadReminderRule.java

@Override
protected Result evaluate(LogicContext context, Integer patientId, Map<String, Object> parameters) {
    Result result = new Result();

    EncounterWithRestrictionRule encounterWithRestrictionRule = new EncounterWithStringRestrictionRule();
    parameters.put(EvaluableConstants.ENCOUNTER_TYPE,
            Arrays.asList(EvaluableNameConstants.ENCOUNTER_TYPE_ADULT_INITIAL,
                    EvaluableNameConstants.ENCOUNTER_TYPE_ADULT_RETURN));
    parameters.put(EvaluableConstants.ENCOUNTER_FETCH_SIZE, 1);
    Result encounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters);
    if (CollectionUtils.isNotEmpty(encounterResults)) {
        Result encounterResult = encounterResults.latest();

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(encounterResult.getResultDate());
        calendar.add(Calendar.MONTH, 12);
        Date twelveMonthsLater = calendar.getTime();

        ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule();

        parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList("HIV VIRAL LOAD, QUANTITATIVE"));
        parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2);
        Result viralLoadResults = obsWithRestrictionRule.eval(context, patientId, parameters);

        parameters.put(EvaluableConstants.OBS_CONCEPT,
                Arrays.asList("CURRENT HIV ANTIRETROVIRAL DRUG USE TREATMENT CATEGORY",
                        "HIV ANTIRETROVIRAL DRUG PLAN TREATMENT CATEGORY"));
        parameters.put(EvaluableConstants.OBS_VALUE_CODED,
                Arrays.asList("FIRST LINE HIV ANTIRETROVIRAL DRUG TREATMENT"));
        Result treatmentCategoryResults = obsWithRestrictionRule.eval(context, patientId, parameters);
        if (CollectionUtils.isNotEmpty(treatmentCategoryResults) && CollectionUtils.isNotEmpty(viralLoadResults)
                && CollectionUtils.size(viralLoadResults) == 2) {

            Result latestViralLoadResult = viralLoadResults.get(0);
            Result beforeLatestViralLoadResult = viralLoadResults.get(1);

            calendar.setTime(latestViralLoadResult.getResultDate());
            calendar.add(Calendar.MONTH, -3);
            Date threeMonthsAgo = calendar.getTime();

            if ((beforeLatestViralLoadResult.getResultDate().after(threeMonthsAgo)
                    || DateUtils.isSameDay(beforeLatestViralLoadResult.getResultDate(), threeMonthsAgo))
                    && latestViralLoadResult.toNumber() > 1000
                    && beforeLatestViralLoadResult.toNumber() > 1000) {

                parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList("ANTIRETROVIRAL PLAN"));
                parameters.put(EvaluableConstants.OBS_VALUE_CODED,
                        Arrays.asList("START DRUGS", "DRUG RESTART"));
                Result antiretroviralPlanResults = obsWithRestrictionRule.eval(context, patientId, parameters);
                if (CollectionUtils.isNotEmpty(antiretroviralPlanResults)
                        && (antiretroviralPlanResults.latest().getResultDate().after(twelveMonthsLater)
                                || DateUtils.isSameDay(antiretroviralPlanResults.latest().getResultDate(),
                                        twelveMonthsLater))) {
                    result.add(new Result(
                            String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT))));
                    return result;
                }/*ww  w . j  a v  a  2  s  .c o m*/

                parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList("REASON ANTIRETROVIRALS STARTED"));
                parameters.put(EvaluableConstants.OBS_VALUE_CODED,
                        Arrays.asList("POST EXPOSURE PROPHYLAXIS", "TREATMENT",
                                "TOTAL MATERNAL TO CHILD TRANSMISSION PROPHYLAXIS", "CLINICAL DISEASE",
                                "PREVENTION OF MOTHER-TO-CHILD TRANSMISSION OF HIV", "UNKNOWN",
                                "ADULT WHO STAGE 3 WITH CD4 COUNT LESS THAN 350", "WHO STAGE 3 ADULT",
                                "WHO STAGE 4 ADULT", "CD4 COUNT LESS THAN 350", "DISCORDANT COUPLE",
                                "IMMUNOLOGIC FAILURE", "VIROLOGIC FAILURE", "CD4 COUNT LESS THAN 500"));
                Result reasonStartedResults = obsWithRestrictionRule.eval(context, patientId, parameters);
                if (CollectionUtils.isNotEmpty(reasonStartedResults)) {
                    Result reasonStartedResult = reasonStartedResults.latest();
                    if (reasonStartedResult.getResultDate().after(twelveMonthsLater)
                            || DateUtils.isSameDay(reasonStartedResult.getResultDate(), twelveMonthsLater)) {
                        result.add(new Result(
                                String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT))));
                        return result;
                    }
                }
            }
        }
    }
    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.reminder.peds.pneumocystis.PolymeraseBasedReminderRule.java

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

    Patient patient = Context.getPatientService().getPatient(patientId);

    if (patient.getBirthdate() != null) {
        Calendar calendar = Calendar.getInstance();

        calendar.setTime(patient.getBirthdate());
        calendar.add(Calendar.WEEK_OF_YEAR, 6);
        Date sixWeeks = calendar.getTime();

        calendar.setTime(patient.getBirthdate());
        calendar.add(Calendar.MONTH, 18);
        Date eighteenMonths = calendar.getTime();

        if (sixWeeks.before(new Date()) && eighteenMonths.after(new Date())) {

            ValidPolymeraseRule validPolymeraseRule = new ValidPolymeraseRule();

            parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2);
            parameters.put(EvaluableConstants.OBS_CONCEPT,
                    Arrays.asList(EvaluableNameConstants.HIV_DNA_POLYMERASE_CHAIN_REACTION_QUALITATIVE));
            parameters.put(EvaluableConstants.OBS_VALUE_CODED, Arrays.asList(EvaluableNameConstants.NEGATIVE));

            Result validPolymeraseResults = validPolymeraseRule.eval(context, patientId, parameters);
            // if we have less than 2 negative results
            if (CollectionUtils.isNotEmpty(validPolymeraseResults)
                    && CollectionUtils.size(validPolymeraseResults) < 2) {
                parameters.remove(EvaluableConstants.OBS_CONCEPT);
                parameters.remove(EvaluableConstants.OBS_VALUE_CODED);
                parameters.remove(EvaluableConstants.OBS_FETCH_ORDER);
                parameters.remove(EvaluableConstants.OBS_FETCH_SIZE);

                PneumocystisCariniiRule pneumocystisCariniiRule = new PneumocystisCariniiRule();
                parameters.put(EvaluableConstants.ENCOUNTER_TYPE,
                        Arrays.asList(EvaluableNameConstants.ENCOUNTER_TYPE_PEDIATRIC_INITIAL,
                                EvaluableNameConstants.ENCOUNTER_TYPE_PEDIATRIC_RETURN,
                                EvaluableNameConstants.ENCOUNTER_TYPE_PEDIATRIC_NONCLINICALMEDICATION));
                Result pneumocystisCariniiResults = pneumocystisCariniiRule.eval(context, patientId,
                        parameters);

                if (CollectionUtils.isEmpty(pneumocystisCariniiResults))
                    result.add(new Result(
                            String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT))));
            }
        }
    }

    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.reminder.peds.polymerase.RepeatPolymeraseReminderRule.java

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

    Patient patient = Context.getPatientService().getPatient(patientId);

    if (patient.getBirthdate() != null) {

        Calendar calendar = Calendar.getInstance();

        // 18 months after birth date
        calendar.setTime(patient.getBirthdate());
        calendar.add(Calendar.MONTH, 18);
        Date eighteenMonths = calendar.getTime();

        // 6 weeks after birth date
        calendar.setTime(patient.getBirthdate());
        calendar.add(Calendar.WEEK_OF_YEAR, 6);
        Date sixWeeks = calendar.getTime();

        if (sixWeeks.before(new Date()) && eighteenMonths.after(new Date())) {
            ValidPolymeraseRule validPolymeraseRule = new ValidPolymeraseRule();
            // only pull the positive and negative results
            parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2);
            parameters.put(EvaluableConstants.OBS_VALUE_CODED,
                    Arrays.asList(EvaluableNameConstants.POSITIVE, EvaluableNameConstants.NEGATIVE));
            parameters.put(EvaluableConstants.OBS_CONCEPT,
                    Arrays.asList(EvaluableNameConstants.HIV_DNA_POLYMERASE_CHAIN_REACTION_QUALITATIVE));
            Result validPolymeraseResults = validPolymeraseRule.eval(context, patientId, parameters);

            if (CollectionUtils.isNotEmpty(validPolymeraseResults)
                    && CollectionUtils.size(validPolymeraseResults) < 2) {

                Result validPolymeraseResult = validPolymeraseResults.latest();

                // get the latest test ordered
                parameters.put(EvaluableConstants.OBS_CONCEPT,
                        Arrays.asList(EvaluableNameConstants.TESTS_ORDERED));
                parameters.put(EvaluableConstants.OBS_VALUE_CODED,
                        Arrays.asList(EvaluableNameConstants.HIV_DNA_POLYMERASE_CHAIN_REACTION_QUALITATIVE));

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

                calendar.setTime(patient.getBirthdate());
                calendar.add(Calendar.WEEK_OF_YEAR, 4);
                Date fourWeeks = calendar.getTime();

                calendar.setTime(new Date());
                calendar.add(Calendar.MONTH, -6);
                Date sixMonthsAgo = calendar.getTime();

                int pendingCount = 0;
                for (Result testResult : testResults) {
                    // test is valid if it's performed after four weeks and after six months ago and not the same with the date of the result
                    if (testResult.getResultDate().after(sixMonthsAgo)
                            && testResult.getResultDate().after(fourWeeks)
                            && !DateUtils.isSameDay(testResult.getResultDate(),
                                    validPolymeraseResult.getResultDate()))
                        pendingCount++;
                }

                if (pendingCount + validPolymeraseResults.size() < 2)
                    result.add(new Result(
                            String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT))));
            }
        }
    }

    return result;
}

From source file:org.openmrs.module.clinicalsummary.rule.util.ResultUtils.java

/**
 * Strip duplicates result object/*  ww  w .  jav  a 2 s .c o  m*/
 *
 * @param results the results with duplicates
 * @return results without duplicates
 */
public static Result stripDuplicates(final Result results) {

    if (CollectionUtils.isEmpty(results))
        return results;

    Result strippedResults = new Result();

    Integer parentCounter = 0;
    while (parentCounter < CollectionUtils.size(results)) {
        Result referredResult = results.get(parentCounter++);
        // search for duplicates and remove them
        Integer childCounter = parentCounter;
        Boolean duplicateFound = Boolean.FALSE;
        while (childCounter < CollectionUtils.size(results) && !duplicateFound) {
            Result currentResult = results.get(childCounter++);
            if (DateUtils.isSameDay(referredResult.getResultDate(), currentResult.getResultDate())
                    && OpenmrsUtil.nullSafeEquals(referredResult.getDatatype(), currentResult.getDatatype())) {
                if (OpenmrsUtil.nullSafeEquals(currentResult.getDatatype(), Result.Datatype.NUMERIC)
                        && OpenmrsUtil.nullSafeEquals(referredResult.toNumber(), currentResult.toNumber())
                        || (OpenmrsUtil.nullSafeEquals(currentResult.getDatatype(), Result.Datatype.CODED)
                                && OpenmrsUtil.nullSafeEquals(referredResult.toConcept(),
                                        currentResult.toConcept()))) {
                    duplicateFound = Boolean.TRUE;
                }
            }
        }

        if (!duplicateFound)
            strippedResults.add(referredResult);
    }

    return strippedResults;
}

From source file:org.opens.tanaguru.ruleimplementation.AbstractUniqueElementSiteRuleImplementation.java

/**
 * This methods creates failed remarks at page scope and site scope when 
 * duplicated are found./*ww  w.  jav  a 2  s  .  co  m*/
 * @param netResultList
 * @param urlOnError 
 */
private TestSolution computeResultAndCreateRemarks(List<ProcessResult> processResultList,
        List<DefiniteResult> netResultList, String elementValue, int elementCounter) {

    Collection<WebResource> wrsOnError = createUrlListFromProcessResultList(processResultList, netResultList);

    TestSolution testSolution = TestSolution.PASSED;

    if (CollectionUtils.size(wrsOnError) > 1) {

        for (WebResource wr : wrsOnError) {

            testSolution = TestSolution.FAILED;

            prs.addConsolidationRemark(TestSolution.FAILED, siteLevelMessageCode, elementValue, wr.getURL());

            Collection<ProcessRemark> processRemarkList = createProcessRemarkListForPageOnError(elementValue,
                    wrsOnError);

            netResultList
                    .add(createResultAtPageLevel(wr, TestSolution.FAILED, elementCounter, processRemarkList));
        }
        // TO DO : set Passed the pages that have a correct rel=canonical 
        // definition
    } else {
        netResultList.addAll(createResultAtPageLevel(wrsOnError, TestSolution.PASSED, 0, null));
    }
    return testSolution;
}

From source file:org.paxml.el.UtilFunctions.java

/**
 * Count how many elements is in the given
 * list/map/iterator/enumeration/array./*  w  w w  .j av a2  s  . co  m*/
 * 
 * @param obj
 *            list/map/iterator/enumeration/array
 * @return number of elements
 */
public static int count(Object obj) {

    if (obj == null) {
        return 0;
    } else if (obj instanceof Collection || obj instanceof Map || obj instanceof Iterator
            || obj instanceof Enumeration || obj.getClass().isArray()) {
        return CollectionUtils.size(obj);
    } else if (obj instanceof Iterable) {
        return count(((Iterable) obj).iterator());
    } else {
        return 1;
    }

}