/**********************************************************************************
* $URL: https://source.sakaiproject.org/contrib/syracuse/taggable/branches/oncourse_osp_enhancements/taggable-impl/impl/src/java/org/sakaiproject/taggable/impl/TagImpl.java $
* $Id: TagImpl.java 45892 2008-02-22 19:54:48Z chmaurer@iupui.edu $
***********************************************************************************
*
* Copyright (c) 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.osedu.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.taggable.impl;
import java.util.ArrayList;
import java.util.List;
import org.sakaiproject.component.cover.ComponentManager;
import org.sakaiproject.entity.cover.EntityManager;
import org.sakaiproject.entity.api.Entity;
import org.sakaiproject.entity.api.Reference;
import org.sakaiproject.exception.IdUnusedException;
import org.sakaiproject.taggable.api.Link;
import org.sakaiproject.taggable.api.Tag;
import org.sakaiproject.taggable.api.TagList;
import org.sakaiproject.site.api.Site;
import org.sakaiproject.site.api.SiteService;
import org.sakaiproject.taggable.api.TagColumn;
import org.sakaiproject.util.Validator;
public class TagImpl implements Tag
{
private static final SiteService siteService;
static {
siteService = (SiteService) ComponentManager
.get("org.sakaiproject.site.api.SiteService");
}
Link link;
public TagImpl(Link link) {
this.link = link;
}
public String getActivityRef() {
return link.getActivityRef();
}
public Object getObject() {
return link.getTagCriteriaRef();
}
public String getField(TagColumn column) {
return getField(column.getName());
}
protected String getField(String column) {
String field;
Reference ref = EntityManager.newReference(link.getTagCriteriaRef());
Entity entity = ref.getEntity();
if (entity == null) return null;
if (TagList.WORKSITE.equals(column)) {
try
{
Site site = siteService.getSite(ref.getContext());
field = Validator.escapeHtml(site.getTitle());
}
catch (IdUnusedException e)
{
//couldn't find the site, so just leave the title blank
field = "";
}
} else if (TagList.PARENT.equals(column)) {
//field = link.getTagCriteria().getParentTitle();
//field = ">>>>PARENT TITLE SHOULD GO HERE<<<<";
field = Validator.escapeHtml((String)entity.getProperties().get(TagList.PARENT));
} else if (TagList.CRITERIA.equals(column)) {
//field = link.getTagCriteria().getTitle();
//field = ">>>>CRITERIA SHOULD GO HERE<<<<";
//make it a link?
String url = entity.getUrl();
if (url != null) {
field = (String)entity.getProperties().get(TagList.THICKBOX_INCLUDE);
field +="<a href=\"" + url + "\" class=\"thickbox\">";
field += Validator.escapeHtml((String)entity.getProperties().get(TagList.CRITERIA));
field += "</a>";
}
else
field = Validator.escapeHtml((String)entity.getProperties().get(TagList.CRITERIA));
} else if (TagList.RUBRIC.equals(column)) {
field = Validator.escapeHtml(link.getRubric());
} else if (TagList.RATIONALE.equals(column)) {
field = Validator.escapeHtml(link.getRationale());
} else if (TagList.VISIBLE.equals(column)) {
field = Validator.escapeHtml(String.valueOf(link.isVisible()));
} else if (TagList.EXPORTABLE.equals(column)) {
field = Validator.escapeHtml(String.valueOf(link.isExportable()));
} else {
field = Validator.escapeHtml(TagListImpl.NA);
}
return field;
}
public List<String> getFields() {
List<String> fields = new ArrayList<String>();
fields.add(getField(TagList.CRITERIA));
fields.add(getField(TagList.PARENT));
fields.add(getField(TagList.WORKSITE));
/*
fields.add(getField(TagList.RUBRIC));
fields.add(getField(TagList.RATIONALE));
fields.add(getField(TagList.VISIBLE));
fields.add(getField(TagList.EXPORTABLE));
*/
return fields;
}
}