Course Studio Copy Content
***************************
** I will leave this here for archival purposes.
** Please check latest comment for up-to-date version
***************************
re: Course Studio Copy Content channel.
I know I put this up here somewhere before, but I can't find it, so I'll do it again. Someone at Doug's presentation of Luminis Schema unplugged in Las Vegas asked for it., so here you go:
Go to http://luminisdev.langara.bc.ca/local/doc/fixes.
Caveats: Oracle only. Uses database procedures, so will need to get your DBA involved. Copies files, pictures, links, news, not announcements.
Reasonably well tested :-)
Bob.

Thanks for automating this!
Hey Bob -
Thanks for automating this - I didn't know enough SQL to create the scripts to do this stuff when I initially put together my 'how to' guide. I'm glad that it helped.
Alice Kim
New version of Course Studio Copy Content channel
We've reworked our Course Studio Copy Content channel.
We have brought all the sql into the channel code (previous version required that you implement an Oracle stored procedure), so this makes it pretty much a drop in.
It has been tested on Luminis III and Luminis 4 on Solaris.
Should work on Linux, might work on Windows.
See: http://coho.langara.bc.ca/luminis/fixes/copycontentreadme.html
copy course channel
Thanks for sharing this channel. We've had a lot of positive feedback on it.
A couple suggestions for the next version:
1. The text does not wrap if the channel is placed in a narrow column. The text flows outside of the channel.
2. If an instructor doesn't notice the 10 minute wait warning, and tries to copy again, the course is filled with duplicate files/links. Either a way to empty a course if you mess it up, or code to check if the same file already exists would be superb.
thanks again.
Bob is the man
Thanks Bob, we dropped this channel into place and it worked like a charm. Amazing. Much appreciated, especially the refactoring to eliminate the PL/SQL package requirements.
Only thing you missed from your instructions was that we needed one more parameter because we're still on Luminis 3 in production here.
Todd
Todd, what parameter was missing?
Todd,
What parameter was missing? I'm trying to get this channel working under Lum III and running into a problem. I don't think it's due to a missing parameter but perhaps it is.
Thanks,
Jesse
Our parameters
Here are the parameters we have defined for this channel:
luminisVersionNumber 3
debug true
idField username
fileBaseDir /opt/luminisShared/groupdata/file/
photoBaseDir /opt/luminisShared/groupdata/photo/
Thanks Todd
Added that but it's still erroring :\
CopyCourseContent version?
This is a great channel, thanks much for sharing! Much more intuitive for instructors than using Luminis Consolidated Courses.
I see on your download site that you have version 1.2 available for download. Do you have a change log for what the differences from previous versions are? I'm not sure which version I have. Can I just drop this new version in place without making any further changes?
Lum 3.3.iii on Win
First off, thank you for such a wonderful & useful channel! After a bit of tweaking, I had this running in a Lum 3.3.3 Win environment, where it worked like a charm for 2 weeks. However, we suddenly saw an error on the server claiming "Error starting photo server" which resulted in the dreaded "We are experiencing technical difficulties" screen.
I still can't say that it was caused by anything related to this channel - I removed the jar file & channel, restarted the server, but still have the error message in my dev environment. Just wondering if anyone else has encountered this, or if there is anyone else out there running this channel on a Win platform so I can compare notes. Email me at cwerst at cuesta dot edu and I'd be happy to share what we did if you're looking to run this on Windows.
Catherine
Trouble w/ Langara Copy Content Channel
This channel is going to be a lifesaver, when I get it working :) We're running Luminis Platform 3.3.3.79 build 79 on Solaris w/ SQL Server 2000 for RDBMS.
The channel loads with the following error:
Error Report
Channel ID: n788
Message: encountered problem while trying to complete rendering
Error type: General error (code 0)
Problem type: Runtime exception (code -1)
Error message: org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-formed.
Exposing the stack trace shows the following details:
Outer exception:
javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-formed. at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:686) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1088) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1066) at org.jasig.portal.utils.XSLT.transform(XSLT.java:275) at ca.langara.channels.CCopyContent.CCopyContent.renderXML(CCopyContent.java:563) at campuspipeline.uportal.ScheduledChannelRenderer$ScheduledWorker.run(ScheduledChannelRenderer.java:753) at com.pipeline.uportal.ChannelRendererTaskInterceptor$1.run(ChannelRendererTaskInterceptor.java:142) at java.security.AccessController.doPrivileged(Native Method) at com.pipeline.uportal.ChannelRendererTaskInterceptor.run(ChannelRendererTaskInterceptor.java:128) at campuspipeline.uportal.ScheduledChannelRenderer$ScheduledWorker.execute(ScheduledChannelRenderer.java:862) at campuspipeline.util.concurrent.ThreadPoolExecutor.doExecute(ThreadPoolExecutor.java:404) at campuspipeline.util.concurrent.ThreadPoolExecutor.access$500(ThreadPoolExecutor.java:116) at campuspipeline.util.concurrent.ThreadPoolExecutor$LimitedExecutorTask.run(ThreadPoolExecutor.java:480) at com.sct.pipeline.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) at java.lang.Thread.run(Thread.java:479)
Googling the error message points me in the direction of an XML issue but I ran the CCopyContent.xsl through an XML validator and it passed. I also replaced the XML in CCopyContent.xsl w/ very basic stuff and it still fails w/ the same error.
I've looked at CCopyContent.java for the line mentioned above and didn't find any clues there either. Todd's mention of a missing parameter from the directions has me curious.
This is how I have the channel configured:
If anyone can shed any light on this I'd appreciate it.
-Jesse
If its not a typo in the
If its not a typo in the xml, what does the debug message say in your logs? I think for Luminis 3 that would be the access or error log at cp_root/products/ws/https-cp/logs
Error log says
I tailed the error log and get a bunch of info lines and two warning lines:
[06/Feb/2009:16:01:22] info (13684): [ca.langara.channels.CCopyContent.CCopyContent] setStaticData : VALUES - usertemplate
[06/Feb/2009:16:01:22] info (13684): [ca.langara.channels.CCopyContent.CCopyContent] setStaticData : VALUES - jbferguson
[06/Feb/2009:16:01:22] info (13684): [ca.langara.channels.CCopyContent.CCopyContent] DEBUG fileBaseDir : /opt/luminis/groupdata/file/
[06/Feb/2009:16:01:22] info (13684): [ca.langara.channels.CCopyContent.CCopyContent] DEBUG photoBaseDir : /opt/luminis/groupdata/photo/
[06/Feb/2009:16:01:22] info (13684): CCopyContent getTerms : USERNAME = null
[06/Feb/2009:16:01:22] info (13684): Trying to get pooled connection:
[06/Feb/2009:16:01:22] info (13684): CCopyContent getTerms before XML : select distinct substr(bom_course_id, instr(bom_course_id, '.')+1) term from gt_folder, gt_file, gt_group, gt_member, gt_user where gt_user.USER_NAME = ? and gt_member.USER_ID = gt_user.USER_ID and gt_member.MEMBER_TYPE in ('I', 'T') and gt_group.GROUP_ID = gt_member.GROUP_ID and gt_folder.GROUP_ID = gt_group.GROUP_ID and gt_file.folder_id (+) = gt_folder.folder_id and bom_course_id is not null
[06/Feb/2009:16:01:22] info (13684): [ca.langara.channels.CCopyContent.CCopyContent] getTerms : XML = null
[ca.langara.channels.CCopyContent.CCopyContent] getTerms SE : 'instr' is not a recognized function name.
[05/Feb/2009:22:56:18] warning (10304): [ca.langara.channels.CCopyContent.CCopyContent] terms: null
Copy Course Content channel not getting username?
Perhaps I'm wrong, but I think that the root of my issue is that the username isn't being used by the channel as evidenced by this line from /opt/luminis/products/ws/https-cp/logs/errors:
[09/Feb/2009:11:54:01] info (20405): CCopyContent getTerms : USERNAME = null
I edited the ca/langara/channels/CCopyContent/CCopyContent.java file in the .jar to hard-code the username as a test but I'm still getting the same things dumped to the error log and still seeing the same behavior with the channel. Here's the process I followed:
130 private String username ="jbferguson";
...
163 if(localdebug)
164 System.out.println("CCopyContent getTerms : USERNAME = " + username);
165 System.out.println("FOO");
(I added the FOO line just to see if it'd make it into the error log, it doesn't :\ )
jar -uvf langaraCopyCourseContentChannel.jar ca/langara/channels/CCopyhannel.class
stopcp -a; cp ~/copy_course/langaraCopyCourseContentChannel.jar /opt/luminis/webapps/luminis/WEB-INF/lib/langaraCopyCourseContentChannel.jar; startcp
Am I missing a step or otherwise going about this the wrong way?
One more parameter
You also need:
luminisVersionNumber = 3
Question
I have tried to implement this channel into our test system to see how well it works but I am running into a issue. I have set the parameters as such but I keep receiving a error message. Any help would be appreciated. Thanks, Mike
Error message:
org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-formed.
Channel Setup:
Name Value
Channel Type: Custom
Channel Title: Copy Course Content
Channel Name: Copy Course Content
Channel Functional Name: Copy Course Content
interface image interface image Channel Functional Name Accessible Only: interface image Subscribable
Channel Description: Copy Course content from one semester to the next.
Channel Timeout: 6000 milliseconds
Channel Secure: Not Secure
Channel Class: ca.langara.channels.CCopyContent.CCopyContent
User cannot modify Parameter: photoBaseDir = /opt/luminis/groupdata/photo/
User cannot modify Parameter: luminisVersionNumber = 3
User cannot modify Parameter: debug = true
User cannot modify Parameter: idField = username
User cannot modify Parameter: databaseVersion = ORACLE
User cannot modify Parameter: fileBaseDir = /opt/luminis/groupdata/file/
Channel Controls false Editable
false Has Help
false Has About
* Selected Categories: Applications
* Selected Groups and/or People: public
Fixed my issue
FOR LUMINIS 3 :
luminisVersionNumber = 3
Parameter debug = false ( change to true if you want to see output through System.out
Parameter fileBaseDir = /opt/luminis/groupdata/file/
Parameter photoBaseDir = /opt/luminis/groupdata/photo/
Parameter idField = urn:sungardhe:dir:loginId (userid)
Parameter databaseVersion = ORACLE|MSSQL (this is optional, default is ORACLE)
I realized I needed to put urn:sungardhe:dir:loginId instead of username since we are on Luminis 3.
Thanks,
Mike
Copy Course content with Lum 4 and Banner 8
I was wondering if anyone has gotten the copy course content tool to work with banner 8 and Luminis 4? I am trying to figure out what changes to make inside of the database. I looked at was posted in the help guide but I do not have the necessary tables or the uportal account. Any help would be appreciated.
Thanks,
Mike
Edison State College
re copy course channel lum 4
I'm not sure how banner 8 effects things as we are on 7, but you shouldn't have to modify any tables with the latest version. bwalker posted a comment you might have missed that he updated the channel to be self-contained. Just drop it in place and you're done.
http://www.lumdev.net/node/1208#comment-5677
Thanks Jason and another question
Jason,
I was able to have the channel pull the professor classes by term but when I try to copy the channel never displays that the process ran successfully. I have looked at the courses and can see that nothing has moved over. When i had the DBA look at the luminis db and the banner db he found that the uportal account was no longer in the luminis db. so he was unable to make the necessary changes. Any other thoughts I could try to get this to work. I had it working in Luminis 3 and banner 7 and it was great.
Thanks,
Mike
Edison State College
re copy clone course
The only time it has failed for me, is when there is an existing problem with the files and database records. It does not have a success message, if I recall correctly.
Or, at least, that is what it looks like after an instructor comes to me saying "it didn't work". There will be a mismatch between the actual files in Luminis and the gt_file/gt_folder records in the db. I have to manually clean out both the actual files and gt_file/gt_folder records and let them try again.
I access our Luminis db with our specific Luminisaccount, not a uportal account. Have your db connect with the return value of:
"configman -g uportal.database.user.id" and/or "configman -g database.datasource.oracle1.user"
Once he's in, have him remove any gt_file records for the group_id of your target course. gt_folder records also, except the base folder. If you remove that one, it breaks the course file area.
And then delete any files from the luminis file/photo area for that target course.
Thanks Jason
Jason,
I see from the configman settings that our account is named luminis. I will let the dba know and see if we give this another try. Thank you for all your help on this.
Thanks,
Mike
Edison State College
Copy Course Content not creating db entries
I have a case where the channel successfully copies the files/folders and creates records in the database, but no files or folders are visible on the course homepage.
The files are stored in nested folders in the source course: Some of the files are three folders deep (as in, the overall course folder contains a "handouts" folder that contains "week X: Day Y" folders that contain the files), others just two folders deep. The week folders do have a colon character in them, not sure if that's causing problems or not. One filename contains an ampsersand.
For the destination course, there are multiple folders in the filesystem, though apparently not as many folders as times I've tried copying. There are also multiple copies of the folders stored in the GT_FOLDER table and multiple copies of the files in GT_FILE.
Any idea what the problem might be?