Public:BWmeta service/Java mapping/Rich text

From YaddaWiki

< Public:BWmeta service | Java mapping(Difference between revisions)
Jump to: navigation, search
(Adding YRichText class)
 
(12 intermediate revisions not shown)
Line 12: Line 12:
==== Methods ====
==== Methods ====
-
* <code>String toText()</code> – returns a flattened text view of the rich text.  It's a concatenation of text contents of the tree list visited in the infix order, or a simple text line if YRichText conteins only this simple line
+
* <code>String toText()</code> – returns a flattened text view of the rich text.  It's a concatenation of text contents of the tree list visited in the infix order. Note that toText().isEmpty() does not mean that this tree has no content.
-
* <code>setText(String text)</code> - parses given text - first it tries to parse it as Xml and if text contains more then one node it stored as a tree, otherwise it is stored as this simple string.  
+
* <code>setText(String text)</code> - stores this text literally in YRich text as one node(leaf) tree.  
-
* <code>List<YRichText.Part> toParts()</code> – returns a list of trees which represent the rich text. It could return null - this means that this RichText contains only one string comtent which could be obtained via toText() method
+
* <code>List<YRichText.Part> toParts()</code> – returns a list of trees which represent the rich text.
-
* <code>String toXmlFragment()</code> – serializes a rich text to an XML fragment. It returns null if YrichText contains only single text.
+
* <code>setParts(Collection<Part> parts)</code> - sets this text from forest of parts.
-
* <code>setParts(Collection<Part> parts)</code> - sets this text from tree of parts. Remeber that getParts(setParts()) its not identity.
+
* <code>isEmpty()</code> - says if this yrich text has no content ( nulls are not allowed so empty means null)
 +
==== Helper class <code>YRTHelper</code> ====
 +
this clas is in package pl.edu.icm.yadda.bwmeta.serialization.
 +
*<code>static YRichText buildFrom(org.jdom.Element element)</code> - builds this element from content of jdom elements. It's illegal and mpol don't like this type of interface.
 +
*<code> static List<org.jdom.Content> getListOfContentElementsForThisYRichText(YRichText yt)</code> - returns list of jdom fragments for this YRT.
-
Illegal method:
+
*<code>static String toXmlFragment(YrichText)</code> - serializes a rich text to an XML fragment.
-
 
+
-
*<code>buildFrom(org.jdom.Element element)</code> - builds this element from content of jdom elements. It's illegal and mpol don't like this type of interface.
+
=== Changes in classes with a <code>YRichText</code> property ===
=== Changes in classes with a <code>YRichText</code> property ===
Line 51: Line 53:
=== Contracts ===
=== Contracts ===
-
* For any <code>String text != null</code the following assert should pass:
+
* For any <code>String text != null</code> the following assert should pass:
  yFoo.setText(text);
  yFoo.setText(text);
  // ... potential serialization and deserialization ...
  // ... potential serialization and deserialization ...

Latest revision as of 15:17, 7 March 2013

Service details
NameBWmeta
Code location
(relative to SVN root)
projects/dir/bwmeta-core
Javadoc
Contact personJakub Jurkiewicz

Support for rich text, introduced in BWmeta 2.0.0 calls for changes in the "Y" model.

Contents

Adding YRichText class

YRichText is mutable.

Constructors

  • YRichText(String) – constructor from plain text. Uses set text method.
  • YRichText(List<YRichText.Part>) – constructor from list of trees.

Methods

  • String toText() – returns a flattened text view of the rich text. It's a concatenation of text contents of the tree list visited in the infix order. Note that toText().isEmpty() does not mean that this tree has no content.
  • setText(String text) - stores this text literally in YRich text as one node(leaf) tree.
  • List<YRichText.Part> toParts() – returns a list of trees which represent the rich text.
  • setParts(Collection<Part> parts) - sets this text from forest of parts.
  • isEmpty() - says if this yrich text has no content ( nulls are not allowed so empty means null)

Helper class YRTHelper

this clas is in package pl.edu.icm.yadda.bwmeta.serialization.

  • static YRichText buildFrom(org.jdom.Element element) - builds this element from content of jdom elements. It's illegal and mpol don't like this type of interface.
  • static List<org.jdom.Content> getListOfContentElementsForThisYRichText(YRichText yt) - returns list of jdom fragments for this YRT.
  • static String toXmlFragment(YrichText) - serializes a rich text to an XML fragment.

Changes in classes with a YRichText property

YRichText-related methods (other than the ones below) which have been already added should be @Deprecated and subsequently removed. When is said below about setting plain text - it means that method takes string and reparses it the way YRochText works in setText(String).

YName, YDescription

  • Every constructor from String text has a corresponding constructor from YRichText text.
  • String getText() – returns flattened plain text.
  • YRichText getRichText() – returns rich text.
  • T setText(String) – sets plain text.
  • T setRichText(YRichText) – sets rich text.

YAttribute

  • Every constructor from String value has a corresponding constructor from YRichText value.
  • String getValue() – returns flattened plain text.
  • YRichText getRichValue() – returns rich text.
  • YAttribute setValue(String) – sets plain text.
  • YAttribute setRichValue(YRichText) – sets rich text.

YTagList

  • List<String> getValues() – returns unmodifiable, flattened text view of the list of tags.
  • List<YRichText> getRichValues() – returns modifiable list of rich text tags.
  • YTagList setValues(Collection<String>) – sets plain text values.
  • YTagList setRichValues(Collection<YRichText>) – sets rich text values.
  • YTagList addValue(String) – adds a plain text value.
  • YTagList addRichValue(YRichText) – adds a rich text value.

Contracts

  • For any String text != null the following assert should pass:
yFoo.setText(text);
// ... potential serialization and deserialization ...
// ... conversion to "DL" model and back ...
// ... or all of the above in any order ...
assertEquals(text, yFoo.getText());
  • For any String text != null the following assert should pass:
yFoo.setText(text);
// ... conversion to "DL" model ...
assertEquals(text, dFoo.getText());
  • Example:
yName.setText("<b xmlns="http://www.w3.org/1999/xhtml">1 &lt; 2</b>");
// ... conversion Y -> DL ...
assertEquals("<b xmlns="http://www.w3.org/1999/xhtml">1 &lt; 2</b>", dName.getText());
// ... conversion DL -> Y ...
assertEquals("<b xmlns="http://www.w3.org/1999/xhtml">1 &lt; 2</b>", yName.getText());
  • For any XML fragment foo if BWmeta 2.0.0 contains <name>foo</name> then:
assertEquals("foo", yName.getXml());
  • There would be no conversions from YRichText to DL and back, therefore we don;t expect identity during conversions.
  • This constraints means that from:
yName.setText("1 < 2")

we get:

yName.getText().equals("1 < 2")
Personal tools