/** * 获取此产品所有应用的更新日志<br> * * @return */ private List<UpdateLog> getUpdateLog() { if (this.logger.isDebugEnabled()) { this.logger.debug("获取产品所有应用的更新日志..."); } // 声明要返回的容器 List<UpdateLog> updateLogList = new ArrayList<UpdateLog>(); // 加载升级xml文件 Document document = this.loadUpdateXmlDoc("/version.xml"); // 找到apps结点 Element appsNode = XMLUtil.getChildByTagName(document, "apps"); // 获取此产品的应用 List<EopApp> appList = this.siteManager.getSiteApps(); for (EopApp app : appList) { // 获取每个应用的版本 String verison = app.getVersion(); // 获取远程服务器上version.xml中的此应用节点 Element appNode = XMLUtil.getChildByTagName(appsNode, app.getAppid()); // 获取此应用的所有版本历史的更新日志 UpdateLog updateLog = this.getAppUpdateLog(app.getAppid(), verison, appNode); if (updateLog != null) { updateLogList.add(updateLog); } } if (this.logger.isDebugEnabled()) { this.logger.debug("获取产品所有应用的更新日志完成."); } return updateLogList; }
/** * 返回当前软件产品最新版本<br> * 产品id由EopSetting.PRODUCTID 获取<br> * 然后由服务器version.xml获取此产品的最新版本 * * @return */ private String getNewVersion() { String productid = EopSetting.PRODUCTID; Document document = loadUpdateXmlDoc("/version.xml"); Node productNode = XMLUtil.getChildByTagName(document, "products"); NodeList productList = productNode.getChildNodes(); for (int i = 0; i < productList.getLength(); i++) { Node proNode = productList.item(i); if (proNode.getNodeType() == Node.ELEMENT_NODE) { String proName = proNode.getNodeName(); if (productid.equals(proName)) { return proNode.getTextContent(); } } } throw new RuntimeException("产品ID不正确"); }
/** 执行升级操作 */ public void update() { if (logger.isDebugEnabled()) { logger.debug("执行升级操作..."); } String newVersion = this.getNewVersion(); if (logger.isDebugEnabled()) { logger.debug("产品最新版本为:[" + newVersion + "]"); } // 加载升级xml文件 Document document = this.loadUpdateXmlDoc("/version.xml"); // 找到apps结点 Element appsNode = XMLUtil.getChildByTagName(document, "apps"); // 获取此产品的应用 List<EopApp> appList = this.siteManager.getSiteApps(); for (EopApp app : appList) { // 获取每个应用的版本 String appVersion = app.getVersion(); // 获取远程服务器上version.xml中的此应用节点 Element appNode = XMLUtil.getChildByTagName(appsNode, app.getAppid()); // 此应用的最新版本 String appLastVersion = appNode.getAttribute("lastversion"); if (logger.isDebugEnabled()) { logger.debug( "升级应用[" + app.getAppid() + "],产品中此应用当前版本[" + appVersion + "],最新版本[" + appLastVersion + "]"); } this.update(app.getAppid(), appVersion, appNode); // 记录app以便以后更新 // app.setVersion(appLastVersion); // 更新站点的应用版本 daoSupport.execute( "update eop_app set version=? where appid=?", appLastVersion, app.getAppid()); if (logger.isDebugEnabled()) { logger.debug("升级应用[" + app.getAppid() + "]完成。"); } } // updateProfile(appList); //更新profile.xml this.updateVersion(newVersion); // 更新eop.properties中的version if (logger.isDebugEnabled()) { logger.debug("产品升级完成,当前版本为:[" + EopSetting.VERSION + "]"); } }