001: /**********************************************************************************
002: * $URL: https://source.sakaiproject.org/svn/sam/trunk/component/src/java/org/sakaiproject/tool/assessment/qti/helper/section/SectionHelperBase.java $
003: * $Id: SectionHelperBase.java 9274 2006-05-10 22:50:48Z daisyf@stanford.edu $
004: ***********************************************************************************
005: *
006: * Copyright (c) 2003, 2004, 2005, 2006 The Sakai Foundation.
007: *
008: * Licensed under the Educational Community License, Version 1.0 (the"License");
009: * you may not use this file except in compliance with the License.
010: * You may obtain a copy of the License at
011: *
012: * http://www.opensource.org/licenses/ecl1.php
013: *
014: * Unless required by applicable law or agreed to in writing, software
015: * distributed under the License is distributed on an "AS IS" BASIS,
016: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: * See the License for the specific language governing permissions and
018: * limitations under the License.
019: *
020: **********************************************************************************/package org.sakaiproject.tool.assessment.qti.helper.section;
021:
022: import java.io.IOException;
023: import java.io.InputStream;
024: import javax.xml.parsers.ParserConfigurationException;
025:
026: import org.apache.commons.logging.Log;
027: import org.apache.commons.logging.LogFactory;
028: import org.w3c.dom.DOMException;
029: import org.w3c.dom.Document;
030: import org.xml.sax.SAXException;
031:
032: import org.sakaiproject.tool.assessment.qti.asi.Section;
033: import org.sakaiproject.tool.assessment.qti.helper.AuthoringHelper;
034:
035: /**
036: * Sections are pretty version-independent, base class does most of the work.
037: * <p>Copyright: Copyright (c) 2005</p>
038: * <p>Organization: Sakai Project</p>
039: * @author Ed Smiley esmiley@stanford.edu
040: * some portions of code @author Shastri, Rashmi <rshastri@iupui.edu>
041: * @version $Id: SectionHelperBase.java 9274 2006-05-10 22:50:48Z daisyf@stanford.edu $
042: */
043:
044: abstract public class SectionHelperBase implements SectionHelperIfc {
045: private static Log log = LogFactory.getLog(SectionHelperBase.class);
046:
047: private Document doc;
048:
049: abstract protected int getQtiVersion();
050:
051: /**
052: * Read a Section XML object from a stream
053: *
054: * @param inputStream the stream
055: *
056: * @return the section
057: */
058: public Section readXMLDocument(InputStream inputStream) {
059: if (log.isDebugEnabled()) {
060: log.debug("readDocument(InputStream " + inputStream);
061: }
062:
063: Section sectionXml = null;
064: try {
065: AuthoringHelper authoringHelper = new AuthoringHelper(
066: getQtiVersion());
067: sectionXml = new Section(authoringHelper.readXMLDocument(
068: inputStream).getDocument(), getQtiVersion());
069: } catch (ParserConfigurationException e) {
070: log.error(e.getMessage(), e);
071: } catch (SAXException e) {
072: log.error(e.getMessage(), e);
073: } catch (IOException e) {
074: log.error(e.getMessage(), e);
075: }
076:
077: return sectionXml;
078: }
079:
080: /**
081: * Update the Section XML for Xpath
082: *
083: * @param sectionXml the Section XML
084: * @param xpath the Xpath
085: * @param value the value for Xpath
086: *
087: * @return the updated Section XML
088: */
089: public Section updateSectionXml(Section sectionXml, String xpath,
090: String value) {
091: if (log.isDebugEnabled()) {
092: log.debug("updateSectionXml(Item " + sectionXml
093: + ", String" + xpath + ", String" + value + ")");
094: }
095:
096: try {
097: sectionXml.update(xpath, value);
098: } catch (DOMException e) {
099: log.error(e.getMessage(), e);
100: } catch (Exception e) {
101: log.error(e.getMessage(), e);
102: }
103:
104: return sectionXml;
105: }
106:
107: }
|