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}