/** * {@inheritDoc} */ @Override public boolean canGenerateFor(DefaultData defaultData) { return (defaultData instanceof MethodSensorData) && (((MethodSensorData) defaultData).getMethodIdent() != 0); }
/** * {@inheritDoc} */ @Override public Object getKey(E element) { if (element instanceof MethodSensorData) { return ((MethodSensorData) element).getMethodIdent(); } else { return 0; } }
/** * {@inheritDoc} */ @Override public int compare(MethodSensorData o1, MethodSensorData o2, ICachedDataService cachedDataService) { if (null == cachedDataService) { return 0; } MethodIdent methodIdent1 = cachedDataService.getMethodIdentForId(o1.getMethodIdent()); MethodIdent methodIdent2 = cachedDataService.getMethodIdentForId(o2.getMethodIdent()); if ((null != methodIdent1) && (null != methodIdent2)) { return compare(methodIdent1, methodIdent2); } else { return 0; } }
/** * {@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(); }
/** * {@inheritDoc} */ @Override public DefaultData findByExampleLastData(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 platformId = builder.equal(root.get("platformIdent"), template.getPlatformIdent()); if (template instanceof MethodSensorData) { MethodSensorData methodSensorData = (MethodSensorData) template; Predicate methodId = builder.equal(root.get("methodIdent"), methodSensorData.getMethodIdent()); criteria.where(platformId, methodId); } else if (template instanceof JmxSensorValueData) { JmxSensorValueData jmxSensorValueData = (JmxSensorValueData) template; Predicate jmxSensorDefinitionDataId = builder.equal(root.get("jmxSensorDefinitionDataIdentId"), jmxSensorValueData.getJmxSensorDefinitionDataIdentId()); criteria.where(platformId, jmxSensorDefinitionDataId); } else { criteria.where(platformId); } criteria.orderBy(builder.desc(root.get("id"))); List<DefaultData> results = entityManager.createQuery(criteria).setMaxResults(1).getResultList(); if (CollectionUtils.isNotEmpty(results)) { return results.get(0); } else { return null; } }
/** * {@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 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(); }
/** * Testing that the {@link MethodIdentIndexer} returns different keys based on the method ident. */ @Test public void methodIdentIndexer() { // different keys if method idents differ MethodSensorData data = mock(MethodSensorData.class); when(data.getMethodIdent()).thenReturn(10L).thenReturn(20L); MethodIdentIndexer<DefaultData> indexer = new MethodIdentIndexer<>(); Object key1 = indexer.getKey(data); Object key2 = indexer.getKey(data); assertThat(key1, is(not(key2))); IIndexQuery query = mock(IIndexQuery.class); when(query.getMethodIdent()).thenReturn(0L); assertThat(indexer.getKeys(query), is(emptyArray())); when(query.getMethodIdent()).thenReturn(10L); key1 = indexer.getKeys(query); when(query.getMethodIdent()).thenReturn(20L); key2 = indexer.getKeys(query); assertThat(key1, is(not(key2))); }
/** * {@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); }
when(defaultData1.getMethodIdent()).thenReturn(10L); when(defaultData1.isQueryComplied(indexQuery)).thenReturn(true); rootBranch.put(defaultData1); when(defaultData2.getMethodIdent()).thenReturn(20L); when(defaultData2.isQueryComplied(indexQuery)).thenReturn(true); rootBranch.put(defaultData2); assertThat(results.size(), is(equalTo(1))); for (MethodSensorData result : results) { assertThat(result.getMethodIdent(), is(equalTo(10L))); assertThat(resultsForkJoin.size(), is(equalTo(1))); for (MethodSensorData result : resultsForkJoin) { assertThat(result.getMethodIdent(), is(equalTo(10L)));
when(defaultData1.getMethodIdent()).thenReturn(10L); IStorageDescriptor storageDescriptor1 = rootBranch.put(defaultData1); storageDescriptor1.setPositionAndSize(0L, 100L); when(defaultData2.getMethodIdent()).thenReturn(20L); IStorageDescriptor storageDescriptor2 = rootBranch.put(defaultData2); storageDescriptor2.setPositionAndSize(0L, 200L);
query.setFromDate(fromDate); if (template instanceof MethodSensorData) { query.setMethodIdent(((MethodSensorData) template).getMethodIdent()); if (template instanceof InvocationSequenceData) { query.setOnlyInvocationsWithoutChildren(true);
public DetailsTable generate(DefaultData defaultData, RepositoryDefinition repositoryDefinition, Composite parent, FormToolkit toolkit) { MethodSensorData methodSensorData = (MethodSensorData) defaultData; MethodIdent methodIdent = repositoryDefinition.getCachedDataService().getMethodIdentForId(methodSensorData.getMethodIdent());