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));
}
}