/*******************************************************************************
*
* Copyright (c) 2004-2009 Oracle Corporation.
*
* 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:
*
* Kohsuke Kawaguchi
*
*
*******************************************************************************/
package hudson.model;
import java.io.IOException;
import java.util.Collection;
import java.io.File;
/**
* Represents a grouping inherent to a kind of {@link Item}s.
*
* @author Kohsuke Kawaguchi
* @see ItemGroupMixIn
*/
public interface ItemGroup<T extends Item> extends PersistenceRoot, ModelObject {
/**
* Gets the full name of this {@link ItemGroup}.
*
* @see Item#getFullName()
*/
String getFullName();
/**
* @see Item#getFullDisplayName()
*/
String getFullDisplayName();
/**
* Gets all the items in this collection in a read-only view.
*/
Collection<T> getItems();
/**
* Returns the path relative to the context root, like "foo/bar/zot/". Note
* no leading slash but trailing slash.
*/
String getUrl();
/**
* Gets the URL token that prefixes the URLs for child {@link Item}s. Like
* "job", "item", etc.
*/
String getUrlChildPrefix();
/**
* Gets the {@link Item} inside this group that has a given name.
*/
T getItem(String name);
/**
* Assigns the {@link Item#getRootDir() root directory} for children.
*/
File getRootDirFor(T child);
/**
* Internal method. Called by {@link Item}s when they are renamed by users.
*/
void onRenamed(T item, String oldName, String newName) throws IOException;
/**
* Internal method. Called by {@link Item}s when they are deleted by users.
*/
void onDeleted(T item) throws IOException;
}