blob: 7330c9fd0b7c56ae49b42a0b44e2567fbd50f13e [file] [log] [blame]
/*****************************************************************************
* Copyright (c) 2014, 2015 CEA LIST, Christian W. Damus, and others.
*
*
* 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:
* Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - Initial API and implementation
* Christian W. Damus - bug 468079
*
*****************************************************************************/
package org.eclipse.papyrus.uml.developper.mde.transcription;
import org.eclipse.emf.ecore.xmi.XMIResource;
import org.eclipse.papyrus.uml.developper.mde.I_DocumentStereotype;
import org.eclipse.papyrus.uml.developper.mde.LinkUtil;
import org.eclipse.papyrus.uml.developper.mde.LinkUtil.Hyperlink;
import org.eclipse.uml2.uml.Comment;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.Model;
import org.eclipse.uml2.uml.Package;
import org.eclipse.uml2.uml.Stereotype;
import com.google.common.base.Function;
/**
* this class is a specialization to generate mediawiki files.
*
*/
public class WikiTranscription implements ITranscription {
private final Function<LinkUtil.Hyperlink, String> hyperlinkFunction = new Function<LinkUtil.Hyperlink, String>() {
@Override
public String apply(Hyperlink input) {
return String.format("[[#%s|%s]]", input.href(), input.text());
}
};
@Override
public Function<? super Hyperlink, String> getHyperlinkTranscoder() {
return hyperlinkFunction;
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeEndingDocument(java.lang.StringBuffer)
*
* @param out
*/
@Override
public void writeEndingDocument(StringBuffer out) {
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeBeginningDocument(java.lang.StringBuffer)
*
* @param out
* @return the string buffer after adding the prefix for the document
*/
@Override
public StringBuffer writeBeginningDocument(StringBuffer out) {
out.append("\n__TOC__"); //$NON-NLS-1$
return out;
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeDocumentTitle(java.lang.StringBuffer, org.eclipse.uml2.uml.Model)
*
* @param out
* @param documentModel
*/
@Override
public void writeDocumentTitle(StringBuffer out, Model documentModel) {
out.append("\n= " + documentModel.getName() + " ="); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writesectionTitle(java.lang.StringBuffer, int, org.eclipse.uml2.uml.Element)
*
* @param out
* @param level
* @param packageableElement
*/
@Override
public void writeSectionTitle(StringBuffer out, int level, Element packageableElement) {
if (level == 2) {
out.append("\n==<span" + getId(packageableElement) + ">" + ((Package) packageableElement).getName() + "</span>=="); //$NON-NLS-1$ //$NON-NLS-2$
}
if (level == 3) {
out.append("\n===<span" + getId(packageableElement) + ">" + ((Package) packageableElement).getName() + "</span>==="); //$NON-NLS-1$ //$NON-NLS-2$
}
if (level == 4) {
out.append("\n====<span" + getId(packageableElement) + ">" + ((Package) packageableElement).getName() + "</span>===="); //$NON-NLS-1$ //$NON-NLS-2$
}
if (level == 5) {
out.append("\n=====<span" + getId(packageableElement) + ">" + ((Package) packageableElement).getName() + "</span>====="); //$NON-NLS-1$ //$NON-NLS-2$
}
if (level == 4) {
out.append("\n======<span" + getId(packageableElement) + ">" + ((Package) packageableElement).getName() + "</span>======"); //$NON-NLS-1$ //$NON-NLS-2$
}
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeImageRef(java.lang.StringBuffer, org.eclipse.uml2.uml.Element, org.eclipse.uml2.uml.Stereotype)
*
* @param out
* @param packageableElement
* @param imgRefStereotype
*/
@Override
public void writeImageRef(StringBuffer out, Element packageableElement, Stereotype imgRefStereotype) {
out.append("\n<br>\n[[Image:" + packageableElement.getValue(imgRefStereotype, I_DocumentStereotype.IMAGEREF_REF_ATT) + "|" + ((Comment) packageableElement).getBody() + "]]\n<br>''" + ((Comment) packageableElement).getBody() + "''<br>\n<br>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeParagraph(java.lang.StringBuffer, org.eclipse.uml2.uml.Element)
*
* @param out
* @param packageableElement
*/
@Override
public void writeParagraph(StringBuffer out, Element packageableElement) {
out.append("\n<span" + getId(packageableElement) + ">" + ((Comment) packageableElement).getBody() + "</span><br>"); //$NON-NLS-1$
}
@Override
public String getNameFile() {
return "DeveloperDoc.mediawiki"; //$NON-NLS-1$
}
/**
* @return
*/
public String getId(Element packageableElement) {
String packageableElementtFragment = ((XMIResource) packageableElement.eResource()).getID(packageableElement);
String id = " id=\"" + packageableElementtFragment + "\"";
return id;
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeTable(java.lang.StringBuffer, java.lang.String)
*
* @param out
* @param tableCaption
*/
@Override
public void writeTable(StringBuffer out, String tableCaption) {
out.append("\n{| border=\"1\" cellpadding=\"20\" cellspacing=\"0\"\n");
out.append("!ID\n");
out.append("!Satisfied by\n");
out.append("!Verified by");
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeLine(java.lang.StringBuffer, java.lang.String, java.lang.String)
*
* @param out
* @param uri
* @param text
*/
@Override
public void writeLine(StringBuffer out, String uri, String requirementName, String text) {
if (uri.equals("")) {
out.append(text);
} else {
out.append("[[#" + uri + "|" + text + "]]");
}
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeNewLine(java.lang.StringBuffer)
*
* @param out
*/
@Override
public void writeNewLine(StringBuffer out) {
out.append("\n");
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeBeginTRTag(java.lang.StringBuffer)
*
* @param out
*/
@Override
public void writeBeginTRTag(StringBuffer out) {
out.append("\n|-\n");
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeEndTRTag(java.lang.StringBuffer)
*
* @param out
*/
@Override
public void writeEndTRTag(StringBuffer out) {
// TODO Auto-generated method stub
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeEndingTable(java.lang.StringBuffer)
*
* @param out
*/
@Override
public void writeEndingTable(StringBuffer out) {
out.append("\n|}");
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeBeginTDTag(java.lang.StringBuffer)
*
* @param out
*/
@Override
public void writeBeginTDTag(StringBuffer out) {
out.append("|");
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeEndTDTag(java.lang.StringBuffer)
*
* @param out
*/
@Override
public void writeEndTDTag(StringBuffer out) {
out.append("\n");
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeUncoveredRequirement(java.lang.StringBuffer, java.lang.String, java.lang.String)
*
* @param out
* @param uri
* @param reqID
*/
@Override
public void writeRefContent(StringBuffer out, String uri, String requirementName, String reqID) {
if (uri.equals("")) {
out.append(reqID);
} else {
out.append("[[#" + uri + "|" + reqID + "]]");
}
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeBeginParagraph(java.lang.StringBuffer)
*
* @param out
*/
@Override
public void writeBeginParagraph(StringBuffer out) {
out.append("\n<span>");
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeEndingParagraph(java.lang.StringBuffer)
*
* @param out
*/
@Override
public void writeEndingParagraph(StringBuffer out) {
out.append("</span>\n");
}
/**
* @see org.eclipse.papyrus.uml.developper.mde.transcription.ITranscription#writeTOCSection(java.lang.StringBuffer, java.lang.String, java.lang.String, int)
*
* @param out
* @param chapterName
* @param uri
* @param chapterNb
*/
@Override
public void writeTOCSection(StringBuffer out, String chapterName, String uri) {
out.append("\n:[[#" + uri + "|" + chapterName + "]]");
}
}