/** * {@inheritDoc} */ @Override public DefaultData getLastDataObject(DefaultData template) { StorageIndexQuery query = storageIndexQueryProvider.createNewStorageIndexQuery(); query.setMinId(template.getId()); ArrayList<Class<?>> searchClasses = new ArrayList<>(); searchClasses.add(template.getClass()); query.setObjectClasses(searchClasses); query.setPlatformIdent(template.getPlatformIdent()); query.setSensorTypeIdent(template.getSensorTypeIdent()); List<DefaultData> resultList = super.executeQuery(query); if (CollectionUtils.isNotEmpty(resultList)) { Iterator<DefaultData> it = resultList.iterator(); DefaultData lastObject = it.next(); while (it.hasNext()) { DefaultData next = it.next(); if (next.getTimeStamp().after(lastObject.getTimeStamp())) { lastObject = next; } } return lastObject; } else { return null; } }
/** * {@inheritDoc} */ @Override public boolean canBeProcessed(DefaultData defaultData) { return defaultData.isQueryComplied(query); }
/** * Returns the approximate size of the object in the memory in bytes. * * @param objectSizes * Appropriate instance of {@link IObjectSizes} depending on the VM architecture. * @return Approximate object size in bytes. */ @Override public long getObjectSize(IObjectSizes objectSizes) { return this.getObjectSize(objectSizes, true); }
/** * {@inheritDoc} */ @Override public int compare(DefaultData o1, DefaultData o2) { switch (this) { case TIMESTAMP: return ObjectUtils.compare(o1.getTimeStamp(), o2.getTimeStamp()); case ID: return Longs.compare(o1.getId(), o2.getId()); default: return 0; } } }
/** * {@inheritDoc} */ @Override public List<DefaultData> findByExampleSinceIdIgnoreMethodId(DefaultData template) { CriteriaBuilder builder = entityManager.getCriteriaBuilder(); CriteriaQuery<DefaultData> criteria = builder.createQuery(DefaultData.class); Root<? extends DefaultData> root = criteria.from(template.getClass()); criteria.select(root); Predicate id = builder.greaterThan(root.<Long> get("id"), template.getId()); Predicate platformId = builder.equal(root.get("platformIdent"), template.getPlatformIdent()); criteria.where(id, platformId); return entityManager.createQuery(criteria).getResultList(); }
involvedAgentsSet.add(defaultData.getPlatformIdent()); if (oldestData > defaultData.getTimeStamp().getTime()) { if (oldestDataTimestamp.compareAndSet(oldestData, defaultData.getTimeStamp().getTime())) { break; if (newestData < defaultData.getTimeStamp().getTime()) { if (newestDataTimestamp.compareAndSet(newestData, defaultData.getTimeStamp().getTime())) { break;
/** * Default constructor. * * @param referent * Object to refer to. * @param q * Reference queue to register Weak reference with. * @see WeakReference#WeakReference(Object, ReferenceQueue) */ public CustomWeakReference(T referent, ReferenceQueue<? super T> q) { super(referent, q); referentId = referent.getId(); }
/** * {@inheritDoc} */ @Override public List<DefaultData> findByExampleWithLastInterval(DefaultData template, long timeInterval) { CriteriaBuilder builder = entityManager.getCriteriaBuilder(); CriteriaQuery<DefaultData> criteria = builder.createQuery(DefaultData.class); Root<? extends DefaultData> root = criteria.from(template.getClass()); criteria.select(root); Predicate platformId = builder.equal(root.get("platformIdent"), template.getPlatformIdent()); Predicate sensorTypeId = builder.equal(root.get("sensorTypeIdent"), template.getSensorTypeIdent()); Predicate timestamp = builder.greaterThan(root.<Timestamp> get("timeStamp"), new Timestamp(System.currentTimeMillis() - timeInterval)); if (template instanceof MethodSensorData) { MethodSensorData methodSensorData = (MethodSensorData) template; Predicate methodId = builder.equal(root.get("methodIdent"), methodSensorData.getMethodIdent()); criteria.where(platformId, sensorTypeId, timestamp, methodId); } else if (template instanceof JmxSensorValueData) { JmxSensorValueData jmxSensorValueData = (JmxSensorValueData) template; Predicate jmxSensorDefinitionDataId = builder.equal(root.get("jmxSensorDefinitionDataIdentId"), jmxSensorValueData.getJmxSensorDefinitionDataIdentId()); criteria.where(platformId, sensorTypeId, timestamp, jmxSensorDefinitionDataId); } else { criteria.where(platformId, sensorTypeId, timestamp); } return entityManager.createQuery(criteria).getResultList(); }
/** * {@inheritDoc} */ @Override public boolean canGenerateFor(DefaultData defaultData) { return null != defaultData.getTimeStamp(); }
/** * {@inheritDoc} */ @Override public List<DefaultData> findByExampleSinceId(DefaultData template) { CriteriaBuilder builder = entityManager.getCriteriaBuilder(); CriteriaQuery<DefaultData> criteria = builder.createQuery(DefaultData.class); Root<? extends DefaultData> root = criteria.from(template.getClass()); criteria.select(root); Predicate id = builder.greaterThan(root.<Long> get("id"), template.getId()); Predicate platformId = builder.equal(root.get("platformIdent"), template.getPlatformIdent()); Predicate sensorTypeId = builder.equal(root.get("sensorTypeIdent"), template.getSensorTypeIdent()); if (template instanceof MethodSensorData) { MethodSensorData methodSensorData = (MethodSensorData) template; Predicate methodId = builder.equal(root.get("methodIdent"), methodSensorData.getMethodIdent()); criteria.where(id, platformId, sensorTypeId, methodId); } else if (template instanceof JmxSensorValueData) { JmxSensorValueData jmxSensorValueData = (JmxSensorValueData) template; Predicate jmxSensorDefinitionDataId = builder.equal(root.get("jmxSensorDefinitionDataIdentId"), jmxSensorValueData.getJmxSensorDefinitionDataIdentId()); criteria.where(id, platformId, sensorTypeId, jmxSensorDefinitionDataId); } else { criteria.where(id, platformId, sensorTypeId); } return entityManager.createQuery(criteria).getResultList(); }
when(defaultData1.getId()).thenReturn(1L); when(defaultData1.getTimeStamp()).thenReturn(new Timestamp(new Date().getTime())); when(defaultData1.isQueryComplied(indexQuery)).thenReturn(true); rootBranch.put(defaultData1); when(defaultData2.getId()).thenReturn(2L); when(defaultData2.getTimeStamp()).thenReturn(plusHour); when(defaultData2.isQueryComplied(indexQuery)).thenReturn(true); rootBranch.put(defaultData2); assertThat(results.size(), is(equalTo(1))); for (DefaultData result : results) { assertThat(result.getTimeStamp().getTime(), is(greaterThanOrEqualTo(minusHour.getTime()))); assertThat(result.getTimeStamp().getTime(), is(lessThanOrEqualTo(plusHour.getTime()))); assertThat(resultsForkJoin.size(), is(equalTo(1))); for (DefaultData result : resultsForkJoin) { assertThat(result.getTimeStamp().getTime(), is(greaterThanOrEqualTo(minusHour.getTime()))); assertThat(result.getTimeStamp().getTime(), is(lessThanOrEqualTo(plusHour.getTime())));
/** * {@inheritDoc} */ @Override public Object getKey(E element) { if (0 == element.getPlatformIdent()) { return null; } return element.getPlatformIdent(); }
when(defaultData1.getId()).thenReturn(1L); when(defaultData1.getPlatformIdent()).thenReturn(10L); when(defaultData1.isQueryComplied(indexQuery)).thenReturn(true); rootBranch.put(defaultData1); when(defaultData2.getId()).thenReturn(2L); when(defaultData2.getPlatformIdent()).thenReturn(20L); when(defaultData2.isQueryComplied(indexQuery)).thenReturn(true); rootBranch.put(defaultData2); assertThat(results.size(), is(equalTo(1))); for (DefaultData result : results) { assertThat(result.getPlatformIdent(), is(equalTo(10L))); assertThat(resultsForkJoin.size(), is(equalTo(1))); for (DefaultData result : resultsForkJoin) { assertThat(result.getPlatformIdent(), is(equalTo(10L)));
/** * Test tree with empty query. All elements should be returned. * * @throws IndexingException * If {@link IndexingException} occurs. */ @Test public void emptyQueryTest() throws IndexingException { IBufferTreeComponent<DefaultData> rootBranch = new Branch<>(new BufferBranchIndexer<>(new ObjectTypeIndexer<>())); DefaultData defaultData = mock(DefaultData.class); when(defaultData.getId()).thenReturn(1L); when(defaultData.isQueryComplied(indexQuery)).thenReturn(true); rootBranch.put(defaultData); SqlStatementData defaultData2 = mock(SqlStatementData.class); when(defaultData2.getId()).thenReturn(2L); when(defaultData2.isQueryComplied(indexQuery)).thenReturn(true); rootBranch.put(defaultData2); List<DefaultData> results = rootBranch.query(indexQuery); assertThat(results.size(), is(equalTo(2))); // Test for forkJoinPool List<DefaultData> resultsForkJoin = rootBranch.query(indexQuery, forkJoinPool); assertThat(resultsForkJoin.size(), is(equalTo(2))); }
/** * {@inheritDoc} */ @Override public Object getKey(E element) { if (0 == element.getSensorTypeIdent()) { return null; } return element.getSensorTypeIdent(); }
/** * {@inheritDoc} */ @Override public IStorageDescriptor get(E element) { readLock.lock(); try { int index = Arrays.binarySearch(idArray, 0, size, element.getId()); if (index >= 0) { SimpleStorageDescriptor simpleDescriptor = descriptorArray[index]; if (null != simpleDescriptor) { return new StorageDescriptor(this.id, simpleDescriptor); } else { return null; } } else { return null; } } finally { readLock.unlock(); } }
/** * {@inheritDoc} */ @Override public List<DefaultData> findByExampleFromToDate(DefaultData template, Date fromDate, Date toDate) { CriteriaBuilder builder = entityManager.getCriteriaBuilder(); CriteriaQuery<DefaultData> criteria = builder.createQuery(DefaultData.class); Root<? extends DefaultData> root = criteria.from(template.getClass()); criteria.select(root); Predicate platformId = builder.equal(root.get("platformIdent"), template.getPlatformIdent()); Predicate sensorTypeId = builder.equal(root.get("sensorTypeIdent"), template.getSensorTypeIdent()); Predicate timestamp = builder.between(root.<Timestamp> get("timeStamp"), new Timestamp(fromDate.getTime()), new Timestamp(toDate.getTime())); if (template instanceof MethodSensorData) { MethodSensorData methodSensorData = (MethodSensorData) template; Predicate methodId = builder.equal(root.get("methodIdent"), methodSensorData.getMethodIdent()); criteria.where(platformId, sensorTypeId, timestamp, methodId); } else if (template instanceof JmxSensorValueData) { JmxSensorValueData jmxSensorValueData = (JmxSensorValueData) template; Predicate jmxSensorDefinitionDataId = builder.equal(root.get("jmxSensorDefinitionDataIdentId"), jmxSensorValueData.getJmxSensorDefinitionDataIdentId()); criteria.where(platformId, sensorTypeId, timestamp, jmxSensorDefinitionDataId); } else { criteria.where(platformId, sensorTypeId, timestamp); } return entityManager.createQuery(criteria).getResultList(); }
/** * Is the default data's time stamp in the time frame of this processor. * * @param defaultData * {@link DefaultData} to check. * @return true if it is in the time frame. */ private boolean isInTimeframe(DefaultData defaultData) { if (null != fromDate) { if (fromDate.after(defaultData.getTimeStamp())) { return false; } } if (null != toDate) { if (toDate.before(defaultData.getTimeStamp())) { return false; } } return true; }
/** * {@inheritDoc} */ @Override public List<DefaultData> getDataObjectsSinceIdIgnoreMethodId(DefaultData template) { StorageIndexQuery query = storageIndexQueryProvider.createNewStorageIndexQuery(); query.setMinId(template.getId()); ArrayList<Class<?>> searchClasses = new ArrayList<>(); searchClasses.add(template.getClass()); query.setObjectClasses(searchClasses); query.setPlatformIdent(template.getPlatformIdent()); return super.executeQuery(query); }
/** * {@inheritDoc} */ @Override public List<DefaultData> getDataObjectsSinceId(DefaultData template) { StorageIndexQuery query = storageIndexQueryProvider.createNewStorageIndexQuery(); query.setMinId(template.getId()); ArrayList<Class<?>> searchClasses = new ArrayList<>(); searchClasses.add(template.getClass()); query.setObjectClasses(searchClasses); query.setPlatformIdent(template.getPlatformIdent()); query.setSensorTypeIdent(template.getSensorTypeIdent()); if (template instanceof MethodSensorData) { query.setMethodIdent(((MethodSensorData) template).getMethodIdent()); if (template instanceof InvocationSequenceData) { query.setOnlyInvocationsWithoutChildren(true); } } return super.executeQuery(query); }