org.openmrs.module.kenyaemr.converter.StringToRegimenConverter.java Source code

Java tutorial

Introduction

Here is the source code for org.openmrs.module.kenyaemr.converter.StringToRegimenConverter.java

Source

/**
 * The contents of this file are subject to the OpenMRS Public License
 * Version 1.0 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://license.openmrs.org
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations
 * under the License.
 *
 * Copyright (C) OpenMRS, LLC.  All Rights Reserved.
 */

package org.openmrs.module.kenyaemr.converter;

import org.apache.commons.lang3.StringUtils;
import org.openmrs.module.kenyaemr.regimen.DrugReference;
import org.openmrs.module.kenyaemr.regimen.Regimen;
import org.openmrs.module.kenyaemr.regimen.RegimenComponent;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;

/**
 * Converts String to Regimen, interpreting it as a | separated list of components
 */
@Component
public class StringToRegimenConverter implements Converter<String, Regimen> {

    private StringToDrugReferenceConverter drugReferenceConverter = new StringToDrugReferenceConverter();

    /**
     * @see org.springframework.core.convert.converter.Converter#convert(Object)
     */
    @Override
    public Regimen convert(String source) {
        String[] tokens = source.split("\\|", -1);
        Queue<String> tokenQueue = new LinkedList<String>(Arrays.asList(tokens));

        Regimen regimen = new Regimen();

        while (tokenQueue.size() >= 4) {
            String drugRefStr = tokenQueue.remove().trim();
            String doseStr = tokenQueue.remove().trim();
            String units = tokenQueue.remove().trim();
            String frequency = tokenQueue.remove().trim();

            DrugReference drugRef = StringUtils.isNotEmpty(drugRefStr) ? drugReferenceConverter.convert(drugRefStr)
                    : null;
            Double dose = StringUtils.isNotEmpty(doseStr) ? Double.parseDouble(doseStr) : null;
            units = StringUtils.isNotEmpty(units) ? units : null;
            frequency = StringUtils.isNotEmpty(frequency) ? frequency : null;

            regimen.getComponents().add(new RegimenComponent(drugRef, dose, units, frequency));
        }

        return regimen;
    }
}