/*
 * Created on Aug 2, 2006
 * 
 * (C) Copyright TANDBERG Television Ltd.
 */

package com.tandbergtv.workflow.sanmanager;

import java.util.List;

import com.tandbergtv.workflow.core.service.Service;
import com.tandbergtv.workflow.sanmanager.dto.SANFile;
import com.tandbergtv.workflow.sanmanager.dto.SANFolder;
import com.tandbergtv.workflow.sanmanager.entities.SANDrive;

/**
 * Interface defining the methods supported for SAN Management
 * 
 * @author Vijay Silva
 */
public interface SANManagement extends Service
{
	/**
	 * Method to get all SAN Drives.
	 * 
	 * @return The List of SAN Drives being managed.
	 */
	public List<SANDrive> getAllSANDrives();

	/**
	 * Method to get a single SAN Drive given the Id.
	 * 
	 * @param driveId
	 *            The Drive Id
	 * 
	 * @return The SAN Drive matching the ID
	 * 
	 * @throws SANManagementException
	 *             Exception if the Drive Id doesn't exist.
	 */
	public SANDrive getSANDrive(long driveId) throws SANManagementException;

	/**
	 * Method to get a single SAN Drive given the name.
	 * 
	 * @param name
	 *            The Drive Name
	 * 
	 * @return The SAN Drive matching the Name
	 * 
	 * @throws SANManagementException
	 *             Exception if a Drive with the given Name doesn't exist.
	 */
	SANDrive getSANDrive(String name) throws SANManagementException;
	
	/**
	 * Method to get a count of the number of SAN Drives.
	 * 
	 * @return The number of SAN Drives.
	 */
	public int getSANDriveCount();

	/**
	 * Method to get the listing of the all the Files (no folders) present in a SAN Folder
	 * 
	 * @param sanFolderPath
	 *            The SAN Folder Path
	 * 
	 * @return The list of SANFile objects representing all files in the input folder
	 * 
	 * @throws SANManagementException
	 *             Failure to get the list of child files
	 */
	List<SANFolder> getFolderListing(String sanFolderPath) throws SANManagementException;

	/**
	 * Method to get the listing of the all the Folders (no files) present in a SAN Folder
	 * 
	 * @param sanFolderPath
	 *            The SAN Folder Path
	 * 
	 * @return The list of SANFile objects representing all child folders in the input folder
	 * 
	 * @throws SANManagementException
	 *             Failure to get the list of child folders
	 */
	List<SANFile> getFileListing(String sanFolderPath) throws SANManagementException;
}
