import { InsightDatasetKind } from "../controller/IInsightFacade"; import InsightFacade from "../controller/InsightFacade"; export default class DatasetValidator { private insightFacade: InsightFacade; constructor(insightFacade: InsightFacade) { this.insightFacade = insightFacade; } public validateDataset(id: string, content: string, kind: InsightDatasetKind): boolean { if (!this.validateId(id)) { return false; } if (this.validateRemoval(id)) { return false; } if (content === null) { //can be triggered by casting return false; } if (kind === null || (kind !== InsightDatasetKind.Sections && kind !== InsightDatasetKind.Rooms)) { //can be triggered by casting return false; } return true; } public validateId(id: string): boolean { if (id === null || id.trim().length === 0 || id.includes("_")) { return false; } return true; } public validateRemoval(id: string): boolean { if (this.insightFacade.datasetIds.includes(id)) { return true; } return false; } public validateFields(section: any): boolean { const requiredSectionFields = [ "id", "Course", "Title", "Professor", "Subject", "Year", "Avg", "Pass", "Fail", "Audit", "Section", ]; return requiredSectionFields.every((field) => section.hasOwnProperty(field)); } }