001package org.kuali.common.util.properties;
002
003import java.util.Properties;
004
005import org.kuali.common.util.Assert;
006import org.kuali.common.util.LocationUtils;
007import org.kuali.common.util.ModeUtils;
008import org.kuali.common.util.PropertyUtils;
009
010public final class LocationLoader implements PropertiesLoader {
011
012        private final String value;
013        private final Location location;
014
015        public LocationLoader(Location location) {
016                this(location, location.getValue());
017        }
018
019        public LocationLoader(Location location, String value) {
020                Assert.noNulls(location);
021                Assert.noBlanks(value);
022                this.value = value;
023                this.location = location;
024        }
025
026        @Override
027        public Properties load() {
028                if (!LocationUtils.exists(value)) {
029                        // Take appropriate action for missing locations (ignore, inform, warn, or error out)
030                        ModeUtils.validate(location.getMissingMode(), "Non-existent location [" + value + "]");
031                        return PropertyUtils.EMPTY;
032                } else {
033                        return PropertyUtils.load(value, location.getEncoding(), location.getFormat());
034                }
035        }
036
037        public String getValue() {
038                return value;
039        }
040
041        public Location getLocation() {
042                return location;
043        }
044
045}