/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/assignment/trunk/assignment-impl/impl/src/java/org/sakaiproject/assignment/taggable/impl/AssignmentItemImpl.java $
* $Id: AssignmentItemImpl.java 105078 2012-02-24 23:00:38Z ottenhoff@longsight.com $
***********************************************************************************
*
* Copyright (c) 2007, 2008 The Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.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/ECL-2.0
*
* 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.assignment.taggable.impl;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.assignment.api.AssignmentSubmission;
import org.sakaiproject.component.cover.ServerConfigurationService;
import org.sakaiproject.exception.IdUnusedException;
import org.sakaiproject.site.api.Site;
import org.sakaiproject.site.cover.SiteService;
import org.sakaiproject.taggable.api.TaggableActivity;
import org.sakaiproject.taggable.api.TaggableItem;
import org.sakaiproject.user.api.User;
import org.sakaiproject.user.api.UserNotDefinedException;
import org.sakaiproject.user.cover.UserDirectoryService;
import org.sakaiproject.util.ResourceLoader;
public class AssignmentItemImpl implements TaggableItem {
private static final Log logger = LogFactory
.getLog(AssignmentItemImpl.class);
private static ResourceLoader rb = new ResourceLoader("assignment");
protected static final String ITEM_REF_SEPARATOR = "@";
protected AssignmentSubmission submission;
protected String userId;
protected TaggableActivity activity;
public AssignmentItemImpl(AssignmentSubmission submission, String userId,
TaggableActivity activity) {
this.submission = submission;
this.userId = userId;
this.activity = activity;
}
public TaggableActivity getActivity() {
return activity;
}
public String getContent() {
return submission.getSubmittedText();
}
public Object getObject() {
return submission;
}
public String getReference() {
StringBuilder sb = new StringBuilder();
sb.append(submission.getReference());
sb.append(ITEM_REF_SEPARATOR);
sb.append(userId);
return sb.toString();
}
public String getTitle() {
StringBuilder sb = new StringBuilder();
try {
User user = UserDirectoryService.getUser(userId);
sb.append(user.getFirstName());
sb.append(' ');
sb.append(user.getLastName());
sb.append(' ');
sb.append(rb.getString("gen.submission"));
} catch (UserNotDefinedException unde) {
logger.error(this + ":getTitle " + unde.getMessage());
}
return sb.toString();
}
public String getUserId() {
return userId;
}
public String getItemDetailUrl()
{
String subRef = submission.getReference().replaceAll("/", "_");
String url = ServerConfigurationService.getServerUrl() +
"/direct/assignment/" + submission.getAssignmentId() + "/doView_grade/" + subRef;
return url;
}
public String getItemDetailPrivateUrl(){
String subRef = submission.getReference().replaceAll("/", "_");
String url = ServerConfigurationService.getServerUrl() +
"/direct/assignment/" + submission.getAssignmentId() + "/doView_grade_private/" + subRef;
return url;
}
public String getItemDetailUrlParams() {
return "?TB_iframe=true";
}
public boolean getUseDecoration() {
return true;
}
public String getIconUrl()
{
String url = ServerConfigurationService.getServerUrl() + "/library/image/silk/page_edit.png";
return url;
}
public String getOwner() {
String owner = null;
User[] submitters = ((AssignmentSubmission)getObject()).getSubmitters();
for (User submitter : submitters) {
if (owner != null)
owner = owner + ", " + submitter.getDisplayName();
else
owner = submitter.getDisplayName();
}
return owner;
}
public String getSiteTitle() {
String siteId = ((AssignmentSubmission)getObject()).getAssignment().getContext();
String title = getSite(siteId).getTitle();
return title;
}
public Date getLastModifiedDate() {
return new Date(((AssignmentSubmission)getObject()).getTimeLastModified().getTime());
}
public String getTypeName() {
return rb.getString("gen.assig");
}
private Site getSite(String siteId) {
Site site = null;
try {
site = SiteService.getSite(siteId);
} catch (IdUnusedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return site;
}
public boolean equals(Object obj)
{
if (!(obj instanceof AssignmentItemImpl))
return false;
else if (!((TaggableItem) obj).getReference().equals(this.getReference()))
return false;
return true;
}
public int hashCode()
{
return this.getReference().hashCode();
}
}