//fetch each attribute, error checking, build rowobject //input: string of row from csv, colindex for data type Teach_rowObject TeachingRowBuilder::buildRow(string data, ColIndex index){ //*** instantiate classes that will help out in this function AttributeRetriever fetch(data); bool hasError = 0; //Set this to 1 if an error is found ErrorChecker filter; bool enableErrorChecking (1); //*** retrieve each attribute - temporarily store them string name = fetch.getAttribute(index.name_loc); string domain = fetch.getAttribute(index.domain_loc); string program = fetch.getAttribute(index.program_loc); string courseType = fetch.getAttribute(index.courseType_loc); string geoScope = fetch.getAttribute(index.geoScope_loc); string title = fetch.getAttribute(index.title_loc); int sDate = fetch.getIntAttribute(index.sDate_loc); int eDate = fetch.getIntAttribute(index.eDate_loc); int nTeach = fetch.getIntAttribute(index.nTeach_loc); int tStudents = fetch.getIntAttribute(index.tStudents_loc); float hpTeach = fetch.getIntAttribute(index.hpTeach_loc); float tHours = fetch.getIntAttribute(index.tHours_loc); //*** check for errors if (enableErrorChecking){ //strings - check for blank entries name = filter.blankCatch(name, hasError); domain = filter.blankCatch(domain, hasError); program = filter.blankCatch(program, hasError); courseType = filter.blankCatch(courseType, hasError); //dates, check for zeroes sDate = filter.zeroCatch(sDate, hasError); eDate = filter.zeroCatch(eDate, hasError); hpTeach = filter.zeroCatch(hpTeach, hasError); tHours = filter.zeroCatch(tHours, hasError); } //*** Build Row Teach_rowObject currentRow (hasError, name, domain, program, courseType, geoScope, nTeach, sDate, eDate, hpTeach, tHours, tStudents); return currentRow; };
//fetch each object, error checking, build row //input: raw string of row from CSV, column index for data type //output: complete row object Grant_rowObject GrantRowBuilder::buildRow(string data, ColIndex index){ //*** instantiate classes that will help out in this function AttributeRetriever fetch(data); bool hasError = 0;//IF this row has an error in it, this flag should be set to true ErrorChecker filter; bool enableErrorChecking (1); //*** retrieve each attribute - temporarily store them string name = fetch.getAttribute(index.name_loc); string domain = fetch.getAttribute(index.domain_loc); string fundType = fetch.getAttribute(index.fundType_loc); string stat = fetch.getAttribute(index.stat_loc); string role = fetch.getAttribute(index.role_loc); string title = fetch.getAttribute(index.title_loc); string pInvestigator = fetch.getAttribute(index.pInvestigator_loc); // Deal with multiple co-investigators in a cell string cpInvestigator = fetch.getAttribute(index.cpInvestigator_loc); fetch.grabFirstString(cpInvestigator);//TEMPORARY -returns first co-investigator bool peerReviewed = fetch.getBoolAttribute(index.peerReviewed_loc); bool indGrant = fetch.getBoolAttribute(index.indGrant_loc); int sDate = fetch.getIntAttribute(index.sDate_loc); int eDate = fetch.getIntAttribute(index.eDate_loc); long long totalAmount = fetch.getLongAttribute(index.totalAmount_loc); //*** Error Checking if (enableErrorChecking){ //strings - chack for blank fields name = filter.blankCatch(name, hasError); domain = filter.blankCatch(domain, hasError); fundType = filter.blankCatch(fundType, hasError); stat = filter.blankCatch(stat, hasError); role = filter.blankCatch(role, hasError); title = filter.blankCatch(title, hasError); pInvestigator = filter.blankCatch(pInvestigator, hasError); //PEER REVIEWED - if feild is left blank, we assume it has not been peer reviewed //INDUSTRY GRANT - if feild is left blank, we assume it was not an industry grant //dates - check for zeroes sDate = filter.zeroCatch(sDate, hasError); eDate = filter.zeroCatch(eDate, hasError); //Assert FundType string acceptable_fundTypes [2] = {"Grants","Clinical Trials"}; fundType = filter.stringAssert(fundType, hasError, 2, acceptable_fundTypes); //Assert status string acceptable_statuses [5] = {"Applied","Funded","Declined","Rejected","Not Funded"}; stat = filter.stringAssert(stat, hasError, 5, acceptable_statuses); //Assert Role string acceptable_Roles [8] = {"Co-Applicant","Co-Investigator","Collaborator","Co-Principal Investigator","Principal Applicant","Principal Investigator","Principal Site Investigator","Site Investigator"}; role = filter.stringAssert(role,hasError, 8, acceptable_Roles); } //*** Build Row Grant_rowObject currentRow (hasError, name, domain, sDate, eDate, fundType, stat, peerReviewed,indGrant, role, title, pInvestigator, cpInvestigator, totalAmount); return currentRow; };