/******************************************************************************* * Copyright (c) 2010, 2011 Obeo. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Obeo - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.docs.intent.markup.resource; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.util.Collection; import java.util.Map; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.impl.ResourceImpl; import org.eclipse.mylyn.docs.intent.markup.builder.ModelDocumentBuilder; import org.eclipse.mylyn.docs.intent.markup.serializer.WikiTextResourceSerializer; import org.eclipse.mylyn.wikitext.core.parser.MarkupParser; import org.eclipse.mylyn.wikitext.textile.core.TextileLanguage; /** * Implementation of a wikitextResource. * * @author <a href="mailto:alex.lagarde@obeo.fr">Alex Lagarde</a> */ public class WikitextResourceImpl extends ResourceImpl { /** * WikitextResource constructor. * * @param uri * URI of the resource */ public WikitextResourceImpl(URI uri) { super(uri); } /** * {@inheritDoc} * * @see org.eclipse.emf.ecore.resource.impl.ResourceImpl#doLoad(java.io.InputStream, java.util.Map) */ @Override protected void doLoad(InputStream inputStream, Map<?, ?> options) throws IOException { MarkupParser parser = new MarkupParser(new TextileLanguage()); ModelDocumentBuilder builder = new ModelDocumentBuilder(); parser.setBuilder(builder); parser.parse(new InputStreamReader(inputStream), true); Collection<EObject> roots = builder.getRoots(); getContents().addAll(roots); // FIXME ONLY FOR DEBUG // OutputStream output = new FileOutputStream(new File("traces/" // + ((Text)((Section)((Document)getContents().get(0)).getContent().get(0)).getTitle() // .getContent().get(0)).getData()) // + ".trace"); // for (EObject root : roots) { // output.write(Logger.inspectAndLog(root, 0).getBytes()); // } } /** * {@inheritDoc} * * @see org.eclipse.emf.ecore.resource.impl.ResourceImpl#doSave(java.io.OutputStream, java.util.Map) */ @Override protected void doSave(OutputStream outputStream, Map<?, ?> options) throws IOException { WikiTextResourceSerializer serializer = WikiTextResourceSerializer.getSerializer(); String serializedFrom = serializer.serialize(this); outputStream.write(serializedFrom.getBytes()); } /** * Save the WikiText ressource with encoding options. * * @param outputStreamWriter * writer to use * @throws IOException * if the outputStream throws an IOException */ public void doSaveWithEncoding(OutputStreamWriter outputStreamWriter) throws IOException { WikiTextResourceSerializer serializer = WikiTextResourceSerializer.getSerializer(); String serializedFrom = serializer.serialize(this); outputStreamWriter.write(serializedFrom); outputStreamWriter.close(); /* * Example of call : final OutputStream fileOutputStream = new FileOutputStream("generatedDataTests/" * + fileToGenerate); final OutputStreamWriter fileWriter = new OutputStreamWriter(fileOutputStream, * "UTF-8"); ((WikitextResourceImpl)resourceTextile).doSaveWithEncoding(fileWriter); */ } }