Search in sources :

Example 96 with Entity

use of com.qcadoo.model.api.Entity in project qcadoo by qcadoo.

the class DataAccessServiceImpl method deactivate.

@Override
@Transactional
@Monitorable
public List<Entity> deactivate(final InternalDataDefinition dataDefinition, final Long... entityIds) {
    if (!dataDefinition.isActivable()) {
        return Collections.emptyList();
    }
    InternalDataDefinition dataDefinitionToDeactivate = getDataDefinitionByMasterModel(dataDefinition);
    List<Entity> deactivatedEntities = new ArrayList<Entity>();
    for (Long entityId : entityIds) {
        Entity entity = get(dataDefinitionToDeactivate, entityId);
        if (entity == null) {
            throw new IllegalStateException("Cannot deactivate " + entityId + " (entity not found)");
        }
        if (entity.isActive()) {
            entity.setActive(false);
            entity = save(dataDefinitionToDeactivate, entity);
            if (!entity.isValid()) {
                throw new IllegalStateException("Cannot deactivate " + entity + " because of validation errors");
            }
            LOG.debug(entity + " has been deactivated");
            deactivatedEntities.add(entity);
        }
    }
    return deactivatedEntities;
}
Also used : Entity(com.qcadoo.model.api.Entity) ArrayList(java.util.ArrayList) InternalDataDefinition(com.qcadoo.model.internal.api.InternalDataDefinition) Monitorable(com.qcadoo.model.api.aop.Monitorable) Transactional(org.springframework.transaction.annotation.Transactional)

Example 97 with Entity

use of com.qcadoo.model.api.Entity in project qcadoo by qcadoo.

the class DataAccessServiceImpl method copy.

@Override
@Transactional
@Monitorable
public List<Entity> copy(final InternalDataDefinition dataDefinition, final Long... entityIds) {
    InternalDataDefinition dataDefinitionToCopy = getDataDefinitionByMasterModel(dataDefinition);
    List<Entity> copiedEntities = new ArrayList<Entity>();
    for (Long entityId : entityIds) {
        Entity sourceEntity = get(dataDefinitionToCopy, entityId);
        Entity targetEntity = copy(dataDefinitionToCopy, sourceEntity);
        if (targetEntity == null) {
            throw new IllegalStateException("Cannot copy " + sourceEntity);
        }
        LOG.debug(sourceEntity + " has been copied to " + targetEntity);
        targetEntity = save(dataDefinitionToCopy, targetEntity);
        if (!targetEntity.isValid()) {
            throw new CopyException(targetEntity);
        }
        copiedEntities.add(targetEntity);
    }
    return copiedEntities;
}
Also used : Entity(com.qcadoo.model.api.Entity) CopyException(com.qcadoo.model.api.CopyException) ArrayList(java.util.ArrayList) InternalDataDefinition(com.qcadoo.model.internal.api.InternalDataDefinition) Monitorable(com.qcadoo.model.api.aop.Monitorable) Transactional(org.springframework.transaction.annotation.Transactional)

Example 98 with Entity

use of com.qcadoo.model.api.Entity in project qcadoo by qcadoo.

the class DataAccessServiceImpl method performCascadeNullification.

private EntityOpResult performCascadeNullification(final InternalDataDefinition childDataDefinition, final Collection<Entity> children, final Entity entity, final FieldType fieldType) {
    String joinFieldName = ((JoinFieldHolder) fieldType).getJoinFieldName();
    for (Entity child : children) {
        child.setField(joinFieldName, null);
        child = save(childDataDefinition, child);
        if (!child.isValid()) {
            String msg = String.format("Can not nullify field '%s' in %s because of following validation errors:", joinFieldName, child);
            logEntityErrors(child, msg);
            EntityMessagesHolder msgHolder = new EntityMessagesHolderImpl(child);
            msgHolder.addGlobalError("qcadooView.errorPage.error.dataIntegrityViolationException.objectInUse.explanation");
            return EntityOpResult.failure(msgHolder);
        }
    }
    return EntityOpResult.successfull();
}
Also used : Entity(com.qcadoo.model.api.Entity) JoinFieldHolder(com.qcadoo.model.api.types.JoinFieldHolder) EntityMessagesHolder(com.qcadoo.model.api.EntityMessagesHolder)

Example 99 with Entity

use of com.qcadoo.model.api.Entity in project qcadoo by qcadoo.

the class DataAccessServiceImpl method copyTreeField.

private void copyTreeField(final Entity sourceEntity, final Entity targetEntity, final DataDefinition dataDefinition, final String fieldName) {
    FieldDefinition fieldDefinition = dataDefinition.getField(fieldName);
    if (!isFieldCopyable(TreeType.class, fieldDefinition, dataDefinition)) {
        return;
    }
    TreeType treeType = ((TreeType) fieldDefinition.getType());
    List<Entity> entities = new ArrayList<Entity>();
    Entity root = sourceEntity.getTreeField(fieldName).getRoot();
    if (root != null) {
        root.setField(treeType.getJoinFieldName(), null);
        root = copy((InternalDataDefinition) treeType.getDataDefinition(), root);
        if (root != null) {
            entities.add(root);
        }
    }
    targetEntity.setField(fieldName, entities);
}
Also used : TreeType(com.qcadoo.model.api.types.TreeType) Entity(com.qcadoo.model.api.Entity) FieldDefinition(com.qcadoo.model.api.FieldDefinition) InternalFieldDefinition(com.qcadoo.model.internal.api.InternalFieldDefinition) ArrayList(java.util.ArrayList) InternalDataDefinition(com.qcadoo.model.internal.api.InternalDataDefinition)

Example 100 with Entity

use of com.qcadoo.model.api.Entity in project qcadoo by qcadoo.

the class DataAccessServiceImpl method performCascadeDelete.

private EntityOpResult performCascadeDelete(final InternalDataDefinition childDataDefinition, final Collection<Entity> children, final boolean testOnly, final Set<EntitySignature> traversedEntities) {
    for (Entity child : children) {
        EntitySignature childSignature = EntitySignature.of(child);
        if (!traversedEntities.contains(childSignature)) {
            traversedEntities.add(childSignature);
            EntityOpResult result = deleteEntity(childDataDefinition, child.getId(), testOnly, traversedEntities);
            if (!result.isSuccessfull()) {
                return result;
            }
        }
    }
    return EntityOpResult.successfull();
}
Also used : Entity(com.qcadoo.model.api.Entity) EntitySignature(com.qcadoo.model.internal.utils.EntitySignature) EntityOpResult(com.qcadoo.model.api.EntityOpResult)

Aggregations

Entity (com.qcadoo.model.api.Entity)2833 FormComponent (com.qcadoo.view.api.components.FormComponent)514 Test (org.junit.Test)491 BigDecimal (java.math.BigDecimal)376 DataDefinition (com.qcadoo.model.api.DataDefinition)337 FieldComponent (com.qcadoo.view.api.components.FieldComponent)210 LookupComponent (com.qcadoo.view.api.components.LookupComponent)188 Date (java.util.Date)185 List (java.util.List)149 GridComponent (com.qcadoo.view.api.components.GridComponent)141 Map (java.util.Map)124 Autowired (org.springframework.beans.factory.annotation.Autowired)114 Service (org.springframework.stereotype.Service)112 SearchCriteriaBuilder (com.qcadoo.model.api.search.SearchCriteriaBuilder)105 Transactional (org.springframework.transaction.annotation.Transactional)101 DefaultEntity (com.qcadoo.model.internal.DefaultEntity)100 DataDefinitionService (com.qcadoo.model.api.DataDefinitionService)95 Collectors (java.util.stream.Collectors)87 Lists (com.google.common.collect.Lists)75 SampleSimpleDatabaseObject (com.qcadoo.model.beans.sample.SampleSimpleDatabaseObject)75