Project: ant4eclipse
/**********************************************************************
 * Copyright (c) 2005-2009 ant4eclipse project team. 
 * 
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Eclipse Public License v1.0 
 * which accompanies this distribution, and is available at 
 * http://www.eclipse.org/legal/epl-v10.html 
 * 
 * Contributors: 
 *     Nils Hartmann, Daniel Kasmeroglu, Gerd Wuetherich 
 **********************************************************************/
package org.ant4eclipse.ant.platform.core.delegate; 
 
import org.ant4eclipse.ant.platform.core.ProjectSetComponent; 
import org.ant4eclipse.ant.platform.core.WorkspaceComponent; 
import org.ant4eclipse.ant.platform.core.WorkspaceProjectSetComponent; 
import org.ant4eclipse.lib.platform.model.resource.EclipseProject; 
import org.ant4eclipse.lib.platform.model.resource.Workspace; 
import org.ant4eclipse.lib.platform.model.team.projectset.TeamProjectSet; 
import org.apache.tools.ant.BuildException; 
import org.apache.tools.ant.ProjectComponent; 
 
import java.io.File; 
 
/**
 * <p> 
 * Default implementation of the interface {@link WorkspaceProjectSetComponent}. 
 * </p> 
 *  
 * @author Gerd Wütherich ([email protected]
 */
 
public class WorkspaceProjectSetDelegate implements WorkspaceProjectSetComponent { 
 
  /** - */ 
  private ProjectSetComponent _projectSetComponent; 
 
  /** - */ 
  private WorkspaceComponent  _workspaceComponent; 
 
  /** - */ 
  private boolean             _allWorkspaceProjects; 
 
  /**
   * <p> 
   * Creates a new instance of type {@link WorkspaceProjectSetDelegate}. 
   * </p> 
   *  
   * @param component 
   */
 
  public WorkspaceProjectSetDelegate(ProjectComponent component) { 
    this._projectSetComponent = new ProjectSetDelegate(component); 
    this._workspaceComponent = new WorkspaceDelegate(component); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public boolean isAllWorkspaceProjects() { 
    return this._allWorkspaceProjects; 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
    if (!this._allWorkspaceProjects && !isProjectNamesSet() && !isTeamProjectSetSet()) { 
      // TODO 
      throw new BuildException("allWorkspaceProjects or projectNames or teamProjectSet has to be set!"); 
    } 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public void setAllWorkspaceProjects(boolean allprojects) { 
    this._allWorkspaceProjects = allprojects; 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public String[] getProjectNames() { 
 
    // if 'allProjects' return all workspace projects 
    if (this._allWorkspaceProjects) { 
      // get workspace projects 
      EclipseProject[] projects = getWorkspace().getAllProjects(); 
      // create project names array 
      String[] projectNames = new String[projects.length]; 
      // set project names 
      for (int i = 0; i < projects.length; i++) { 
        EclipseProject project = projects[i]; 
        projectNames[i] = project.getSpecifiedName(); 
      } 
      return projectNames; 
    } 
    // return project set projects 
    else { 
      return this._projectSetComponent.getProjectNames(); 
    } 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public TeamProjectSet getTeamProjectSet() { 
    return this._projectSetComponent.getTeamProjectSet(); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public boolean isProjectNamesSet() { 
    return this._projectSetComponent.isProjectNamesSet(); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public boolean isTeamProjectSetSet() { 
    return this._projectSetComponent.isTeamProjectSetSet(); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public void requireProjectNamesSet() { 
    this._projectSetComponent.requireProjectNamesSet(); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
    this._projectSetComponent.requireTeamProjectSetOrProjectNamesSet(); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public void requireTeamProjectSetSet() { 
    this._projectSetComponent.requireTeamProjectSetSet(); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public void setProjectNames(String projectNames) { 
    this._projectSetComponent.setProjectNames(projectNames); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public void setTeamProjectSet(File projectSetFile) { 
    this._projectSetComponent.setTeamProjectSet(projectSetFile); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public Workspace getWorkspace() { 
    return this._workspaceComponent.getWorkspace(); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public File getWorkspaceDirectory() { 
    return this._workspaceComponent.getWorkspaceDirectory(); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public boolean isWorkspaceDirectorySet() { 
    return this._workspaceComponent.isWorkspaceDirectorySet(); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  @Deprecated 
  public void setWorkspace(String workspace) { 
    this._workspaceComponent.setWorkspace(workspace); 
  } 
 
  /**
   * {@inheritDoc} 
   */
 
  public void setWorkspaceDirectory(String workspaceDirectory) { 
    this._workspaceComponent.setWorkspaceDirectory(workspaceDirectory); 
  } 
 
  public String getWorkspaceId() { 
    return this._workspaceComponent.getWorkspaceId(); 
  } 
 
  public boolean isWorkspaceIdSet() { 
    return this._workspaceComponent.isWorkspaceIdSet(); 
  } 
 
    this._workspaceComponent.requireWorkspaceDirectoryOrWorkspaceIdSet(); 
  } 
 
  public void setWorkspaceId(String identifier) { 
    this._workspaceComponent.setWorkspaceId(identifier); 
  } 
 
}