Public:BWmeta service/Java mapping/Rich text
From YaddaWiki
| Service details | |
|---|---|
| Name | BWmeta |
| Code location (relative to SVN root) | projects/dir/bwmeta-core |
| Javadoc | |
| Contact person | Jakub 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, or a simple text line if YRichText conteins only this simple line -
setText(String text)- 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. -
List<YRichText.Part> toParts()– 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 -
String toXmlFragment()– serializes a rich text to an XML fragment. It returns null if YrichText contains only single text. -
setParts(Collection<Part> parts)- sets this text from tree of parts. Remeber that getParts(setParts()) its not identity.
Helper class YRTHelper
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 String toXmlFragment(YrichText)-
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 texthas a corresponding constructor fromYRichText 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 valuehas a corresponding constructor fromYRichText 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</code 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 <code>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 < 2</b>");
// ... conversion Y -> DL ...
assertEquals("<b xmlns="http://www.w3.org/1999/xhtml">1 < 2</b>", dName.getText());
// ... conversion DL -> Y ...
assertEquals("<b xmlns="http://www.w3.org/1999/xhtml">1 < 2</b>", yName.getText());
- For any XML fragment
fooif 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")
