2009年8月12日星期三

CMSEntity之八,内容描述文件的获取和初步处理

BSG获取内容描述文件并做初步处理,是在ContentFetcherJob中完成的,真正干活的是类ContentAdaptor,它用 ContentParser去解析内容描述文件,解析后的结果是ContentsDescVO,这个类不知道有什么意义,其实里面就只有 List,ContentVO和内容描述文件里面的tag可以说是一一对应的。然后ContentAdaptor调用 ItemSubmissionConverter.fromXMLVO将前面得到的ContentsDescVO转换为 List。比较令人关注的是在内容描述文件中,“languagesSupported”这个标签的处理,支 持的语言,这个信息的处理流程如下:

ItemBREWPropertyTypeVO.getLanguagesSupported()
ISMPItemLanguagesVO.setIsmpLanguageId()
ISMPItemVO.setItemLanguageVOList()
ContentItemVO.setItemVOList()

语言信息最终保存到了ISMPItemVO中,而ISMPItemVO又被包含在ContentItemVO。至于为什么要做ContentsDescVO到List的转换,目前还不知道动机和目的。

回 到ContentAdaptor,fromXMLVO完后,ContentAdaptor继续调用saveContentItemInfo将 ContentItemVO信息保存到数据库中,这里主要操作的是数据库中的表:ISMP_CONTENT table 和 ISMP_ITEM table。然后ContentAdaptor调用fetchZipFile去获得内容实体问题,在6号的博客里提到了内容实体文件是zip文件,内容实 体文件的地址保存在内容描述文件中。

最后还有个很重要的步骤,ContentAdaptor调用updateBatchStatus去更新前面处理的item的状态,将其置为saved。后面的操作都是基于item和content状态的。

BatchStatusVO 里面的内容不知道有什么作用,但是后面很大地方要用到它,一个比较关键的问题是前面提到的ContentItemVO与BatchStatusVO是如何 建立联系的,在ContentItemVO中有一个成员batchId,这个id在ContentItemVO和BatchStatusVO中都有保存, 所以可以通过这个id找到对方。这个过程可以参看ContentHandler的方法getContentByBatchID。

没有评论:

发表评论