获取内容描述文件并对其进行初步分析后,ContentProcessorJob会调用ContentHandler类的方法做进一步处理。方法invokeProcess是入口,invokeProcess首先就调用getSuitableBatch去获得合适的batch,所谓合适的 batch,就是在上篇博客中提到的,处理完所有的item后,要将其状态更新,置为saved,以便于后面的操作。所以 getSuitableBatch就是将这些状态为saved的项取出来。
getSuitableBatch得到的是 List
commonStorageHandling返回到invokeProcess,invokeProcess根据返回值,如果为真,它调用方法processBatchNotify。
processBatchNotify也是首先用getContentByBatchID获得List
processContent是根据OPFLAG进行操作的,有三种OPFLAG:OPFLAG_ADD,OPFLAG_MODIFY和OPFLAG_DELETE。
先看OPFLAG_ADD的情况:
1. 查询数据库,用方法checkContentItemExists,这个方法的功能是“This is to check content is exist with current content id and partNo in BSG”。也就是查找在当前数据库中是否已经存在该内容。注意这里使用的参数是content ID,manufacturer partner no和content no,前面两个很好理解,最后一个content number不知道是什么。根据这三个来判断该内容在当前库中是否存在。如果存在,进入2.x,否则进入3.x。
2.1 调用方法checkItemExistsForTheContent,这个方法的功能是:“This is to check content is exist with current content id and partNo in BSG”。这个解释让人迷惑,为什么又去判断content是否存在?所以我判断这里的注释肯定不对,印度兄弟偷懒了,把 checkContentItemExists的注释又拷贝到这里。按checkItemExistsForTheContent这个方法名来判断,不好说这个方法是什么功能,它的返回值如为true,进入2.2,否则进入2.3。
2.2 用方法getItemVOList去获得List
2.2.a 调用方法applyPlatformLanguage,这个方法首先调用ChangeListCreator.getUseableChangeList,现在不知道change list是干啥用的,它返回ChangeListVO,如果不为空,则调用 ItemSubmissionHandler.addOprItemPlatform方法,这个方法很长,这里先不细谈,它的功能是把该item的平台信息(支持的手机类型)保存。
2.2.b 调用方法processAsUpgradeItem,将该item作为新的item上传给BMC。这是通过ItemSubmissionHandler.processItem方法实现的。
2.3 用方法getItemVOList去获得List
3.1 当前的content不存在,首先调用checkContentExists,这个方法的功能是“This method checks whether content exists or not”。这里让人很迷惑,前面不是已经用checkContentItemExists检查过content是否存在了吗,为什么又检查一次?如果返回true,就调用markedForDelete,这个方法“This method is used for delete handling when only contentId exists”。
3.2 用getItemVOList得到List
3.3.a 用方法setProcStatCodeID将item的状态置为ITEM_STATUS_FAILED,表示item已存在,然后调用updateItemStatusNLoc更新状态。
3.3.b 调用ItemSubmissionHandler.processItem方法将其作为新的item提交到BMC。
OPFLAG_MODIFY的处理:
1. 调用modifyHandling方法,用方法getItemVOList去获得List
2.1.a 用ChangeListCreator.getUseableChangeList()去获取change list,如果成功,用addOprItemPlatform把该item的平台信息(支持的手机类型)保存。
2.2.b 用setProcStatCodeID将item的状态置为ITEM_STATUS_FAILED
OPFLAG_DELETE的处理:
1. 调用modifyHandling方法,用方法getItemVOList去获得List
processContent返回到processBatchNotify,processBatchNotify调用setProcStatCodeID设置BatchStatusVO的状态。
没有评论:
发表评论