private List parseContentsFromXML(String qualifyerXML) {
    List contents = new ArrayList();

    try {
      Document document = new DOMBuilder().getDocument(qualifyerXML);

      String entity = document.getRootElement().attributeValue("entity");

      Map addedContents = new HashMap();

      List children = document.getRootElement().elements();
      Iterator i = children.iterator();
      while (i.hasNext()) {
        Element child = (Element) i.next();
        String id = child.getStringValue();
        String path = child.attributeValue("path");

        if (!addedContents.containsKey(id)) {
          ContentVO contentVO =
              ContentController.getContentController().getContentVOWithId(new Integer(id));
          contents.add(contentVO);
          addedContents.put(id, contentVO);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    return contents;
  }
예제 #2
0
 private ContentVO getContent() throws JspTagException {
   ContentVO content;
   try {
     content = ContentController.getContentController().getContentVOWithId(contentId);
   } catch (Exception e) {
     e.printStackTrace();
     throw new JspTagException(e.getMessage());
   }
   return content;
 }
  public String doInputV3() throws Exception {
    this.repositories =
        RepositoryController.getController()
            .getAuthorizedRepositoryVOList(this.getInfoGluePrincipal(), false);

    if (this.qualifyerXML != null && !this.qualifyerXML.equals("")) {
      this.qualifyers = parseContentsFromXML(this.qualifyerXML);
    } else {
      ContentVO contentVO =
          ContentController.getContentController().getContentVOWithId(getContentId());
      this.qualifyers.add(contentVO);
    }

    return "inputV3";
  }
  public String doExecute() throws Exception {
    if (this.newParentContentId == null) {
      this.repositories =
          RepositoryController.getController()
              .getAuthorizedRepositoryVOList(this.getInfoGluePrincipal(), false);
      return "chooseDestination";
    }

    ceb.throwIfNotEmpty();

    try {
      if (this.qualifyerXML != null && this.qualifyerXML.length() != 0) {
        Document document = new DOMBuilder().getDocument(this.qualifyerXML);
        List contents = parseContentsFromXML(this.qualifyerXML);
        Iterator i = contents.iterator();
        while (i.hasNext()) {
          ContentVO contentVO = (ContentVO) i.next();
          try {
            ContentControllerProxy.getController()
                .acMoveContent(this.getInfoGluePrincipal(), contentVO, this.newParentContentId);
          } catch (Exception e) {
            this.errorsOccurred = true;
          }
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    this.topContentId =
        ContentController.getContentController()
            .getRootContentVO(this.repositoryId, this.getInfoGluePrincipal().getName())
            .getContentId();

    this.returnAddress =
        "ViewContent.action?contentId="
            + this.contentVO.getId()
            + "&repositoryId="
            + this.repositoryId;

    return "success";
  }
  /**
   * This method simulates a call to a page so all castor caches fills up before we throw the old
   * page cache.
   *
   * @param db
   * @param siteNodeId
   * @param languageId
   * @param contentId
   */
  public void recache(DatabaseWrapper dbWrapper, Integer siteNodeId)
      throws SystemException, Exception {
    logger.info("recache starting..");

    HttpHelper helper = new HttpHelper();
    String recacheUrl =
        CmsPropertyHandler.getRecacheUrl()
            + "?siteNodeId="
            + siteNodeId
            + "&refresh=true&isRecacheCall=true";
    String response = helper.getUrlContent(recacheUrl, 30000);

    String recacheBaseUrl = CmsPropertyHandler.getRecacheUrl().replaceAll("/ViewPage.action", "");
    String pathsToRecacheOnPublishing = CmsPropertyHandler.getPathsToRecacheOnPublishing();
    if (pathsToRecacheOnPublishing.indexOf("pathsToRecacheOnPublishing") == -1) {
      String[] pathsToRecacheOnPublishingArray = pathsToRecacheOnPublishing.split(",");
      for (int i = 0; i < pathsToRecacheOnPublishingArray.length; i++) {
        recacheUrl =
            recacheBaseUrl
                + pathsToRecacheOnPublishingArray[i]
                + "?refresh=true&isRecacheCall=true";
        logger.info("calling recacheUrl:" + recacheUrl);
      }
    }

    LanguageVO masterLanguageVO =
        LanguageDeliveryController.getLanguageDeliveryController()
            .getMasterLanguageForSiteNode(dbWrapper.getDatabase(), siteNodeId);
    if (masterLanguageVO == null)
      throw new SystemException("There was no master language for the siteNode " + siteNodeId);

    Integer languageId = masterLanguageVO.getLanguageId();
    if (languageId == null) languageId = masterLanguageVO.getLanguageId();

    Integer contentId = new Integer(-1);

    Principal principal = (Principal) CacheController.getCachedObject("userCache", "anonymous");
    if (principal == null) {
      Map arguments = new HashMap();
      arguments.put("j_username", CmsPropertyHandler.getAnonymousUser());
      arguments.put("j_password", CmsPropertyHandler.getAnonymousPassword());

      principal =
          ExtranetController.getController()
              .getAuthenticatedPrincipal(dbWrapper.getDatabase(), arguments);

      if (principal != null) CacheController.cacheObject("userCache", "anonymous", principal);
    }

    FakeHttpSession fakeHttpServletSession = new FakeHttpSession();
    FakeHttpServletResponse fakeHttpServletResponse = new FakeHttpServletResponse();
    FakeHttpServletRequest fakeHttpServletRequest = new FakeHttpServletRequest();
    fakeHttpServletRequest.setParameter("siteNodeId", "" + siteNodeId);
    fakeHttpServletRequest.setParameter("languageId", "" + languageId);
    fakeHttpServletRequest.setParameter("contentId", "" + contentId);
    fakeHttpServletRequest.setRequestURI("ViewPage.action");

    fakeHttpServletRequest.setAttribute("siteNodeId", "" + siteNodeId);
    fakeHttpServletRequest.setAttribute("languageId", "" + languageId);
    fakeHttpServletRequest.setAttribute("contentId", "" + contentId);

    fakeHttpServletRequest.setServletContext(DeliverContextListener.getServletContext());

    BrowserBean browserBean = new BrowserBean();
    // this.browserBean.setRequest(getRequest());

    NodeDeliveryController nodeDeliveryController =
        NodeDeliveryController.getNodeDeliveryController(siteNodeId, languageId, contentId);
    IntegrationDeliveryController integrationDeliveryController =
        IntegrationDeliveryController.getIntegrationDeliveryController(
            siteNodeId, languageId, contentId);
    TemplateController templateController =
        getTemplateController(
            dbWrapper,
            siteNodeId,
            languageId,
            contentId,
            new FakeHttpServletRequest(),
            (InfoGluePrincipal) principal,
            false,
            browserBean,
            nodeDeliveryController,
            integrationDeliveryController);

    DeliveryContext deliveryContext =
        DeliveryContext.getDeliveryContext(/*(InfoGluePrincipal)this.principal*/ );
    // deliveryContext.setRepositoryName(repositoryName);
    deliveryContext.setSiteNodeId(siteNodeId);
    deliveryContext.setContentId(contentId);
    deliveryContext.setLanguageId(languageId);
    deliveryContext.setPageKey("" + System.currentTimeMillis());
    // deliveryContext.setSession(new Session(fakeHttpServletSession));
    // deliveryContext.setInfoGlueAbstractAction(null);
    deliveryContext.setHttpServletRequest(fakeHttpServletRequest);
    deliveryContext.setHttpServletResponse(fakeHttpServletResponse);

    templateController.setDeliveryContext(deliveryContext);

    // We don't want a page cache entry to be created
    deliveryContext.setDisablePageCache(true);

    SiteNodeVO siteNodeVO = templateController.getSiteNode(siteNodeId);
    SiteNodeVO rootSiteNodeVO =
        templateController.getRepositoryRootSiteNode(siteNodeVO.getRepositoryId());

    recurseSiteNodeTree(
        rootSiteNodeVO.getId(), languageId, templateController, principal /*, dbWrapper*/, 1, 0);

    List templates =
        ContentController.getContentController()
            .getContentVOWithContentTypeDefinition("HTMLTemplate", dbWrapper.getDatabase());
    Iterator templatesIterator = templates.iterator();
    {
      ContentVO template = (ContentVO) templatesIterator.next();

      String templateString =
          templateController.getContentAttribute(template.getId(), languageId, "Template", true);
    }

    RepositoryVO repository =
        RepositoryDeliveryController.getRepositoryDeliveryController()
            .getMasterRepository(dbWrapper.getDatabase());

    RepositoryDeliveryController.getRepositoryDeliveryController()
        .getRepositoryVOListFromServerName(
            dbWrapper.getDatabase(), "localhost", "8080", repository.getName());

    logger.info("recache stopped..");
  }
  public String doV3() throws Exception {
    userSessionKey = "" + System.currentTimeMillis();

    String moveContentInlineOperationDoneHeader =
        getLocalizedString(
            getLocale(),
            "tool.contenttool.moveContentsInlineOperationDoneHeader",
            contentVO.getName());
    String moveContentInlineOperationBackToCurrentPageLinkText =
        getLocalizedString(
            getLocale(),
            "tool.contenttool.moveContentsInlineOperationBackToCurrentContentLinkText");
    String moveContentInlineOperationBackToCurrentPageTitleText =
        getLocalizedString(
            getLocale(),
            "tool.contenttool.moveContentsInlineOperationBackToCurrentContentTitleText");

    if (parentContentId == null && newParentContentId != null) parentContentId = newParentContentId;

    setActionMessage(userSessionKey, moveContentInlineOperationDoneHeader);
    addActionLink(
        userSessionKey,
        new LinkBean(
            "currentPageUrl",
            moveContentInlineOperationBackToCurrentPageLinkText,
            moveContentInlineOperationBackToCurrentPageTitleText,
            moveContentInlineOperationBackToCurrentPageTitleText,
            this.originalAddress,
            false,
            ""));
    setActionExtraData(userSessionKey, "refreshToolbarAndMenu", "" + true);
    setActionExtraData(userSessionKey, "repositoryId", "" + this.repositoryId);
    setActionExtraData(userSessionKey, "contentId", "" + newParentContentId);
    setActionExtraData(userSessionKey, "unrefreshedContentId", "" + parentContentId);
    setActionExtraData(userSessionKey, "unrefreshedNodeId", "" + parentContentId);
    setActionExtraData(userSessionKey, "changeTypeId", "" + this.changeTypeId);

    if (this.newParentContentId == null) {
      this.repositories =
          RepositoryController.getController()
              .getAuthorizedRepositoryVOList(this.getInfoGluePrincipal(), false);
      return "chooseDestinationV3";
    }

    ceb.throwIfNotEmpty();

    try {
      if (this.qualifyerXML != null && this.qualifyerXML.length() != 0) {
        Document document = new DOMBuilder().getDocument(this.qualifyerXML);
        List contents = parseContentsFromXML(this.qualifyerXML);
        Iterator i = contents.iterator();
        while (i.hasNext()) {
          ContentVO contentVO = (ContentVO) i.next();
          try {
            ContentControllerProxy.getController()
                .acMoveContent(this.getInfoGluePrincipal(), contentVO, this.newParentContentId);
          } catch (Exception e) {
            this.errorsOccurred = true;
          }
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    this.topContentId =
        ContentController.getContentController()
            .getRootContentVO(this.repositoryId, this.getInfoGluePrincipal().getName())
            .getContentId();

    if (this.returnAddress != null && !this.returnAddress.equals("")) {
      String arguments = "userSessionKey=" + userSessionKey + "&isAutomaticRedirect=false";
      String messageUrl = returnAddress + (returnAddress.indexOf("?") > -1 ? "&" : "?") + arguments;

      this.getResponse().sendRedirect(messageUrl);
      return NONE;
    } else {
      return "successV3";
    }
  }