package com.metservice.kanban.model;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import org.joda.time.LocalDate;
/**
* The interface for a KanbanProject representation.
*
* @author Janella Espinas, Chris Cooper
*/
public interface KanbanProject {
void deleteWorkItem(int i);
void save() throws IOException;
void advance(int id, LocalDate date);
void stop(int id);
int addWorkItem(int parentId, WorkItemType type, String name, int averageCaseEstimate, int worstCaseEstimate,
int importance, String notes, String color, boolean excluded, String workStreams,
LocalDate backlogDate);
void move(int id, int targetId, boolean after);
void reorder(Integer id, Integer[] newIdList);
WorkItemTree getWorkItemTree();
WorkItem getWorkItemById(int id);
KanbanBoardColumnList getColumns(BoardIdentifier boardType);
KanbanBoardColumnList getWallColumns();
void reparentWorkItem(int id, int newParentId);
KanbanBacklog getBacklog(String workStream);
KanbanBoard getCompleted(String workStream);
KanbanBoard getBoard(BoardIdentifier boardType, String workStream);
WorkItemTypeCollection getWorkItemTypes();
// String getJournalText();
// void writeJournalText(String journalText);
List<KanbanJournalItem> getJournal();
void addJournalItem(KanbanJournalItem journalItem);
void updateJournalItem(KanbanJournalItem journalItem);
void deleteJournalItem(int itemId);
Set<String> getWorkStreams();
LocalDate getStartDate();
LocalDate getProjectedEndDate(LocalDate startDate, LocalDate endDate);
WorkItemType getChildType(WorkItemType parentType);
}