Example usage for java.time.temporal ChronoUnit MINUTES

List of usage examples for java.time.temporal ChronoUnit MINUTES

Introduction

In this page you can find the example usage for java.time.temporal ChronoUnit MINUTES.

Prototype

ChronoUnit MINUTES

To view the source code for java.time.temporal ChronoUnit MINUTES.

Click Source Link

Document

Unit that represents the concept of a minute.

Usage

From source file:org.tightblog.ui.restapi.WeblogEntryController.java

@PostMapping(value = "/{weblogId}/entries")
public ResponseEntity postEntry(@PathVariable String weblogId, @Valid @RequestBody WeblogEntry entryData,
        Locale locale, Principal p) throws ServletException {

    try {/*ww w  .j  av  a2  s .  c o  m*/

        boolean createNew = false;
        WeblogEntry entry = null;

        if (entryData.getId() != null) {
            entry = weblogEntryRepository.findByIdOrNull(entryData.getId());
        }

        // Check user permissions
        User user = userRepository.findEnabledByUserName(p.getName());
        Weblog weblog = (entry == null) ? weblogRepository.findById(weblogId).orElse(null) : entry.getWeblog();

        WeblogRole necessaryRole = (PubStatus.PENDING.equals(entryData.getStatus())
                || PubStatus.DRAFT.equals(entryData.getStatus())) ? WeblogRole.EDIT_DRAFT : WeblogRole.POST;
        if (weblog != null && userManager.checkWeblogRole(user, weblog, necessaryRole)) {

            // create new?
            if (entry == null) {
                createNew = true;
                entry = new WeblogEntry();
                entry.setCreator(user);
                entry.setWeblog(weblog);
                entry.setEditFormat(entryData.getEditFormat());
                entryData.setWeblog(weblog);
            }

            entry.setUpdateTime(Instant.now());
            Instant pubTime = calculatePubTime(entryData);
            entry.setPubTime((pubTime != null) ? pubTime : entry.getUpdateTime());

            if (PubStatus.PUBLISHED.equals(entryData.getStatus())
                    && entry.getPubTime().isAfter(Instant.now().plus(1, ChronoUnit.MINUTES))) {
                entryData.setStatus(PubStatus.SCHEDULED);
            }

            entry.setStatus(entryData.getStatus());
            entry.setTitle(entryData.getTitle());
            entry.setText(entryData.getText());
            entry.setSummary(entryData.getSummary());
            entry.setNotes(entryData.getNotes());
            if (!StringUtils.isEmpty(entryData.getTagsAsString())) {
                entry.updateTags(
                        new HashSet<>(Arrays.asList(entryData.getTagsAsString().trim().split("\\s+"))));
            } else {
                entry.updateTags(new HashSet<>());
            }
            entry.setSearchDescription(entryData.getSearchDescription());
            entry.setEnclosureUrl(entryData.getEnclosureUrl());
            WeblogCategory category = weblogCategoryRepository.findById(entryData.getCategory().getId())
                    .orElse(null);
            if (category != null) {
                entry.setCategory(category);
            } else {
                throw new IllegalArgumentException("Category is invalid.");
            }

            entry.setCommentDays(entryData.getCommentDays());

            if (!StringUtils.isEmpty(entry.getEnclosureUrl())) {
                // Fetch MediaCast resource
                log.debug("Checking MediaCast attributes");
                AtomEnclosure enclosure;

                try {
                    enclosure = weblogEntryManager.generateEnclosure(entry.getEnclosureUrl());
                } catch (IllegalArgumentException e) {
                    BindException be = new BindException(entry, "new data object");
                    be.addError(new ObjectError("Enclosure URL",
                            messages.getMessage(e.getMessage(), null, locale)));
                    return ResponseEntity.badRequest().body(ValidationError.fromBindingErrors(be));
                }

                // set enclosure attributes
                entry.setEnclosureUrl(enclosure.getUrl());
                entry.setEnclosureType(enclosure.getContentType());
                entry.setEnclosureLength(enclosure.getLength());
            }

            weblogEntryManager.saveWeblogEntry(entry);
            dp.updateLastSitewideChange();

            // notify search of the new entry
            if (entry.isPublished()) {
                luceneIndexer.updateIndex(entry, false);
            } else if (!createNew) {
                luceneIndexer.updateIndex(entry, true);
            }

            if (PubStatus.PENDING.equals(entry.getStatus())) {
                emailService.sendPendingEntryNotice(entry);
            }

            SuccessfulSaveResponse ssr = new SuccessfulSaveResponse();
            ssr.entryId = entry.getId();

            switch (entry.getStatus()) {
            case DRAFT:
                ssr.message = messages.getMessage("entryEdit.draftSaved", null, locale);
                break;
            case PUBLISHED:
                ssr.message = messages.getMessage("entryEdit.publishedEntry", null, locale);
                break;
            case SCHEDULED:
                ssr.message = messages.getMessage(
                        "entryEdit.scheduledEntry", new Object[] { DateTimeFormatter.ISO_DATE_TIME
                                .withZone(entry.getWeblog().getZoneId()).format(entry.getPubTime()) },
                        null, locale);
                break;
            case PENDING:
                ssr.message = messages.getMessage("entryEdit.submittedForReview", null, locale);
                break;
            default:
            }

            return ResponseEntity.ok(ssr);
        } else {
            return ResponseEntity.status(403).body(messages.getMessage("error.title.403", null, locale));
        }
    } catch (Exception e) {
        throw new ServletException(e.getMessage());
    }
}

From source file:com.ikanow.aleph2.management_db.services.DataBucketCrudService.java

/** Internal function to delete the bucket, while notifying active users of the bucket
 * @param to_delete/*from w  w  w.j a v  a  2s.com*/
 * @return a management future containing the result 
 */
private ManagementFuture<Boolean> deleteBucket(final DataBucketBean to_delete) {
    try {
        // Also delete the file paths (currently, just add ".deleted" to top level path) 
        deleteFilePath(to_delete, _storage_service.get());
        //delete the logging path as well if it exists (it's okay if it fails, should mean it doesn't exist)
        try {
            deleteFilePath(BucketUtils.convertDataBucketBeanToLogging(to_delete), _storage_service.get());
        } catch (Exception ex) {
        }

        // Add to the deletion queue (do it before trying to delete the bucket in case this bucket deletion fails - if so then delete queue will retry every hour)
        final Date to_delete_date = Timestamp.from(Instant.now().plus(1L, ChronoUnit.MINUTES));
        final CompletableFuture<Supplier<Object>> enqueue_delete = this._bucket_deletion_queue.get()
                .storeObject(new BucketDeletionMessage(to_delete, to_delete_date, false));

        final CompletableFuture<Boolean> delete_reply = enqueue_delete
                .thenCompose(__ -> _underlying_data_bucket_db.get().deleteObjectById(to_delete._id()));

        return FutureUtils.denestManagementFuture(delete_reply.thenCompose(del_reply -> {
            if (!del_reply) { // Didn't find an object to delete, just return that information to the user
                return CompletableFuture.completedFuture(Optional.empty());
            } else { //Get the status and delete it 

                final CompletableFuture<Optional<DataBucketStatusBean>> future_status_bean = _underlying_data_bucket_status_db
                        .get().updateAndReturnObjectBySpec(
                                CrudUtils.allOf(DataBucketStatusBean.class).when(DataBucketStatusBean::_id,
                                        to_delete._id()),
                                Optional.empty(), CrudUtils.update(DataBucketStatusBean.class).deleteObject(),
                                Optional.of(true), Collections.emptyList(), false);

                return future_status_bean;
            }
        }).thenApply(status_bean -> {
            if (!status_bean.isPresent()) {
                return FutureUtils.createManagementFuture(delete_reply);
            } else {
                final BucketActionMessage.DeleteBucketActionMessage delete_message = new BucketActionMessage.DeleteBucketActionMessage(
                        to_delete,
                        new HashSet<String>(Optional
                                .ofNullable(status_bean.isPresent() ? status_bean.get().node_affinity() : null)
                                .orElse(Collections.emptyList())));

                final CompletableFuture<Collection<BasicMessageBean>> management_results = MgmtCrudUtils
                        .applyRetriableManagementOperation(to_delete, _actor_context,
                                _bucket_action_retry_store.get(), delete_message, source -> {
                                    return new BucketActionMessage.DeleteBucketActionMessage(
                                            delete_message.bucket(),
                                            new HashSet<String>(Arrays.asList(source)));
                                });

                // Convert BucketActionCollectedRepliesMessage into a management side-channel:
                return FutureUtils.createManagementFuture(delete_reply, management_results);
            }
        }));
    } catch (Exception e) {
        // This is a serious enough exception that we'll just leave here
        return FutureUtils.createManagementFuture(FutureUtils.returnError(e));
    }
}

From source file:fll.scheduler.GreedySolver.java

/**
 * Populate {@link #perfEarliestTimes} to cache performance earliest start
 * times.//from   ww w. jav  a2  s .  c  o  m
 */
private void populatePerfEarliestTimes() {
    final List<LocalTime> times = solverParameters.getPerformanceRoundEarliestStartTimes();
    perfEarliestTimes = new long[times.size()];
    for (int i = 0; i < perfEarliestTimes.length; ++i) {
        final LocalTime time = times.get(i);
        if (null != time) {
            final long offset = ChronoUnit.MINUTES.between(solverParameters.getStartTime(), time);
            perfEarliestTimes[i] = offset;
        } else {
            perfEarliestTimes[i] = 0; // can start right away
        }
    }
}

From source file:fll.scheduler.GreedySolver.java

/**
 * Check if the interval [begin, end] overlaps a break.
 * /*  www .  j a v  a  2 s  .c  om*/
 * @param begin the start of the interval (in minutes from start)
 * @param end the end of the interval (in minutes from start)
 * @param breaks the breaks to check against
 * @return true if there is no overlap, false if there is an overlap
 */
private boolean checkBreak(final int begin, final int end, final Collection<ScheduledBreak> breaks) {
    for (final ScheduledBreak b : breaks) {
        final long breakStartOffsetMinutes = ChronoUnit.MINUTES.between(solverParameters.getStartTime(),
                b.getStart());
        final long breakDurationMinutes = b.getDuration().toMinutes();
        final long breakEndOffsetMinutes = breakStartOffsetMinutes + breakDurationMinutes;

        if (breakStartOffsetMinutes < end && breakEndOffsetMinutes > begin) {
            return false;
        }
    }

    return true;
}