Documentation ¶
Overview ¶
populate contains functions to populate SIF objects from the sifxml package with plausible values.
Purpose ¶
The populate package provides functions to populate SIF XML objects (as specified in the sifxml package) with plausible values (objects.go). It provides helper functions to make that population more straightforward (base.go). Objects are generated in the first instance to populate the NSIP HITS test harness http://hits.nsip.edu.au/dashboard/ with input data, for clients to consume as part of use case validation. The code to generate bundles of interrelated object (usecases.go) parametrises object generation according to the HITS use cases it fulfils.
The assumptions and default values behind the generation of each object are documented in for each method involved.
Index ¶
- func AddToScheduledTeacherList(t *sifxml.ScheduledTeacherListType, staff []*sifxml.StaffPersonal, ...) *sifxml.ScheduledTeacherListType
- func All_AGCollections() []string
- func All_teachingSubjects() []string
- func CollectionCode2Name(code string) string
- func CollectionRoundCode(collection string, year string, round int) string
- func Create_Address(state string) sifxml.AddressType
- func Create_CalendarDate(calendar *sifxml.CalendarSummary, school *sifxml.SchoolInfo, date time.Time, ...) *sifxml.CalendarDate
- func Create_CalendarDates(calendar *sifxml.CalendarSummary, school *sifxml.SchoolInfo) *sifxml.CalendarDates
- func Create_CalendarSummary(school *sifxml.SchoolInfo) *sifxml.CalendarSummary
- func Create_ChargedLocationInfo(parent *sifxml.ChargedLocationInfo, school *sifxml.SchoolInfo) *sifxml.ChargedLocationInfo
- func Create_ChargedLocationInfos(count int, schools *sifxml.SchoolInfos) *sifxml.ChargedLocationInfos
- func Create_CollectionRound(collection string) *sifxml.CollectionRound
- func Create_CollectionRounds() *sifxml.CollectionRounds
- func Create_CollectionStatus(collection string, round int, school *sifxml.SchoolInfo) *sifxml.CollectionStatus
- func Create_CollectionStatuses(school *sifxml.SchoolInfo) *sifxml.CollectionStatuss
- func Create_Debtor(student *sifxml.StudentPersonal, staff *sifxml.StaffPersonal, ...) *sifxml.Debtor
- func Create_Debtors(student *sifxml.StudentPersonals, staff *sifxml.StaffPersonals, ...) *sifxml.Debtors
- func Create_FinancialAccount(parent *sifxml.FinancialAccount, location *sifxml.ChargedLocationInfo) *sifxml.FinancialAccount
- func Create_FinancialAccounts(count int, loc *sifxml.ChargedLocationInfos) *sifxml.FinancialAccounts
- func Create_GradingAssignment(school *sifxml.SchoolInfo, teachinggroup *sifxml.TeachingGroup, ...) *sifxml.GradingAssignment
- func Create_GradingAssignmentScore(assignment *sifxml.GradingAssignment, school *sifxml.SchoolInfo, ...) *sifxml.GradingAssignmentScore
- func Create_GradingAssignmentScores(assignment *sifxml.GradingAssignment, school *sifxml.SchoolInfo, ...) []*sifxml.GradingAssignmentScore
- func Create_GradingAssignments(count int, school *sifxml.SchoolInfo, teachinggroup *sifxml.TeachingGroup, ...) []*sifxml.GradingAssignment
- func Create_RoomInfo(school *sifxml.SchoolInfo) *sifxml.RoomInfo
- func Create_RoomInfoWithStaff(school *sifxml.SchoolInfo, staff []*sifxml.StaffPersonal) *sifxml.RoomInfo
- func Create_RoomInfos(count int, school *sifxml.SchoolInfo) *sifxml.RoomInfos
- func Create_ScheduledActivities(cells *sifxml.TimeTableCells, dates *sifxml.CalendarDates, ...) *sifxml.ScheduledActivitys
- func Create_ScheduledActivity(school *sifxml.SchoolInfo, timetable *sifxml.TimeTable, ...) *sifxml.ScheduledActivity
- func Create_ScheduledActivityBasic(date string, c *sifxml.TimeTableCell, tg *sifxml.TeachingGroup) *sifxml.ScheduledActivity
- func Create_SchoolCourseInfo(subject *sifxml.TimeTableSubject, terms *sifxml.TermInfos) *sifxml.SchoolCourseInfo
- func Create_SchoolCourseInfos(subjects *sifxml.TimeTableSubjects, terms *sifxml.TermInfos) *sifxml.SchoolCourseInfos
- func Create_SchoolInfo(schooltype string) *sifxml.SchoolInfo
- func Create_SchoolInfos(count int) *sifxml.SchoolInfos
- func Create_SessionInfo(c *sifxml.TimeTableCell, date string) *sifxml.SessionInfo
- func Create_SessionInfos(cells *sifxml.TimeTableCells, dates *sifxml.CalendarDates) *sifxml.SessionInfos
- func Create_StaffAssignment(staff *sifxml.StaffPersonal, school *sifxml.SchoolInfo) *sifxml.StaffAssignment
- func Create_StaffAssignments(staff *sifxml.StaffPersonals, school *sifxml.SchoolInfo) *sifxml.StaffAssignments
- func Create_StaffPersonal() *sifxml.StaffPersonal
- func Create_StaffPersonals(count int) *sifxml.StaffPersonals
- func Create_StudentContactPersonal(student *sifxml.StudentPersonal, ordinal int) *sifxml.StudentContactPersonal
- func Create_StudentContactPersonalAndRelationship(students *sifxml.StudentPersonals) (*sifxml.StudentContactPersonals, *sifxml.StudentContactRelationships)
- func Create_StudentContactRelationship(student *sifxml.StudentPersonal, contact *sifxml.StudentContactPersonal) *sifxml.StudentContactRelationship
- func Create_StudentDataTransferNote(student *sifxml.StudentPersonal, schools *sifxml.SchoolInfos, ...) *sifxml.StudentDataTransferNote
- func Create_StudentDataTransferNotes(students *sifxml.StudentPersonals, schools *sifxml.SchoolInfos, ...) *sifxml.StudentDataTransferNotes
- func Create_StudentPersonal(yearlevel string) *sifxml.StudentPersonal
- func Create_StudentPersonals(count int, yearlevels []string) *sifxml.StudentPersonals
- func Create_StudentSchoolEnrollment(student *sifxml.StudentPersonal, school *sifxml.SchoolInfo) *sifxml.StudentSchoolEnrollment
- func Create_StudentSchoolEnrollments(students *sifxml.StudentPersonals, school *sifxml.SchoolInfo) *sifxml.StudentSchoolEnrollments
- func Create_TeachingGroup(school *sifxml.SchoolInfo, students *sifxml.StudentPersonals, ...) *sifxml.TeachingGroup
- func Create_TeachingGroups(school *sifxml.SchoolInfo, staff *sifxml.StaffPersonals, ...) *sifxml.TeachingGroups
- func Create_TermInfo(school *sifxml.SchoolInfo, semester int) *sifxml.TermInfo
- func Create_TermInfos(school *sifxml.SchoolInfo) *sifxml.TermInfos
- func Create_TimeTable(school *sifxml.SchoolInfo) *sifxml.TimeTable
- func Create_TimeTableCell(day string, period string, celltype string, school *sifxml.SchoolInfo, ...) *sifxml.TimeTableCell
- func Create_TimeTableCells(school *sifxml.SchoolInfo, timetable *sifxml.TimeTable, ...) *sifxml.TimeTableCells
- func Create_TimeTableSubject(school *sifxml.SchoolInfo, course *sifxml.SchoolCourseInfo, subject string, ...) *sifxml.TimeTableSubject
- func Create_TimeTableSubjects(school *sifxml.SchoolInfo, subjects []string, terms *sifxml.TermInfos) *sifxml.TimeTableSubjects
- func Create_VendorInfo() *sifxml.VendorInfo
- func Create_VendorInfos(count int) *sifxml.VendorInfos
- func Errcheck(err error)
- func GenderedFakePerson(gender string) *gofakeit.PersonInfo
- func HTTPStatus2Text(code string) string
- func PeriodEnd(id int) time.Time
- func PeriodStart(id int) time.Time
- func Periods() []string
- func PrintJSON(record interface{}) error
- func PrintXML(record interface{}) error
- func Schooltype2Yearlevels(schooltype string) []string
- func TeachingGroupKLA(shortname string) string
- func Term_end_date(year string, semester int) string
- func Term_start_date(year string, semester int) string
- type MakeUsecaseCounts
- type MakeUsecases
- type PersonInfo
- type UseCaseObjects
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddToScheduledTeacherList ¶
func AddToScheduledTeacherList(t *sifxml.ScheduledTeacherListType, staff []*sifxml.StaffPersonal, start time.Time, finish time.Time) *sifxml.ScheduledTeacherListType
Add a teacher to a list of scheduled teachers (SIF type sifxml.ScheduledTeacherListType, appearing in ScheduledActivty or TimeTableCell), with a starting time and finish time for their scheduled teaching.
* Weighting is set at 1.0.
* Supervision is set with weighted probability: "Normal" (0.8), "MergedClass" (0.1), "MinimalSupervision" (0.1).
* Credit is only set with probability 0.4. If it is set, its value is set randomly as one of "Casual", "Extra", "In-Lieu", "Underload".
func All_AGCollections ¶
func All_AGCollections() []string
List of all codes for Australian Government Collections, to iterate through
func All_teachingSubjects ¶
func All_teachingSubjects() []string
Default selection of teaching subjects: "MAT", "ENG", "PHYS", "BIO", "CHEM", "COMP", "VIS", "ECON", "HIST".
func CollectionCode2Name ¶
Map Australian Government Collection code to human-readable name
func CollectionRoundCode ¶
Generate a code for the given collection round
func Create_Address ¶
func Create_Address(state string) sifxml.AddressType
Populate an address. Used in Create_SchoolInfo(), Create_StudentContactPersonal(), Create_ChargedLocationInfo().
If state (StateProvince) is not provided, it is selected at random from valid Australian states.
* PostalCode is random based on state.
* Type and Role are set at "0123" (Mailing Address) and "012A" (Home Address).
* StreetNumber, StreetName, City are randomised.
* StreetType is a random selection from a list of typical Australian street types.
func Create_CalendarDate ¶
func Create_CalendarDate(calendar *sifxml.CalendarSummary, school *sifxml.SchoolInfo, date time.Time, studentholiday bool, publicholiday bool, calendar_date_number int) *sifxml.CalendarDate
Create a CalendarDate object linked to CalendarSummary object calendar and SchoolInfo object school, for the given date (date). Indicate whether the date is a student holiday (studentholiday), and/or a public holiday (publicholiday), and provide the ordinal number of the day in the student calendar (calendar_date_number; to be ignored if given the value -1).
* Date is set to date.
* SchoolYear is set to calendar.SchoolYear.
* CalendarDateType is set to the enum corresponding to the holiday status of the day: "0846" if publicholiday, else "0845" if studentholiday, else "INST".
* StudentAttendance.CountsTowardAttendance is set to No only if studentholiday is set.
* TeacherAttendance.CountsTowardAttendance is set to No only if publicholiday is set.
* AdministratorAttendance.CountsTowardAttendance is set to No only if publicholiday is set.
* All of StudentAttendance.AttendanceValue, TeacherAttendance.AttendanceValue, AdministratorAttendance.AttendanceValue are set to either 1.0 or 0.0, depending on whether they count towards that attendance.
func Create_CalendarDates ¶
func Create_CalendarDates(calendar *sifxml.CalendarSummary, school *sifxml.SchoolInfo) *sifxml.CalendarDates
Create a range of CalendarDate objects linked to CalendarSummary object calendar and SchoolInfo object school.
A calendar date is generated for each weekday between calendar.StartDate and calendar.EndDate. It is deemed a public holiday if it is a public holiday in Victoria. It is deemed a student hoiliday if it is a public holiday, or else if it is between days 45 and 55, 105 and 115, and 155 and 165 exclusive of the calendar.
func Create_CalendarSummary ¶
func Create_CalendarSummary(school *sifxml.SchoolInfo) *sifxml.CalendarSummary
Create a CalendarSummary object, linked to SchoolInfo object school.
* SchoolYear is set to the current year.
* LocalId is a sequence number shared between all objects.
* DaysInSession is set to 277.
* StartDate is set to January 28 of the current year. No attempt is made to set it to a weekday.
* EndDate is set to December 19 of the current year. No attempt is made to set it to a weekday.
func Create_ChargedLocationInfo ¶
func Create_ChargedLocationInfo(parent *sifxml.ChargedLocationInfo, school *sifxml.SchoolInfo) *sifxml.ChargedLocationInfo
Create a ChargedLocationInfo object, linked to parent ChargedLocationInfo object parent (if it is not nil), and SchoolInfo object school (if it is not nil)
If school is present:
* SiteCategory is set to "School"
* LocationType is set to "School"
* Name, LocalId, StateProvinceId, AddressList are copied from school.
* PhoneNumberList is copied from school if present.
If school is not present:
* SiteCategory is set to "NonSchool"
* LocationType is set to a random choice out of "HR", "Professional Development", "Accounting", "Management", "Cleaning"
* Name is set to a radndom company name followed by LocationType.
* LocalId is a sequence number shared between all objects.
* AddressList is a single entry set by Create_Address(), in a random state.
* PhoneNumberList is a single entry of Type "0096" (Main Telephone Number), and is a phone number with a landline corresponding to the address state.
func Create_ChargedLocationInfos ¶
func Create_ChargedLocationInfos(count int, schools *sifxml.SchoolInfos) *sifxml.ChargedLocationInfos
Create count ChargedLocationInfo objects. The slice schools gives SchoolInfo objects that are to be represented in the generated ChargedLocationInfo objects, one per school. If count is larger than the length of schools, the remaining objects are non-school charged locations. Half of the remaining objects generated are parents of the other half, assigned randomly.
func Create_CollectionRound ¶
func Create_CollectionRound(collection string) *sifxml.CollectionRound
Creates a CollectionRound object for a given AG Collection. Presupposes that there are two rounds for each collection per year.
* AGCollection is set to the standard abbreviation for the collection.
* CollectionYear is set to the current year.
* AGRoundList/AGRound/RoundCode is set to the collection abbreviation plus the year plus the round number.
* AGRoundList/AGRound/RoundName is set to the expansion of the collection abbreviation plus the year plus the round number.
* In Round 1, AGRoundList/AGRound/StartDate is set to March 1. In Round 2, it is set to September 1.
* In Round 1, AGRoundList/AGRound/DueDate is set to March 30. In Round 2, it is set to a September 30.
* In Round 1, AGRoundList/AGRound/EndDate is set to March 30. In Round 2, it is set to September 30.
func Create_CollectionRounds ¶
func Create_CollectionRounds() *sifxml.CollectionRounds
Create CollectionRound objects for the currently supported AG Collections.
func Create_CollectionStatus ¶
func Create_CollectionStatus(collection string, round int, school *sifxml.SchoolInfo) *sifxml.CollectionStatus
Create a CollectionStatus object, given the standard abbreviation for the collection, and the round number. Presupposes that there are two rounds for each collection per year. The CollectionStatus is not linked to any Collection objects submitted to HITS, as it is statically populated.
* ReportingAuthority is set to "Middleton Primary School Reporting Authority".
* ReportingAuthoritySystem is set to "Reporting Authority System B"
* ReportingAuthorityCommonwealthId is set to "1234".
* SubmittedBy is set to "John Smith".
* SubmissionTimestamp is set to the 30th of either March or September, depending on the round number.
* AGCollection is set to the collection value.
* CollectionYear is set to the current year.
* RoundCode is set to the collection abbreviation plus the current year plus the round number.
* ReportingObjectResponseList/ReportingObjectResponse/HTTPStatusCode is set one of 201 (75%), 422 (15%) or 500 (10%).
* ReportingObjectResponseList/ReportingObjectResponse/ErrorText is set to the HTTP Status text corresponding to HTTPStatusCode.
* ReportingObjectResponseList/ReportingObjectResponse/CommonwealthId is set to "101".
* ReportingObjectResponseList/ReportingObjectResponse/EntityName is set to "Middleton Primary School".
* ReportingObjectResponseList/ReportingObjectResponse/AGSubmissionStatusCode is set to a random value of the valid status codes: "Cancelled", "Declaration Pending", "Declared", "Exempt", "Finalised", "In Error", "In Progress", "In Review", "Not Started", "Processing", "Reopened".
* ReportingObjectResponseList/ReportingObjectResponse/AGRuleList is given three rule entries.
* ReportingObjectResponseList/ReportingObjectResponse/AGRuleList/AGRule/AGRuleCode is set to "WR-nnn", for nnn is 001 to 003.
* ReportingObjectResponseList/ReportingObjectResponse/AGRuleList/AGRule/AGRuleComment is set to "Cannot be ignored because Components do not add up to Total - Fix"
* ReportingObjectResponseList/ReportingObjectResponse/AGRuleList/AGRule/AGRuleResponse is set to "Rejected".
* ReportingObjectResponseList/ReportingObjectResponse/AGRuleList/AGRule/AGRuleStatus is set to "Fail".
func Create_CollectionStatuses ¶
func Create_CollectionStatuses(school *sifxml.SchoolInfo) *sifxml.CollectionStatuss
Create CollectionStatus objects for the currently supported AG Collections, and for each round created in CollectionRounds. Presupposes that there are two rounds for each collection per year.
func Create_Debtor ¶
func Create_Debtor(student *sifxml.StudentPersonal, staff *sifxml.StaffPersonal, contact *sifxml.StudentContactPersonal, vendor *sifxml.VendorInfo) *sifxml.Debtor
Create a Debtor object, associated with one of StudentPersonal object student, StaffPersonal object staff, StudentContactPersonal object contact, or VendorInfo object vendor. The options are mutually exclusive, and all other arguments are expected to be nil.
* LocalId is a sequence number shared between all objects.
func Create_Debtors ¶
func Create_Debtors(student *sifxml.StudentPersonals, staff *sifxml.StaffPersonals, contact *sifxml.StudentContactPersonals, vendor *sifxml.VendorInfos) *sifxml.Debtors
Create a Debtor object corresponding to each object in each of the slices of objects passed to the function.
func Create_FinancialAccount ¶
func Create_FinancialAccount(parent *sifxml.FinancialAccount, location *sifxml.ChargedLocationInfo) *sifxml.FinancialAccount
Create a FinancialAccount object, linked to parent FinancialAccount object parent (if it is not nil), and ChargedLocationInfo object location (if it is not nil)
* LocalId is a sequence number shared between all objects.
* CreationDate is a random date between 2012-01-01 and 2015-12-31.
* CreationTime is a random time.
* AccountNumber is a unique random number between 1 and 100000000
* ClassType is randomly set to one of "Asset", "Liability", "Revenue", "Expense", "Other".
* Name is set to a random name. If location is not nil, it is instead set to the same Name as Location.Name.
func Create_FinancialAccounts ¶
func Create_FinancialAccounts(count int, loc *sifxml.ChargedLocationInfos) *sifxml.FinancialAccounts
Create count FinancialAccount objects, some of which shall be linked to ChargedLocationInfo objects randomly drawn from locations.
Half the accounts to be generated are children of other accounts generated in the same function, chosen randomly. A third of all parent accounts are randomly associated with a charged location; all children of that account are associated with the same charged location.
func Create_GradingAssignment ¶
func Create_GradingAssignment(school *sifxml.SchoolInfo, teachinggroup *sifxml.TeachingGroup, students *sifxml.StudentPersonals) *sifxml.GradingAssignment
Create a GradingAssignment object, linked to SchoolInfo object school, TeachingGroup object teachinggroup, and slice of StudentPersonal objects students.
* GradingCategory is randomly selected from "quiz", "essay", "project".
* PointsPossible is set at 10.
* CreateDate is set at a random date between February 1 and November 1 in the current year.
* DueDate is set to 30 days after CreateDate.
* Description is set to a randomised string of eight letters.
* Weight is set to a random integer between 2 and 5 inclusive.
* MaxAttemptsAllowed is set to 5.
* DetailedDescriptionURL is set to "http://www.example.com/" followed by Description.
func Create_GradingAssignmentScore ¶
func Create_GradingAssignmentScore(assignment *sifxml.GradingAssignment, school *sifxml.SchoolInfo, teachinggroup *sifxml.TeachingGroup, student *sifxml.StudentPersonal, staff *sifxml.StaffPersonal) *sifxml.GradingAssignmentScore
Create a GradingAssignmentScore object, linked to GradingAssignment object assignment, SchoolInfo object school, TeachingGroup object teachinggroup, StudentPersonal object student, and StaffPersonalObject staff.
* ScorePoints is set to a random number between 0 and GradingAssignment.PointsPossible.
* ScoreDescription is set to a randomised sentence of 10 words.
* DateGraded is set to a date between 0 and 6 days inclusive after GradingAssignment.DueDate.
func Create_GradingAssignmentScores ¶
func Create_GradingAssignmentScores(assignment *sifxml.GradingAssignment, school *sifxml.SchoolInfo, teachinggroup *sifxml.TeachingGroup, students *sifxml.StudentPersonals, staff *sifxml.StaffPersonal) []*sifxml.GradingAssignmentScore
Create a GradingAssignmentScore object for each student in the slice of StudentPersonal objects students, each of them linked to GradingAssignment object assignment, SchoolInfo object school, TeachingGroup object teachinggroup, and StaffPersonalObject staff.
func Create_GradingAssignments ¶
func Create_GradingAssignments(count int, school *sifxml.SchoolInfo, teachinggroup *sifxml.TeachingGroup, students *sifxml.StudentPersonals) []*sifxml.GradingAssignment
Create count GradingAssignment objects, each linked to SchoolInfo object school, TeachingGroup object teachinggroup, and slice of StudentPersonal objects students.
func Create_RoomInfo ¶
func Create_RoomInfo(school *sifxml.SchoolInfo) *sifxml.RoomInfo
Create a RoomInfo object linked to SchoolInfo object school, with no associated staff.
func Create_RoomInfoWithStaff ¶
func Create_RoomInfoWithStaff(school *sifxml.SchoolInfo, staff []*sifxml.StaffPersonal) *sifxml.RoomInfo
Create a RoomInfo object linked to SchoolInfo object school, with associated StaffPersonal objects given in staff (populating StaffList).
* LocalId is a sequence number shared between all objects.
* RoomNumber is a unique random number between 1 and 999.
* Description is "Room" plus RoomNumber.
* Capacity is a random integer between 10 and 60.
* Size is a random integer between 2 and 7.
* RoomType is set with weighted probability: "Classroom" (0.8), "Art" (0.1), "Basketball court" (0.1)
func Create_RoomInfos ¶
func Create_RoomInfos(count int, school *sifxml.SchoolInfo) *sifxml.RoomInfos
Create count RoomInfo objects, linked to SchoolInfo object school.
func Create_ScheduledActivities ¶
func Create_ScheduledActivities(cells *sifxml.TimeTableCells, dates *sifxml.CalendarDates, tg *sifxml.TeachingGroups) *sifxml.ScheduledActivitys
Create ScheduledActivity objects corresponding to the slice of TimeTableCell objects cells, the slice of CalendarDate objects dates, and the slice of TeachingGroup objects tg. Uses Create_ScheduledActivityBasic(). Creates one scheduled activity for each cell and each date which has StudentAttendance.CountsTowardAttendance as "Yes". Also creates one scheduled activity as an excursion for each teaching group, on a random day in the calendar with StudentAttendance.CountsTowardAttendance as "Yes", before the last 10 days of dates.
Presupposes that the calendar dates are in the current year. Presupposes that all calendar dates are on weekdays.
func Create_ScheduledActivity ¶
func Create_ScheduledActivity(school *sifxml.SchoolInfo, timetable *sifxml.TimeTable, timetablecell *sifxml.TimeTableCell, timetablesubject *sifxml.TimeTableSubject, students *sifxml.StudentPersonals, staff *sifxml.StaffPersonals, teachinggroups *sifxml.TeachingGroups, rooms *sifxml.RoomInfos) *sifxml.ScheduledActivity
Create a ScheduledActivity object, linked to SchoolInfo object school, TimeTable object timetable, TimeTableCell object timetablecell, TimeTableSubject object timetablesubject, slice of StudentPersonal objects students, slice of StaffPersonal objects staff, Slice of TeachingGroup objects teachinggroups, and slice of RoomInfo objects rooms. This object is hard-coded to generate excursions, and is not the object used for use case object generation.
* ActivityDate is set to a random date in the current year.
* StartTime is set to a random time.
* FinishTime is set to three hours after StartTime.
* CellType is set to "Excursion".
* ActivityType is set to "Excursion".
* Location is set to "Zoo".
* ActivityName is set to "Zoo Excursion".
* TeacherList is set through AddToScheduledTeacherList().
func Create_ScheduledActivityBasic ¶
func Create_ScheduledActivityBasic(date string, c *sifxml.TimeTableCell, tg *sifxml.TeachingGroup) *sifxml.ScheduledActivity
Create a ScheduledActivity object, based on the contents of TimeTableCell object c, and TeachingGroup object tg, for the given date (ActivityDate).
If c is not nil (so the ScheduledActivity reflects a recurring teaching event):
* The TimeTableCell-based attributes TimeTableCellRefId, DayId, PeriodId, TimeTableRefId, CellType, TeacherList, RoomList are copied across.
* StartTime and FinishTime are set based on PeriodId, through PeriodStart(), PeriodEnd().
Else, if tg is not nil (so the ScheduledActivity is a non-recurring event for a teaching group):
* StartTime is set as "09:00:00".
* EndTime is set as "15:00:00".
* Location is set to "Zoo".
* ActivityType is set to "Excursion".
* ActivityName is set to "Zoo Excursion".
func Create_SchoolCourseInfo ¶
func Create_SchoolCourseInfo(subject *sifxml.TimeTableSubject, terms *sifxml.TermInfos) *sifxml.SchoolCourseInfo
Creates a SchoolCourseInfo object, linking to TimeTableSubject object subject and the slice of TermInfo object terms. Presupposes that terms are in consecutive chronological order, and are semesters.
Updates subject: sets subject.SchoolCourseInfoRefId to be the RefId of the generated object.
* CourseCode is set to a unique random number between 1 and 10000.
* SchoolYear is copied across from subject.
* CourseTitle is copied across from subject.SubjectLocalId.
* TermInfoRefId is identified as the RefId of the nth element of terms, where n is subject.Semester.
func Create_SchoolCourseInfos ¶
func Create_SchoolCourseInfos(subjects *sifxml.TimeTableSubjects, terms *sifxml.TermInfos) *sifxml.SchoolCourseInfos
Creates a SchoolCourseInfo object for each subject in TimeTableSubject, linking to the slice of TermInfo object terms. Presupposes that terms are in consecutive chronological order, and are semesters.
func Create_SchoolInfo ¶
func Create_SchoolInfo(schooltype string) *sifxml.SchoolInfo
Create a school with its school of SchoolType schooltype. If schooltype is empty, a random value will be selected (drawn from the codeset AUCodeSetsSchoolLevelType).
Each school has a campus type populated. The SchoolCampusId is a random number between 1 and 4. The ParentSchoolId is the same as the school LocalId. The CampusType is the same as the SchoolType. The AdminStatus is set with weighted probability: "N" (0.2), "Y" (0.8).
* LocalId is a sequence number shared between all objects.
* StateProvinceId is a unique random number between 1 and 10000.
* AcaraId is a unique random number between 1 and 10000.
* CommonwealthId is a unique random number between 1 and 10000.
* SchoolName is a random name, suffixed with a descriptor consistent with schooltype.
* SchoolSector is set to "Gov".
* OperationalStatus is set to "O".
* IndependentSchool is set to "N".
* ARIA is set to 1.0.
* Entity_Open is set to "1990-01-01".
* AddressList is populated by a single entry from Create_Address().
* SchoolContactList is populated with a single randomised person, with a PositionTitle of "Principal", a Role of "Primary Contact". Their email is a single Email of type "01" (Primary), and is generated using the first name, the middle initial, the surname, and a domain name based on the school name. Their phone number is a single entry of Type "0096" (Main Telephone Number), and is a mobile phone number.
func Create_SchoolInfos ¶
func Create_SchoolInfos(count int) *sifxml.SchoolInfos
Creates count SchoolInfo objects, with random school types.
func Create_SessionInfo ¶
func Create_SessionInfo(c *sifxml.TimeTableCell, date string) *sifxml.SessionInfo
Create a SessionInfo object for TimeTableCell c, and the given date.
* LocalId is a sequence number shared between all objects.
* SchoolYear is set to the year component of date.
* SessionDate is set to date.
* StartTime is set through PeriodStart().
* EndTime is set through PeriodEnd().
* RollMarked is set to "Y".
func Create_SessionInfos ¶
func Create_SessionInfos(cells *sifxml.TimeTableCells, dates *sifxml.CalendarDates) *sifxml.SessionInfos
Create a sequence of SessionInfo objects, one for each TimeTableCell object in cells, and for each CalendarDate object in dates which has a StudentAttendance.CountsTowardAttendance value of "Y".
Presupposes that the calendar dates are in the current year. Presupposes that all calendar dates are on weekdays.
func Create_StaffAssignment ¶
func Create_StaffAssignment(staff *sifxml.StaffPersonal, school *sifxml.SchoolInfo) *sifxml.StaffAssignment
Create a StaffAssignment object, linking StaffPersonal object staff to SchoolInfo object school.
Updates student: the staff email is set to a domain value based on the school name.
* PrimaryAssignment is set to "Y".
* SchoolYear is set to the current year.
* JobStartDate is set to "1990-01-01".
* JobFunction is set to "teacher"
* StaffActivity is set to a random valid value.
* If the student year level is set, YearLevel is set to the same value; otherwise it is set to a random value between 1 and 12.
func Create_StaffAssignments ¶
func Create_StaffAssignments(staff *sifxml.StaffPersonals, school *sifxml.SchoolInfo) *sifxml.StaffAssignments
Creates one StaffAssignment for each staff member in staff, linking it to school.
func Create_StaffPersonal ¶
func Create_StaffPersonal() *sifxml.StaffPersonal
Create a StaffPersonal record.
Only a legal name (Type: "LGL") is provided for the staff member.
* FamilyName, GivenName, Sex, MiddleName are randomised as a bundle (https://github.com/brianvoe/gofakeit). Sex is binary. MiddleName is randomised separately (gofakeit does not support middle names), but is of the same gender as the GivenName.
* PreferredGivenName is set to be the same as GivenName.
* Title is randomised, based on the staff sex.
* The staff is assigned two OtherId identifiers: One of type "DET_USER_ID", a unique random number between 1 and 100000000, and one of type either "pep" (probability 0.9) or "cep" (probability 0.1), also a unique random number between 1 and 100000000.
* Email is only a single entry, of type "01" (Primary), and is generated using the first name, the middle initial, the surname, and the domain "example.edu.au". (Overridden in Create_StaffAssignment().)
* LocalId is a sequence number shared between all objects.
* StateProvinceId is a unique random number between 1 and 100000000.
* EmploymentStatus is set to "A".
* BirthDate is a random date betweem 25 and 65 years before the current year.
* CountryOfBirth is fixed at "1101" (Australia).
func Create_StaffPersonals ¶
func Create_StaffPersonals(count int) *sifxml.StaffPersonals
Create count StaffPersonal objects.
func Create_StudentContactPersonal ¶
func Create_StudentContactPersonal(student *sifxml.StudentPersonal, ordinal int) *sifxml.StudentContactPersonal
For STDP, following fields added: * Sex, identical to Gender (differentiated as of 3.6.0) * PlaceOfBirth, randomised * OtherName (0.1 possibility: Type: "PRV")
func Create_StudentContactPersonalAndRelationship ¶
func Create_StudentContactPersonalAndRelationship(students *sifxml.StudentPersonals) (*sifxml.StudentContactPersonals, *sifxml.StudentContactRelationships)
Create one or two StudentContactPersonal objects and StudentContactRelationship objects for each student in students. Whether one or two contacts and relationships are created depends on the encoding of Parent1 and Parent2 attributes in the student object. Each student has distinct parents: there is no modelling of siblings.
func Create_StudentContactRelationship ¶
func Create_StudentContactRelationship(student *sifxml.StudentPersonal, contact *sifxml.StudentContactPersonal) *sifxml.StudentContactRelationship
Create a StudentContactRelationship record joining StudentPersonal object student to StudentContactPersonal object contact.
* Relationship is set with weighted probability: "01" (Parent) (0.26), and 0.02 for each other value between "02" and "13" inclusive.
* Each flag in ContactFlags is set to "Y" with probability 0.9, else "N". Exceptions: "ParentLegalGuardian" is set to "Y" with probability 0.8; "InterventionOrder" is set to "N" with probability 0.9.
func Create_StudentDataTransferNote ¶ added in v0.2.0
func Create_StudentDataTransferNote(student *sifxml.StudentPersonal, schools *sifxml.SchoolInfos, departureschool_idx int) *sifxml.StudentDataTransferNote
Create a Student Data Transfer Note object for the given student, with the nominated school as the departure school
* The Arrival School is another random school from the list of schools
* With probability 0.2, a distinct random school is given as a Previous School
* FollowupRequest, ChildSubjectToOrders, Attendance are set randomly
* Where present, the VisaExpiryDate is set to July 30 next year, the ATEStartDate to July 30 two years ago, the ATEExpiryDate to July 30 one year ago
* With probability 0.2, student has a single NCCD; Level of Adjustment and Category of Disability are assigned randomly. With probability 0.5, the Category of Disability and a second Category of Disability is added to the Disability Category Considered List. The Date of Assessment is given as today.
* With probability 0.3, student has a single Educational Assessment, the "General Early Literacy Test", with a random score.
* The student is given a Student Grade for each of Maths, English, Science, and History, with a random letter grade.
* The student is given a score for each NAPLAN test, assessed in the previous year or the year before that, based on their current year level. Their participation is P with 0.8 probability, F with 0.06 probability, and evenly distributed among all remaining options.
func Create_StudentDataTransferNotes ¶ added in v0.2.0
func Create_StudentDataTransferNotes(students *sifxml.StudentPersonals, schools *sifxml.SchoolInfos, departureschool_idx int) *sifxml.StudentDataTransferNotes
Create a Student Data Transfer Note object for each student in students, and for a set of schools, with the nominated school as the departure school
func Create_StudentPersonal ¶
func Create_StudentPersonal(yearlevel string) *sifxml.StudentPersonal
Create a StudentPersonal record, with the student enrolled in the given year level. If no year level is provided, generate a random value.
The student has a parent 1 with probability 0.8, and has a parent 2 with probability 0.8, or if parent 1 is not provided.
A legal name (Type: "LGL") is provided for the student.
* FamilyName, GivenName, Sex, MiddleName are randomised as a bundle (https://github.com/brianvoe/gofakeit). Sex is binary. MiddleName is randomised separately (gofakeit does not support middle names), but is of the same gender as the GivenName.
* Email is only a single entry, of type "01" (Primary), and is generated using the first name, the middle initial, the surname, and the domain "example.edu.au". (Overridden in Create_StudentSchoolEnrollment().)
* LocalId is a sequence number shared between all objects.
* StateProvinceId is a unique random number between 1 and 100000000.
* BirthDate is a random date consistent with the year level and the current year.
* IndigenousStatus is set with weighted probability: "4" = "Neither Aboriginal nor Torres Strait Islander origin" (0.8), "1" = "Aboriginal but not Torres Strait Islander origin" (0.05), "2" = "Torres Strait Islander but not Aboriginal origin" (0.05), "3" = "Both Aboriginal and Torres Strait Islander origin" (0.05), "9" = "Not stated/unknown" (0.05).
* CountryOfBirth is fixed at "1101" (Australia).
* Parent1Language and Parent2Language are fixed at "1201" (English).
* Parent1EmploymentType, Parent1SchoolEducationLevel, Parent1NonSchoolEducation, Parent2EmploymentType, Parent2SchoolEducationLevel, Parent2NonSchoolEducation are set randomly to a valid value.
The following attributes have been added for STDX:
* PlaceOfBirth is a random city name.
* StateOfBirth is a random choice of Australian State
* With probability 0.1, a previous name is added for the student, of the same gender as the legal name. The surname is kept the same with probability 0.5.
* Citizenship is "1101" (Australia) with probability 0.9, and is otherwise a random choice of 1201, 1302, 1402, 1502, 2100 (New Zealand, Papua New Guinea, Kiribati, Fiji, United Kingdom). With probability 0.1, a second random citizenship is added at random, out of 2201, 2301, 2401, 3101, 3201 (Ireland, Austria, Denmark, Andora, Albania)
* If the Citizenship is other than 1101, VisaStatus is picked at random out of 100, 200, 300, 400, 500 (Partner (migrant), Refugee, Prospective marriage, Temporary work (Short stay specialist), Student)
*LBOTE: "Yes" with probability 0.2
func Create_StudentPersonals ¶
func Create_StudentPersonals(count int, yearlevels []string) *sifxml.StudentPersonals
Create count StudentPersonal records; each student is assigned a random member of yearlevels as their year level.
func Create_StudentSchoolEnrollment ¶
func Create_StudentSchoolEnrollment(student *sifxml.StudentPersonal, school *sifxml.SchoolInfo) *sifxml.StudentSchoolEnrollment
Create a StudentSchoolEnrollment object, linking StudentPersonal object student to SchoolInfo object school.
Updates student: the student email is set to a domain value based on the school name.
* MembershipType is set to "01".
* SchoolYear is set to the current year.
* TimeFrame is set to "C".
* FTE is set to 1.0.
* EntryDate is set to 25 January of the current year.
* If the student year level is set, YearLevel is set to the same value; otherwise it is set to a random value between 1 and 12.
func Create_StudentSchoolEnrollments ¶
func Create_StudentSchoolEnrollments(students *sifxml.StudentPersonals, school *sifxml.SchoolInfo) *sifxml.StudentSchoolEnrollments
Creates one StudentSchoolEnrollment for each student in students, linking it to school.
func Create_TeachingGroup ¶
func Create_TeachingGroup(school *sifxml.SchoolInfo, students *sifxml.StudentPersonals, staff *sifxml.StaffPersonals, timetablesubject *sifxml.TimeTableSubject) *sifxml.TeachingGroup
Create a TeachingGroup object, linked to StudentPersonal objects students (StudentList), StaffPersonal objects staff (TeacherList), and TimeTableSubject timetablesubject.
* LocalId is a sequence number shared between all objects.
* SchoolYear is the current year.
* Semester is set to 1.
* MinClassSize is set to 20.
* MaxClassSize is set to 40.
* ShortName is set to timetablesubject SubjectShortName if present; otherwise it is a random choice of subject out of the defaults on offer (All_teachingSubjects())
* LongName and KeyLearningArea are the full name and key learning area associated with ShortName (TeachingGroupKLA()).
func Create_TeachingGroups ¶
func Create_TeachingGroups(school *sifxml.SchoolInfo, staff *sifxml.StaffPersonals, students *sifxml.StudentPersonals, subjects *sifxml.TimeTableSubjects) *sifxml.TeachingGroups
Create TeachingGroup objects linking to SchoolInfo object school, drawing on preexisting objects in staff, students, and subjects.
* Create teaching groups for all 12 year levels.
* Split the student population into the year levels they are assigned to.
* Split staff into primary school teachers (half) and secondary school teachers (half).
* There are len(secondarystaff)/len(subjects) secondary staff assigned to each subject, meaning that on average each teacher is assigned to one subject in the best case. Assignment of secondary staff to subjects is random.
* Teaching groups have a membership of at most 20 students. Students are assigned in slices of 20 to each group; the remainder is assigned to another group.
* CurriculumLevel is set to the year level of the group.
* Primary school students (years 1 to 6) are assigned to a single teaching group. No KeyLearningArea or TimeTableSubject is assigned to the group. A random single primary teacher is assigned to the group. The ShortName and LongName of the group are both of format "6A".
* Junior secondary school students (years 7 to 9) are assigned to a single teaching group. No KeyLearningArea or TimeTableSubject is assigned to the group. A random single secondary teacher is assigned to the group. The ShortName and LongName of the group are both of format "7A".
* Senior secondary school students (years 10 to 12) are each assigned to four random subjects. For each subject in each year level, teaching groups are created to accommodate the assgined students. A random single secondary teacher assigned to that subject is assigned to each group. The KeyLearningArea corresponding to the subject is assigned to the group (TeachingGroupKLA()). The ShortName and LongName are of format "MAT 12C" and "Mathematics 12C" respectively.
func Create_TermInfo ¶
func Create_TermInfo(school *sifxml.SchoolInfo, semester int) *sifxml.TermInfo
Create a TermInfo object linked to the SchoolInfo object school, and representing the given semester.
* SchoolYear is set to the current year.
* StartDate is set to the start date of the given semester, as given in Term_start_date().
* EndtDate is set to the start date of the given semester, as given in Term_end_date().
* TermCode is set to "Term" followed by the semester number.
* TermSpan is set to "0828" (Semester).
* MarkingTerm, SchedulingTerm, and AttendanceTerm are all set to "Y".
func Create_TermInfos ¶
func Create_TermInfos(school *sifxml.SchoolInfo) *sifxml.TermInfos
Create TermInfo objects linked to SchoolInfo object school. Two objects are created for the year, each representing a semester.
func Create_TimeTable ¶
func Create_TimeTable(school *sifxml.SchoolInfo) *sifxml.TimeTable
Create a TimeTable object linked to SchoolInfo object school.
* LocalId is a sequence number shared between all objects.
* SchoolYear is the current year.
* Title is "Timetable" plus the timetable RefId.
* DaysPerCycle is set as 10.
* PeriodsPerDay is set as 7.
* TeachingPeriodsPerDay is set as 6.
* TimeTableDayList/TimeTableDay/DayTitle cycles through "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" twice.
* TimeTableDayList/TimeTableDay/TimeTablePeriodList/TimeTablePeriod/PeriodTitle cycles through the list in Periods().
* TimeTableDayList/TimeTableDay/TimeTablePeriodList/TimeTablePeriod/PeriodStart is set through PeriodStart().
* TimeTableDayList/TimeTableDay/TimeTablePeriodList/TimeTablePeriod/PeriodEnd is set through PeriodEnd().
func Create_TimeTableCell ¶
func Create_TimeTableCell(day string, period string, celltype string, school *sifxml.SchoolInfo, timetable *sifxml.TimeTable, subject *sifxml.TimeTableSubject, teachinggroup *sifxml.TeachingGroup, room *sifxml.RoomInfo, rooms []*sifxml.RoomInfo, staff *sifxml.StaffPersonal, teachers []*sifxml.StaffPersonal) *sifxml.TimeTableCell
Create a TimeTableCell object linked to the SchoolInfo object school, the TimeTable object timetable, the TimeTableSubject object subject, the TeachingGroup object teachinggroup, the RoomInfo object room (as primary room), the slice of RoomInfo objects rooms, the StaffPersonal object staff (as primary staff), and the slice of StaffPersonal objects teachers. The created object has DayId day, PeriodId period, and Celltype celltype.
* TeacherList is set through AddToScheduledTeacherList(), with period starts and ends set through PeriodStart() and PeriodEnd().
func Create_TimeTableCells ¶
func Create_TimeTableCells(school *sifxml.SchoolInfo, timetable *sifxml.TimeTable, tg *sifxml.TeachingGroups, staff *sifxml.StaffPersonals, rooms *sifxml.RoomInfos, tts *sifxml.TimeTableSubjects) *sifxml.TimeTableCells
Create TimeTableCell objects linking to SchoolInfo object school, TimeTable object timetable, slice of StaffPersonal objects staff, slice of RoomInfo objects rooms, and slice of TimeTableSubject objects tts.
Teaching groups without a timetable subject (i.e. Primary, Junior Secondary) are assigned two cells a week for each subject in tts that is available for that year level, in the same randomly selected room.
Teaching groups with a timetable subject (i.e. Senior Secondary) are assigned two cells a week, each teaching group in a separate randomly selected room.
The two groups for each subject and teaching group are on randomly selected weekdays and periods, but are not at the same time. Each timetable cell is assigned the first teacher listed for the group.
No attempt whatsoever to avoid room clashes. The year level of each teaching group is determined from its CurriculumLevel. Currently all subjects in the program are available at all year levels.
func Create_TimeTableSubject ¶
func Create_TimeTableSubject(school *sifxml.SchoolInfo, course *sifxml.SchoolCourseInfo, subject string, acyear string, acyear_end string, semester int) *sifxml.TimeTableSubject
Create a TimeTableSubject object linking to SchoolInfo object school, SchoolCourseInfo object course, with parameters giving the subject matter (subject), the year level (acyear), the end year level if the subject is offered across multiple year levels (acyear_end; "" if it does not apply), and the semester number.
Code assumes that subject has the same enum value across all year levels. Code further assumes that time table subjects across year labels can be grouped on SubjectShortName as a label for the subject matter.
* SchoolYear is the current year.
* SubjectShortName is subject.
* SubjectLongName is a long version of subject (looked up locally).
* SubjectType is a random selection of one of "Core", "Elective", "?".
* SubjectLocalId is formed from concatenating SubjectLongName, acyear (dash acyear_end, if present), and a unique random number between 100 and 1000.
* ProposedMinClassSize is set to a random number between 5 and 20.
* ProposedMaxClassSize is set to ProposedMinClassSize.
* Semester is set to semester.
* OtherCodeList has a single entry, with Codeset set to "mycodeset", and Value set to a unique random number between 100 and 1000.
* AcademicYear is set to acyear if acyear_end is empty.
* AcademicYearRange.Start and AcademicYearRange.End are set to acyear and acyear_end, if acyear_end is not empty.
func Create_TimeTableSubjects ¶
func Create_TimeTableSubjects(school *sifxml.SchoolInfo, subjects []string, terms *sifxml.TermInfos) *sifxml.TimeTableSubjects
Create TimeTableSubject objects linked to SchoolInfo object school. One object is created for each subject in the list given, for each year level that the school offers, and for each of the terms in the TermInfo slice terms. Presupposes that terms are in consecutive chronological order, and are semesters.
There is no implementation of differentiating timetable subject offerings by year level.
func Create_VendorInfo ¶
func Create_VendorInfo() *sifxml.VendorInfo
Create a VendorInfo object.
* LocalId is a sequence number shared between all objects.
* Name is a random company name, followed by a random corporate suffix ("Company", "Pty Ltd", "Ltd", "Pty", "Inc").
* CustomerId is a unique random number between 1000 and 100000.
* ABN is a random number between 1000000000 and 100000000000.
* RegisteredForGST is set to "Y".
* PaymentTerms is set to "15 days".
* AccountNumber is set to a unique random number between 10000 and 1000000.
* AccountName is set to be the same as Name.
* In ContactInfo, FamilyName and GivenName are randomised as a bundle (https://github.com/brianvoe/gofakeit). PositionTitle is set to "Sales", and Role is set to "Sales".
* EmailList is a single entry, and is of type "01" (Primary), and is generated using the first name, the middle initial, the surname, and a random commercial domain.
* PhoneNumberList is a single entry of Type "0096" (Main Telephone Number), and is a phone number with a landline corresponding to the address state.
func Create_VendorInfos ¶
func Create_VendorInfos(count int) *sifxml.VendorInfos
Create count VendorInfo objects.
func GenderedFakePerson ¶ added in v0.2.0
func GenderedFakePerson(gender string) *gofakeit.PersonInfo
Use the fake person generator to generate a person with the given gender Supported genders: "male", "female"
func HTTPStatus2Text ¶
Map supported HTTP status code to human-readable title
func PeriodStart ¶
Set the time that the period with PeriodID id starts; e.g. period 1 maps to 9:05.
func Schooltype2Yearlevels ¶
Map the School Type schooltype to a slice of year levels that a school of that type offers.
func TeachingGroupKLA ¶
func Term_end_date ¶
End date for the given semester in the given year. Set to May 30 and November 30.
func Term_start_date ¶
Start date for the given semester in the given year. Set to February 1 and July 1.
Types ¶
type MakeUsecaseCounts ¶
type MakeUsecaseCounts struct { Students int Staff int Schools int Rooms int Vendors int ChargedLocations int FinancialAccounts int }
The counts of different SIF objects to be generated by MakeUsecaseObjects(), for each object that it makes sense to specify a count for as an indepedent variable. Each count is a count of objects to be generated per school (except for Schools itself).
func Initcounts ¶
func Initcounts(counts MakeUsecaseCounts) MakeUsecaseCounts
The default counts of objects that MakeUsecaseObjects() is to generate, if they are not overtly specified in the call to MakeUsecaseObjects(). As noted, all counts but Schools are counts per school. The defaults are:
* SchoolInfo: 1
* StaffPersonal: 50
* StudentPersonal: 500
* RoomInfo: 100
* VendorInfo: 20
* ChargedLocationInfo: 10
* FinancialAccount: 100
type MakeUsecases ¶
type MakeUsecases struct { DailyAttendance bool Financial bool Enrolment bool Gradebook bool StudentAttendanceTimeList bool TeacherJudgement bool Timetable bool Wellbeing bool Provisioning bool AGCollections bool StudentDataTransferNote bool }
The different HITS use cases that MakeUsecaseObjects() is to generate objects for. These use cases are documented in https://github.com/nsip/usecases/tree/master/docs, replicated in HITS http://hits.nsip.edu.au/dashboard/usecase.html
type PersonInfo ¶ added in v0.2.0
type PersonInfo struct { gofakeit.PersonInfo MiddleName string }
func FakePerson ¶ added in v0.2.0
func FakePerson() *PersonInfo
type UseCaseObjects ¶
type UseCaseObjects struct { Schools *sifxml.SchoolInfos Students *sifxml.StudentPersonals Staff *sifxml.StaffPersonals Enrolments *sifxml.StudentSchoolEnrollments Assignments *sifxml.StaffAssignments TeachingGroups *sifxml.TeachingGroups TimeTables *sifxml.TimeTables TimeTableSubjects *sifxml.TimeTableSubjects TimeTableCells *sifxml.TimeTableCells Rooms *sifxml.RoomInfos Contacts *sifxml.StudentContactPersonals Relationships *sifxml.StudentContactRelationships FinancialAccounts *sifxml.FinancialAccounts Vendors *sifxml.VendorInfos Debtors *sifxml.Debtors ChargedLocations *sifxml.ChargedLocationInfos Terms *sifxml.TermInfos CalendarSummarys *sifxml.CalendarSummarys CalendarDates *sifxml.CalendarDates SessionInfos *sifxml.SessionInfos SchoolCourses *sifxml.SchoolCourseInfos ScheduledActivities *sifxml.ScheduledActivitys CollectionRounds *sifxml.CollectionRounds CollectionStatuses *sifxml.CollectionStatuss StudentDataTransferNotes *sifxml.StudentDataTransferNotes }
All the SIF objects generated by MakeUsecaseObjects(), bundled up as a single object.
func MakeUsecaseObjects ¶
func MakeUsecaseObjects(usecases MakeUsecases, counts MakeUsecaseCounts, appendmode bool) UseCaseObjects
Given a list of HITS use cases to fulfil, and a list of counts of objects to generate (for those counts which are independent variables), generate all the SIF objects required to fulfil those use case requirements, ensuring that the objects are interrelated as appropriate. Objects are generated one school at a time, and the objects for each school have no connection to the objects generated for other schools.
All objects are generated using Create_Xs where appropriate, to guarantee that they are interrelated. The only parametrisations local to this function are:
* All schools generated are of School Type "Pri/Sec", i.e. they are combined schools
* Timetable subjects are drawn from All_teachingSubjects()
If appendmode is true, all generated objects are returned in one big object. If appendmode is false, generated objects are printed as they are generated.