Remove include functionality by <object appliction/xid way.

This commit is contained in:
Christian P. MOMON 2010-02-23 17:41:58 +01:00
parent 6511b04085
commit 5456caece2
2 changed files with 78 additions and 210 deletions

View file

@ -301,121 +301,6 @@ public class Presenter
} }
/**
* Includes another file into the current page.
*
* @param node
* @param attrMap
* @param idAttr
*/
static protected StringBuffer processObjectTag (Node node,
NamedNodeMap attrMap,
Node idAttr,
IdsDataById datas,
String webappPath,
StringBuffer errorOutput)
{
StringBuffer result;
result = new StringBuffer ();
// Find codetype.
String codetype;
if (attrMap == null)
{
codetype = null;
}
else if (attrMap.getNamedItem ("codetype") == null)
{
codetype = null;
}
else
{
codetype = attrMap.getNamedItem ("codetype").getNodeValue ();
}
// Check tag requirements.
if ((attrMap == null) ||
(codetype == null) ||
(!codetype.equals ("application/xid")) ||
(attrMap.getNamedItem ("data") == null))
{
// STU: do default action.
Presenter.processElementBasically (node, datas, webappPath, errorOutput);
}
else
{
logger.debug ("object action");
result.append ("<!-- STARTING INCLUDE XID FILE " + attrMap.getNamedItem ("data") + " -->");
// Build the file name.
String htmlFileName = webappPath + attrMap.getNamedItem ("data").getNodeValue ();
// Load file in tree.
Document childDoc = null;
try
{
childDoc = fileToTree (htmlFileName, errorOutput);
}
catch (Exception ex)
{
errorOutput.append ("unable to build the file tree");
logger.debug ("unable to build the file tree");
}
// Extract the 'body' section.
Node body = null;
try
{
NodeList nodes = childDoc.getElementsByTagName ("body");
if (nodes.getLength () == 0)
{
errorOutput.append ("no body tag in include html");
logger.debug ("no body tag in include html");
}
else
{
body = nodes.item(0);
}
}
catch (Exception e)
{
errorOutput.append ("error getting child");
logger.debug ("error getting child");
}
// Process the body child as part of the primary tree.
if (body == null)
{
errorOutput.append ("xid object body empty.");
}
else
{
NodeList bodyChildren = body.getChildNodes ();
if (bodyChildren != null)
{
int childCount = bodyChildren.getLength ();
for (int childCounter = 0; childCounter < childCount; childCounter++)
{
result.append (process (bodyChildren.item (childCounter), datas, webappPath, errorOutput));
}
}
}
//
result.append ("<!-- ENDING INCLUDE XID FILE " + attrMap.getNamedItem ("data") + " -->");
}
logger.debug ("end of object action");
//
return (result);
}
/** /**
* Processes a node that has dynamic content. Calls the appropriate code * Processes a node that has dynamic content. Calls the appropriate code
* generator method, depending on the tag. * generator method, depending on the tag.
@ -468,62 +353,103 @@ public class Presenter
String tag = node.getNodeName(); String tag = node.getNodeName();
if (tag.equals ("object")) String idValue = idAttr.getNodeValue();
logger.debug ("tag=" + tag);
// Get data of this id.
IdDataCore dataCore = datas.get (idAttr.getNodeValue ());
if (dataCore == null)
{ {
result.append (processObjectTag (node, attrs, idAttr, datas, webappPath, errorOutput)); result.append (Presenter.processElementBasically (node, datas, webappPath, suffix, errorOutput));
} }
else else if (dataCore instanceof IdData)
{ {
String idValue = idAttr.getNodeValue(); IdData data = (IdData) dataCore;
logger.debug ("tag=" + tag); String theClass;
if (data == null)
// Get data of this id.
IdDataCore dataCore = datas.get (idAttr.getNodeValue ());
if (dataCore == null)
{ {
result.append (Presenter.processElementBasically (node, datas, webappPath, suffix, errorOutput)); theClass = null;
} }
else if (dataCore instanceof IdData) else
{ {
IdData data = (IdData) dataCore; theClass = data.getAttributes ().getAttribute ("class");
}
String theClass; if ((theClass == null) ||
if (data == null) (!theClass.equals ("xid:nodisplay")))
{
// Open the tag.
result.append ("<");
result.append (node.getNodeName());
// Build attributes.
result.append (processAttributes (attrs, data.getAttributes (), suffix));
if ((node.getChildNodes () == null) &&
((data == null) || (data.display () == null)))
{ {
theClass = null; // Close the tag.
result.append (" />");
} }
else else
{ {
theClass = data.getAttributes ().getAttribute ("class"); result.append ('>');
}
if ((theClass == null) || // CHANGED, cpm:
(!theClass.equals ("xid:nodisplay")))
// Insert data.
if ((data == null) ||
(data.display () == null))
{
result.append (processChildren (node, datas, webappPath, suffix, errorOutput));
}
else
{
result.append (data.display ());
}
// Close the tag.
result.append ("</");
result.append (node.getNodeName());
result.append ('>');
}
}
}
else if (dataCore instanceof IdsDataByIndex)
{
IdsDataByIndex tags = (IdsDataByIndex) dataCore;
int nbLines = tags.size ();
for (int nLine = 0; nLine < nbLines; nLine++)
{
if (tags.elementAt (nLine) instanceof IdData)
{ {
IdData data = (IdData) tags.elementAt (nLine);
// Open the tag. // Open the tag.
result.append ("<"); result.append ("<");
result.append (node.getNodeName()); result.append (node.getNodeName());
// Build attributes. result.append (processAttributes (attrs, data.getAttributes (), Integer.toString (nLine)));
result.append (processAttributes (attrs, data.getAttributes (), suffix));
if ((node.getChildNodes () == null) && if ((node.getChildNodes () == null) &&
((data == null) || (data.display () == null))) ((data == null) || (data.display () == null)))
{ {
// Close the tag. // Close the tag.
result.append (" />"); result.append (" />\n");
} }
else else
{ {
result.append ('>'); result.append ('>');
// CHANGED, cpm:
// CHANGED, cpm
// Insert data. // Insert data.
if ((data == null) || if ((data == null) || (data.display () == null))
(data.display () == null))
{ {
result.append (processChildren (node, datas, webappPath, suffix, errorOutput)); result.append (processChildren (node, datas, webappPath, suffix, errorOutput));
} }
@ -535,70 +461,22 @@ public class Presenter
// Close the tag. // Close the tag.
result.append ("</"); result.append ("</");
result.append (node.getNodeName()); result.append (node.getNodeName());
result.append ('>'); result.append (">\n");
} }
} }
} else
else if (dataCore instanceof IdsDataByIndex)
{
IdsDataByIndex tags = (IdsDataByIndex) dataCore;
int nbLines = tags.size ();
for (int nLine = 0; nLine < nbLines; nLine++)
{ {
if (tags.elementAt (nLine) instanceof IdData) // Manage a Hashmap.
{ IdsDataById data = (IdsDataById) tags.elementAt (nLine);
IdData data = (IdData) tags.elementAt (nLine);
// Open the tag. result.append (Presenter.processElementWithId (node, attrs, idAttr, data, webappPath, Integer.toString (nLine), errorOutput));
result.append ("<"); result.append ('\n');
result.append (node.getNodeName());
result.append (processAttributes (attrs, data.getAttributes (), Integer.toString (nLine)));
if ((node.getChildNodes () == null) &&
((data == null) || (data.display () == null)))
{
// Close the tag.
result.append (" />\n");
}
else
{
result.append ('>');
// CHANGED, cpm
// Insert data.
if ((data == null) || (data.display () == null))
{
result.append (processChildren (node, datas, webappPath, suffix, errorOutput));
}
else
{
result.append (data.display ());
}
// Close the tag.
result.append ("</");
result.append (node.getNodeName());
result.append (">\n");
}
}
else
{
// Manage a Hashmap.
IdsDataById data = (IdsDataById) tags.elementAt (nLine);
result.append (Presenter.processElementWithId (node, attrs, idAttr, data, webappPath, Integer.toString (nLine), errorOutput));
result.append ('\n');
}
} }
} }
else }
{ else
logger.warn ("Unknow type of IdDataId"); {
} logger.warn ("Unknow type of IdDataId");
} }
// //
@ -694,17 +572,7 @@ public class Presenter
} }
else else
{ {
result.append (Presenter.processElementBasically (node, datas, webappPath, suffix, errorOutput));
String tag = node.getNodeName();
if (tag.equals ("object"))
{
result.append (processObjectTag (node, attrs, idAttr, datas, webappPath, errorOutput));
}
else
{
result.append (Presenter.processElementBasically (node, datas, webappPath, suffix, errorOutput));
}
} }
break; break;