List of usage examples for org.joda.time Interval getEnd
public DateTime getEnd()
From source file:com.marand.thinkmed.medications.service.impl.MedicationsServiceImpl.java
License:Open Source License
@Override @Transactional(readOnly = true)//w w w. j a va2 s . co m @ServiceMethod(auditing = @Auditing(level = Level.WITHOUT_OUTPUT_RESULTS)) @EhrSessioned public List<MedicationOnDischargeGroupDto> getTherapiesOnDischargeGroups(final String patientId, final Double patientHeight, @Nullable final DateTime saveDateTime, final DateTime lastHospitalizationStart, final boolean hospitalizationActive, @Nullable final Locale locale) { Preconditions.checkNotNull(patientId, "patientId must not be null"); Preconditions.checkNotNull(lastHospitalizationStart, "lastHospitalizationStart must not be null"); final DateTime when = saveDateTime == null ? RequestContextHolder.getContext().getRequestTimestamp() : saveDateTime; final Interval referenceWeightInterval = Intervals.infiniteTo(when); if (hospitalizationActive) { final Interval searchInterval = Intervals.infiniteFrom(when); final Double referenceWeight = medicationsOpenEhrDao.getPatientLastReferenceWeight(patientId, referenceWeightInterval); return medicationsBo.getMedicationOnDischargeGroups(patientId, lastHospitalizationStart, searchInterval, referenceWeight, patientHeight, locale, when); } else { final Interval lastDischargedCentralCaseInterval = medicationsConnector .getLastDischargedCentralCaseEffectiveInterval(patientId); final Interval lastHourBeforeDischarge = lastDischargedCentralCaseInterval == null ? null : new Interval(lastDischargedCentralCaseInterval.getEnd().minusHours(1), lastDischargedCentralCaseInterval.getEnd().plusMinutes(1)); final Double referenceWeight = medicationsOpenEhrDao.getPatientLastReferenceWeight(patientId, referenceWeightInterval); return medicationsBo.getMedicationOnDischargeGroups(patientId, lastHospitalizationStart, lastHourBeforeDischarge, referenceWeight, patientHeight, locale, when); } }
From source file:com.marand.thinkmed.medications.task.impl.MedicationsTasksProviderImpl.java
License:Open Source License
@Override public List<AdministrationTaskDto> findAdministrationTasks(final String patientId, final Collection<String> therapyIds, final Interval searchInterval, final boolean findHistoric) { if (therapyIds.isEmpty()) { return new ArrayList<>(); }/* www .ja va2s.c om*/ final List<TaskDto> tasks = findAdministrationTasks( Collections.singletonList(AdministrationTaskDef.getTaskTypeEnum().buildKey(patientId)), therapyIds, searchInterval != null ? searchInterval.getStart() : null, searchInterval != null ? searchInterval.getEnd() : null, null, findHistoric); return tasks.stream().map(task -> administrationTaskConverter.convertTaskToAdministrationTask(task)) .collect(Collectors.toList()); }
From source file:com.marand.thinkmed.medications.task.impl.MedicationsTasksProviderImpl.java
License:Open Source License
private Opt<TaskDto> findLastTaskForTherapy(final String patientId, final String therapyId, final Interval searchInterval, final boolean findHistoric) { final List<TaskDto> tasks = findAdministrationTasks( Collections.singletonList(AdministrationTaskDef.getTaskTypeEnum().buildKey(patientId)), Collections.singletonList(therapyId), searchInterval != null ? searchInterval.getStart() : null, searchInterval != null ? searchInterval.getEnd() : null, null, findHistoric); return Opt.from(tasks.stream().max(Comparator.comparing(TaskDto::getDueTime))); }
From source file:com.marand.thinkmed.medications.task.impl.MedicationsTasksProviderImpl.java
License:Open Source License
@Override public List<AdministrationPatientTaskDto> findAdministrationTasks( final Map<String, PatientDisplayWithLocationDto> patientWithLocationMap, final Interval searchInterval, final int maxNumberOfTasks, final Locale locale, final DateTime when) { final List<TaskDto> tasks = findAdministrationTasks(patientWithLocationMap.keySet(), searchInterval.getStart(), searchInterval.getEnd()); Collections.sort(tasks, (task1, task2) -> task1.getDueTime().compareTo(task2.getDueTime())); final List<TaskDto> filteredTasks = tasks.size() > maxNumberOfTasks ? tasks.subList(0, maxNumberOfTasks) : tasks;/*from ww w .j ava 2 s . c o m*/ final List<AdministrationPatientTaskDto> list = administrationTaskConverter .convertTasksToAdministrationPatientTasks(filteredTasks, patientWithLocationMap, locale, when); Collections.sort(list, (task1, task2) -> task1.getPlannedTime().compareTo(task2.getPlannedTime())); return list; }
From source file:com.metamx.common.Granularity.java
License:Apache License
/** * Round out Interval such that it becomes granularity-aligned and nonempty. *///from ww w . j ava 2 s . com public final Interval widen(Interval interval) { final DateTime start = truncate(interval.getStart()); final DateTime end; if (interval.getEnd().equals(start)) { // Empty with aligned start/end; expand into a granularity-sized interval end = increment(start); } else if (truncate(interval.getEnd()).equals(interval.getEnd())) { // Non-empty with aligned end; keep the same end end = interval.getEnd(); } else { // Non-empty with non-aligned end; push it out end = increment(truncate(interval.getEnd())); } return new Interval(start, end); }
From source file:com.metamx.common.JodaUtils.java
License:Apache License
public static ArrayList<Interval> condenseIntervals(Iterable<Interval> intervals) { ArrayList<Interval> retVal = Lists.newArrayList(); TreeSet<Interval> sortedIntervals = Sets.newTreeSet(Comparators.intervalsByStartThenEnd()); for (Interval interval : intervals) { sortedIntervals.add(interval);/*from w w w. jav a 2 s .c om*/ } if (sortedIntervals.isEmpty()) { return Lists.newArrayList(); } Iterator<Interval> intervalsIter = sortedIntervals.iterator(); Interval currInterval = intervalsIter.next(); while (intervalsIter.hasNext()) { Interval next = intervalsIter.next(); if (currInterval.overlaps(next) || currInterval.abuts(next)) { currInterval = new Interval(currInterval.getStart(), next.getEnd()); } else { retVal.add(currInterval); currInterval = next; } } retVal.add(currInterval); return retVal; }
From source file:com.metamx.common.JodaUtils.java
License:Apache License
public static Interval umbrellaInterval(Iterable<Interval> intervals) { ArrayList<DateTime> startDates = Lists.newArrayList(); ArrayList<DateTime> endDates = Lists.newArrayList(); for (Interval interval : intervals) { startDates.add(interval.getStart()); endDates.add(interval.getEnd()); }/*from ww w.j ava 2s . c o m*/ DateTime minStart = minDateTime(startDates.toArray(new DateTime[] {})); DateTime maxEnd = maxDateTime(endDates.toArray(new DateTime[] {})); if (minStart == null || maxEnd == null) { throw new IllegalArgumentException("Empty list of intervals"); } return new Interval(minStart, maxEnd); }
From source file:com.metamx.druid.index.v1.IncrementalIndexStorageAdapter.java
License:Open Source License
@Override public Iterable<Cursor> makeCursors(final Filter filter, final Interval interval, final QueryGranularity gran) { Interval actualIntervalTmp = interval; Interval dataInterval = getInterval(); if (!actualIntervalTmp.overlaps(dataInterval)) { return ImmutableList.of(); }/*from ww w. jav a 2 s . c o m*/ if (actualIntervalTmp.getStart().isBefore(dataInterval.getStart())) { actualIntervalTmp = actualIntervalTmp.withStart(dataInterval.getStart()); } if (actualIntervalTmp.getEnd().isAfter(dataInterval.getEnd())) { actualIntervalTmp = actualIntervalTmp.withEnd(dataInterval.getEnd()); } final Interval actualInterval = actualIntervalTmp; return new Iterable<Cursor>() { @Override public Iterator<Cursor> iterator() { return FunctionalIterator.create( gran.iterable(actualInterval.getStartMillis(), actualInterval.getEndMillis()).iterator()) .transform(new Function<Long, Cursor>() { EntryHolder currEntry = new EntryHolder(); private final ValueMatcher filterMatcher; { filterMatcher = makeFilterMatcher(filter, currEntry); } @Override public Cursor apply(@Nullable final Long input) { final long timeStart = Math.max(input, actualInterval.getStartMillis()); return new Cursor() { private Iterator<Map.Entry<IncrementalIndex.TimeAndDims, Aggregator[]>> baseIter; private ConcurrentNavigableMap<IncrementalIndex.TimeAndDims, Aggregator[]> cursorMap; final DateTime time; int numAdvanced = -1; boolean done; { cursorMap = index.getSubMap( new IncrementalIndex.TimeAndDims(timeStart, new String[][] {}), new IncrementalIndex.TimeAndDims(Math .min(actualInterval.getEndMillis(), gran.next(timeStart)), new String[][] {})); time = gran.toDateTime(input); reset(); } @Override public DateTime getTime() { return time; } @Override public void advance() { if (!baseIter.hasNext()) { done = true; return; } while (baseIter.hasNext()) { currEntry.set(baseIter.next()); if (filterMatcher.matches()) { return; } } if (!filterMatcher.matches()) { done = true; } } @Override public boolean isDone() { return done; } @Override public void reset() { baseIter = cursorMap.entrySet().iterator(); if (numAdvanced == -1) { numAdvanced = 0; while (baseIter.hasNext()) { currEntry.set(baseIter.next()); if (filterMatcher.matches()) { return; } numAdvanced++; } } else { Iterators.skip(baseIter, numAdvanced); if (baseIter.hasNext()) { currEntry.set(baseIter.next()); } } done = cursorMap.size() == 0 || !baseIter.hasNext(); } @Override public DimensionSelector makeDimensionSelector(String dimension) { final String dimensionName = dimension.toLowerCase(); final IncrementalIndex.DimDim dimValLookup = index .getDimension(dimensionName); if (dimValLookup == null) { return null; } final int maxId = dimValLookup.size(); final int dimIndex = index.getDimensionIndex(dimensionName); return new DimensionSelector() { @Override public IndexedInts getRow() { final ArrayList<Integer> vals = Lists.newArrayList(); if (dimIndex < currEntry.getKey().getDims().length) { final String[] dimVals = currEntry.getKey().getDims()[dimIndex]; if (dimVals != null) { for (String dimVal : dimVals) { int id = dimValLookup.getId(dimVal); if (id < maxId) { vals.add(id); } } } } return new IndexedInts() { @Override public int size() { return vals.size(); } @Override public int get(int index) { return vals.get(index); } @Override public Iterator<Integer> iterator() { return vals.iterator(); } }; } @Override public int getValueCardinality() { return dimValLookup.size(); } @Override public String lookupName(int id) { return dimValLookup.getValue(id); } @Override public int lookupId(String name) { return dimValLookup.getId(name); } }; } @Override public FloatMetricSelector makeFloatMetricSelector(String metric) { final String metricName = metric.toLowerCase(); final Integer metricIndexInt = index.getMetricIndex(metricName); if (metricIndexInt == null) { return new FloatMetricSelector() { @Override public float get() { return 0.0f; } }; } final int metricIndex = metricIndexInt; return new FloatMetricSelector() { @Override public float get() { return currEntry.getValue()[metricIndex].getFloat(); } }; } @Override public ComplexMetricSelector makeComplexMetricSelector(String metric) { final String metricName = metric.toLowerCase(); final Integer metricIndexInt = index.getMetricIndex(metricName); if (metricIndexInt == null) { return null; } final int metricIndex = metricIndexInt; final ComplexMetricSerde serde = ComplexMetrics .getSerdeForType(index.getMetricType(metricName)); return new ComplexMetricSelector() { @Override public Class classOfObject() { return serde.getObjectStrategy().getClazz(); } @Override public Object get() { return currEntry.getValue()[metricIndex].get(); } }; } }; } }); } }; }
From source file:com.metamx.druid.index.v1.IndexMerger.java
License:Open Source License
public static void createIndexDrdFile(byte versionId, File inDir, GenericIndexed<String> availableDimensions, GenericIndexed<String> availableMetrics, Interval dataInterval) throws IOException { File indexFile = new File(inDir, "index.drd"); FileChannel channel = null;// ww w . j a va 2 s. c o m try { channel = new FileOutputStream(indexFile).getChannel(); channel.write(ByteBuffer.wrap(new byte[] { versionId })); availableDimensions.writeToChannel(channel); availableMetrics.writeToChannel(channel); serializerUtils.writeString(channel, String.format("%s/%s", dataInterval.getStart(), dataInterval.getEnd())); } finally { Closeables.closeQuietly(channel); channel = null; } IndexIO.checkFileSize(indexFile); }
From source file:com.metamx.druid.index.v1.IndexStorageAdapter.java
License:Open Source License
@Override public Iterable<Cursor> makeCursors(final Filter filter, final Interval interval, final QueryGranularity gran) { Interval actualIntervalTmp = interval; if (!actualIntervalTmp.overlaps(index.dataInterval)) { return ImmutableList.of(); }//from w ww.j av a 2s .c o m if (actualIntervalTmp.getStart().isBefore(index.dataInterval.getStart())) { actualIntervalTmp = actualIntervalTmp.withStart(index.dataInterval.getStart()); } if (actualIntervalTmp.getEnd().isAfter(index.dataInterval.getEnd())) { actualIntervalTmp = actualIntervalTmp.withEnd(index.dataInterval.getEnd()); } final Interval actualInterval = actualIntervalTmp; final Pair<Integer, Integer> intervalStartAndEnd = computeTimeStartEnd(actualInterval); return new Iterable<Cursor>() { @Override public Iterator<Cursor> iterator() { final Offset baseOffset; if (filter == null) { baseOffset = new ArrayBasedOffset(ids, intervalStartAndEnd.lhs); } else { baseOffset = new StartLimitedOffset( new ConciseOffset(filter.goConcise(new IndexBasedBitmapIndexSelector(index))), intervalStartAndEnd.lhs); } final Map<String, Object> metricHolderCache = Maps.newHashMap(); // This after call is not perfect, if there is an exception during processing, it will never get called, // but it's better than nothing and doing this properly all the time requires a lot more fixerating return MoreIterators.after(FunctionalIterator.create( gran.iterable(actualInterval.getStartMillis(), actualInterval.getEndMillis()).iterator()) .keep(new Function<Long, Cursor>() { @Override public Cursor apply(final Long intervalStart) { final Offset offset = new TimestampCheckingOffset(baseOffset, index.timeOffsets, Math.min(actualInterval.getEndMillis(), gran.next(intervalStart))); return new Cursor() { private final Offset initOffset = offset.clone(); private Offset cursorOffset = offset; private final DateTime timestamp = gran.toDateTime(intervalStart); @Override public DateTime getTime() { return timestamp; } @Override public void advance() { cursorOffset.increment(); } @Override public boolean isDone() { return !cursorOffset.withinBounds(); } @Override public void reset() { cursorOffset = initOffset.clone(); } @Override public DimensionSelector makeDimensionSelector(String dimension) { final String dimensionName = dimension.toLowerCase(); final String[] nameLookup = index.reverseDimLookup.get(dimensionName); if (nameLookup == null) { return null; } return new DimensionSelector() { final Map<String, Integer> dimValLookup = index.dimIdLookup .get(dimensionName); final DimensionColumn dimColumn = index.dimensionValues .get(dimensionName); final int[][] dimensionExpansions = dimColumn.getDimensionExpansions(); final int[] dimensionRowValues = dimColumn.getDimensionRowValues(); @Override public IndexedInts getRow() { return new ArrayBasedIndexedInts( dimensionExpansions[dimensionRowValues[cursorOffset .getOffset()]]); } @Override public int getValueCardinality() { return nameLookup.length; } @Override public String lookupName(int id) { return nameLookup[id]; } @Override public int lookupId(String name) { final Integer retVal = dimValLookup.get(name); return retVal == null ? -1 : retVal; } }; } @Override public FloatMetricSelector makeFloatMetricSelector(String metric) { String metricName = metric.toLowerCase(); IndexedFloats cachedFloats = (IndexedFloats) metricHolderCache.get(metric); if (cachedFloats == null) { MetricHolder holder = index.metricVals.get(metricName); if (holder == null) { return new FloatMetricSelector() { @Override public float get() { return 0.0f; } }; } cachedFloats = holder.getFloatType(); metricHolderCache.put(metricName, cachedFloats); } final IndexedFloats metricVals = cachedFloats; return new FloatMetricSelector() { @Override public float get() { return metricVals.get(cursorOffset.getOffset()); } }; } @Override public ComplexMetricSelector makeComplexMetricSelector(String metric) { final String metricName = metric.toLowerCase(); Indexed cachedComplex = (Indexed) metricHolderCache.get(metricName); if (cachedComplex == null) { MetricHolder holder = index.metricVals.get(metricName); if (holder != null) { cachedComplex = holder.getComplexType(); metricHolderCache.put(metricName, cachedComplex); } } if (cachedComplex == null) { return null; } final Indexed vals = cachedComplex; return new ComplexMetricSelector() { @Override public Class classOfObject() { return vals.getClazz(); } @Override public Object get() { return vals.get(cursorOffset.getOffset()); } }; } }; } }), new Runnable() { @Override public void run() { for (Object object : metricHolderCache.values()) { if (object instanceof Closeable) { Closeables.closeQuietly((Closeable) object); } } } }); } }; }