package grader.Category;

import grader.GradingScheme.*;
import grader.View.*;
import grader.Gradebook.*;

import java.util.Collection;

/**
 *
 * 
			Category contains information on a specific category (or in some cases,
 * graded item) within
			the gradebook. Each category has a name and
 * description, along with default values of its
			grading style and late
 * penalty. The weight of the category determines the weight the category
		
 *	has within its own level (Note: This is NOT the weight of the overall class)
 *. Each category
			can have a parent category, for which it inherits its
 * default grading styles and late penalties.
			Each category can also have a list of many other categories below it, which are its children.
			 * 
 * @author 
 * @version 
 *
 **/

public class Category {

     /** Default Constructor **/
     public Category() {

     }

     /** 
        Adds the category to the list of categories
     **/
     protected GradeBook addCategory(Category gb, GradeBook cat) {
          return null;
     }

     /** 
        Adds the graded item to the list of graded items and categories
     **/
     protected GradeBook addItem(GradeBook gb, GradedItem gi) {
          return null;
     }

     /** 
        Removes the category to the list of categories
     **/
     protected GradeBook deleteCategory(Category gb, GradeBook cat) {
          return null;
     }

     /** 
        Removes the graded item to the list of graded items/categories
     **/
     protected GradeBook deleteItem(GradeBook gb, GradedItem gi) {
          return null;
     }

     /** 
        Removes the graded item to the list of graded items/categories
     **/
     protected GradeBook editCategory(GradeBook gb, GradedItem oldgi, 
               GradedItem newgi) {
          return null;
     }

     /** 
        Removes the category to the list of categories
     **/
     protected GradeBook editCategory(Category gb, Category oldcat, 
               GradeBook newcat) {
          return null;
     }

     protected String catName;

     protected String catDesc;

     protected IGradingStyle gradStyle;

     protected latePenalty latePen;

     protected int weight;

     protected Category parentCat;

}