diff -uNr syllabus_2-6-x_SAK-15571/components/src/webapp/WEB-INF/components.xml syllabus_2-6-x_SAK-15793/components/src/webapp/WEB-INF/components.xml --- syllabus_2-6-x_SAK-15571/components/src/webapp/WEB-INF/components.xml 2009-04-09 14:52:00.000000000 -0700 +++ syllabus_2-6-x_SAK-15793/components/src/webapp/WEB-INF/components.xml 2009-04-09 13:45:20.000000000 -0700 @@ -62,4 +62,31 @@ + + + + + + + + + + + + FixPublicSyllabusAttachmentsJob + + + + Fix Public Syllabus Attachments Job + + + + + + + diff -uNr syllabus_2-6-x_SAK-15571/syllabus-api/src/java/org/sakaiproject/api/app/syllabus/SyllabusManager.java syllabus_2-6-x_SAK-15793/syllabus-api/src/java/org/sakaiproject/api/app/syllabus/SyllabusManager.java --- syllabus_2-6-x_SAK-15571/syllabus-api/src/java/org/sakaiproject/api/app/syllabus/SyllabusManager.java 2009-04-09 14:51:59.000000000 -0700 +++ syllabus_2-6-x_SAK-15793/syllabus-api/src/java/org/sakaiproject/api/app/syllabus/SyllabusManager.java 2009-04-09 13:47:13.000000000 -0700 @@ -69,6 +69,10 @@ public Set getSyllabusAttachmentsForSyllabusData(final SyllabusData syllabusData); public SyllabusAttachment getSyllabusAttachment(final String syllabusAttachId); + + public Set findPublicSyllabusData(); + + public void updateSyllabusAttachmentsViewState(final SyllabusData syllabusData); //public SyllabusAttachment creatSyllabusAttachmentResource(String attachId, String name); } diff -uNr syllabus_2-6-x_SAK-15571/syllabus-impl/pom.xml syllabus_2-6-x_SAK-15793/syllabus-impl/pom.xml --- syllabus_2-6-x_SAK-15571/syllabus-impl/pom.xml 2009-04-09 14:52:00.000000000 -0700 +++ syllabus_2-6-x_SAK-15793/syllabus-impl/pom.xml 2009-04-09 13:49:07.000000000 -0700 @@ -89,6 +89,11 @@ commons-codec 1.3 + + quartz + quartz + 1.5.2 + diff -uNr syllabus_2-6-x_SAK-15571/syllabus-impl/src/java/org/sakaiproject/component/app/syllabus/FixPublicSyllabusAttachmentsJob.java syllabus_2-6-x_SAK-15793/syllabus-impl/src/java/org/sakaiproject/component/app/syllabus/FixPublicSyllabusAttachmentsJob.java --- syllabus_2-6-x_SAK-15571/syllabus-impl/src/java/org/sakaiproject/component/app/syllabus/FixPublicSyllabusAttachmentsJob.java 1969-12-31 17:00:00.000000000 -0700 +++ syllabus_2-6-x_SAK-15793/syllabus-impl/src/java/org/sakaiproject/component/app/syllabus/FixPublicSyllabusAttachmentsJob.java 2009-04-09 13:50:03.000000000 -0700 @@ -0,0 +1,93 @@ +/********************************************************************************** + * + * Copyright (c) 2009 The Sakai Foundation. + * + * Licensed under the Educational Community License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.opensource.org/licenses/ecl1.php + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + **********************************************************************************/ +package org.sakaiproject.component.app.syllabus; + +import java.util.Set; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.sakaiproject.api.app.syllabus.SyllabusData; +import org.sakaiproject.api.app.syllabus.SyllabusManager; +import org.sakaiproject.authz.cover.AuthzGroupService; +import org.sakaiproject.event.cover.EventTrackingService; +import org.sakaiproject.event.cover.UsageSessionService; +import org.sakaiproject.tool.api.Session; +import org.sakaiproject.tool.cover.SessionManager; + + +public class FixPublicSyllabusAttachmentsJob implements Job { + + private static final Log LOG = LogFactory.getLog(FixPublicSyllabusAttachmentsJob.class); + private SyllabusManager syllabusManager; + private String userId = "admin"; + + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + loginToSakai(); + + Set syllabi = syllabusManager.findPublicSyllabusData(); + if (LOG.isInfoEnabled()) { + LOG.info("Executing FixPublicSyllabusAttachmentsJob now"); + LOG.info("Number of public syllabus found: "+syllabi.size()); + } + for (SyllabusData syllabus: syllabi) { + syllabusManager.updateSyllabusAttachmentsViewState(syllabus); + } + + logoutFromSakai(); + } + + protected void loginToSakai() { + Session sakaiSession = SessionManager.getCurrentSession(); + sakaiSession.setUserId(userId); + sakaiSession.setUserEid(userId); + + // establish the user's session + UsageSessionService.startSession(userId, "127.0.0.1", FixPublicSyllabusAttachmentsJob.class.getName()); + + // update the user's externally provided realm definitions + AuthzGroupService.refreshUser(userId); + + // post the login event + EventTrackingService.post(EventTrackingService.newEvent(UsageSessionService.EVENT_LOGIN, null, true)); + } + + protected void logoutFromSakai() { + // post the logout event + EventTrackingService.post(EventTrackingService.newEvent(UsageSessionService.EVENT_LOGOUT, null, true)); + } + + public SyllabusManager getSyllabusManager() { + return syllabusManager; + } + + public void setSyllabusManager(SyllabusManager syllabusManager) { + this.syllabusManager = syllabusManager; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } +} + diff -uNr syllabus_2-6-x_SAK-15571/syllabus-impl/src/java/org/sakaiproject/component/app/syllabus/SyllabusManagerImpl.java syllabus_2-6-x_SAK-15793/syllabus-impl/src/java/org/sakaiproject/component/app/syllabus/SyllabusManagerImpl.java --- syllabus_2-6-x_SAK-15571/syllabus-impl/src/java/org/sakaiproject/component/app/syllabus/SyllabusManagerImpl.java 2009-04-09 14:51:59.000000000 -0700 +++ syllabus_2-6-x_SAK-15793/syllabus-impl/src/java/org/sakaiproject/component/app/syllabus/SyllabusManagerImpl.java 2009-04-09 13:53:39.000000000 -0700 @@ -21,6 +21,7 @@ package org.sakaiproject.component.app.syllabus; import java.sql.SQLException; +import java.util.HashSet; import java.util.Set; import java.util.TreeSet; @@ -60,6 +61,7 @@ private static final String USER_ID = "userId"; private static final String CONTEXT_ID = "contextId"; private static final String SURROGATE_KEY = "surrogateKey"; + private static final String VIEW = "view"; private static final String SYLLABI = "syllabi"; private static final String FOREIGN_KEY = "foreignKey"; private static final String QUERY_BY_SYLLABUSDATAID = "findSyllabusDataByDataIds"; @@ -268,6 +270,23 @@ return (SyllabusItem) getHibernateTemplate().execute(hcb); } + + @SuppressWarnings("unchecked") + public Set findPublicSyllabusData() { + HibernateCallback hcb = new HibernateCallback() + { + public Object doInHibernate(Session session) throws HibernateException, + SQLException + { + Criteria crit = session.createCriteria(SyllabusDataImpl.class) + .add(Expression.eq(VIEW, "yes")) + .setFetchMode(ATTACHMENTS, FetchMode.EAGER); + + return crit.list(); + } + }; + return new HashSet(getHibernateTemplate().executeFind(hcb)); + } /** * getSyllabusItemByUserAndContextIds finds a SyllabusItem @@ -368,7 +387,7 @@ * * @param syllabusData the SyllabusData object to check for publicness */ - private void updateSyllabusAttachmentsViewState(final SyllabusData syllabusData) + public void updateSyllabusAttachmentsViewState(final SyllabusData syllabusData) { boolean publicView = "yes".equalsIgnoreCase(syllabusData.getView()); Set attachments = syllabusData.getAttachments();