文档生成框架.doc

文档生成框架 写这篇文章的目的: 这段时间SUP需要支持文档生成的工作,为了更好完成这个工作;另一方面也为以后的维护者提供参考;最重要的主要是自己的学习总结。 模型: 每个IDocElement都会通过getAdapter获取一个INamingPolicy和一个ILocationPolicy, 同样通过getAdapter可以获取IEosElement和IResourceDelegate 每个具体的IDocElement都会实现抽象父类AbstractDocElement的以下三个方法: /** /** * 具体加载基本属性信息(具体提供内容) */ protected abstract void doLoadBasicAttrs(); /** * 具体加载文档内容条目(具体提供内容) */ protected abstract void doLoadContentItems(); /** * 具体加载子文档模型元素 * * @param collector 内容提供者(collect service impl) */ protected abstract void doLoadChildren(IDocElementSourceProvider collector); 方法doLoadBasicAttrs()和方法doLoadContentItems()都是为模板收集信息(收集模板使用的一些变量信息,这里分别是basicAttrs、contentItems两个变量)。而方法doLoadChildren是收集子节点的信息,这些子节点也是一个个IDocElement。 doLoadContentItems方法,这个方法通过IDocContentItem的实现类的getData()方法提供开发文档中需要显示的表格信息。 扩展点: 文档生成框架的扩展点有十几个,这里只说明几个主要的扩展点 com.primeton.studio.doc.core.fileDocModelFactory 通过注册的IFileDocModelFactory子类获取新增的文件级别节点对应的文档模型。 com.primeton.studio.doc.core.folderDocModelFactory 通过注册的IFolderDocModelFactory子类获取新增的容器级别节点对应的文档模型。 com.primeton.studio.doc.template.templateExcuter 这个扩展点用来指定每个文档模型对应的模板执行器,及要执行的模板之间的对应关系。 新增一种文档模型需要实现上面三个扩展点。第1和第2个扩展点一般是在父文档模型的doLoadChildren方法中进行调用,如果没有实现这两个扩展点,就需要修改父文档模型的doLoadChildren方法。 改进文档树结构 原来文档树结构是写死的,只有固定的几个层次。如果调整资源树结构导致层次增加超过原来的树结构的最大层次时,会无法展现。 原有树结构展开或折叠的标志,不明确。除了前面两层固定展开外,其它节点即使没有子节点也显示成折叠标志 修改后project_fram.vm的主要代码如下: body class=bookmarks#foreach($child in ${data.getChilds()})divpre class=bookma body class=bookmarks#foreach($child in ${data.getChilds()})divpre class=bookmarksimg src=images/Lminus.png width=19 height=16 alt=x onclick=javascript:toggle(this); /img src=images/file.png width=16 height=16 alt=x style=margin-left:2px;margin-right:2px; ondblclick=javascript:toggle(this); /a class=bookmarks href=${child.getLink()} target=frame ondblclick=javascript:toggle(this);${child.getName()}/a/pre#set($iParent = $child)#parse(templates/velocity/common/projectTree_base.vm)/div#end 其中projectTree_i.vm(用于显示树上多少个I的图片)代码如下: #if($iCount 0)img src=images/I.png width=19 hei

文档评论(0)

1亿VIP精品文档

相关文档