Java tutorial
/* ***************************************************************************** * Bb6AnnouncementTranslator.java - created by aaronz * * Copyright (c) 2006 Virginia Polytechnic Institute and State University * Licensed under the Educational Community License version 1.0 * * A copy of the Educational Community License has been included in this * distribution and is available at: http://www.opensource.org/licenses/ecl1.php * * Contributors: * Aaron Zeckoski (aaronz@vt.edu) * * ****************************************************************************/ package org.sakaiproject.importer.impl.translators; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.importer.impl.importables.Announcement; import org.sakaiproject.importer.api.Importable; import org.sakaiproject.importer.api.IMSResourceTranslator; import org.sakaiproject.importer.impl.Blackboard6FileParser; import org.sakaiproject.importer.impl.XPathHelper; import org.w3c.dom.Document; import org.w3c.dom.Node; /** * This class takes the announcement data from the BB6 import file and * places it into a generic announcement object * @author Aaron Zeckoski (aaronz@vt.edu) */ public class Bb6AnnouncementTranslator implements IMSResourceTranslator { private static Log log = LogFactory.getLog(Bb6AnnouncementTranslator.class); public String getTypeName() { return "resource/x-bb-announcement"; } public Importable translate(Node resourceNode, Document descriptor, String contextPath, String archiveBasePath) { // create a new generic object to return Announcement item = new Announcement(); // this sets the display category of this item apparently (the one the user will see) item.setLegacyGroup(item.getDisplayType()); // Dates from Bb are formatted like '2007-05-08 23:45:00 EDT' DateFormat df = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss zzz"); String bbid = XPathHelper.getNodeValue("/ANNOUNCEMENT/@id", descriptor); // populate the generic object fields item.setTitle(XPathHelper.getNodeValue("/ANNOUNCEMENT/TITLE/@value", descriptor)); item.setDescription(XPathHelper.getNodeValue("/ANNOUNCEMENT/DESCRIPTION/TEXT", descriptor)); item.setHtml(Boolean.getBoolean(XPathHelper.getNodeValue("/ANNOUNCEMENT/FLAGS/ISHTML/@value", descriptor))); item.setLiternalNewline(Boolean .getBoolean(XPathHelper.getNodeValue("/ANNOUNCEMENT/FLAGS/ISNEWLINELITERAL/@value", descriptor))); item.setPermanent( Boolean.getBoolean(XPathHelper.getNodeValue("/ANNOUNCEMENT/ISPERMANENT/@value", descriptor))); // attempt to parse the start date try { Date d = df.parse(XPathHelper.getNodeValue("/ANNOUNCEMENT/DATES/RESTRICTSTART/@value", descriptor)); item.setStart(d); } catch (ParseException e) { // report it but continue log.warn("Could not parse date startdate for " + bbid + ": " + e.toString()); } // attempt to parse the end date try { Date d = df.parse(XPathHelper.getNodeValue("/ANNOUNCEMENT/DATES/RESTRICTEND/@value", descriptor)); item.setEnd(d); } catch (ParseException e) { // report it but continue log.warn("Could not parse date enddate for " + bbid + ": " + e.toString()); } log.info("Translation complete for BB6 announcement item:" + bbid); log.debug("Announcement item: " + item.toString()); item.setLegacyGroup(Blackboard6FileParser.ANNOUNCEMENT_GROUP); return item; } public boolean processResourceChildren() { return false; } }