/** * Create project. Should be protected with RBAC. * * @param vo * the object to create. * @return the entity's identifier. */ @POST public int create(final ProjectEditionVo vo) { return repository.saveAndFlush(ProjectResource.toEntity(vo)).getId(); }
/** * Write <code>subscription;project;projetKey;projectName;node</code>. * * @param writer * Target output. * @param subscription * Related subscription. */ private void writeCommon(final Writer writer, final Subscription subscription) throws IOException { final Project project = subscription.getProject(); writer.write('\n'); writer.write(String.valueOf(subscription.getId())); writer.write(';'); writer.write(String.valueOf(project.getId())); writer.write(';'); writer.write(project.getPkey()); writer.write(';'); writer.write(project.getName().replaceAll("\"", "'")); writer.write(';'); writer.write(subscription.getNode().getId()); }
/** * Converter from {@link Project} to {@link ProjectVo} with the associated subscriptions. * * @param project * Entity to convert. * @return The project description with subscriptions. */ public ProjectVo toVo(final Project project) { // Get subscriptions final List<Object[]> subscriptionsResultSet = subscriptionRepository .findAllWithValuesSecureByProject(project.getId()); // Get subscriptions status final Map<Integer, EventVo> subscriptionStatus = subscriptionResource.getStatusByProject(project.getId()); // Convert users, project and subscriptions final ProjectVo projectVo = new ToVoConverter(toUser(), subscriptionsResultSet, subscriptionStatus) .apply(project); projectVo.setManageSubscriptions(repository.isManageSubscription(project.getId(), securityHelper.getLogin())); return projectVo; }
@Override public Subscription checkVisible(final Integer id) { final Subscription entity = repository.findOneExpected(id); if (projectRepository.findOneVisible(entity.getProject().getId(), securityHelper.getLogin()) == null) { // Associated project is not visible, reject the subscription access throw new EntityNotFoundException(String.valueOf(id)); } return entity; }
/** * Delete entity and cascaded associations : parameters, events then subscription. * * @param id * the entity identifier. * @param deleteRemoteData * When <code>true</code>, remote data will be also destroyed. * @throws Exception * When the delete fails. Managed at JAX-RS level. */ @Path("{id:\\d+}/{deleteRemoteData}") @DELETE public void delete(@PathParam("id") final int id, @PathParam("deleteRemoteData") final boolean deleteRemoteData) throws Exception { final Subscription entity = checkVisible(id); checkManagedProject(entity.getProject().getId()); // Delete the events eventRepository.deleteAllBy("subscription", entity); // Delegate the deletion deleteWithTasks(entity.getNode().getId(), id, deleteRemoteData); parameterValueResource.deleteBySubscription(id); repository.delete(entity); }
/** * Check the visibility of a configured entity. * * @param configured * The requested configured entity. * @param <K> * The {@link Configurable} identifier type. * @param <T> * The {@link Configurable} type. * @return The formal entity parameter. */ protected <K extends Serializable, T extends Configurable<C, K>> T checkConfiguredVisibility(final T configured) { final Subscription entity = subscriptionRepository .findOneExpected(configured.getConfiguration().getSubscription().getId()); if (projectRepository.findOneVisible(entity.getProject().getId(), securityHelper.getLogin()) == null) { // Associated project is not visible, reject the configuration access throw new EntityNotFoundException(configured.getId().toString()); } return configured; }
/** * Refresh given subscriptions and return their status. */ private SubscriptionStatusWithData refreshSubscription(final Subscription subscription) { final Map<String, String> parameters = getParameters(subscription.getId()); final SubscriptionStatusWithData statusWithData = nodeResource.checkSubscriptionStatus(subscription, parameters); statusWithData.setId(subscription.getId()); statusWithData.setProject(subscription.getProject().getId()); statusWithData.setParameters(parameterValueResource.getNonSecuredSubscriptionParameters(subscription.getId())); // Update the last event with fresh data eventResource.registerEvent(subscription, EventType.STATUS, statusWithData.getStatus().name()); // Return the fresh statuses return statusWithData; }