<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package usda.weru.util;

import java.awt.Component;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import javax.measure.Measure;
import javax.measure.unit.Unit;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import org.apache.log4j.Logger;
import usda.weru.util.ConfigData.MeasureableConfigurationOption;
import usda.weru.weps.fuel.Fuel;
import usda.weru.weps.fuel.FuelChooser;
import usda.weru.weps.fuel.FuelDAO;
import usda.weru.weps.location.chooser.AllowedStationModeChooser;

/**
 *
 * @author wjr
 */
public class LoadProperties {

    private static final Logger LOGGER = Logger.getLogger(LoadProperties.class);

    private final Map&lt;String, List&lt;Component&gt;&gt; HT_comp = new HashMap&lt;String, List&lt;Component&gt;&gt;();

    /**
     *
     * @param key
     * @param comp
     */
    private void addToTable(String key, Component comp) {
        if (HT_comp.containsKey(key)) {
            List&lt;Component&gt; compVec = HT_comp.get(key);
            compVec.add(comp);
        } else {
            Vector&lt;Component&gt; vec = new Vector&lt;Component&gt;();
            vec.add(comp);
            HT_comp.put(key, vec);
        }
    }

    /**
     *
     * @param con
     */
    private void getChildren(JComponent con) {
        Component[] children = con.getComponents();
        for (Component child : children) {
            String name = child.getName();
            if (!"".equals(name) &amp;&amp; name != null) {
                if (name.contains(":")) {
                    name = name.substring(0, name.indexOf(":"));
                }
                LOGGER.debug("Found: " + name + " on " + child.toString());
                addToTable(name, child);
            }
            if (child instanceof JComponent) {
                LOGGER.debug("Descending into: " + child.toString());
                getChildren((JComponent) child);
            }
        }
    }

    /**
     *
     * @param comp this should always be a JRootPane
     */
    public void setupPropertyHashtable(JComponent comp) {
        getChildren(comp);
    }

    /**
     *
     * @param property
     * @param value
     */
    @SuppressWarnings({"unchecked", "rawtypes"})
    public void loadData(String property, String value) {
        List&lt;Component&gt; vec = HT_comp.get(property);
        if (vec == null) {
            // property not found on this form
            return;
        }
        for (Component comp : vec) {
            if (comp instanceof MeasurableField) {
                MeasurableField&lt;?&gt; mf = (MeasurableField) comp;
                MeasureableConfigurationOption option
                        = ConfigData.getDefault().getMeasureableConfigurationOption(mf.getName());
                Unit&lt;?&gt; units = ConfigData.getDefault().getMeasureableUnit(mf.getName());

                if (units != null) {

                    Measure measurableValue;
                    if (option.isDouble()) {
                        measurableValue = Measure.valueOf(Double.valueOf(value), units);
                    } else {
                        measurableValue = Measure.valueOf(Long.valueOf(value), units);
                    }

                    if (mf.getUnits() == null) {
                        mf.setUnits(measurableValue.getUnit());
                    }
                    mf.setValue(measurableValue);
                } else {
                    LOGGER.warn("MeasureableConfigurationOption is not set for " + mf.getName());
                }

            } else if (comp instanceof JTextField) {
                ((JTextField) comp).setText(value);
                break;
            } else if (comp instanceof JCheckBox) {
                ((JCheckBox) comp).setSelected("1".equals(value.trim()));
            } else if (comp instanceof JRadioButton) {
                JRadioButton jrb = (JRadioButton) comp;
                if (jrb.getName().trim().endsWith(value)) {
                    jrb.setSelected(true);
                }
            } else if (comp instanceof AllowedStationModeChooser) {
                AllowedStationModeChooser chooser = (AllowedStationModeChooser) comp;
                chooser.deserializeSelectedModes(value);
            } else if (comp instanceof FuelChooser) {
                FuelChooser chooser = (FuelChooser) comp;
                Fuel fuel = FuelDAO.getInstance().getFuel(value);
                chooser.setSelectedFuel(fuel);
            }
        }
    }

    /**
     *
     * @param propertyName
     * @return
     */
    public Collection&lt;Component&gt; getComponentsForProperty(String propertyName) {
        return HT_comp.get(propertyName);
    }
}
</pre></body></html>