public static Page createPage(
      ObjectFactory objectFactory,
      URI baseUri,
      URI self,
      Document doc,
      boolean useVersion,
      XWiki xwikiApi,
      Boolean withPrettyNames)
      throws XWikiException {
    Page page = objectFactory.createPage();
    fillPageSummary(page, objectFactory, baseUri, doc, useVersion, xwikiApi, withPrettyNames);

    page.setMajorVersion(doc.getRCSVersion().at(0));
    page.setMinorVersion(doc.getRCSVersion().at(1));
    page.setLanguage(doc.getLanguage());
    page.setCreator(doc.getCreator());
    if (withPrettyNames) {
      page.setCreatorName(xwikiApi.getUserName(doc.getCreator(), false));
    }

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(doc.getCreationDate());
    page.setCreated(calendar);

    page.setModifier(doc.getContentAuthor());
    if (withPrettyNames) {
      page.setModifierName(xwikiApi.getUserName(doc.getContentAuthor(), false));
    }

    calendar = Calendar.getInstance();
    calendar.setTime(doc.getContentUpdateDate());
    page.setModified(calendar);

    page.setComment(doc.getComment());
    page.setContent(doc.getContent());

    if (self != null) {
      Link pageLink = objectFactory.createLink();
      pageLink.setHref(self.toString());
      pageLink.setRel(Relations.SELF);
      page.getLinks().add(pageLink);
    }

    com.xpn.xwiki.api.Class xwikiClass = doc.getxWikiClass();
    if (xwikiClass != null) {
      String classUri = uri(baseUri, ClassResource.class, doc.getWiki(), xwikiClass.getName());
      Link classLink = objectFactory.createLink();
      classLink.setHref(classUri);
      classLink.setRel(Relations.CLASS);
      page.getLinks().add(classLink);
    }

    return page;
  }