/******************************************************************************
 * IGodsDBMarkSetWrapper.cs 
 * 
 * <Copyright and License> 
 * 
 * This file is part of GODS, a package for annotating medical images. 
 * 
 * Copyright (C) 2004 
 * Xuedong Chen 
 * Heri Mariwa 
 * Kimmy (Hsiang-ling) Lin 
 * Rui Yu 
 * 
 * This program is free software; you can redistribute it and/or 
 * modify it under the terms of the GNU General Public License 
 * as published by the Free Software Foundation; either version 2 
 * of the License, or (at your option) any later version. 
 * 
 * This program is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
 * GNU General Public License for more details. 
 * 
 * You should have received a copy of the GNU General Public License 
 * along with this program; if not, write to the Free Software 
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
 *  
 * For further questions about this file, please send email to 
 * gods@cs.umb.edu or visit us at http://gods.sourceforge.net.  
 ******************************************************************************/

using System;

namespace GODS.DBHandler
{
	/// <summary>
	/// Summary description for IGodsDBMarkSetWrapper.
	/// </summary>

	public interface IGodsDBMarkSetWrapper
	{
		/// <summary>
		/// Get all categories as string array through MarkSetTB
		/// </summary>
		string[] getAllCategory();

		/// <summary>
		/// get all group as string array through MarkTB
		/// </summary>
		/// <param name="markSetID"></param>
		/// <returns></returns>
		string[] getAllMarkSetGroup(int markSetID);

		/// <summary>
		/// Get all mark sets in a category
		/// </summary>
		MarkSetData[] getMarkSets(string category);

		/// <summary>
		/// Get all marks in a mark set
		/// </summary>
		MarkData[] getMarks(int markSetID);

		/// <summary>
		/// get all the marks in a markset with the same group name
		/// </summary>
		/// <param name="markSetID"></param>
		/// <param name="groupName"></param>
		/// <returns></returns>
		MarkData[] getGroupMarks(int markSetID, string groupName);

		/// <summary>
		/// Insert a mark
		/// </summary>
		void insertMark(MarkData newMark);

		/// <summary>
		/// Delete a mark
		/// </summary>
		void deleteMark(int markID);

		/// <summary>
		/// Update a mark
		/// </summary>
		void updateMark(MarkData newMark);

		/// <summary>
		/// Get the maximum mark id in the Mark table
		/// </summary>
		int getMaxMarkID();
		
		/// <summary>
		/// Insert a mark set
		/// </summary>
		void insertMarkSet(MarkSetData newMarkSet);
		
		/// <summary>
		/// Delete a mark set
		/// </summary>
		void deleteMarkSet(int markSetID);
		
		/// <summary>
		/// Update a mark set
		/// </summary>
		void updateMarkSet(MarkSetData newMarkSet);
		
		/// <summary>
		/// Get the maximum mark set id in the MarkSet table
		/// </summary>
		int getMaxMarkSetID();
	}
}

