package com.technophobia.eclipse.project; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import com.technophobia.eclipse.preference.PreferenceLookupFactory; import com.technophobia.substeps.preferences.SubstepsPreferences; public class PropertyBasedProjectManager implements ProjectManager { private final PreferenceLookupFactory<IProject> preferenceLookupFactory; public PropertyBasedProjectManager(final PreferenceLookupFactory<IProject> preferenceLookup) { this.preferenceLookupFactory = preferenceLookup; } @Override public IPath featureFolderFor(final IProject project) { return folderFor(SubstepsPreferences.FEATURE_FOLDER, project); } @Override public IPath substepsFolderFor(final IProject project) { return folderFor(SubstepsPreferences.SUBSTEPS_FOLDER, project); } private IPath folderFor(final SubstepsPreferences preference, final IProject project) { final String folder = preferenceLookupFactory.preferencesFor(project).valueFor(preference.key()); if (folder != null && !folder.isEmpty()) { return project.getFolder(folder).getLocation(); } return project.getLocation(); } }