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

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

Introduction

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

Prototype

int STATUS_APPROVED

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

Click Source Link

Usage

From source file:com.liferay.dynamic.data.mapping.form.web.internal.portlet.action.ExportFormInstanceMVCResourceCommand.java

License:Open Source License

@Override
protected void doServeResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse)
        throws Exception {

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

    long formInstanceId = ParamUtil.getLong(resourceRequest, "formInstanceId");

    DDMFormInstance formInstance = _formInstanceService.getFormInstance(formInstanceId);

    String fileExtension = ParamUtil.getString(resourceRequest, "fileExtension");

    String fileName = formInstance.getName(themeDisplay.getLocale()) + CharPool.PERIOD + fileExtension;

    DDMFormExporter exporter = _ddmExporterFactory.getDDMFormExporter(fileExtension);

    exporter.setLocale(themeDisplay.getLocale());

    byte[] bytes = exporter.export(formInstanceId, WorkflowConstants.STATUS_APPROVED);

    String contentType = MimeTypesUtil.getContentType(fileName);

    PortletResponseUtil.sendFile(resourceRequest, resourceResponse, fileName, bytes, contentType);
}

From source file:com.liferay.dynamic.data.mapping.internal.search.DDMFormInstanceRecordIndexer.java

License:Open Source License

@Override
public void postProcessContextBooleanFilter(BooleanFilter contextBooleanFilter, SearchContext searchContext)
        throws Exception {

    int status = GetterUtil.getInteger(searchContext.getAttribute(Field.STATUS),
            WorkflowConstants.STATUS_APPROVED);

    if (status != WorkflowConstants.STATUS_ANY) {
        contextBooleanFilter.addRequiredTerm(Field.STATUS, status);
    }/*from www  . ja v a2 s  .c  om*/

    long ddmFormInstanceId = GetterUtil.getLong(searchContext.getAttribute("ddmFormInstanceId"));

    if (ddmFormInstanceId > 0) {
        contextBooleanFilter.addRequiredTerm("ddmFormInstanceId", ddmFormInstanceId);
    }

    addSearchClassTypeIds(contextBooleanFilter, searchContext);

    String ddmStructureFieldName = (String) searchContext.getAttribute("ddmStructureFieldName");
    Serializable ddmStructureFieldValue = searchContext.getAttribute("ddmStructureFieldValue");

    if (Validator.isNotNull(ddmStructureFieldName) && Validator.isNotNull(ddmStructureFieldValue)) {

        QueryFilter queryFilter = ddmIndexer.createFieldValueQueryFilter(ddmStructureFieldName,
                ddmStructureFieldValue, searchContext.getLocale());

        contextBooleanFilter.add(queryFilter, BooleanClauseOccur.MUST);
    }
}

From source file:com.liferay.dynamic.data.mapping.internal.upgrade.v1_0_0.UpgradeDynamicDataMapping.java

License:Open Source License

protected void upgradeStructuresAndAddStructureVersionsAndLayouts() throws Exception {

    StringBundler sb1 = new StringBundler(6);

    sb1.append("insert into DDMStructureVersion (structureVersionId, ");
    sb1.append("groupId, companyId, userId, userName, createDate, ");
    sb1.append("structureId, version, parentStructureId, name, ");
    sb1.append("description, definition, storageType, type_, status, ");
    sb1.append("statusByUserId, statusByUserName, statusDate) values (?, ");
    sb1.append("?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

    StringBundler sb2 = new StringBundler(4);

    sb2.append("insert into DDMStructureLayout (uuid_, ");
    sb2.append("structureLayoutId, groupId, companyId, userId, userName, ");
    sb2.append("createDate, modifiedDate, structureVersionId, ");
    sb2.append("definition) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

    try (LoggingTimer loggingTimer = new LoggingTimer();
            PreparedStatement ps1 = connection.prepareStatement("select * from DDMStructure");
            PreparedStatement ps2 = AutoBatchPreparedStatementUtil.concurrentAutoBatch(connection,
                    "update DDMStructure set definition = ? where " + "structureId = ?");
            PreparedStatement ps3 = AutoBatchPreparedStatementUtil.concurrentAutoBatch(connection,
                    sb1.toString());//from www .  j av  a 2  s  . co m
            PreparedStatement ps4 = AutoBatchPreparedStatementUtil.concurrentAutoBatch(connection,
                    sb2.toString());
            ResultSet rs = ps1.executeQuery()) {

        while (rs.next()) {
            long structureId = rs.getLong("structureId");
            long groupId = rs.getLong("groupId");
            long companyId = rs.getLong("companyId");
            long userId = rs.getLong("userId");
            String userName = rs.getString("userName");
            Timestamp modifiedDate = rs.getTimestamp("modifiedDate");
            long parentStructureId = rs.getLong("parentStructureId");
            long classNameId = rs.getLong("classNameId");
            String version = rs.getString("version");
            String name = rs.getString("name");
            String description = rs.getString("description");
            String storageType = rs.getString("storageType");
            int type = rs.getInt("type_");

            _structureClassNameIds.put(structureId, classNameId);

            // Structure content

            DDMForm ddmForm = getDDMForm(structureId);

            ddmForm = updateDDMFormFields(ddmForm);

            populateStructureInvalidDDMFormFieldNamesMap(structureId, ddmForm);

            String definition = toJSON(ddmForm);

            ps2.setString(1, definition);

            ps2.setLong(2, structureId);

            ps2.addBatch();

            updateTemplateScriptDateFields(structureId, ddmForm);

            // Structure version

            if (hasStructureVersion(structureId, version)) {
                continue;
            }

            long structureVersionId = increment();

            ps3.setLong(1, structureVersionId);

            ps3.setLong(2, groupId);
            ps3.setLong(3, companyId);
            ps3.setLong(4, userId);
            ps3.setString(5, userName);
            ps3.setTimestamp(6, modifiedDate);
            ps3.setLong(7, structureId);
            ps3.setString(8, DDMStructureConstants.VERSION_DEFAULT);
            ps3.setLong(9, parentStructureId);
            ps3.setString(10, name);
            ps3.setString(11, description);
            ps3.setString(12, definition);
            ps3.setString(13, storageType);
            ps3.setInt(14, type);
            ps3.setInt(15, WorkflowConstants.STATUS_APPROVED);
            ps3.setLong(16, userId);
            ps3.setString(17, userName);
            ps3.setTimestamp(18, modifiedDate);

            ps3.addBatch();

            // Structure layout

            String ddmFormLayoutDefinition = getDefaultDDMFormLayoutDefinition(ddmForm);

            ps4.setString(1, PortalUUIDUtil.generate());
            ps4.setLong(2, increment());
            ps4.setLong(3, groupId);
            ps4.setLong(4, companyId);
            ps4.setLong(5, userId);
            ps4.setString(6, userName);
            ps4.setTimestamp(7, modifiedDate);
            ps4.setTimestamp(8, modifiedDate);
            ps4.setLong(9, structureVersionId);
            ps4.setString(10, ddmFormLayoutDefinition);

            ps4.addBatch();
        }

        ps2.executeBatch();

        ps3.executeBatch();

        ps4.executeBatch();
    }
}

From source file:com.liferay.dynamic.data.mapping.internal.upgrade.v1_0_0.UpgradeDynamicDataMapping.java

License:Open Source License

protected void upgradeTemplatesAndAddTemplateVersions() throws Exception {
    StringBundler sb = new StringBundler(6);

    sb.append("insert into DDMTemplateVersion (templateVersionId, ");
    sb.append("groupId, companyId, userId, userName, createDate, ");
    sb.append("classNameId, classPK, templateId, version, name, ");
    sb.append("description, language, script, status, statusByUserId, ");
    sb.append("statusByUserName, statusDate) values (?, ?, ?, ?, ?, ?, ");
    sb.append("?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

    try (LoggingTimer loggingTimer = new LoggingTimer();
            PreparedStatement ps1 = connection.prepareStatement("select * from DDMTemplate");
            PreparedStatement ps2 = AutoBatchPreparedStatementUtil.concurrentAutoBatch(connection,
                    "update DDMTemplate set resourceClassNameId = ? where " + "templateId = ?");
            PreparedStatement ps3 = AutoBatchPreparedStatementUtil.concurrentAutoBatch(connection,
                    "update DDMTemplate set script = ? where templateId = ?");
            PreparedStatement ps4 = AutoBatchPreparedStatementUtil.concurrentAutoBatch(connection,
                    sb.toString());// ww  w. j  av  a 2s .  c o  m
            ResultSet rs = ps1.executeQuery()) {

        while (rs.next()) {
            long groupId = rs.getLong("groupId");
            long companyId = rs.getLong("companyId");
            long userId = rs.getLong("userId");
            String userName = rs.getString("userName");
            Timestamp modifiedDate = rs.getTimestamp("modifiedDate");
            long classNameId = rs.getLong("classNameId");
            long classPK = rs.getLong("classPK");
            long templateId = rs.getLong("templateId");
            String version = rs.getString("version");
            String name = rs.getString("name");
            String description = rs.getString("description");
            String language = rs.getString("language");
            String script = rs.getString("script");

            // Template resource class name ID

            long resourceClassNameId = getTemplateResourceClassNameId(classNameId, classPK);

            ps2.setLong(1, resourceClassNameId);

            ps2.setLong(2, templateId);

            ps2.addBatch();

            _templateResourceClassNameIds.put(templateId, resourceClassNameId);

            // Template content

            String updatedScript = renameInvalidDDMFormFieldNames(classPK, script);

            if (language.equals("xsd")) {
                DDMForm ddmForm = _ddmFormXSDDeserializer.deserialize(updatedScript);

                ddmForm = updateDDMFormFields(ddmForm);

                updatedScript = toJSON(ddmForm);
            }

            if (!script.equals(updatedScript)) {
                ps3.setString(1, updatedScript);
                ps3.setLong(2, templateId);

                ps3.addBatch();
            }

            // Template version

            if (!hasTemplateVersion(templateId, version)) {
                ps4.setLong(1, increment());
                ps4.setLong(2, groupId);
                ps4.setLong(3, companyId);
                ps4.setLong(4, userId);
                ps4.setString(5, userName);
                ps4.setTimestamp(6, modifiedDate);
                ps4.setLong(7, classNameId);
                ps4.setLong(8, classPK);
                ps4.setLong(9, templateId);
                ps4.setString(10, DDMStructureConstants.VERSION_DEFAULT);
                ps4.setString(11, name);
                ps4.setString(12, description);
                ps4.setString(13, language);
                ps4.setString(14, updatedScript);
                ps4.setInt(15, WorkflowConstants.STATUS_APPROVED);
                ps4.setLong(16, userId);
                ps4.setString(17, userName);
                ps4.setTimestamp(18, modifiedDate);

                ps4.addBatch();
            }
        }

        ps2.executeBatch();

        ps3.executeBatch();

        ps4.executeBatch();
    }
}

From source file:com.liferay.dynamic.data.mapping.internal.util.DefaultDDMStructureHelperImpl.java

License:Open Source License

@Override
public void addDDMStructures(long userId, long groupId, long classNameId, ClassLoader classLoader,
        String fileName, ServiceContext serviceContext) throws Exception {

    Locale locale = _portal.getSiteDefaultLocale(groupId);

    List<Element> structureElements = getDDMStructures(classLoader, fileName, locale);

    for (Element structureElement : structureElements) {
        boolean dynamicStructure = GetterUtil.getBoolean(structureElement.elementText("dynamic-structure"));

        if (dynamicStructure) {
            continue;
        }/* w  w  w.j  ava 2 s  .com*/

        String name = structureElement.elementText("name");

        String description = structureElement.elementText("description");

        String ddmStructureKey = name;

        DDMStructure ddmStructure = _ddmStructureLocalService.fetchStructure(groupId, classNameId,
                ddmStructureKey);

        if (ddmStructure != null) {
            continue;
        }

        if (name.equals(DLFileEntryTypeConstants.NAME_IG_IMAGE)
                && !UpgradeProcessUtil.isCreateIGImageDocumentType()) {

            continue;
        }

        String ddmTemplateKey = name;

        Map<Locale, String> nameMap = new HashMap<>();
        Map<Locale, String> descriptionMap = new HashMap<>();

        for (Locale curLocale : LanguageUtil.getAvailableLocales(groupId)) {
            nameMap.put(curLocale, LanguageUtil.get(curLocale, name));
            descriptionMap.put(curLocale, LanguageUtil.get(curLocale, description));
        }

        DDMForm ddmForm = getDDMForm(structureElement, locale);

        DDMFormLayout ddmFormLayout = getDDMFormLayout(structureElement, ddmForm);

        serviceContext.setAttribute("status", WorkflowConstants.STATUS_APPROVED);

        ddmStructure = _ddmStructureLocalService.addStructure(userId, groupId,
                DDMStructureConstants.DEFAULT_PARENT_STRUCTURE_ID, classNameId, ddmStructureKey, nameMap,
                descriptionMap, ddmForm, ddmFormLayout, StorageType.JSON.toString(),
                DDMStructureConstants.TYPE_DEFAULT, serviceContext);

        Element templateElement = structureElement.element("template");

        if (templateElement == null) {
            continue;
        }

        String templateFileName = templateElement.elementText("file-name");

        String script = StringUtil.read(classLoader,
                FileUtil.getPath(fileName) + StringPool.SLASH + templateFileName);

        boolean cacheable = GetterUtil.getBoolean(templateElement.elementText("cacheable"));

        _ddmTemplateLocalService.addTemplate(userId, groupId, _portal.getClassNameId(DDMStructure.class),
                ddmStructure.getStructureId(), ddmStructure.getClassNameId(), ddmTemplateKey, nameMap, null,
                DDMTemplateConstants.TEMPLATE_TYPE_DISPLAY, DDMTemplateConstants.TEMPLATE_MODE_CREATE,
                TemplateConstants.LANG_TYPE_FTL, script, cacheable, false, StringPool.BLANK, null,
                serviceContext);
    }
}

From source file:com.liferay.dynamic.data.mapping.service.impl.DDMFormInstanceLocalServiceImpl.java

License:Open Source License

protected DDMFormInstanceVersion addFormInstanceVersion(long ddmStructureVersionId, User user,
        DDMFormInstance ddmFormInstance, String version, ServiceContext serviceContext) throws PortalException {

    long ddmFormInstanceVersionId = counterLocalService.increment();

    DDMFormInstanceVersion ddmFormInstanceVersion = ddmFormInstanceVersionPersistence
            .create(ddmFormInstanceVersionId);

    ddmFormInstanceVersion.setGroupId(ddmFormInstance.getGroupId());
    ddmFormInstanceVersion.setCompanyId(ddmFormInstance.getCompanyId());
    ddmFormInstanceVersion.setUserId(ddmFormInstance.getUserId());
    ddmFormInstanceVersion.setUserName(ddmFormInstance.getUserName());
    ddmFormInstanceVersion.setCreateDate(ddmFormInstance.getModifiedDate());
    ddmFormInstanceVersion.setFormInstanceId(ddmFormInstance.getFormInstanceId());
    ddmFormInstanceVersion.setStructureVersionId(ddmStructureVersionId);
    ddmFormInstanceVersion.setVersion(version);
    ddmFormInstanceVersion.setName(ddmFormInstance.getName());
    ddmFormInstanceVersion.setDescription(ddmFormInstance.getDescription());

    int status = GetterUtil.getInteger(serviceContext.getAttribute("status"),
            WorkflowConstants.STATUS_APPROVED);

    ddmFormInstanceVersion.setStatus(status);

    ddmFormInstanceVersion.setStatusByUserId(user.getUserId());
    ddmFormInstanceVersion.setStatusByUserName(user.getFullName());
    ddmFormInstanceVersion.setStatusDate(ddmFormInstance.getModifiedDate());

    ddmFormInstanceVersionPersistence.update(ddmFormInstanceVersion);

    return ddmFormInstanceVersion;
}

From source file:com.liferay.dynamic.data.mapping.service.impl.DDMFormInstanceLocalServiceImpl.java

License:Open Source License

protected DDMFormInstance doUpdateFormInstance(long userId, long ddmStructureId, Map<Locale, String> nameMap,
        Map<Locale, String> descriptionMap, DDMFormValues settingsDDMFormValues, ServiceContext serviceContext,
        DDMFormInstance ddmFormInstance) throws PortalException {

    Locale defaultLocale = getDDMFormDefaultLocale(ddmStructureId);

    validate(ddmStructureId, nameMap, settingsDDMFormValues, defaultLocale);

    User user = userLocalService.getUser(userId);

    long oldDDMStructureId = ddmFormInstance.getStructureId();

    ddmFormInstance.setStructureId(ddmStructureId);

    DDMFormInstanceVersion latestDDMFormInstanceVersion = ddmFormInstanceVersionLocalService
            .getLatestFormInstanceVersion(ddmFormInstance.getFormInstanceId());

    int status = GetterUtil.getInteger(serviceContext.getAttribute("status"),
            WorkflowConstants.STATUS_APPROVED);

    boolean updateVersion = false;

    if ((latestDDMFormInstanceVersion.getStatus() == WorkflowConstants.STATUS_DRAFT)
            && (status == WorkflowConstants.STATUS_DRAFT)) {

        updateVersion = true;/* w ww.  java2  s  . c om*/
    }

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

    String version = getNextVersion(latestDDMFormInstanceVersion.getVersion(), majorVersion);

    if (!updateVersion) {
        ddmFormInstance.setVersion(version);

        ddmFormInstance.setVersionUserId(user.getUserId());
        ddmFormInstance.setVersionUserName(user.getFullName());
    }

    ddmFormInstance.setNameMap(nameMap, defaultLocale);
    ddmFormInstance.setDescriptionMap(descriptionMap, defaultLocale);
    ddmFormInstance.setSettings(ddmFormValuesJSONSerializer.serialize(settingsDDMFormValues));

    DDMFormInstance updatedDDMFormInstance = ddmFormInstancePersistence.update(ddmFormInstance);

    updateWorkflowDefinitionLink(ddmFormInstance, settingsDDMFormValues, serviceContext);

    long ddmStructureVersionId = getStructureVersionId(ddmStructureId);

    if (updateVersion) {
        updateFormInstanceVersion(ddmStructureVersionId, user, ddmFormInstance);
    } else {
        addFormInstanceVersion(ddmStructureVersionId, user, ddmFormInstance, version, serviceContext);
    }

    if (oldDDMStructureId != ddmStructureId) {
        ddmFormInstanceRecordLocalService.deleteFormInstanceRecords(ddmFormInstance.getFormInstanceId());
    }

    return updatedDDMFormInstance;
}

From source file:com.liferay.dynamic.data.mapping.service.impl.DDMFormInstanceRecordLocalServiceImpl.java

License:Open Source License

@Indexable(type = IndexableType.REINDEX)
@Override/*from ww  w . j ava 2  s . c o m*/
public DDMFormInstanceRecord updateStatus(long userId, long recordVersionId, int status,
        ServiceContext serviceContext) throws PortalException {

    // Record version

    User user = userLocalService.getUser(userId);

    DDMFormInstanceRecordVersion formInstanceRecordVersion = ddmFormInstanceRecordVersionPersistence
            .findByPrimaryKey(recordVersionId);

    formInstanceRecordVersion.setStatus(status);
    formInstanceRecordVersion.setStatusByUserId(user.getUserId());
    formInstanceRecordVersion.setStatusByUserName(user.getFullName());
    formInstanceRecordVersion.setStatusDate(new Date());

    ddmFormInstanceRecordVersionPersistence.update(formInstanceRecordVersion);

    // Record

    DDMFormInstanceRecord formInstanceRecord = ddmFormInstanceRecordPersistence
            .findByPrimaryKey(formInstanceRecordVersion.getFormInstanceRecordId());

    if (status == WorkflowConstants.STATUS_APPROVED) {
        if (DLUtil.compareVersions(formInstanceRecord.getVersion(),
                formInstanceRecordVersion.getVersion()) <= 0) {

            formInstanceRecord.setStorageId(formInstanceRecordVersion.getStorageId());
            formInstanceRecord.setVersion(formInstanceRecordVersion.getVersion());
            formInstanceRecord.setFormInstanceId(formInstanceRecordVersion.getFormInstanceId());
            formInstanceRecord.setVersion(formInstanceRecordVersion.getVersion());
            formInstanceRecord.setVersionUserId(formInstanceRecordVersion.getUserId());
            formInstanceRecord.setVersionUserName(formInstanceRecordVersion.getUserName());

            ddmFormInstanceRecordPersistence.update(formInstanceRecord);
        }
    } else {
        if (Objects.equals(formInstanceRecord.getVersion(), formInstanceRecordVersion.getVersion())) {

            String newVersion = _VERSION_DEFAULT;

            List<DDMFormInstanceRecordVersion> approvedRecordVersions = ddmFormInstanceRecordVersionPersistence
                    .findByF_S(formInstanceRecord.getFormInstanceRecordId(), WorkflowConstants.STATUS_APPROVED);

            if (!approvedRecordVersions.isEmpty()) {
                newVersion = approvedRecordVersions.get(0).getVersion();
            }

            formInstanceRecord.setVersion(newVersion);

            ddmFormInstanceRecordPersistence.update(formInstanceRecord);
        }
    }

    return formInstanceRecord;
}

From source file:com.liferay.dynamic.data.mapping.service.impl.DDMFormInstanceRecordLocalServiceImpl.java

License:Open Source License

protected void updateAsset(long userId, DDMFormInstanceRecord formInstanceRecord,
        DDMFormInstanceRecordVersion formInstanceRecordVersion, long[] assetCategoryIds, String[] assetTagNames,
        Locale locale, Double priority) throws PortalException {

    boolean addDraftAssetEntry = false;

    if ((formInstanceRecordVersion != null) && !formInstanceRecordVersion.isApproved()) {

        String version = formInstanceRecordVersion.getVersion();

        if (!version.equals(_VERSION_DEFAULT)) {
            int approvedRecordVersionsCount = ddmFormInstanceRecordVersionPersistence.countByF_S(
                    formInstanceRecord.getFormInstanceRecordId(), WorkflowConstants.STATUS_APPROVED);

            if (approvedRecordVersionsCount > 0) {
                addDraftAssetEntry = true;
            }//from w w  w. j  a  v  a 2 s .  c o m
        }
    }

    DDMFormInstance formInstance = formInstanceRecord.getFormInstance();

    DDMStructure ddmStructure = formInstance.getStructure();

    String ddmStructureName = ddmStructure.getName(locale);

    String recordSetName = formInstance.getName(locale);

    String title = LanguageUtil.format(locale, "new-x-for-list-x",
            new Object[] { ddmStructureName, recordSetName }, false);

    if (addDraftAssetEntry) {
        assetEntryLocalService.updateEntry(userId, formInstanceRecord.getGroupId(),
                formInstanceRecord.getCreateDate(), formInstanceRecord.getModifiedDate(),
                DDMFormInstanceRecord.class.getName(),
                formInstanceRecordVersion.getFormInstanceRecordVersionId(), formInstanceRecord.getUuid(), 0,
                assetCategoryIds, assetTagNames, true, false, null, null, null, null, ContentTypes.TEXT_HTML,
                title, null, StringPool.BLANK, null, null, 0, 0, priority);
    } else {
        assetEntryLocalService.updateEntry(userId, formInstanceRecord.getGroupId(),
                formInstanceRecord.getCreateDate(), formInstanceRecord.getModifiedDate(),
                DDMFormInstanceRecord.class.getName(), formInstanceRecord.getFormInstanceRecordId(),
                formInstanceRecord.getUuid(), 0, assetCategoryIds, assetTagNames, true, false, null, null, null,
                null, ContentTypes.TEXT_HTML, title, null, StringPool.BLANK, null, null, 0, 0, priority);
    }
}

From source file:com.liferay.dynamic.data.mapping.service.impl.DDMStructureLocalServiceImpl.java

License:Open Source License

@Override
public void revertStructure(long userId, long structureId, String version, ServiceContext serviceContext)
        throws PortalException {

    DDMStructureVersion structureVersion = ddmStructureVersionLocalService.getStructureVersion(structureId,
            version);/*from w  w  w . ja  v  a  2 s.  c om*/

    if (!structureVersion.isApproved()) {
        throw new InvalidStructureVersionException("Unable to revert from an unapproved file version");
    }

    DDMStructure structure = structureVersion.getStructure();

    serviceContext.setAttribute("majorVersion", Boolean.TRUE);
    serviceContext.setAttribute("status", WorkflowConstants.STATUS_APPROVED);
    serviceContext.setCommand(Constants.REVERT);

    ddmStructureLocalService.updateStructure(userId, structure.getGroupId(),
            structureVersion.getParentStructureId(), structure.getClassNameId(), structure.getStructureKey(),
            structureVersion.getNameMap(), structureVersion.getDescriptionMap(), structureVersion.getDDMForm(),
            structureVersion.getDDMFormLayout(), serviceContext);
}