...
The Degree Navigator system stores all of its course description data in a single table called COURSEDESCRIPTION_DAG.
COURSEDESCRIPTION_DAG | |
---|---|
Column | Description |
coursecode_dag | An encoded course id, the encoding is a direct concatenation of Subject Code and Course Number |
description_dag | The course description, which always starts with the coursecode and a space. Course descriptions generally tun into the hundreds and thousands of characters. |
startterm_dag | The first term in which this course description applies. This field is never null. |
endterm_dag | The last term in which this course description applies. If this field is null the course description is considered to be the active course description. |
Data Inconsistencies
The Degree Navigator data is plagued by an inconsistency of the start and end term data. Specifically, there are some cases in which there are multiple coursecodes for which the endterm_dag field is null. Functionally, this makes it harder to distinguish which is the active course description. Our code will perform a max on the starttterm field combined with the check for a null endterm field, this will have the effect of isolating out the newest course description.
Requirements
- Availability: The Degree Navigator data used by Sakai must be available on a 24x7 basis.
- Refresh: While course descriptions are rarely updated in Degree Navigator, Sakai will need to have any updates as soon as they are available. In practice, a nightly feed will be sufficient.
...
The Degree Navigator pl/sql procedure and table have been copied following the model used by MyUCDavis CourseManagement. The feed procedure performs a simple insert of all records from degree navigator and then deletes all records created before the last insert.
Code Block |
---|
create or replace PROCEDURE DN4_EXTRACT IS BEGIN declare v_timestamp_current date; begin select sysdate into v_timestamp_current from dual; begin insert into sakai_external.degree_nav_desc( coursecode, description, start_term, end_term, subj_code, crse_numb, activity_date) select coursecode_dag, description_dag, startterm_dag, endterm_dag, substr(coursecode_dag,1,3), substr(coursecode_dag,4,6), v_timestamp_current from navigate.coursedescription_dag@DN4.UCDAVIS.EDU; end; commit; begin delete from degree_nav_desc where activity_date <> v_timestamp_current; end; commit; end; END; -- Procedure DN4_EXTRACT |