List of usage examples for java.time.temporal ChronoUnit MINUTES
ChronoUnit MINUTES
To view the source code for java.time.temporal ChronoUnit MINUTES.
Click Source Link
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; }