📄 traversesubcontentcachetransform.java
字号:
public void flush() throws IOException { out.flush(); } public int onStart() throws TemplateModelException, IOException { //templateContext.put("buf", new StringBuffer()); List nodeTrail = null; Map node = null; GenericValue subContentDataResourceView = null; List globalNodeTrail = (List)templateRoot.get("globalNodeTrail"); String trailCsv = ContentWorker.nodeTrailToCsv(globalNodeTrail); //if (Debug.infoOn()) Debug.logInfo("in TraverseSubContentCache, onStart, trailCsv(1):" + trailCsv , module); if (globalNodeTrail.size() > 0) { int sz = globalNodeTrail.size() ; nodeTrail = new ArrayList(); //nodeTrail = passedGlobalNodeTrail.subList(sz - 1, sz); node = (Map)globalNodeTrail.get(sz - 1); //if (Debug.infoOn()) Debug.logInfo("in TraverseSubContentCache, onStart, node(1):" + node , module); Boolean checkedObj = (Boolean)node.get("checked"); Map whenMap = (Map)templateRoot.get("whenMap"); //if (Debug.infoOn()) Debug.logInfo("in TraverseSubContentCache, whenMap(2):" + whenMap , module); if (checkedObj == null || !checkedObj.booleanValue()) { ContentWorker.checkConditions(delegator, node, null, whenMap); } subContentDataResourceView = (GenericValue)node.get("value"); } else { throw new IOException("Empty node trail entries"); } Boolean isReturnBeforePickBool = (Boolean)node.get("isReturnBeforePick"); if (isReturnBeforePickBool != null && isReturnBeforePickBool.booleanValue()) return TransformControl.SKIP_BODY; GenericValue content = null; ContentWorker.selectKids(node, traverseContext); //if (Debug.infoOn()) Debug.logInfo("in TraverseSubContentCache, onStart, node(2):" + node , module); nodeTrail.add(node); traverseContext.put("nodeTrail", nodeTrail); Boolean isPickBool = (Boolean)node.get("isPick"); Boolean isFollowBool = (Boolean)node.get("isFollow"); //if (Debug.infoOn()) Debug.logInfo("in TraverseSubContentCache, onStart, isPickBool(1):" + isPickBool + " isFollowBool:" + isFollowBool, module); boolean isPick = true; if ((isPickBool == null || !isPickBool.booleanValue()) && (isFollowBool != null && isFollowBool.booleanValue())) { isPick = ContentWorker.traverseSubContent(traverseContext); //if (Debug.infoOn()) Debug.logInfo("in TraverseSubContentCache, onStart, isPick(2):" + isPick, module); } if (isPick) { populateContext(traverseContext, templateRoot); FreeMarkerWorker.saveContextValues(templateRoot, saveKeyNames, savedValues); return TransformControl.EVALUATE_BODY; } else { return TransformControl.SKIP_BODY; } } public int afterBody() throws TemplateModelException, IOException { FreeMarkerWorker.reloadValues(templateRoot, savedValues, env); List globalNodeTrail = (List)templateRoot.get("globalNodeTrail"); //if (Debug.infoOn()) Debug.logInfo("populateContext, globalNodeTrail(2a):" + FreeMarkerWorker.nodeTrailToCsv(globalNodeTrail), ""); List nodeTrail = (List)traverseContext.get("nodeTrail"); //List savedGlobalNodeTrail = (List)savedValues.get("globalNodeTrail"); //templateRoot.put("globalNodeTrail", savedGlobalNodeTrail); boolean inProgress = ContentWorker.traverseSubContent(traverseContext); int sz = nodeTrail.size(); if (inProgress) { populateContext(traverseContext, templateRoot); FreeMarkerWorker.saveContextValues(templateRoot, saveKeyNames, savedValues); //globalNodeTrail = (List)templateRoot.get("globalNodeTrail"); //globalNodeTrail.addAll(nodeTrail); return TransformControl.REPEAT_EVALUATION; } else return TransformControl.END_EVALUATION; } public void close() throws IOException { FreeMarkerWorker.reloadValues(templateRoot, savedValuesUp, env); String wrappedContent = buf.toString(); out.write(wrappedContent); //if (Debug.infoOn()) Debug.logInfo("in TraverseSubContent, wrappedContent:" + wrappedContent, module); } public void populateContext(Map traverseContext, Map templateContext) { List nodeTrail = (List)traverseContext.get("nodeTrail"); //if (Debug.infoOn()) Debug.logInfo("populateContext, nodeTrail csv(a):" + FreeMarkerWorker.nodeTrailToCsv((List)nodeTrail), ""); int sz = nodeTrail.size(); Map node = (Map)nodeTrail.get(sz - 1); GenericValue content = (GenericValue)node.get("value"); String contentId = (String)node.get("contentId"); String subContentId = (String)node.get("subContentId"); String contentAssocTypeId = (String)node.get("contentAssocTypeId"); envWrap("contentAssocTypeId", contentAssocTypeId); envWrap("contentId", contentId); envWrap("content", content); String mapKey = (String)node.get("mapKey"); envWrap("mapKey", mapKey); envWrap("subContentDataResourceView", null); List globalNodeTrail = (List)templateContext.get("globalNodeTrail"); String contentIdEnd = null; String contentIdStart = null; if (globalNodeTrail != null) { Map ndEnd = (Map)globalNodeTrail.get(globalNodeTrail.size() - 1); contentIdEnd = (String)ndEnd.get("contentId"); Map ndStart = (Map)nodeTrail.get(0); contentIdStart = (String)ndStart.get("contentId"); } else { globalNodeTrail = new ArrayList(); } //if (Debug.infoOn()) Debug.logInfo("in TraverseSubContentCache, populateContext, contentIdEnd(1):" + contentIdEnd + " contentIdStart:" + contentIdStart + " equals:" + (contentIdStart.equals(contentIdEnd)), module); boolean bIdEnd = UtilValidate.isNotEmpty(contentIdEnd); boolean bIdStart = UtilValidate.isNotEmpty(contentIdStart); boolean bEquals = contentIdStart.equals(contentIdEnd); //if (Debug.infoOn()) Debug.logInfo("in TraverseSubContentCache, populateContext, contentIdEnd(1):" + bIdEnd + " contentIdStart:" + bIdStart + " equals:" + bEquals, module); //if (Debug.infoOn()) Debug.logInfo("populateContext, globalNodeTrail(1a):" + FreeMarkerWorker.nodeTrailToCsv(globalNodeTrail), ""); if (bIdEnd && bIdStart && bEquals) { List subList = nodeTrail.subList(1, sz); globalNodeTrail.addAll(subList); } else { globalNodeTrail.addAll(nodeTrail); } //if (Debug.infoOn()) Debug.logInfo("populateContext, globalNodeTrail(1b):" + FreeMarkerWorker.nodeTrailToCsv(globalNodeTrail), ""); int indentSz = globalNodeTrail.size(); envWrap("indent", new Integer(indentSz)); String trailCsv = ContentWorker.nodeTrailToCsv(globalNodeTrail); //if (Debug.infoOn()) Debug.logInfo("in TraverseSubContentCache, populateCtx, trailCsv(2):" + trailCsv , module); envWrap("nodeTrailCsv", trailCsv); envWrap("globalNodeTrail", globalNodeTrail); return; } public void envWrap(String varName, Object obj) { templateRoot.put(varName, obj); env.setVariable(varName, FreeMarkerWorker.autoWrap(obj, env)); } }; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -