Example usage for com.liferay.portal.kernel.workflow WorkflowConstants STATUS_DRAFT

List of usage examples for com.liferay.portal.kernel.workflow WorkflowConstants STATUS_DRAFT

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.workflow WorkflowConstants STATUS_DRAFT.

Prototype

int STATUS_DRAFT

To view the source code for com.liferay.portal.kernel.workflow WorkflowConstants STATUS_DRAFT.

Click Source Link

Usage

From source file:com.liferay.portlet.messageboards.service.impl.MBMessageLocalServiceImpl.java

License:Open Source License

public MBMessage addMessage(long userId, String userName, long groupId, long categoryId, long threadId,
        long parentMessageId, String subject, String body, String format,
        List<ObjectValuePair<String, InputStream>> inputStreamOVPs, boolean anonymous, double priority,
        boolean allowPingbacks, ServiceContext serviceContext) throws PortalException, SystemException {

    // Message/*from w  ww.  j  a  va  2s .  co m*/

    User user = userPersistence.findByPrimaryKey(userId);
    userName = user.isDefaultUser() ? userName : user.getFullName();
    subject = ModelHintsUtil.trimString(MBMessage.class.getName(), "subject", subject);

    PortletPreferences preferences = ServiceContextUtil.getPortletPreferences(serviceContext);

    if (preferences != null) {
        if (!MBUtil.isAllowAnonymousPosting(preferences)) {
            if (anonymous || user.isDefaultUser()) {
                throw new PrincipalException();
            }
        }
    }

    if (user.isDefaultUser()) {
        anonymous = true;
    }

    Date now = new Date();

    long messageId = counterLocalService.increment();

    body = SanitizerUtil.sanitize(user.getCompanyId(), groupId, userId, MBMessage.class.getName(), messageId,
            "text/" + format, body);

    validate(subject, body);

    subject = getSubject(subject, body);
    body = getBody(subject, body);

    MBMessage message = mbMessagePersistence.create(messageId);

    message.setUuid(serviceContext.getUuid());
    message.setGroupId(groupId);
    message.setCompanyId(user.getCompanyId());
    message.setUserId(user.getUserId());
    message.setUserName(userName);
    message.setCreateDate(serviceContext.getCreateDate(now));
    message.setModifiedDate(serviceContext.getModifiedDate(now));

    if (threadId > 0) {
        message.setThreadId(threadId);
    }

    if (priority != MBThreadConstants.PRIORITY_NOT_GIVEN) {
        message.setPriority(priority);
    }

    message.setAllowPingbacks(allowPingbacks);
    message.setStatus(WorkflowConstants.STATUS_DRAFT);
    message.setStatusByUserId(user.getUserId());
    message.setStatusByUserName(userName);
    message.setStatusDate(serviceContext.getModifiedDate(now));

    // Thread

    if (parentMessageId != MBMessageConstants.DEFAULT_PARENT_MESSAGE_ID) {
        MBMessage parentMessage = mbMessagePersistence.fetchByPrimaryKey(parentMessageId);

        if (parentMessage == null) {
            parentMessageId = MBMessageConstants.DEFAULT_PARENT_MESSAGE_ID;
        }
    }

    MBThread thread = null;

    if (threadId > 0) {
        thread = mbThreadPersistence.fetchByPrimaryKey(threadId);
    }

    if ((thread == null) || (parentMessageId == MBMessageConstants.DEFAULT_PARENT_MESSAGE_ID)) {

        thread = mbThreadLocalService.addThread(categoryId, message);
    }

    if ((priority != MBThreadConstants.PRIORITY_NOT_GIVEN) && (thread.getPriority() != priority)) {

        thread.setPriority(priority);

        mbThreadPersistence.update(thread, false);

        updatePriorities(thread.getThreadId(), priority);
    }

    // Message

    message.setCategoryId(categoryId);
    message.setThreadId(thread.getThreadId());
    message.setRootMessageId(thread.getRootMessageId());
    message.setParentMessageId(parentMessageId);
    message.setSubject(subject);
    message.setBody(body);
    message.setFormat(format);
    message.setAttachments(!inputStreamOVPs.isEmpty());
    message.setAnonymous(anonymous);

    if (message.isDiscussion()) {
        long classNameId = PortalUtil.getClassNameId((String) serviceContext.getAttribute("className"));
        long classPK = GetterUtil.getLong((String) serviceContext.getAttribute("classPK"));

        message.setClassNameId(classNameId);
        message.setClassPK(classPK);
    }

    mbMessagePersistence.update(message, false);

    // Attachments

    if (!inputStreamOVPs.isEmpty()) {
        long companyId = message.getCompanyId();
        long repositoryId = CompanyConstants.SYSTEM;
        String dirName = message.getAttachmentsDir();

        try {
            DLStoreUtil.deleteDirectory(companyId, repositoryId, dirName);
        } catch (NoSuchDirectoryException nsde) {
            if (_log.isDebugEnabled()) {
                _log.debug(nsde.getMessage());
            }
        }

        DLStoreUtil.addDirectory(companyId, repositoryId, dirName);

        for (int i = 0; i < inputStreamOVPs.size(); i++) {
            ObjectValuePair<String, InputStream> inputStreamOVP = inputStreamOVPs.get(i);

            String fileName = inputStreamOVP.getKey();
            InputStream inputStream = inputStreamOVP.getValue();

            try {
                DLStoreUtil.addFile(companyId, repositoryId, dirName + "/" + fileName, inputStream);
            } catch (DuplicateFileException dfe) {
                if (_log.isDebugEnabled()) {
                    _log.debug(dfe.getMessage());
                }
            }
        }
    }

    // Resources

    if (!message.isDiscussion()) {
        if (user.isDefaultUser()) {
            addMessageResources(message, true, true);
        } else if (serviceContext.isAddGroupPermissions() || serviceContext.isAddGuestPermissions()) {

            addMessageResources(message, serviceContext.isAddGroupPermissions(),
                    serviceContext.isAddGuestPermissions());
        } else {
            addMessageResources(message, serviceContext.getGroupPermissions(),
                    serviceContext.getGuestPermissions());
        }
    }

    // Asset

    updateAsset(userId, message, serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(),
            serviceContext.getAssetLinkEntryIds(), serviceContext.isAssetEntryVisible());

    // Expando

    ExpandoBridge expandoBridge = message.getExpandoBridge();

    expandoBridge.setAttributes(serviceContext);

    // Workflow

    WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(), groupId, userId,
            message.getWorkflowClassName(), message.getMessageId(), message, serviceContext);

    // Testing roll back

    /*if (true) {
       throw new SystemException("Testing roll back");
    }*/

    return message;
}

From source file:com.liferay.portlet.messageboards.service.impl.MBMessageLocalServiceImpl.java

License:Open Source License

public MBMessage updateMessage(long userId, long messageId, String subject, String body,
        List<ObjectValuePair<String, InputStream>> inputStreamOVPs, List<String> existingFiles, double priority,
        boolean allowPingbacks, ServiceContext serviceContext) throws PortalException, SystemException {

    // Message//from   ww w .j a  v  a  2s  . c o m

    MBMessage message = mbMessagePersistence.findByPrimaryKey(messageId);

    subject = ModelHintsUtil.trimString(MBMessage.class.getName(), "subject", subject);
    body = SanitizerUtil.sanitize(message.getCompanyId(), message.getGroupId(), userId,
            MBMessage.class.getName(), messageId, "text/" + message.getFormat(), body);
    Date now = new Date();

    validate(subject, body);

    subject = getSubject(subject, body);
    body = getBody(subject, body);

    message.setModifiedDate(serviceContext.getModifiedDate(now));
    message.setSubject(subject);
    message.setBody(body);
    message.setAttachments(!inputStreamOVPs.isEmpty() || !existingFiles.isEmpty());
    message.setAllowPingbacks(allowPingbacks);

    if (priority != MBThreadConstants.PRIORITY_NOT_GIVEN) {
        message.setPriority(priority);
    }

    if (!message.isPending() && (serviceContext.getWorkflowAction() == WorkflowConstants.ACTION_SAVE_DRAFT)) {

        message.setStatus(WorkflowConstants.STATUS_DRAFT);
    }

    // Attachments

    long companyId = message.getCompanyId();
    long repositoryId = CompanyConstants.SYSTEM;
    String dirName = message.getAttachmentsDir();

    if (!inputStreamOVPs.isEmpty() || !existingFiles.isEmpty()) {
        try {
            DLStoreUtil.addDirectory(companyId, repositoryId, dirName);
        } catch (DuplicateDirectoryException dde) {
        }

        String[] fileNames = DLStoreUtil.getFileNames(companyId, repositoryId, dirName);

        for (String fileName : fileNames) {
            if (!existingFiles.contains(fileName)) {
                DLStoreUtil.deleteFile(companyId, repositoryId, fileName);
            }
        }

        for (int i = 0; i < inputStreamOVPs.size(); i++) {
            ObjectValuePair<String, InputStream> inputStreamOVP = inputStreamOVPs.get(i);

            String fileName = inputStreamOVP.getKey();
            InputStream inputStream = inputStreamOVP.getValue();

            try {
                DLStoreUtil.addFile(companyId, repositoryId, dirName + "/" + fileName, inputStream);
            } catch (DuplicateFileException dfe) {
            }
        }
    } else {
        try {
            DLStoreUtil.deleteDirectory(companyId, repositoryId, dirName);
        } catch (NoSuchDirectoryException nsde) {
        }
    }

    mbMessagePersistence.update(message, false);

    // Thread

    MBThread thread = mbThreadPersistence.findByPrimaryKey(message.getThreadId());

    if ((priority != MBThreadConstants.PRIORITY_NOT_GIVEN) && (thread.getPriority() != priority)) {

        thread.setPriority(priority);

        mbThreadPersistence.update(thread, false);

        updatePriorities(thread.getThreadId(), priority);
    }

    // Asset

    updateAsset(userId, message, serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(),
            serviceContext.getAssetLinkEntryIds());

    // Expando

    ExpandoBridge expandoBridge = message.getExpandoBridge();

    expandoBridge.setAttributes(serviceContext);

    // Workflow

    serviceContext.setAttribute("update", Boolean.TRUE.toString());

    WorkflowHandlerRegistryUtil.startWorkflowInstance(companyId, message.getGroupId(), userId,
            message.getWorkflowClassName(), message.getMessageId(), message, serviceContext);

    return message;
}

From source file:com.liferay.portlet.messageboards.service.impl.MBMessageServiceImpl.java

License:Open Source License

public MBMessage addMessage(long groupId, long categoryId, long threadId, long parentMessageId, String subject,
        String body, String format, List<ObjectValuePair<String, InputStream>> inputStreamOVPs,
        boolean anonymous, double priority, boolean allowPingbacks, ServiceContext serviceContext)
        throws PortalException, SystemException {

    checkReplyToPermission(groupId, categoryId, parentMessageId);

    if (lockLocalService.isLocked(MBThread.class.getName(), threadId)) {
        throw new LockedThreadException();
    }//from w  w  w  . j  a  va 2s.com

    if (!MBCategoryPermission.contains(getPermissionChecker(), groupId, categoryId, ActionKeys.ADD_FILE)) {

        inputStreamOVPs = Collections.emptyList();
    }

    boolean preview = GetterUtil.getBoolean(serviceContext.getAttribute("preview"));

    int workFlowAction = serviceContext.getWorkflowAction();

    if ((workFlowAction == WorkflowConstants.STATUS_DRAFT) && !preview) {
        MBMessagePermission.check(getPermissionChecker(), parentMessageId, ActionKeys.UPDATE);
    }

    if (!MBCategoryPermission.contains(getPermissionChecker(), groupId, categoryId,
            ActionKeys.UPDATE_THREAD_PRIORITY)) {

        priority = MBThreadConstants.PRIORITY_NOT_GIVEN;
    }

    return mbMessageLocalService.addMessage(getGuestOrUserId(), null, groupId, categoryId, threadId,
            parentMessageId, subject, body, format, inputStreamOVPs, anonymous, priority, allowPingbacks,
            serviceContext);
}

From source file:com.liferay.portlet.wiki.service.impl.WikiPageLocalServiceImpl.java

License:Open Source License

public WikiPage addPage(long userId, long nodeId, String title, double version, String content, String summary,
        boolean minorEdit, String format, boolean head, String parentTitle, String redirectTitle,
        ServiceContext serviceContext) throws PortalException, SystemException {

    // Page//from  w w  w.  j  ava  2  s .  c  om

    User user = userPersistence.findByPrimaryKey(userId);
    WikiNode node = wikiNodePersistence.findByPrimaryKey(nodeId);
    Date now = new Date();

    long pageId = counterLocalService.increment();

    content = SanitizerUtil.sanitize(user.getCompanyId(), node.getGroupId(), userId, WikiPage.class.getName(),
            pageId, "text/" + format, content);

    validate(title, nodeId, content, format);

    long resourcePrimKey = wikiPageResourceLocalService.getPageResourcePrimKey(nodeId, title);

    WikiPage page = wikiPagePersistence.create(pageId);

    page.setUuid(serviceContext.getUuid());
    page.setResourcePrimKey(resourcePrimKey);
    page.setGroupId(node.getGroupId());
    page.setCompanyId(user.getCompanyId());
    page.setUserId(user.getUserId());
    page.setUserName(user.getFullName());
    page.setCreateDate(serviceContext.getCreateDate(now));
    page.setModifiedDate(serviceContext.getModifiedDate(now));
    page.setNodeId(nodeId);
    page.setTitle(title);
    page.setVersion(version);
    page.setMinorEdit(minorEdit);
    page.setContent(content);
    page.setStatus(WorkflowConstants.STATUS_DRAFT);
    page.setSummary(summary);
    page.setFormat(format);
    page.setHead(head);
    page.setParentTitle(parentTitle);
    page.setRedirectTitle(redirectTitle);

    wikiPagePersistence.update(page, false);

    // Resources

    if (serviceContext.isAddGroupPermissions() || serviceContext.isAddGuestPermissions()) {

        addPageResources(page, serviceContext.isAddGroupPermissions(), serviceContext.isAddGuestPermissions());
    } else {
        addPageResources(page, serviceContext.getGroupPermissions(), serviceContext.getGuestPermissions());
    }

    // Node

    node.setLastPostDate(serviceContext.getModifiedDate(now));

    wikiNodePersistence.update(node, false);

    // Asset

    updateAsset(userId, page, serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(),
            serviceContext.getAssetLinkEntryIds());

    // Expando

    ExpandoBridge expandoBridge = page.getExpandoBridge();

    expandoBridge.setAttributes(serviceContext);

    // Message boards

    if (PropsValues.WIKI_PAGE_COMMENTS_ENABLED) {
        mbMessageLocalService.addDiscussionMessage(userId, page.getUserName(), page.getGroupId(),
                WikiPage.class.getName(), resourcePrimKey, WorkflowConstants.ACTION_PUBLISH);
    }

    // Workflow

    WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(), page.getGroupId(), userId,
            WikiPage.class.getName(), page.getPageId(), page, serviceContext);

    return page;
}

From source file:com.liferay.portlet.wiki.service.impl.WikiPageLocalServiceImpl.java

License:Open Source License

public WikiPage getDraftPage(long nodeId, String title) throws PortalException, SystemException {

    List<WikiPage> pages = wikiPagePersistence.findByN_T_S(nodeId, title, WorkflowConstants.STATUS_DRAFT, 0, 1);

    if (!pages.isEmpty()) {
        return pages.get(0);
    } else {/* w  ww  .  ja v a 2s .  co  m*/
        pages = wikiPagePersistence.findByN_T_S(nodeId, title, WorkflowConstants.STATUS_PENDING, 0, 1);

        if (!pages.isEmpty()) {
            return pages.get(0);
        } else {
            throw new NoSuchPageException();
        }
    }

}

From source file:com.liferay.portlet.wiki.service.impl.WikiPageLocalServiceImpl.java

License:Open Source License

public boolean hasDraftPage(long nodeId, String title) throws SystemException {

    int count = wikiPagePersistence.countByN_T_S(nodeId, title, WorkflowConstants.STATUS_DRAFT);

    if (count > 0) {
        return true;
    } else {/*from w  ww  . j  a v a 2 s.  c  om*/
        return false;
    }
}

From source file:com.liferay.portlet.wiki.service.impl.WikiPageLocalServiceImpl.java

License:Open Source License

public WikiPage updatePage(long userId, long nodeId, String title, double version, String content,
        String summary, boolean minorEdit, String format, String parentTitle, String redirectTitle,
        ServiceContext serviceContext) throws PortalException, SystemException {

    // Page//from w  w w. j a v a2 s. com

    User user = userPersistence.findByPrimaryKey(userId);
    Date now = new Date();

    WikiPage oldPage = null;

    try {
        oldPage = wikiPagePersistence.findByN_T_First(nodeId, title, null);
    } catch (NoSuchPageException nspe) {
        return addPage(userId, nodeId, title, WikiPageConstants.VERSION_DEFAULT, content, summary, minorEdit,
                format, true, parentTitle, redirectTitle, serviceContext);
    }

    long pageId = 0;

    if (oldPage.isApproved()) {
        pageId = counterLocalService.increment();
    } else {
        pageId = oldPage.getPageId();
    }

    content = SanitizerUtil.sanitize(user.getCompanyId(), oldPage.getGroupId(), userId,
            WikiPage.class.getName(), pageId, "text/" + format, content);

    validate(nodeId, content, format);

    double oldVersion = oldPage.getVersion();

    if ((version > 0) && (version != oldVersion)) {
        throw new PageVersionException();
    }

    long resourcePrimKey = wikiPageResourceLocalService.getPageResourcePrimKey(nodeId, title);
    long groupId = oldPage.getGroupId();

    WikiPage page = oldPage;

    double newVersion = oldVersion;

    if (oldPage.isApproved()) {
        newVersion = MathUtil.format(oldVersion + 0.1, 1, 1);

        page = wikiPagePersistence.create(pageId);
    }

    page.setResourcePrimKey(resourcePrimKey);
    page.setGroupId(groupId);
    page.setCompanyId(user.getCompanyId());
    page.setUserId(user.getUserId());
    page.setUserName(user.getFullName());
    page.setCreateDate(serviceContext.getModifiedDate(now));
    page.setModifiedDate(serviceContext.getModifiedDate(now));
    page.setNodeId(nodeId);
    page.setTitle(title);
    page.setVersion(newVersion);
    page.setMinorEdit(minorEdit);
    page.setContent(content);

    if (oldPage.isPending()) {
        page.setStatus(oldPage.getStatus());
    } else {
        page.setStatus(WorkflowConstants.STATUS_DRAFT);
    }

    page.setSummary(summary);
    page.setFormat(format);

    if (Validator.isNotNull(parentTitle)) {
        page.setParentTitle(parentTitle);
    }

    if (Validator.isNotNull(redirectTitle)) {
        page.setRedirectTitle(redirectTitle);
    }

    wikiPagePersistence.update(page, false);

    // Expando

    ExpandoBridge expandoBridge = page.getExpandoBridge();

    expandoBridge.setAttributes(serviceContext);

    // Node

    WikiNode node = wikiNodePersistence.findByPrimaryKey(nodeId);

    node.setLastPostDate(serviceContext.getModifiedDate(now));

    wikiNodePersistence.update(node, false);

    // Asset

    updateAsset(userId, page, serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(),
            serviceContext.getAssetLinkEntryIds());

    // Workflow

    WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(), page.getGroupId(), userId,
            WikiPage.class.getName(), page.getPageId(), page, serviceContext);

    return page;
}

From source file:com.liferay.portlet.workflowinstances.action.EditWorkflowInstanceAction.java

License:Open Source License

protected void deleteInstance(ActionRequest actionRequest) throws Exception {

    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    long workflowInstanceId = ParamUtil.getLong(actionRequest, "workflowInstanceId");

    WorkflowInstance workflowInstance = WorkflowInstanceManagerUtil
            .getWorkflowInstance(themeDisplay.getCompanyId(), workflowInstanceId);

    Map<String, Serializable> workflowContext = workflowInstance.getWorkflowContext();

    long companyId = GetterUtil.getLong(workflowContext.get(WorkflowConstants.CONTEXT_COMPANY_ID));
    long groupId = GetterUtil.getLong(workflowContext.get(WorkflowConstants.CONTEXT_GROUP_ID));
    String className = GetterUtil.getString(workflowContext.get(WorkflowConstants.CONTEXT_ENTRY_CLASS_NAME));
    long classPK = GetterUtil.getLong(workflowContext.get(WorkflowConstants.CONTEXT_ENTRY_CLASS_PK));

    WorkflowHandler workflowHandler = WorkflowHandlerRegistryUtil.getWorkflowHandler(className);

    workflowHandler.updateStatus(WorkflowConstants.STATUS_DRAFT, workflowContext);

    WorkflowInstanceLinkLocalServiceUtil.deleteWorkflowInstanceLink(companyId, groupId, className, classPK);
}

From source file:com.liferay.wiki.service.impl.WikiPageLocalServiceImpl.java

License:Open Source License

@Override
public WikiPage addPage(long userId, long nodeId, String title, double version, String content, String summary,
        boolean minorEdit, String format, boolean head, String parentTitle, String redirectTitle,
        ServiceContext serviceContext) throws PortalException {

    // Page/*from  w w  w .  j a  v a  2  s. c o m*/

    User user = userPersistence.findByPrimaryKey(userId);
    WikiNode node = wikiNodePersistence.findByPrimaryKey(nodeId);
    Date now = new Date();

    long pageId = counterLocalService.increment();

    content = SanitizerUtil.sanitize(user.getCompanyId(), node.getGroupId(), userId, WikiPage.class.getName(),
            pageId, "text/" + format, content);

    validate(title, nodeId, content, format);

    long resourcePrimKey = wikiPageResourceLocalService.getPageResourcePrimKey(node.getGroupId(), nodeId,
            title);

    WikiPage page = wikiPagePersistence.create(pageId);

    page.setUuid(serviceContext.getUuid());
    page.setResourcePrimKey(resourcePrimKey);
    page.setGroupId(node.getGroupId());
    page.setCompanyId(user.getCompanyId());
    page.setUserId(user.getUserId());
    page.setUserName(user.getFullName());
    page.setNodeId(nodeId);
    page.setTitle(title);
    page.setVersion(version);
    page.setMinorEdit(minorEdit);
    page.setContent(content);
    page.setSummary(summary);
    page.setFormat(format);
    page.setHead(head);
    page.setParentTitle(parentTitle);
    page.setRedirectTitle(redirectTitle);
    page.setStatus(WorkflowConstants.STATUS_DRAFT);
    page.setStatusByUserId(userId);
    page.setStatusDate(serviceContext.getModifiedDate(now));
    page.setExpandoBridgeAttributes(serviceContext);

    wikiPagePersistence.update(page);

    // Resources

    if (serviceContext.isAddGroupPermissions() || serviceContext.isAddGuestPermissions()) {

        addPageResources(page, serviceContext.isAddGroupPermissions(), serviceContext.isAddGuestPermissions());
    } else {
        addPageResources(page, serviceContext.getGroupPermissions(), serviceContext.getGuestPermissions());
    }

    // Node

    node.setLastPostDate(serviceContext.getModifiedDate(now));

    wikiNodePersistence.update(node);

    // Asset

    updateAsset(userId, page, serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(),
            serviceContext.getAssetLinkEntryIds(), serviceContext.getAssetPriority());

    // Message boards

    WikiGroupServiceOverriddenConfiguration wikiGroupServiceOverriddenConfiguration = configurationProvider
            .getConfiguration(WikiGroupServiceOverriddenConfiguration.class,
                    new GroupServiceSettingsLocator(node.getGroupId(), WikiConstants.SERVICE_NAME));

    if (wikiGroupServiceOverriddenConfiguration.pageCommentsEnabled()) {
        CommentManagerUtil.addDiscussion(userId, page.getGroupId(), WikiPage.class.getName(), resourcePrimKey,
                page.getUserName());
    }

    // Workflow

    page = startWorkflowInstance(userId, page, serviceContext);

    return page;
}

From source file:com.liferay.wiki.service.impl.WikiPageLocalServiceImpl.java

License:Open Source License

@Override
public WikiPage getDraftPage(long nodeId, String title) throws PortalException {

    List<WikiPage> pages = wikiPagePersistence.findByN_T_S(nodeId, title, WorkflowConstants.STATUS_DRAFT, 0, 1);

    if (!pages.isEmpty()) {
        return pages.get(0);
    }// w w w.  java  2 s .  c o m

    pages = wikiPagePersistence.findByN_T_S(nodeId, title, WorkflowConstants.STATUS_PENDING, 0, 1);

    if (!pages.isEmpty()) {
        return pages.get(0);
    } else {
        StringBundler sb = new StringBundler(5);

        sb.append("{nodeId=");
        sb.append(nodeId);
        sb.append(", title=");
        sb.append(title);
        sb.append("}");

        throw new NoSuchPageException(sb.toString());
    }
}