femr.util.DataStructure.Mapping.AbstractMultiMap.java Source code

Java tutorial

Introduction

Here is the source code for femr.util.DataStructure.Mapping.AbstractMultiMap.java

Source

/*
 fEMR - fast Electronic Medical Records
 Copyright (C) 2014  Team fEMR
    
 fEMR is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
    
 fEMR is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
    
 You should have received a copy of the GNU General Public License
 along with fEMR.  If not, see <http://www.gnu.org/licenses/>. If
 you have any questions, contact <info@teamfemr.org>.
*/
package femr.util.DataStructure.Mapping;

import femr.util.stringhelpers.StringUtils;
import org.apache.commons.collections4.MapIterator;
import org.apache.commons.collections4.map.MultiKeyMap;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

/**
 * This DataStructure is designed for allowing us to search for info by date and name at the same time.
 * This means it stores all information including multiple recordings at different times (during the same encounter).
 * we can also get a list of dates
 */
public abstract class AbstractMultiMap {
    protected final MultiKeyMap map = new MultiKeyMap();
    protected final List<String> dateList = new LinkedList<>();

    /**
     * Get an iterator for iterating over the map
     *
     * @return the gd iterator
     */
    public MapIterator getMultiMapIterator() {
        return map.mapIterator();
    }

    public int getSize() {
        return map.size();
    }

    /**
     * Gets a list of Date Keys and sorts them in descending order
     *
     * @return A List of dates as type string
     */
    public List<String> getDateList() {
        Collections.sort(dateList, Collections.reverseOrder());
        return dateList;
    }

    /**
     * Gets a list of Date Keys and sorts them in ascending order
     *
     * @return A List of dates as type string
     */
    public List<String> getDateListChronological() {
        Collections.sort(dateList);
        return dateList;
    }

    /**
     * gets the date for a given index
     *
     * @param i The index of the date
     * @return The date as a string
     */
    public String getDate(int i) {
        // check that the index specified
        if (dateList.size() <= i || i < 0) {
            return null;
        }
        return dateList.get(i);
    }

    /**
     * Returns the date and time in human readable form
     *
     * @param i the index of the date to return
     * @return The date in a nice formate or the original date formate if it fails
     */
    public String getFormatedDateTime(int i) {
        // check that the index specified
        if (dateList.size() <= i || i < 0) {
            return null;
        }
        return StringUtils.FormatDateTime(dateList.get(i));
    }

}