/** * {@inheritDoc} */ @Override public Object getAggregationKey(JmxSensorValueData object) { return object.getJmxSensorDefinitionDataIdentId(); }
/** * {@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> 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 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(); }
/** * {@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 String getReadableString(Object object) { if (object instanceof JmxSensorValueData) { JmxSensorValueData data = (JmxSensorValueData) object; StringBuilder sb = new StringBuilder(); JmxDefinitionDataIdent jmxDefinitionDataIdent = cachedDataService.getJmxDefinitionDataIdentForId(data.getJmxSensorDefinitionDataIdentId()); for (Column column : Column.values()) { sb.append(getStyledTextForColumn(jmxDefinitionDataIdent, data, column).toString()); sb.append('\t'); } return sb.toString(); } throw new RuntimeException("Could not create the human readable string!"); }
/** * {@inheritDoc} */ @Override public List<String> getColumnValues(Object object) { if (object instanceof JmxSensorValueData) { JmxSensorValueData data = (JmxSensorValueData) object; JmxDefinitionDataIdent jmxDefinitionDataIdent = cachedDataService.getJmxDefinitionDataIdentForId(data.getJmxSensorDefinitionDataIdentId()); List<String> values = new ArrayList<>(); for (Column column : Column.values()) { values.add(getStyledTextForColumn(jmxDefinitionDataIdent, data, column).toString()); } return values; } throw new RuntimeException("Could not create the column values!"); }
if (template.getJmxSensorDefinitionDataIdentId() > 0) { query.addIndexingRestriction(IndexQueryRestrictionFactory.equal("jmxSensorDefinitionDataIdentId", template.getJmxSensorDefinitionDataIdentId())); if (map.containsKey(jmxData.getJmxSensorDefinitionDataIdentId())) { if (map.get(jmxData.getJmxSensorDefinitionDataIdentId()).getTimeStamp().getTime() < data.getTimeStamp().getTime()) { map.put(jmxData.getJmxSensorDefinitionDataIdentId(), (JmxSensorValueData) data); map.put(jmxData.getJmxSensorDefinitionDataIdentId(), (JmxSensorValueData) data);
Predicate predicate = cb.and(platformIdentPredicate, sensorTypeIdentPredicate); if (template.getJmxSensorDefinitionDataIdentId() > 0) { predicate = cb.and(predicate, cb.equal(sqRoot.get("jmxSensorDefinitionDataIdentId"), template.getJmxSensorDefinitionDataIdentId()));
/** * {@inheritDoc} */ @Override protected void addTags(JmxSensorValueData data, Builder builder) { super.addTags(data, builder); JmxDefinitionDataIdent jmxDefinitionDataIdent = cachedDataService.getJmxDefinitionDataIdentForId(data.getJmxSensorDefinitionDataIdentId()); if (null != jmxDefinitionDataIdent) { builder.tag(Series.Jmx.TAG_JMX_ATTRIBUTE_FULL_NAME, jmxDefinitionDataIdent.getDerivedFullName()); } }
jmxIdent = cachedDataService.getJmxDefinitionDataIdentForId(jmxData.getJmxSensorDefinitionDataIdentId());
@Test public void noJmxIdent() throws Exception { when(cachedDataService.getPlatformIdentForId(PLATFORM_ID)).thenReturn(platformIdent); when(cachedDataService.getJmxDefinitionDataIdentForId(JMX_IDENT)).thenReturn(null); long time = RandomUtils.nextLong(); when(data.getPlatformIdent()).thenReturn(PLATFORM_ID); when(data.getJmxSensorDefinitionDataIdentId()).thenReturn(JMX_IDENT); when(data.getTimeStamp()).thenReturn(new Timestamp(time)); Collection<Builder> pointBuilderCol = builder.createBuilders(data); assertThat(pointBuilderCol.size(), is(1)); Builder pointBuilder = pointBuilderCol.iterator().next(); assertThat(getMeasurement(pointBuilder), is(Series.Jmx.NAME)); assertThat(getTime(pointBuilder), is(time)); assertThat(getPrecision(pointBuilder), is(TimeUnit.MILLISECONDS)); assertThat(getTags(pointBuilder), not(hasKey(Series.Jmx.TAG_JMX_ATTRIBUTE_FULL_NAME))); assertThat(getFields(pointBuilder), hasEntry(Series.Jmx.FIELD_VALUE, (Object) data.getValueAsDouble())); }
@Test public void noPlatform() throws Exception { when(cachedDataService.getPlatformIdentForId(PLATFORM_ID)).thenReturn(null); when(cachedDataService.getJmxDefinitionDataIdentForId(JMX_IDENT)).thenReturn(jmxDefinitionDataIdent); long time = RandomUtils.nextLong(); when(data.getPlatformIdent()).thenReturn(PLATFORM_ID); when(data.getJmxSensorDefinitionDataIdentId()).thenReturn(JMX_IDENT); when(data.getTimeStamp()).thenReturn(new Timestamp(time)); Collection<Builder> pointBuilderCol = builder.createBuilders(data); assertThat(pointBuilderCol.size(), is(1)); Builder pointBuilder = pointBuilderCol.iterator().next(); assertThat(getMeasurement(pointBuilder), is(Series.Jmx.NAME)); assertThat(getTime(pointBuilder), is(time)); assertThat(getPrecision(pointBuilder), is(TimeUnit.MILLISECONDS)); assertThat(getTags(pointBuilder), hasEntry(Series.TAG_AGENT_ID, String.valueOf(PLATFORM_ID))); assertThat(getTags(pointBuilder), not(hasKey(Series.TAG_AGENT_NAME))); assertThat(getFields(pointBuilder), hasEntry(Series.Jmx.FIELD_VALUE, (Object) data.getValueAsDouble())); }
assertThat(valueCaptor.getValue().getJmxSensorDefinitionDataIdentId(), is(equalTo(definitionDataIdentId))); assertThat(valueCaptor.getValue().getValue(), is("[1, 2, 3]"));
JmxDefinitionDataIdent jmxIdent1 = cachedDataService.getJmxDefinitionDataIdentForId(o1.getJmxSensorDefinitionDataIdentId()); JmxDefinitionDataIdent jmxIdent2 = cachedDataService.getJmxDefinitionDataIdentForId(o2.getJmxSensorDefinitionDataIdentId());
assertThat(valueCaptor.getValue().getJmxSensorDefinitionDataIdentId(), is(equalTo(definitionDataIdentId))); assertThat(valueCaptor.getValue().getValue(), is("null"));
@Test public void happyPath() throws Exception { when(cachedDataService.getPlatformIdentForId(PLATFORM_ID)).thenReturn(platformIdent); when(cachedDataService.getJmxDefinitionDataIdentForId(JMX_IDENT)).thenReturn(jmxDefinitionDataIdent); long time = RandomUtils.nextLong(); when(data.getPlatformIdent()).thenReturn(PLATFORM_ID); when(data.getJmxSensorDefinitionDataIdentId()).thenReturn(JMX_IDENT); when(data.getTimeStamp()).thenReturn(new Timestamp(time)); when(data.getValueAsDouble()).thenReturn(RandomUtils.nextDouble()); Collection<Builder> pointBuilderCol = builder.createBuilders(data); assertThat(pointBuilderCol.size(), is(1)); Builder pointBuilder = pointBuilderCol.iterator().next(); assertThat(getMeasurement(pointBuilder), is(Series.Jmx.NAME)); assertThat(getTime(pointBuilder), is(time)); assertThat(getPrecision(pointBuilder), is(TimeUnit.MILLISECONDS)); assertThat(getTags(pointBuilder), hasEntry(Series.TAG_AGENT_ID, String.valueOf(PLATFORM_ID))); assertThat(getTags(pointBuilder), hasEntry(Series.TAG_AGENT_NAME, String.valueOf(AGENT_NAME))); assertThat(getTags(pointBuilder), hasEntry(Series.Jmx.TAG_JMX_ATTRIBUTE_FULL_NAME, String.valueOf(JMX_ATTR))); assertThat(getFields(pointBuilder), hasEntry(Series.Jmx.FIELD_VALUE, (Object) data.getValueAsDouble())); }
query.addIndexingRestriction(IndexQueryRestrictionFactory.equal("jmxSensorDefinitionDataIdentId", ((JmxSensorValueData) template).getJmxSensorDefinitionDataIdentId()));
JmxDefinitionDataIdent jmxIdent = repositoryDefinition.getCachedDataService().getJmxDefinitionDataIdentForId(jmxValueData.getJmxSensorDefinitionDataIdentId());
/** * {@inheritDoc} */ @Override public DetailsTable generate(DefaultData defaultData, RepositoryDefinition repositoryDefinition, Composite parent, FormToolkit toolkit) { JmxSensorValueData jmxSensorData = (JmxSensorValueData) defaultData; JmxDefinitionDataIdent jmxData = repositoryDefinition.getCachedDataService().getJmxDefinitionDataIdentForId(jmxSensorData.getJmxSensorDefinitionDataIdentId()); DetailsTable table = new DetailsTable(parent, toolkit, "MBean Details", 1); table.addContentRow("Domain:", InspectIT.getDefault().getImage(InspectITImages.IMG_PACKAGE), new DetailsCellContent[] { new DetailsCellContent(jmxData.getDerivedDomainName()) }); table.addContentRow("Type:", InspectIT.getDefault().getImage(InspectITImages.IMG_BOOK), new DetailsCellContent[] { new DetailsCellContent(jmxData.getDerivedTypeName()) }); table.addContentRow("Attribute:", InspectIT.getDefault().getImage(InspectITImages.IMG_BLUE_DOCUMENT_TABLE), new DetailsCellContent[] { new DetailsCellContent(jmxData.getmBeanAttributeName()) }); table.addContentRow("Description:", InspectIT.getDefault().getImage(InspectITImages.IMG_INFORMATION), new DetailsCellContent[] { new DetailsCellContent(jmxData.getmBeanAttributeDescription()) }); table.addContentRow("Type:", null, new DetailsCellContent[] { new DetailsCellContent(jmxData.getmBeanAttributeType()) }); table.addContentRow("Value:", null, new DetailsCellContent[] { new DetailsCellContent(jmxSensorData.getValue()) }); table.addContentRow("Readable:", null, new DetailsCellContent[] { new YesNoDetailsCellContent(jmxData.getmBeanAttributeIsReadable()) }); table.addContentRow("Writeable:", null, new DetailsCellContent[] { new YesNoDetailsCellContent(jmxData.getmBeanAttributeIsWritable()) }); table.addContentRow("Is-Getter:", null, new DetailsCellContent[] { new YesNoDetailsCellContent(jmxData.getmBeanAttributeIsIs()) }); return table; } }