Example usage for com.liferay.portal.kernel.workflow WorkflowHandlerRegistryUtil startWorkflowInstance

List of usage examples for com.liferay.portal.kernel.workflow WorkflowHandlerRegistryUtil startWorkflowInstance

Introduction

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

Prototype

public static <T> void startWorkflowInstance(long companyId, long userId, String className, long classPK,
            T model, ServiceContext serviceContext, Map<String, Serializable> workflowContext)
            throws PortalException 

Source Link

Usage

From source file:br.com.prodevelopment.lapidarios.evento.service.impl.EventoAgendaLocalServiceImpl.java

License:Open Source License

public EventoAgenda addEventoAgenda(long companyId, long groupId, long userIdCreate, String sDataEvento,
        String sHoraEvento, int qtdeVagas, boolean gratuito, double valor, long userResponsavelId,
        long eventoId, long localId, Map<Locale, String> observacaoMap, long classNameId,
        ServiceContext serviceContext) throws SystemException, PortalException {

    Locale locale = LocaleUtil.getSiteDefault();

    Date now = new Date();

    validate(0, eventoId, localId, sDataEvento, sHoraEvento, DateUtil.dateToString(now), userIdCreate,
            qtdeVagas, 1);/*ww w .  ja  v  a2s.c  o  m*/

    User userCreate = userPersistence.findByPrimaryKey(userIdCreate);

    // Recuperar responsvel
    String userResponsavelNome = StringPool.BLANK;
    if (userResponsavelId > 0) {
        User userResponsavel = userPersistence.findByPrimaryKey(userResponsavelId);
        userResponsavelNome = userResponsavel.getFullName();
    }

    // Recuperar evento
    String eventoNome = StringPool.BLANK;
    if (eventoId > 0) {
        Evento evento = eventoPersistence.findByPrimaryKey(eventoId);
        eventoNome = evento.getNome(locale);
    }

    // Recuperar local
    String localNome = StringPool.BLANK;
    if (localId > 0) {
        Local local = localPersistence.findByPrimaryKey(localId);
        localNome = local.getNome();
    }

    // Criar objeto incrementando um novo ID
    long eventoAgendaId = counterLocalService.increment();
    EventoAgenda eventoAgenda = eventoAgendaPersistence.create(eventoAgendaId);

    // Atribui novos valores
    eventoAgenda.setCompanyId(companyId);
    eventoAgenda.setGroupId(groupId);
    eventoAgenda.setCreateUserId(userIdCreate);
    eventoAgenda.setCreateDate(now);
    try {
        Date dataEvento = DateUtil.stringToDate("dd/MM/yyyy", sDataEvento);
        eventoAgenda.setDataEvento(dataEvento);
    } catch (ParseException e) {
        _log.error(e, e);
    }
    eventoAgenda.setHoraEvento(sHoraEvento);
    eventoAgenda.setQtdeVagas(qtdeVagas);
    eventoAgenda.setQtdeVagasPreenchida(0);
    eventoAgenda.setValor(valor);
    eventoAgenda.setUserResponsavelId(userResponsavelId);
    eventoAgenda.setUserResponsavelNome(userResponsavelNome);
    eventoAgenda.setEventoId(eventoId);
    eventoAgenda.setEventoNome(eventoNome);
    eventoAgenda.setLocalId(localId);
    eventoAgenda.setLocalNome(localNome);
    eventoAgenda.setClassNameId(classNameId);
    String className = PortalUtil.getClassName(classNameId);
    eventoAgenda.setClassName(className);
    eventoAgenda.setStatusDate(serviceContext.getModifiedDate(now));
    eventoAgenda.setStatusByUserId(userCreate.getUserId());
    eventoAgenda.setStatusByUserName(userCreate.getFullName());
    if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(companyId, groupId,
            EventoAgenda.class.getName())) {
        eventoAgenda.setStatus(WorkflowConstants.STATUS_PENDING);
    } else {
        eventoAgenda.setStatus(WorkflowConstants.STATUS_APPROVED);
    }
    eventoAgenda.setObservacaoMap(observacaoMap);
    eventoAgenda.setVersao(Constantes.VERSAO_INICIAL);
    eventoAgenda.setGratuito(gratuito);

    eventoAgendaPersistence.update(eventoAgenda);

    // Workflow
    WorkflowHandlerRegistryUtil.startWorkflowInstance(companyId, groupId, userCreate.getUserId(),
            EventoAgenda.class.getName(), eventoAgendaId, eventoAgenda, serviceContext);

    return eventoAgenda;
}

From source file:br.com.prodevelopment.lapidarios.evento.service.impl.EventoAgendaLocalServiceImpl.java

License:Open Source License

public EventoAgenda updateStatus(long userId, EventoAgenda eventoAgenda, int status,
        ServiceContext serviceContext) throws PortalException, SystemException {

    // Type Task/*from   w  ww .  j  a v  a2s .co  m*/

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

    int oldStatus = eventoAgenda.getStatus();

    eventoAgenda.setModifiedUserId(userId);
    eventoAgenda.setModifiedDate(serviceContext.getModifiedDate(now));
    eventoAgenda.setStatus(status);
    eventoAgenda.setStatusByUserId(user.getUserId());
    eventoAgenda.setStatusByUserName(user.getFullName());
    eventoAgenda.setStatusDate(serviceContext.getModifiedDate(now));

    eventoAgendaPersistence.update(eventoAgenda);

    // Trash

    if (oldStatus == WorkflowConstants.STATUS_IN_TRASH) {
        trashEntryLocalService.deleteEntry(EventoAgenda.class.getName(), eventoAgenda.getEventoAgendaId());

        // Workflow
        WorkflowHandlerRegistryUtil.startWorkflowInstance(eventoAgenda.getCompanyId(),
                eventoAgenda.getGroupId(), userId, EventoAgenda.class.getName(),
                eventoAgenda.getEventoAgendaId(), eventoAgenda, serviceContext);
    }

    if (status == WorkflowConstants.STATUS_IN_TRASH) {
        int novoStatus = WorkflowConstants.STATUS_APPROVED;
        if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(eventoAgenda.getCompanyId(),
                eventoAgenda.getGroupId(), EventoAgenda.class.getName())) {
            novoStatus = WorkflowConstants.STATUS_PENDING;
        }

        trashEntryLocalService.addTrashEntry(userId, eventoAgenda.getGroupId(), EventoAgenda.class.getName(),
                eventoAgenda.getEventoAgendaId(), eventoAgenda.getUuid(), null, novoStatus, null, null);
    }

    return eventoAgenda;
}

From source file:br.com.prodevelopment.lapidarios.loja.service.impl.LojaLocalServiceImpl.java

License:Open Source License

public Loja addLoja(long companyId, long groupId, long userIdCreate, String razaoSocial, String nomeFantasia,
        Map<Locale, String> observacaoMap, String cnpj, String endLogradouro, String endNumero,
        String endComplemento, String endCep, String endBairro, String endCidade, String endUf, String endPais,
        double versao, List<EnderecoEmail> enderecosEmail, List<Telefone> telefones, long classNameId,
        ServiceContext serviceContext) throws SystemException, PortalException {

    validate(0, razaoSocial, nomeFantasia, cnpj, userIdCreate, versao);

    User userCreate = userPersistence.findByPrimaryKey(userIdCreate);

    // Criar objeto incrementando um novo ID
    long lojaId = counterLocalService.increment();
    Loja loja = lojaPersistence.create(lojaId);

    Date now = new Date();

    // Atribui novos valores
    loja.setCompanyId(companyId);//from w  w  w.ja  v  a 2  s . c o  m
    loja.setGroupId(groupId);
    loja.setCreateUserId(userIdCreate);
    loja.setCreateDate(now);
    loja.setRazaoSocial(razaoSocial);
    loja.setNomeFantasia(nomeFantasia);
    loja.setObservacaoMap(observacaoMap);
    loja.setCnpj(cnpj);
    loja.setEndLogradouro(endLogradouro);
    loja.setEndNumero(endNumero);
    loja.setEndComplemento(endComplemento);
    loja.setEndCep(endCep);
    loja.setEndBairro(endBairro);
    loja.setEndCidade(endCidade);
    loja.setEndUf(endUf);
    loja.setEndPais(endPais);
    loja.setClassNameId(classNameId);
    String className = PortalUtil.getClassName(classNameId);
    loja.setClassName(className);
    loja.setStatusDate(serviceContext.getModifiedDate(now));
    loja.setStatusByUserId(userCreate.getUserId());
    loja.setStatusByUserName(userCreate.getFullName());
    if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(companyId, groupId,
            Loja.class.getName())) {
        loja.setStatus(WorkflowConstants.STATUS_PENDING);
    } else {
        loja.setStatus(WorkflowConstants.STATUS_APPROVED);
    }
    loja.setVersao(versao);

    lojaPersistence.update(loja);

    // Contato
    Contato contato = ContatoLocalServiceUtil.addContato(companyId, groupId, userIdCreate, Loja.class.getName(),
            loja.getLojaId(), nomeFantasia, null, null, null, 0, null, null, null);

    // Telefones
    TelefoneLocalServiceUtil.updateTelefones(companyId, groupId, userIdCreate, Contato.class.getName(),
            contato.getContatoId(), telefones);

    // Enderecos de email
    EnderecoEmailLocalServiceUtil.updateEnderecosEmail(companyId, groupId, userIdCreate,
            Contato.class.getName(), contato.getContatoId(), enderecosEmail);

    // Asset
    updateAsset(loja.getCreateUserId(), loja, serviceContext.getAssetCategoryIds(),
            serviceContext.getAssetTagNames(), serviceContext.getAssetLinkEntryIds());

    // Social
    socialActivityLocalService.addActivity(userIdCreate, loja.getGroupId(), Loja.class.getName(), lojaId,
            CadastroLojaActivityKeys.ADD_LOJA, getExtraDataJSON(loja), 0);

    // Workflow
    WorkflowHandlerRegistryUtil.startWorkflowInstance(companyId, groupId, userCreate.getUserId(),
            Loja.class.getName(), lojaId, loja, serviceContext);
    Loja lojaAtiva = lojaPersistence.fetchByCG_OrdemIndicadaAtual(companyId, groupId, true,
            WorkflowConstants.STATUS_APPROVED);
    if (Validator.isNull(lojaAtiva)) {
        loja.setOrdemIndicadaAtual(true);
        lojaPersistence.update(loja);
    }

    return loja;
}

From source file:br.com.prodevelopment.lapidarios.loja.service.impl.LojaLocalServiceImpl.java

License:Open Source License

public Loja updateStatus(long userId, Loja loja, int status, ServiceContext serviceContext)
        throws PortalException, SystemException {

    // Type Task//from  ww  w. j a va 2  s  .  co  m

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

    int oldStatus = loja.getStatus();

    loja.setModifiedUserId(user.getUserId());
    loja.setModifiedDate(serviceContext.getModifiedDate(now));
    loja.setStatus(status);
    loja.setStatusByUserId(user.getUserId());
    loja.setStatusByUserName(user.getFullName());
    loja.setStatusDate(serviceContext.getModifiedDate(now));

    lojaPersistence.update(loja);

    // Trash

    if (oldStatus == WorkflowConstants.STATUS_IN_TRASH) {
        trashEntryLocalService.deleteEntry(Loja.class.getName(), loja.getLojaId());

        // Workflow
        WorkflowHandlerRegistryUtil.startWorkflowInstance(loja.getCompanyId(), loja.getGroupId(), userId,
                Loja.class.getName(), loja.getLojaId(), loja, serviceContext);
    }

    if (status == WorkflowConstants.STATUS_IN_TRASH) {
        int novoStatus = WorkflowConstants.STATUS_APPROVED;
        if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(loja.getCompanyId(),
                loja.getGroupId(), Loja.class.getName())) {
            novoStatus = WorkflowConstants.STATUS_PENDING;
        }

        trashEntryLocalService.addTrashEntry(userId, loja.getGroupId(), Loja.class.getName(), loja.getLojaId(),
                loja.getUuid(), null, novoStatus, null, null);
    }

    return loja;
}

From source file:com.idetronic.subur.service.impl.SuburItemLocalServiceImpl.java

License:Open Source License

@Override
public SuburItem updateSuburItem(SuburItem suburItem, long userId, int newStatus, long[] itemTypeIds,
        long[] authorIds, ServiceContext serviceContext) throws PortalException, SystemException {

    long groupId = serviceContext.getScopeGroupId();
    suburItem.setStatusDate(new Date());
    if (Validator.isNull(suburItem.getPublishedDate())
            && suburItem.getStatus() == SuburConstant.STATUS_PUBLISHED_ITEM)
        suburItem.setPublishedDate(new Date());

    //only show item with published status
    boolean visible = false;
    String itemDescription = null;
    String summary = null;/* ww  w  . j a  va 2s  . c  o  m*/
    String url = null;
    String layoutUuid = null;
    Date publishedDate = suburItem.getPublishedDate();
    suburItem.getMetadataValue();

    itemDescription = suburItem.getTitle();
    AssetEntry assetEntry = assetEntryLocalService.updateEntry(userId, groupId, suburItem.getCreateDate(),
            suburItem.getModifiedDate(), SuburItem.class.getName(), suburItem.getItemId(), suburItem.getUuid(),
            0, serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(), visible, null, null,
            null, ContentTypes.TEXT_HTML, suburItem.getTitle(), itemDescription, summary, url, layoutUuid, 0, 0,
            null, false);

    if (suburItem.isDraft() || suburItem.isPending()) {

    } else {
        suburItem.setStatus(WorkflowConstants.STATUS_DRAFT);
    }

    //if status is published, ensure to update asset entry published date
    if (Validator.isNull(assetEntry.getPublishDate())
            && suburItem.getStatus() == WorkflowConstants.STATUS_APPROVED)
        assetEntryLocalService.updateEntry(SuburItem.class.getName(), suburItem.getItemId(),
                suburItem.getPublishedDate(), true);

    assetLinkLocalService.updateLinks(userId, assetEntry.getEntryId(), serviceContext.getAssetLinkEntryIds(),
            AssetLinkConstants.TYPE_RELATED);

    ItemAuthorLocalServiceUtil.setItemAuthor(suburItem.getItemId(), authorIds, suburItem.getStatus());
    //AuthorLocalServiceUtil.updateAuthorPosting(suburItem);

    resourceLocalService.addResources(serviceContext.getCompanyId(), groupId, userId, SuburItem.class.getName(),
            suburItem.getItemId(), false, true, true);

    ItemItemTypeLocalServiceUtil.updateItemItemType(suburItem.getItemId(), itemTypeIds);

    //workflow

    boolean workFlowEnable = SuburUtil.isWorkflowEnabled(serviceContext);

    serviceContext.setAttribute("trackbacks", null);

    if (workFlowEnable) {
        WorkflowHandlerRegistryUtil.startWorkflowInstance(suburItem.getCompanyId(), suburItem.getGroupId(),
                userId, SuburItem.class.getName(), suburItem.getItemId(), suburItem, serviceContext);

    }

    Indexer indexer = IndexerRegistryUtil.nullSafeGetIndexer(SuburItem.class);

    if (serviceContext.getWorkflowAction() == WorkflowConstants.ACTION_PUBLISH) {
        suburItem.setStatus(WorkflowConstants.STATUS_PENDING);
        JSONObject extraDataJSONObject = JSONFactoryUtil.createJSONObject();

        extraDataJSONObject.put("title", suburItem.getTitle());
        if (suburItem.getCompleted()) {
            SocialActivityLocalServiceUtil.addActivity(userId, suburItem.getGroupId(),
                    SuburItem.class.getName(), suburItem.getItemId(),
                    SuburActivityKeys.UPDATE_SUBUR_PUBLICATION, extraDataJSONObject.toString(), 0);

        } else {
            SocialActivityLocalServiceUtil.addActivity(userId, suburItem.getGroupId(),
                    SuburItem.class.getName(), suburItem.getItemId(), SuburActivityKeys.ADD_SUBUR_PUBLICATION,
                    extraDataJSONObject.toString(), 0);

            suburItem.setCompleted(true);
        }
    }

    indexer.reindex(suburItem);
    suburItem.setExpandoBridgeAttributes(serviceContext);

    //updateStatus(suburItem.getItemId(),userId,newStatus,serviceContext);
    return suburItemPersistence.update(suburItem);

}

From source file:com.inkwell.internet.slogan.service.impl.SloganLocalServiceImpl.java

License:Open Source License

/**
 * Adds a new slogan to the database.//from  w w w  . ja  v  a 2  s.c  o m
 *
 * @param newSlogan
 * @param userId
 * @return
 * @throws SystemException
 * @throws PortalException
 */
public Slogan addSlogan(Slogan newSlogan, long userId, ServiceContext serviceContext)
        throws SystemException, PortalException {

    Slogan slogan = sloganPersistence.create(counterLocalService.increment(Slogan.class.getName()));

    slogan.setCompanyId(newSlogan.getCompanyId());
    slogan.setGroupId(newSlogan.getGroupId());
    slogan.setUserId(serviceContext.getUserId());
    slogan.setSloganDate(newSlogan.getSloganDate());
    slogan.setSloganText(newSlogan.getSloganText());
    slogan.setStatus(WorkflowConstants.STATUS_DRAFT);

    sloganPersistence.update(slogan, false);

    resourceLocalService.addResources(newSlogan.getCompanyId(), newSlogan.getGroupId(), userId,
            Slogan.class.getName(), slogan.getPrimaryKey(), false, true, true);

    assetEntryLocalService.updateEntry(userId, slogan.getGroupId(), Slogan.class.getName(),
            slogan.getSloganId(), serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames());

    // Workflow

    WorkflowHandlerRegistryUtil.startWorkflowInstance(slogan.getCompanyId(), slogan.getGroupId(), userId,
            Slogan.class.getName(), slogan.getPrimaryKey(), slogan, serviceContext);

    sendMessage(slogan, serviceContext);

    return slogan;
}

From source file:com.liferay.dynamic.data.lists.service.impl.DDLRecordLocalServiceImpl.java

License:Open Source License

/**
 * Adds a record referencing the record set.
 *
 * @param  userId the primary key of the record's creator/owner
 * @param  groupId the primary key of the record's group
 * @param  recordSetId the primary key of the record set
 * @param  displayIndex the index position in which the record is displayed
 *         in the spreadsheet view// w w w.  j  ava  2  s  .c  o m
 * @param  ddmFormValues the record values. See <code>DDMFormValues</code>
 *         in the <code>dynamic.data.mapping.api</code> module.
 * @param  serviceContext the service context to be applied. This can set
 *         the UUID, guest permissions, and group permissions for the
 *         record.
 * @return the record
 * @throws PortalException if a portal exception occurred
 */
@Indexable(type = IndexableType.REINDEX)
@Override
public DDLRecord addRecord(long userId, long groupId, long recordSetId, int displayIndex,
        DDMFormValues ddmFormValues, ServiceContext serviceContext) throws PortalException {

    // Record

    User user = userLocalService.getUser(userId);

    DDLRecordSet recordSet = ddlRecordSetPersistence.findByPrimaryKey(recordSetId);

    validate(groupId, recordSet);

    long recordId = counterLocalService.increment();

    DDLRecord record = ddlRecordPersistence.create(recordId);

    record.setUuid(serviceContext.getUuid());
    record.setGroupId(groupId);
    record.setCompanyId(user.getCompanyId());
    record.setUserId(user.getUserId());
    record.setUserName(user.getFullName());
    record.setVersionUserId(user.getUserId());
    record.setVersionUserName(user.getFullName());

    long ddmStorageId = storageEngine.create(recordSet.getCompanyId(), recordSet.getDDMStructureId(),
            ddmFormValues, serviceContext);

    record.setDDMStorageId(ddmStorageId);

    record.setRecordSetId(recordSetId);
    record.setVersion(DDLRecordConstants.VERSION_DEFAULT);
    record.setDisplayIndex(displayIndex);

    ddlRecordPersistence.update(record);

    // Record version

    DDLRecordVersion recordVersion = addRecordVersion(user, record, ddmStorageId,
            DDLRecordConstants.VERSION_DEFAULT, displayIndex, WorkflowConstants.STATUS_DRAFT);

    // Asset

    Locale locale = serviceContext.getLocale();

    updateAsset(userId, record, recordVersion, serviceContext.getAssetCategoryIds(),
            serviceContext.getAssetTagNames(), locale, serviceContext.getAssetPriority());

    // Workflow

    WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(), groupId, userId,
            getWorkflowAssetClassName(recordSet), recordVersion.getRecordVersionId(), recordVersion,
            serviceContext);

    return record;
}

From source file:com.liferay.dynamic.data.lists.service.impl.DDLRecordLocalServiceImpl.java

License:Open Source License

/**
 * Updates the record, replacing its display index and values.
 *
 * @param  userId the primary key of the user updating the record
 * @param  recordId the primary key of the record
 * @param  majorVersion whether this update is a major change. A major
 *         change increments the record's major version number.
 * @param  displayIndex the index position in which the record is displayed
 *         in the spreadsheet view/*from ww  w.  j a  va 2s.c  om*/
 * @param  ddmFormValues the record values. See <code>DDMFormValues</code>
 *         in the <code>dynamic.data.mapping.api</code> module.
 * @param  serviceContext the service context to be applied. This can set
 *         the record modified date.
 * @return the record
 * @throws PortalException if a portal exception occurred
 */
@Indexable(type = IndexableType.REINDEX)
@Override
public DDLRecord updateRecord(long userId, long recordId, boolean majorVersion, int displayIndex,
        DDMFormValues ddmFormValues, ServiceContext serviceContext) throws PortalException {

    // Record

    User user = userLocalService.getUser(userId);

    DDLRecord record = ddlRecordPersistence.findByPrimaryKey(recordId);

    record.setModifiedDate(serviceContext.getModifiedDate(null));

    ddlRecordPersistence.update(record);

    // Record version

    DDLRecordVersion recordVersion = record.getLatestRecordVersion();

    if (recordVersion.isApproved()) {
        DDLRecordSet recordSet = record.getRecordSet();

        long ddmStorageId = storageEngine.create(recordSet.getCompanyId(), recordSet.getDDMStructureId(),
                ddmFormValues, serviceContext);

        String version = getNextVersion(recordVersion.getVersion(), majorVersion,
                serviceContext.getWorkflowAction());

        recordVersion = addRecordVersion(user, record, ddmStorageId, version, displayIndex,
                WorkflowConstants.STATUS_DRAFT);
    } else {
        storageEngine.update(recordVersion.getDDMStorageId(), ddmFormValues, serviceContext);

        String version = recordVersion.getVersion();

        updateRecordVersion(user, recordVersion, version, displayIndex, recordVersion.getStatus(),
                serviceContext);
    }

    if (isKeepRecordVersionLabel(record.getRecordVersion(), recordVersion, serviceContext)) {

        ddlRecordVersionPersistence.remove(recordVersion);

        // Dynamic data mapping storage

        storageEngine.deleteByClass(recordVersion.getDDMStorageId());

        return record;
    }

    // Workflow

    WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(), record.getGroupId(), userId,
            DDLRecord.class.getName(), recordVersion.getRecordVersionId(), recordVersion, serviceContext);

    return record;
}

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

License:Open Source License

@Indexable(type = IndexableType.REINDEX)
@Override//from w w  w .  j  a  v  a 2 s .co m
public DDMFormInstanceRecord addFormInstanceRecord(long userId, long groupId, long ddmFormInstanceId,
        DDMFormValues ddmFormValues, ServiceContext serviceContext) throws PortalException {

    User user = userLocalService.getUser(userId);

    DDMFormInstance ddmFormInstance = ddmFormInstancePersistence.findByPrimaryKey(ddmFormInstanceId);

    validate(groupId, ddmFormInstance);

    long recordId = counterLocalService.increment();

    DDMFormInstanceRecord ddmFormInstanceRecord = ddmFormInstanceRecordPersistence.create(recordId);

    ddmFormInstanceRecord.setUuid(serviceContext.getUuid());
    ddmFormInstanceRecord.setGroupId(groupId);
    ddmFormInstanceRecord.setCompanyId(user.getCompanyId());
    ddmFormInstanceRecord.setUserId(user.getUserId());
    ddmFormInstanceRecord.setUserName(user.getFullName());
    ddmFormInstanceRecord.setVersionUserId(user.getUserId());
    ddmFormInstanceRecord.setVersionUserName(user.getFullName());

    StorageEngine storageEngine = storageEngineAccessor.getStorageEngine();

    long ddmStorageId = storageEngine.create(ddmFormInstance.getCompanyId(), ddmFormInstance.getStructureId(),
            ddmFormValues, serviceContext);

    ddmFormInstanceRecord.setStorageId(ddmStorageId);

    ddmFormInstanceRecord.setFormInstanceId(ddmFormInstanceId);
    ddmFormInstanceRecord.setFormInstanceVersion(ddmFormInstance.getVersion());
    ddmFormInstanceRecord.setVersion(_VERSION_DEFAULT);

    ddmFormInstanceRecordPersistence.update(ddmFormInstanceRecord);

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

    DDMFormInstanceRecordVersion ddmFormInstanceRecordVersion = addFormInstanceRecordVersion(user,
            ddmFormInstanceRecord, ddmStorageId, status, _VERSION_DEFAULT);

    // Asset

    Locale locale = serviceContext.getLocale();

    updateAsset(userId, ddmFormInstanceRecord, ddmFormInstanceRecordVersion,
            serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(), locale,
            serviceContext.getAssetPriority());

    if (serviceContext.getWorkflowAction() == WorkflowConstants.ACTION_PUBLISH) {

        WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(), groupId, userId,
                DDMFormInstanceRecord.class.getName(),
                ddmFormInstanceRecordVersion.getFormInstanceRecordVersionId(), ddmFormInstanceRecordVersion,
                serviceContext);
    }

    return ddmFormInstanceRecord;
}

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

License:Open Source License

@Indexable(type = IndexableType.REINDEX)
@Override/*from w ww.  j a  v a 2 s . co m*/
public DDMFormInstanceRecord updateFormInstanceRecord(long userId, long ddmFormInstanceRecordId,
        boolean majorVersion, DDMFormValues ddmFormValues, ServiceContext serviceContext)
        throws PortalException {

    User user = userLocalService.getUser(userId);

    DDMFormInstanceRecord ddmFormInstanceRecord = ddmFormInstanceRecordPersistence
            .findByPrimaryKey(ddmFormInstanceRecordId);

    ddmFormInstanceRecord.setModifiedDate(serviceContext.getModifiedDate(null));

    ddmFormInstanceRecord = ddmFormInstanceRecordPersistence.update(ddmFormInstanceRecord);

    StorageEngine storageEngine = storageEngineAccessor.getStorageEngine();

    DDMFormInstanceRecordVersion ddmFormInstanceRecordVersion = ddmFormInstanceRecord
            .getLatestFormInstanceRecordVersion();

    if (ddmFormInstanceRecordVersion.isApproved()) {
        DDMFormInstance ddmFormInstance = ddmFormInstanceRecord.getFormInstance();

        long ddmStorageId = storageEngine.create(ddmFormInstance.getCompanyId(),
                ddmFormInstance.getStructureId(), ddmFormValues, serviceContext);

        String version = getNextVersion(ddmFormInstanceRecordVersion.getVersion(), majorVersion,
                serviceContext.getWorkflowAction());

        ddmFormInstanceRecordVersion = addFormInstanceRecordVersion(user, ddmFormInstanceRecord, ddmStorageId,
                WorkflowConstants.STATUS_DRAFT, version);
    } else {
        storageEngine.update(ddmFormInstanceRecordVersion.getStorageId(), ddmFormValues, serviceContext);

        String version = ddmFormInstanceRecordVersion.getVersion();

        updateFormInstanceRecordVersion(user, ddmFormInstanceRecordVersion,
                ddmFormInstanceRecordVersion.getStatus(), version, serviceContext);
    }

    if (isKeepFormInstanceRecordVersionLabel(ddmFormInstanceRecord.getFormInstanceRecordVersion(),
            ddmFormInstanceRecordVersion, serviceContext)) {

        ddmFormInstanceRecordVersionPersistence.remove(ddmFormInstanceRecordVersion);

        storageEngine.deleteByClass(ddmFormInstanceRecordVersion.getStorageId());

        return ddmFormInstanceRecord;
    }

    if (serviceContext.getWorkflowAction() == WorkflowConstants.ACTION_PUBLISH) {

        WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(),
                ddmFormInstanceRecord.getGroupId(), userId, DDMFormInstanceRecord.class.getName(),
                ddmFormInstanceRecordVersion.getFormInstanceRecordVersionId(), ddmFormInstanceRecordVersion,
                serviceContext);
    }

    return ddmFormInstanceRecord;
}