/**********************************************************************************
* $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.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.taggable.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.taggable.api.TaggingManager;
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;
private static final TaggingManager taggingManager;
static {
siteService = (SiteService) ComponentManager
.get("org.sakaiproject.site.api.SiteService");
taggingManager = (TaggingManager) ComponentManager
.get("org.sakaiproject.taggable.api.TaggingManager");
}
protected String tagCriteriaRef;
private String activityRef;
private String rubric;
private String rationalle;
private boolean exportable;
private boolean visible;
private Map<String, String> fieldMap = new HashMap<String, String>();
public TagImpl() {
;
}
public TagImpl(Link link) {
this(link, taggingManager.createTagList());
}
public TagImpl(Link link, TagList subTags) {
this.tagCriteriaRef = link.getTagCriteriaRef();
this.activityRef = link.getActivityRef();
this.rubric = link.getRubric();
this.rationalle = link.getRationale();
this.exportable = link.isExportable();
this.visible = link.isVisible();
Reference ref = EntityManager.newReference(tagCriteriaRef);
Entity entity = ref.getEntity();
initFieldMap(entity, ref.getContext());
}
public String getActivityRef() {
return activityRef;
}
public Object getObject() {
return tagCriteriaRef;
}
public String getField(TagColumn column) {
return getField(column.getName());
}
protected String getField(String column) {
String field = fieldMap.get(column);
if (field == null)
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;
}
private void initFieldMap(Entity entity, String refContext) {
if (entity != null) {
try
{
Site site = siteService.getSite(refContext);
fieldMap.put(TagList.WORKSITE, Validator.escapeHtml(site.getTitle()));
}
catch (IdUnusedException e)
{
//couldn't find the site, so just leave the title blank
fieldMap.put(TagList.WORKSITE, "");
}
fieldMap.put(TagList.PARENT, Validator.escapeHtml((String)entity.getProperties().get(TagList.PARENT)));
String field;
String url = entity.getUrl();
if (url != null) {
// ONC-3722 - the below line injects an earlier version of jQuery (1.2.1) that interferes with A2's tooltip.
// commenting out.
// field = (String)entity.getProperties().get(TagList.THICKBOX_INCLUDE);
field ="<a href=\"" + url + "&TB_iframe=true&height=500&width=700\" class=\"thickbox\">";
field += Validator.escapeHtml((String)entity.getProperties().get(TagList.CRITERIA));
field += "</a>";
}
else
field = Validator.escapeHtml((String)entity.getProperties().get(TagList.CRITERIA));
fieldMap.put(TagList.CRITERIA, field);
fieldMap.put(TagList.RUBRIC, Validator.escapeHtml(rubric));
fieldMap.put(TagList.RATIONALE, Validator.escapeHtml(rationalle));
fieldMap.put(TagList.VISIBLE, Validator.escapeHtml(String.valueOf(visible)));
fieldMap.put(TagList.EXPORTABLE, Validator.escapeHtml(String.valueOf(exportable)));
}
}
}