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 slightly mutable. Because its polymorphic then some access could lead to errors.
If after get parts somebody makes set text, then all of this parts are not in the YRichText.
We make structure rule saying then when YRichtextTree contains only one Leaf then it is moved to String.
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.
Illegal method:
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.
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 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 value
has 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
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 < 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
foo
if BWmeta 2.0.0 contains<name>foo</name>
then:
assertEquals("foo", yName.getXml());
- After all processes without editing we got eqal rich text objects
YrichText text=yFoo.getRichText(); // ... potential serialization and deserialization ... // ... conversion to "DL" model and back ... // .. no edition etc... // ... or all of the above in any order ... YrichText text1=yFoo.getRichText(); assertEquals(text, text1);
- Partticularly:
YrichText rtext=yFoo.getRichText(); String text=yFoo.getText(); yFoo.setText(text); YrichText rtext1=yFoo.getRichText(); assertEquals(rtext.getText(), rtext1.getText());
- Partticularly:
YrichText rtext=yFoo.getRichText(); String text=yFoo.getText(); yFoo.setText(text); //yFoo serialize deserilize YrichText rtext1=yFoo.getRichText(); assertEquals(rtext, rtext1);
- This constraints means that from:
yName.setText("1 < 2")
we get:
yName.getText().equals("1 < 2")