// (c) Tuomas J. Lukka and Matti J. Katila package org.fenfire.impl; import java.io.StringBufferInputStream; import com.hp.hpl.mesa.rdf.jena.model.*; import org.nongnu.alph.Enfilade1D; import org.nongnu.alph.xml.SpanReader; import org.nongnu.alph.xml.SpanSerializer; import org.fenfire.*; import org.fenfire.vocab.FF; import org.fenfire.util.ShortRDF; /** A trivial, NON-CACHING node content using FF.content. * If you want performance using caching, you need to wrap * a caching implementation around this one. */ public class SimpleNodeContent implements NodeContent { public static final String rcsid = "$Id: SimpleNodeContent.java,v 1.1 2003/04/06 13:05:19 tjl Exp $"; private static void pa(String s) { System.out.println("AlphContent: "+s); } SpanReader spanReader = new SpanReader(); javax.xml.parsers.SAXParser saxParser; Enfilade1D.Maker enfMaker = new org.nongnu.alph.impl.Enfilade1DImpl.Enfilade1DImplMaker(); Fen fen; public SimpleNodeContent(Fen fen) { try { saxParser = javax.xml.parsers.SAXParserFactory.newInstance().newSAXParser(); } catch(Exception e) { throw new Error(e); } this.fen = fen; } public org.nongnu.alph.Enfilade1D get(RDFNode node) { try { if(!((Resource)node).hasProperty(FF.content)) return null; // XXX Ambiguity!! Statement s = ((Resource)node).getProperty(FF.content); Literal lit = s.getLiteral(); saxParser.parse(new StringBufferInputStream(lit.getString()), spanReader); } catch (Exception e) { pa("Exception!: "+e); throw new Error("getspan has an Exception!"); } Enfilade1D enf = enfMaker.makeEnfilade(spanReader.getSpans()); spanReader.clear(); return enf; } public void set(RDFNode node, org.nongnu.alph.Enfilade1D vstream) { String ser = SpanSerializer.serialize(vstream); ShortRDF.rmObj(fen.model, node, FF.content); try { fen.model.add((Resource)node, FF.content, ser, true); } catch(Exception e) { throw new Error("E"); } } }