Search in sources :

Example 1 with PlanQuery

use of io.gravitee.rest.api.model.plan.PlanQuery in project gravitee-management-rest-api by gravitee-io.

the class PlanServiceImpl method createOrUpdatePlan.

@Override
public PlanEntity createOrUpdatePlan(PlanEntity planEntity, final String environmentId) {
    PlanEntity resultPlanEntity;
    if (planEntity.getId() != null) {
        try {
            findById(planEntity.getId());
            resultPlanEntity = update(UpdatePlanEntity.from(planEntity));
        } catch (PlanNotFoundException npe) {
            resultPlanEntity = create(NewPlanEntity.from(planEntity));
        }
    } else {
        PlanQuery query = new PlanQuery.Builder().api(planEntity.getApi()).name(planEntity.getName()).security(planEntity.getSecurity()).build();
        List<PlanEntity> planEntities = search(query).stream().filter(dbPlan -> !PlanStatus.CLOSED.equals(dbPlan.getStatus())).collect(toList());
        if (planEntities.isEmpty()) {
            resultPlanEntity = create(NewPlanEntity.from(planEntity));
        } else if (planEntities.size() == 1) {
            UpdatePlanEntity updatePlanEntity = UpdatePlanEntity.from(planEntity);
            updatePlanEntity.setId(planEntities.get(0).getId());
            resultPlanEntity = update(updatePlanEntity);
        } else {
            logger.error("Not able to identify the plan to update: {}. Too much plan with the same name", planEntity.getName());
            throw new TechnicalManagementException("Not able to identify the plan to update: " + planEntity.getName() + ". Too much plan with the same name");
        }
    }
    return resultPlanEntity;
}
Also used : PlanQuery(io.gravitee.rest.api.model.plan.PlanQuery) io.gravitee.rest.api.service(io.gravitee.rest.api.service) java.util(java.util) ApiLifecycleState(io.gravitee.rest.api.model.api.ApiLifecycleState) Flow(io.gravitee.definition.model.flow.Flow) TechnicalException(io.gravitee.repository.exceptions.TechnicalException) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) Rule(io.gravitee.definition.model.Rule) Plan(io.gravitee.repository.management.model.Plan) PLAN(io.gravitee.repository.management.model.Audit.AuditProperties.PLAN) UpdateApiEntity(io.gravitee.rest.api.model.api.UpdateApiEntity) io.gravitee.rest.api.model(io.gravitee.rest.api.model) TypeReference(com.fasterxml.jackson.core.type.TypeReference) UuidString(io.gravitee.rest.api.service.common.UuidString) ApiEntity(io.gravitee.rest.api.model.api.ApiEntity) PlanQuery(io.gravitee.rest.api.model.plan.PlanQuery) Logger(org.slf4j.Logger) Collections.emptySet(java.util.Collections.emptySet) ParameterReferenceType(io.gravitee.rest.api.model.parameters.ParameterReferenceType) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) PlanRepository(io.gravitee.repository.management.api.PlanRepository) Key(io.gravitee.rest.api.model.parameters.Key) PlanSynchronizationProcessor(io.gravitee.rest.api.service.processor.PlanSynchronizationProcessor) Collectors.toList(java.util.stream.Collectors.toList) Component(org.springframework.stereotype.Component) DefinitionVersion(io.gravitee.definition.model.DefinitionVersion) io.gravitee.rest.api.service.exceptions(io.gravitee.rest.api.service.exceptions) AuditEvent(io.gravitee.repository.management.model.Plan.AuditEvent)

Aggregations

JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 TypeReference (com.fasterxml.jackson.core.type.TypeReference)1 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 DefinitionVersion (io.gravitee.definition.model.DefinitionVersion)1 Rule (io.gravitee.definition.model.Rule)1 Flow (io.gravitee.definition.model.flow.Flow)1 TechnicalException (io.gravitee.repository.exceptions.TechnicalException)1 PlanRepository (io.gravitee.repository.management.api.PlanRepository)1 PLAN (io.gravitee.repository.management.model.Audit.AuditProperties.PLAN)1 Plan (io.gravitee.repository.management.model.Plan)1 AuditEvent (io.gravitee.repository.management.model.Plan.AuditEvent)1 io.gravitee.rest.api.model (io.gravitee.rest.api.model)1 ApiEntity (io.gravitee.rest.api.model.api.ApiEntity)1 ApiLifecycleState (io.gravitee.rest.api.model.api.ApiLifecycleState)1 UpdateApiEntity (io.gravitee.rest.api.model.api.UpdateApiEntity)1 Key (io.gravitee.rest.api.model.parameters.Key)1 ParameterReferenceType (io.gravitee.rest.api.model.parameters.ParameterReferenceType)1 PlanQuery (io.gravitee.rest.api.model.plan.PlanQuery)1 io.gravitee.rest.api.service (io.gravitee.rest.api.service)1 UuidString (io.gravitee.rest.api.service.common.UuidString)1