001 package org.kuali.common.util.properties;
002
003 import java.util.ArrayList;
004 import java.util.Arrays;
005 import java.util.List;
006
007 import org.kuali.common.util.project.ProjectService;
008 import org.kuali.common.util.project.ProjectUtils;
009 import org.kuali.common.util.project.model.Project;
010 import org.kuali.common.util.project.model.ProjectIdentifier;
011 import org.kuali.common.util.project.model.ProjectResource;
012
013 import com.google.common.base.Preconditions;
014 import com.google.common.collect.ImmutableList;
015
016 public class DefaultPropertiesLocationService implements PropertiesLocationService {
017
018 public DefaultPropertiesLocationService(ProjectService projectService) {
019 this(projectService, DEFAULT_CACHE_PROPERTIES_VALUE);
020 }
021
022 public DefaultPropertiesLocationService(ProjectService projectService, boolean cache) {
023 Preconditions.checkNotNull(projectService, "'projectService' cannot be null");
024 this.projectService = projectService;
025 this.cache = cache;
026 }
027
028 private static final boolean DEFAULT_CACHE_PROPERTIES_VALUE = true;
029
030 private final ProjectService projectService;
031 private final boolean cache;
032
033 @Override
034 public List<Location> getLocations(ProjectIdentifier identifier, List<String> filenames) {
035 List<Location> locations = new ArrayList<Location>();
036 for (String filename : filenames) {
037 locations.add(getLocation(identifier, filename));
038 }
039 return locations;
040 }
041
042 @Override
043 public List<Location> getLocations(ProjectIdentifier identifier, String... filenames) {
044 return getLocations(identifier, Arrays.asList(filenames));
045 }
046
047 @Override
048 public Location getLocation(ProjectIdentifier identifier, String filename) {
049 Project project = projectService.getProject(identifier);
050 String value = ProjectUtils.getClasspathPrefix(identifier) + "/" + filename;
051 String encoding = ProjectUtils.getEncoding(project);
052 return new Location(value, encoding, cache);
053 }
054
055 /**
056 * @deprecated
057 */
058 @Deprecated
059 @Override
060 public List<Location> getLocations(org.kuali.common.util.project.model.FeatureIdentifier identifier, String... filenames) {
061 return getLocations(identifier, ImmutableList.copyOf(filenames));
062 }
063
064 /**
065 * @deprecated
066 */
067 @Deprecated
068 @Override
069 public List<Location> getLocations(org.kuali.common.util.project.model.FeatureIdentifier identifier, List<String> filenames) {
070 List<Location> locations = new ArrayList<Location>();
071 for (String filename : filenames) {
072 locations.add(getLocation(identifier, filename));
073 }
074 return locations;
075 }
076
077 /**
078 * @deprecated
079 */
080 @Deprecated
081 @Override
082 public Location getLocation(org.kuali.common.util.project.model.FeatureIdentifier identifier, String filename) {
083 Project project = projectService.getProject(identifier.getProject());
084 String value = ProjectUtils.getClasspathPrefix(identifier) + "/" + filename;
085 String encoding = ProjectUtils.getEncoding(project);
086 return new Location(value, encoding, cache);
087 }
088
089 @Override
090 public Location getLocation(ProjectResource resource) {
091 return getLocation(resource.getProject(), resource.getPath());
092 }
093 }