From 00e729af309b451fa25dcd6bf519f75616560c11 Mon Sep 17 00:00:00 2001 From: administrateur Date: Wed, 31 Jan 2007 05:24:46 +0100 Subject: [PATCH] Manage namedTagData ('
'). --- build/classes/xid/Attributes.class | Bin 1228 -> 1370 bytes build/classes/xid/Presenter.class | Bin 19445 -> 20531 bytes build_test/classes/xid/test/Test.class | Bin 6967 -> 7701 bytes dist/test.jar | Bin 29513 -> 29816 bytes dist/xid.jar | Bin 43834 -> 44276 bytes src/xid/Attributes.java | 9 ++ src/xid/Presenter.java | 202 ++++++++++++++++++------- test/xid/test/Test.java | 57 +++++-- test/xid/test/Test.java~ | 128 +++++++++++----- 9 files changed, 293 insertions(+), 103 deletions(-) diff --git a/build/classes/xid/Attributes.class b/build/classes/xid/Attributes.class index 7691c5e331a53f46b57c6feeec16991819fd06df..a2cf8f1a1adab8c3c34639f6d6a4fad89631b232 100644 GIT binary patch literal 1370 zcmaKrTTc^F5Xb+gcb1g`<>m#%3#Hux#i9r)AraINE&71L=-X+#DNELEvlpUoehohX zuliCFO^nZeDC5lTx>;IcnoQ4`Gv_z|nc4IE&-b4I9$;I6ihFGCD;UKRn_?Er3exNz zMJbCiZ!|WQELO5u70B!umf`LSBunLEfz*DttqbHEhNZvqJ~Vavjcl6anQU}h(ma;7 z!TZpea!(9LV7&3sXjh-Ou5C0uS9j_Hh0>sp>57bE1XM?NqdNl2rN*f|lT}k%o$3*x ztWJH{!<4iso4U!8hAzsh43ld@mJK=SC-c9+kZnZ`AAN zsorwqg9$zH)`c#C(N@=TrC~WQ^-luRSAfdzDGd!q;L<$)2h9YN6HFP^si{S3YLS{+q~;dp!zz2Ej@8VCYV!X?9G)XB z4p+X?Sulkl=N{#JN_n19&kv|u4L_$wvzZ{yf?qAsqU>{FcJ6p^n!s(Jxk#S@v+w=| DUxFO( delta 568 zcmZXQu};EZ6opS)uu!XjV5umIC?YLbsV+pLgPRGHgCTKYA{s-CF|POurjt*=Doaf; zG0w&(@G*P<Ti-tXzy zMpK829j_!;y)*eUD`dqJg9Ne|XT7ds3{tFVkQsCA%_GfBXBUVggE_t>WZC0==EqQY zfP`h&eaNRH<}!X6MW|Q~7^U!D#NZ!f8v!?gJTsZOiQFIp-%(D0UCZ{NJfLFP&xm!N z5Eq51SExP`luYtICm)8qUavs``pwar#lKnEp9YJ&SEexX%l%fk~a#(gl!p10kp^k H3i!%5<@`73 diff --git a/build/classes/xid/Presenter.class b/build/classes/xid/Presenter.class index 2f5b08eaa1c633b3abf4a44185867364974c244d..2dc6bc9e9469ebd5f069186b7d0b19b013ad9ffc 100644 GIT binary patch literal 20531 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 delta 2302 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 delta 3162 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 RJCYc>Q-_6ES^htR{{y3mK3)I- diff --git a/src/xid/Attributes.java b/src/xid/Attributes.java index a283778..cad8b68 100644 --- a/src/xid/Attributes.java +++ b/src/xid/Attributes.java @@ -21,6 +21,15 @@ public class Attributes extends HashMap } + /* + * Useful for the merge attributes. + */ + public Attributes (Attributes attributes) + { + super (attributes); + } + + /* * */ diff --git a/src/xid/Presenter.java b/src/xid/Presenter.java index c9d2834..e812476 100644 --- a/src/xid/Presenter.java +++ b/src/xid/Presenter.java @@ -263,6 +263,89 @@ public class Presenter } + + /** + * + */ + static public Attributes getNamedTagAttributes (TagsDataById datas, String name) + { + Attributes result; + + if ((name == null) || (datas == null)) + { + result = null; + } + else + { + TagDataCore dataCore = datas.getId ("<" + name + ">"); + if (dataCore == null) + { + result = null; + } + else if (!(dataCore instanceof TagData)) + { + result = null; + } + else + { + TagData data = (TagData) dataCore; + + result = data.getAttributes (); + } + } + + // + return (result); + } + + + /** + * + */ + static public Attributes mergeAttributes (Attributes target, Attributes source) + { + Attributes result; + + // + if (target == null) + { + result = source; + } + else if (source == null) + { + result = target; + } + else + { + result = new Attributes (target); + + Iterator iterator = source.entrySet().iterator(); + + while (iterator.hasNext()) + { + Map.Entry attribute = (Map.Entry) iterator.next(); + + String currentValue = target.get (attribute.getKey ()); + + if (currentValue == null) + { + result.put (attribute.getKey (), attribute.getValue ()); + } + else if (attribute.getKey ().equals ("style")) + { + result.put (attribute.getKey (), currentValue + attribute.getValue ()); + } + else + { + result.put (attribute.getKey (), attribute.getValue ()); + } + } + } + + // + return (result); + } + /* * */ @@ -622,7 +705,7 @@ public class Presenter result.append (node.getNodeName()); // Build attributes. - result.append (processAttributes (attrs, data, prefix)); + result.append (processAttributes (attrs, data.getAttributes (), getNamedTagAttributes (datas, node.getNodeName ()), prefix)); if ((node.getChildNodes () == null) && ((data == null) || data.display ().equals (""))) @@ -668,7 +751,7 @@ public class Presenter result.append (node.getNodeName()); // Build attributes. - result.append (processAttributes (attrs, data, Integer.toString (nLine))); + result.append (processAttributes (attrs, data.getAttributes (), getNamedTagAttributes (datas, node.getNodeName ()), Integer.toString (nLine))); if ((node.getChildNodes () == null) && ((data == null) || data.display ().equals (""))) @@ -751,7 +834,6 @@ public class Presenter if (node != null) { log.debug ("nodeName=" + node.getNodeName ()); - // Find the name attribute value. String name; name = getClassAttributeValue (node); @@ -891,43 +973,25 @@ public class Presenter result.append (node.getNodeName()); // Build the tag attributes. - NamedNodeMap attrs = node.getAttributes (); - if (attrs != null) + result.append (processAttributes (node.getAttributes (), + getNamedTagAttributes (datas, node.getNodeName ()), + null, + prefix)); + + // + if (node.getChildNodes () == null) { - for (int i = 0; i < attrs.getLength(); i++) - { - Attr attr = (Attr) attrs.item(i); - result.append (' '); - result.append (attr.getNodeName()); - result.append ("=\""); - result.append (restoreEntities(new StringBuffer(attr.getNodeValue()))); - - // Don't forget the list case. - if ((attr.getNodeName ().equals ("id")) && (prefix.length () != 0)) - { - result.append (Presenter.INDEX_SEPARATOR); - result.append (prefix); - } - - result.append ("\""); - } + result.append(" />"); + } + else + { + result.append('>'); - - // - if (node.getChildNodes () == null) - { - result.append(" />"); - } - else - { - result.append('>'); - - result.append (processChildren (node, datas, webappPath, prefix, errorOutput)); - - result.append("'); - } + result.append (processChildren (node, datas, webappPath, prefix, errorOutput)); + + result.append("'); } @@ -1237,11 +1301,11 @@ public class Presenter /* * */ - static protected StringBuffer processAttributes (NamedNodeMap attrs, TagData model) + static protected StringBuffer processAttributes (NamedNodeMap attrs, Attributes dataAttributes, Attributes namedDataAttributes, String prefix) { StringBuffer result; - result = processAttributes (attrs, model, ""); + result = processAttributes (attrs, mergeAttributes (dataAttributes, namedDataAttributes), prefix); // return (result); @@ -1251,7 +1315,35 @@ public class Presenter /* * */ - static protected StringBuffer processAttributes (NamedNodeMap attrs, TagData model, String prefix) + static protected StringBuffer processAttributes (NamedNodeMap attrs, Attributes dataAttributes) + { + StringBuffer result; + + result = processAttributes (attrs, dataAttributes, ""); + + // + return (result); + } + + + /* + * + */ + static protected StringBuffer processAttributes (NamedNodeMap attrs) + { + StringBuffer result; + + result = processAttributes (attrs, null, null, ""); + + // + return (result); + } + + + /* + * + */ + static protected StringBuffer processAttributes (NamedNodeMap attrs, Attributes dataAttributes, String prefix) { StringBuffer result; @@ -1268,37 +1360,31 @@ public class Presenter // Put model attributes in the merged attributes list. - if (model != null) + if (dataAttributes != null) { - Attributes modelAttributes = model.getAttributes(); + Iterator iterator = dataAttributes.entrySet().iterator(); - if (modelAttributes != null) + while (iterator.hasNext()) { - Iterator iterator = modelAttributes.entrySet().iterator(); + Map.Entry attribute = (Map.Entry) iterator.next(); - while (iterator.hasNext()) + if (mergedAttributes.containsKey (attribute.getKey ())) { - Map.Entry attribute = (Map.Entry) iterator.next(); - - if (mergedAttributes.containsKey (attribute.getKey ())) + if (attribute.getKey ().equalsIgnoreCase ("style")) { - if (attribute.getKey ().equalsIgnoreCase ("style")) - { - mergedAttributes.put (attribute.getKey (), mergedAttributes.get (attribute.getKey ()) + attribute.getValue ()); - } - else - { - mergedAttributes.put (attribute.getKey (), attribute.getValue ()); - } + mergedAttributes.put (attribute.getKey (), mergedAttributes.get (attribute.getKey ()) + attribute.getValue ()); } else { mergedAttributes.put (attribute.getKey (), attribute.getValue ()); } } + else + { + mergedAttributes.put (attribute.getKey (), attribute.getValue ()); + } } } - // Display the attributes Iterator iterator = mergedAttributes.entrySet().iterator(); diff --git a/test/xid/test/Test.java b/test/xid/test/Test.java index f827eb9..816f07b 100644 --- a/test/xid/test/Test.java +++ b/test/xid/test/Test.java @@ -57,6 +57,7 @@ class Test StringBuffer errorMessage; // Populate attributes of Test 03. + System.out.println ("----------------------------"); datas = new TagsData (); tag = new TagData (); tag.setContent ("Superman"); @@ -65,7 +66,6 @@ class Test errorMessage = new StringBuffer (); html = Presenter.doXid ("
a name
", datas, "", errorMessage); - System.out.println ("----------------------------"); System.out.println ("datas = new TagsData ();"); System.out.println ("tag = new TagData ();"); System.out.println ("tag.setContent (\"Superman\");"); @@ -77,13 +77,13 @@ class Test // Populate attributes of Test 03. + System.out.println ("----------------------------"); datas = new TagsData (); datas.setContent ("name", "Superman"); errorMessage = new StringBuffer (); html = Presenter.doXid ("
a name
", datas, "", errorMessage); - System.out.println ("----------------------------"); System.out.println ("datas = new TagsData ();"); System.out.println ("datas.setContent (\"name\", \"Superman\");"); System.out.println ("+"); @@ -93,6 +93,7 @@ class Test // Populate attributes of Test 03. + System.out.println ("----------------------------"); datas = new TagsData (); tag = new TagData (); tag.setContent ("Spiderman"); @@ -105,7 +106,6 @@ class Test errorMessage = new StringBuffer (); html = Presenter.doXid ("
a last name
", datas, "", errorMessage); - System.out.println ("----------------------------"); System.out.println ("datas = new TagsData ();"); System.out.println ("tag = new TagData ();"); System.out.println ("tag.getAttributes ().setAttribute (\"class\", \"lastnameClass\");"); @@ -120,6 +120,7 @@ class Test // Populate attributes of Test 03. + System.out.println ("----------------------------"); datas = new TagsData (); datas.setContent ("lastname", "Spiderman"); datas.appendAttribute ("lastname", "style", "background: blue;"); @@ -130,11 +131,10 @@ class Test errorMessage = new StringBuffer (); html = Presenter.doXid ("
a last name
", datas, "", errorMessage); - System.out.println ("----------------------------"); System.out.println ("datas = new TagsData ();"); System.out.println ("datas.setContent (\"lastname\", \"Spiderman\");"); System.out.println ("datas.appendAttribute (\"lastname\", \"style\", \"background: blue;\");"); - System.out.println ("datas.appendAttribute (\"lastname\", \"style\", \"foreground: red;\""); + System.out.println ("datas.appendAttribute (\"lastname\", \"style\", \"foreground: red;\");"); System.out.println ("datas.setAttribute (\"lastname\", \"class\", \"nameClass\");"); System.out.println ("+"); System.out.println ("
a last name
"); @@ -143,6 +143,7 @@ class Test // Populate attributes of Test 03. + System.out.println ("----------------------------"); datas = new TagsData (); datas.setContent ("words", 0, "alpha"); datas.setContent ("words", 1, "bravo"); @@ -155,7 +156,6 @@ class Test errorMessage = new StringBuffer (); html = Presenter.doXid ("
    \n
  • a word
  • \n
", datas, "", errorMessage); - System.out.println ("----------------------------"); System.out.println ("datas = new TagsData ();"); System.out.println ("datas.setContent (\"words\", 0, \"alpha\");"); System.out.println ("datas.setContent (\"words\", 1, \"bravo\");"); @@ -172,6 +172,7 @@ class Test // Populate attributes of Test 03. + System.out.println ("----------------------------"); datas = new TagsData (); datas.setContent ("identity", 0, "nom", "Jemba"); datas.setContent ("identity", 0, "prenom", "Epo"); @@ -182,10 +183,13 @@ class Test errorMessage = new StringBuffer (); - htmlSource = "\n \n
noidun nomun prenom
"; + StringBuffer source = new StringBuffer (); + source.append ("\n"); + source.append (" \n"); + source.append ("
noidun nomun prenom
"); + htmlSource = source.toString (); html = Presenter.doXid (htmlSource, datas, "", errorMessage); - System.out.println ("----------------------------"); System.out.println ("datas = new TagsData ();"); System.out.println ("datas.setContent (\"identity\", 0, \"nom\", \"Jemba\");"); System.out.println ("datas.setContent (\"identity\", 0, \"prenom\", \"Epo\");"); @@ -201,6 +205,7 @@ class Test // Populate attributes of Test 03. + System.out.println ("----------------------------"); datas = new TagsData (); datas.setContent ("identity", 0, "nom", "Jemba"); datas.setContent ("identity", 0, "prenom", "Epo"); @@ -215,7 +220,7 @@ class Test errorMessage = new StringBuffer (); - StringBuffer source = new StringBuffer (); + source = new StringBuffer (); source.append ("\n"); source.append (" \n"); source.append (" \n"); @@ -223,7 +228,6 @@ class Test source.append ("
noidun nomun prenom
noidun nomun prenom
"); htmlSource = source.toString (); - System.out.println ("----------------------------"); System.out.println ("datas = new TagsData ();"); System.out.println ("datas.setContent (\"identity\", 0, \"nom\", \"Jemba\");"); System.out.println ("datas.setContent (\"identity\", 0, \"prenom\", \"Epo\");"); @@ -256,5 +260,38 @@ class Test System.out.println ("ALL_ROWS:"); html = Presenter.doXid (htmlSource, datas, "", errorMessage); System.out.println (html); + + + + // Populate attributes of Test 03. + System.out.println ("----------------------------"); + datas = new TagsData (); + datas.setAttribute ("
", "class", "aDivClass"); + datas.setAttribute ("
", "style", "background-color: #000000;"); + datas.setAttribute ("number", "style", "background-color: #0000FF;"); + + + errorMessage = new StringBuffer (); + source = new StringBuffer (); + source.append ("
\n"); + source.append ("

one

\n"); + source.append ("
\n"); + source.append ("
\n"); + source.append ("

three

\n"); + source.append ("
"); + htmlSource = source.toString (); + html = Presenter.doXid (htmlSource, datas, "", errorMessage); + + System.out.println (htmlSource); + System.out.println ("+"); + System.out.println ("datas = new TagsData ();"); + System.out.println ("datas.setAttribute (\"
\", \"class\", \"aDivClass\");"); + System.out.println ("datas.setAttribute (\"
\", \"style\", \"background-color: #000000;\");"); + System.out.println ("datas.setAttribute (\"number\", \"style\", \"background-color: #0000FF;\");"); + + System.out.println ("=>"); + System.out.println (html); + + } } diff --git a/test/xid/test/Test.java~ b/test/xid/test/Test.java~ index 75c0380..7b4873c 100644 --- a/test/xid/test/Test.java~ +++ b/test/xid/test/Test.java~ @@ -134,7 +134,7 @@ class Test System.out.println ("datas = new TagsData ();"); System.out.println ("datas.setContent (\"lastname\", \"Spiderman\");"); System.out.println ("datas.appendAttribute (\"lastname\", \"style\", \"background: blue;\");"); - System.out.println ("datas.appendAttribute (\"lastname\", \"style\", \"foreground: red;\""); + System.out.println ("datas.appendAttribute (\"lastname\", \"style\", \"foreground: red;\");"); System.out.println ("datas.setAttribute (\"lastname\", \"class\", \"nameClass\");"); System.out.println ("+"); System.out.println ("
a last name
"); @@ -182,40 +182,7 @@ class Test errorMessage = new StringBuffer (); - html = Presenter.doXid ("\n \n
noidun nomun prenom
", datas, "", errorMessage); - - System.out.println ("----------------------------"); - System.out.println ("datas = new TagsData ();"); - System.out.println ("datas.setContent (\"identity\", 0, \"nom\", \"Jemba\");"); - System.out.println ("datas.setContent (\"identity\", 0, \"prenom\", \"Epo\");"); - System.out.println ("datas.setContent (\"identity\", 1, \"nom\", \"Momon\");"); - System.out.println ("datas.setContent (\"identity\", 1, \"prenom\", \"Christian\");"); - System.out.println ("datas.setContent (\"identity\", 2, \"nom\", \"Tronche\");"); - System.out.println ("datas.setContent (\"identity\", 2, \"prenom\", \"Christophe\");"); - - System.out.println ("+"); - System.out.println (""); - System.out.println (" "); - System.out.println (" "); - System.out.println (" "); - System.out.println ("
un nomun prenom
un nomun prenom
un nomun prenom
"); - System.out.println ("=>"); - System.out.println (html); - - - // Populate attributes of Test 03. - datas = new TagsData (); - datas.setContent ("identity", 0, "nom", "Jemba"); - datas.setContent ("identity", 0, "prenom", "Epo"); - datas.setContent ("identity", 1, "nom", "Momon"); - datas.setContent ("identity", 1, "prenom", "Christian"); - datas.setContent ("identity", 2, "nom", "Tronche"); - datas.setContent ("identity", 2, "prenom", "Christophe"); - //datas.setIterationStrategy ("table" - - - errorMessage = new StringBuffer (); - htmlSource = "\n \n\n\n
noidun nomun prenom
noidun nomun prenom
noidun nomun prenom
"; + htmlSource = "\n \n
noidun nomun prenom
"; html = Presenter.doXid (htmlSource, datas, "", errorMessage); System.out.println ("----------------------------"); @@ -231,5 +198,96 @@ class Test System.out.println (htmlSource); System.out.println ("=>"); System.out.println (html); + + + // Populate attributes of Test 03. + datas = new TagsData (); + datas.setContent ("identity", 0, "nom", "Jemba"); + datas.setContent ("identity", 0, "prenom", "Epo"); + datas.setContent ("identity", 1, "nom", "Momon"); + datas.setContent ("identity", 1, "prenom", "Christian"); + datas.setContent ("identity", 2, "nom", "Tronche"); + datas.setContent ("identity", 2, "prenom", "Christophe"); + datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ONLY_FIRST_ROW); + //datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ONLY_ROWS_WITH_ID); + //datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ONLY_ROWS_WITHOUT_ID); + //datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ALL_ROWS); + + + errorMessage = new StringBuffer (); + StringBuffer source = new StringBuffer (); + source.append ("\n"); + source.append (" \n"); + source.append (" \n"); + source.append (" \n"); + source.append ("
noidun nomun prenom
noidun nomun prenom
noidun nomun prenom
"); + htmlSource = source.toString (); + + System.out.println ("----------------------------"); + System.out.println ("datas = new TagsData ();"); + System.out.println ("datas.setContent (\"identity\", 0, \"nom\", \"Jemba\");"); + System.out.println ("datas.setContent (\"identity\", 0, \"prenom\", \"Epo\");"); + System.out.println ("datas.setContent (\"identity\", 1, \"nom\", \"Momon\");"); + System.out.println ("datas.setContent (\"identity\", 1, \"prenom\", \"Christian\");"); + System.out.println ("datas.setContent (\"identity\", 2, \"nom\", \"Tronche\");"); + System.out.println ("datas.setContent (\"identity\", 2, \"prenom\", \"Christophe\");"); + + System.out.println ("+"); + System.out.println (htmlSource); + System.out.println ("=>"); + + + datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ONLY_FIRST_ROW); + System.out.println ("ONLY_FIRST_ROW:"); + html = Presenter.doXid (htmlSource, datas, "", errorMessage); + System.out.println (html); + + datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ONLY_ROWS_WITH_ID); + System.out.println ("ONLY_ROWS_WITH_ID:"); + html = Presenter.doXid (htmlSource, datas, "", errorMessage); + System.out.println (html); + + datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ONLY_ROWS_WITHOUT_ID); + System.out.println ("ONLY_ROWS_WITHOUT_ID:"); + html = Presenter.doXid (htmlSource, datas, "", errorMessage); + System.out.println (html); + + datas.setIterationStrategy ("identity", TagsDataByIndex.IterationStrategy.ALL_ROWS); + System.out.println ("ALL_ROWS:"); + html = Presenter.doXid (htmlSource, datas, "", errorMessage); + System.out.println (html); + + + + // Populate attributes of Test 03. + System.out.println ("----------------------------"); + datas = new TagsData (); + datas.setAttribute ("
", "class", "aDivClass"); + datas.setAttribute ("
", "style", "background-color: #000000;"); + datas.setAttribute ("number", "style", "background-color: #0000FF;"); + + + errorMessage = new StringBuffer (); + source = new StringBuffer (); + source.append ("
\n"); + source.append ("

one

\n"); + source.append ("
\n"); + source.append ("
\n"); + source.append ("

three

\n"); + source.append ("
"); + htmlSource = source.toString (); + html = Presenter.doXid (htmlSource, datas, "", errorMessage); + + System.out.println (htmlSource); + System.out.println ("+"); + System.out.println ("datas = new TagsData ();"); + System.out.println ("datas.setAttribute (\"
\", \"class\", \"aDivClass\");"); + System.out.println ("datas.setAttribute (\"
\", \"style\", \"background-color: #000000;\");"); + System.out.println ("datas.setAttribute (\"number\", \"style\", \"background-color: #0000FF;\");"); + + System.out.println ("=>"); + System.out.println (html); + + } }