Example #1
0
  /**
   * 获取此产品所有应用的更新日志<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;
  }
Example #2
0
  /**
   * 返回当前软件产品最新版本<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不正确");
  }
Example #3
0
  /** 执行升级操作 */
  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 + "]");
    }
  }