Package org.rhq.core.domain.measurement.composite

Examples of org.rhq.core.domain.measurement.composite.MeasurementNumericValueAndUnits


                str.append("*ERROR*");
            }
            str.append(" For ");

            long longValue = Long.valueOf(condition.getOption());
            MeasurementNumericValueAndUnits valueWithUnits;
            if (longValue % 3600 == 0) {
                if (longValue == 3600) {
                    valueWithUnits = new MeasurementNumericValueAndUnits(1.0d, MeasurementUnits.HOURS);
                } else {
                    valueWithUnits = MeasurementConverterClient.fit((double) longValue, MeasurementUnits.SECONDS,
                        MeasurementUnits.HOURS, MeasurementUnits.HOURS);
                }
            } else if (longValue == 60) {
                valueWithUnits = new MeasurementNumericValueAndUnits(1.0d, MeasurementUnits.MINUTES);
            } else {
                valueWithUnits = MeasurementConverterClient.fit((double) longValue, MeasurementUnits.SECONDS,
                        MeasurementUnits.MINUTES, MeasurementUnits.MINUTES);
            }
            String formatted = MeasurementConverterClient.format(String.valueOf(valueWithUnits.getValue()),
                valueWithUnits.getUnits());
            str.append(formatted);
            str.append("]");

            break;
        }
View Full Code Here


            // apply relative scale if applicable, otherwise perform standard scaling
            if (MeasurementUnits.Family.RELATIVE == targetUnits.getFamily()) {
                scaledMagnitude = MeasurementUnits.scaleDown(convertedMagnitude.doubleValue(), targetUnits);
            } else {
                MeasurementNumericValueAndUnits valueAndUnits = new MeasurementNumericValueAndUnits(convertedMagnitude
                    .doubleValue(), fromUnits);
                scaledMagnitude = MeasurementConverter.scale(valueAndUnits, targetUnits);
            }

            return new MeasurementNumericValueAndUnits(scaledMagnitude, targetUnits);
        } catch (ParseException pe) {
            throw new MeasurementConversionException("The magnitude in '" + input + "' did not parse correctly "
                + "as a valid, localized, stringified number ");
        }
View Full Code Here

           wasNegative = true;
           origin = -origin;
       }

       MeasurementUnits baseUnit = targetUnits.getBaseUnits();
       MeasurementNumericValueAndUnits valueAndUnits = new MeasurementNumericValueAndUnits(origin, baseUnit);

       Double results = scale(valueAndUnits, targetUnits);
       if (wasNegative) {
           results = -results;
       }
View Full Code Here

                * error, but prevents overflow on large data sets
                */
               average += (values[i] / sz);
           }

           MeasurementNumericValueAndUnits fittedAverage = fit(average, targetUnits);
           //noinspection UnnecessaryLocalVariable
           MeasurementUnits fittedUnits = fittedAverage.getUnits();

           /*
            * and change the local reference to targetUnits, so that the same logic
            * can be used both for the bestFit and non-bestFit computations
            */
           targetUnits = fittedUnits;
       }

       @SuppressWarnings("unused")
       Set<String> existingStrings; // technically this *is* unused because
       int precisionDigits = 0;
       boolean scaleWithMorePrecision = true;
       String[] results = new String[values.length];
       NumberFormat nf = getDefaultNumberFormat();

       /*
        * we scale at most to MAX_PRECISION_DIGITS to allow for presentation limits
        *
        * increase the maxPrecisionDigits in the while condition
        * itself to ensure it gets done for every loop
        */
       while (scaleWithMorePrecision && (++precisionDigits <= MAX_PRECISION_DIGITS)) {
           /*
            * make the assumption that we no longer need to scale beyond this iteration
            */
           scaleWithMorePrecision = false;

           /*
            * we need to record the uniquely formatted values so we can determine
            */
           existingStrings = new HashSet<String>();
           nf.setMinimumFractionDigits(0);
           nf.setMaximumFractionDigits(precisionDigits);

           Double[] scaledValues = new Double[values.length];

           for (int i = 0; i < scaledValues.length; i++) {
               /*
                *  For relative units apply the scale now, prior to the nf.format(), since we are not using format( Double...).
                *  Otherwise, apply standard multi-unit scaling.
                */
               if (MeasurementUnits.Family.RELATIVE == originalUnits.getFamily()) {
                   scaledValues[i] = MeasurementUnits.scaleUp(values[i], originalUnits);
               } else {
                   scaledValues[i] = scale(new MeasurementNumericValueAndUnits(values[i], originalUnits), targetUnits);
               }
           }

           for (int i = 0; i < results.length; i++) {
               /*
 
View Full Code Here

                               Integer minimumFractionDigits, Integer maximumFractionDigits) {
       if (value == null || Double.isNaN(value)) {
           return NULL_OR_NAN_FORMATTED_VALUE;
       }
       if (bestFit) {
           MeasurementNumericValueAndUnits valueAndUnits = fit(value, targetUnits);

           value = valueAndUnits.getValue();
           targetUnits = valueAndUnits.getUnits();
       }

       // apply relative scale at presentation time
       if (MeasurementUnits.Family.RELATIVE == targetUnits.getFamily()) {
           value = MeasurementUnits.scaleUp(value, targetUnits);
View Full Code Here

   public static String scaleAndFormat(Double origin, MeasurementUnits targetUnits, boolean bestFit,
       Integer minimumFractionDigits, Integer maximumFractionDigits) throws MeasurementConversionException {

       MeasurementUnits baseUnits = targetUnits.getBaseUnits();
       MeasurementNumericValueAndUnits valueAndUnits = new MeasurementNumericValueAndUnits(origin, baseUnits);
       Double scaledMagnitude = scale(valueAndUnits, targetUnits);

       return format(scaledMagnitude, targetUnits, bestFit);
   }
View Full Code Here

   public static MeasurementNumericValueAndUnits fit(Double origin, MeasurementUnits units, MeasurementUnits lowUnits,
       MeasurementUnits highUnits) {

       // work-around for the various Chart descendants not properly setting their units field;
       if (null == units) {
           return new MeasurementNumericValueAndUnits(origin, units);
       }

       // by definition, absolutely specified units don't scale to anything
       if ((MeasurementUnits.Family.ABSOLUTE == units.getFamily())
           || (MeasurementUnits.Family.DURATION == units.getFamily())) {
           return new MeasurementNumericValueAndUnits(origin, units);
       }

       // by definition relative-valued units are self-scaled (converted at formatting)
       if (MeasurementUnits.Family.RELATIVE == units.getFamily()) {
           return new MeasurementNumericValueAndUnits(origin, units);
       }

       if (MeasurementUnits.Family.TEMPERATURE == units.getFamily()) {
           return new MeasurementNumericValueAndUnits(origin, units);
       }

       // if the magnitude is zero, the best-fit also will spin around forever since it won't change
       if (Math.abs(origin) < 1e-9) {
           return new MeasurementNumericValueAndUnits(origin, units);
       }

       boolean wasNegative = false;

       if (origin < 0) {
           wasNegative = true;
           origin = -origin;
       }

       MeasurementNumericValueAndUnits currentValueAndUnits;
       MeasurementNumericValueAndUnits nextValueAndUnits = new MeasurementNumericValueAndUnits(origin, units);

       // first, make the value smaller if it's too big
       int maxOrdinal = (highUnits != null) ? (highUnits.ordinal() + 1) : MeasurementUnits.values().length;

       do {
           currentValueAndUnits = nextValueAndUnits;

           int nextOrdinal = currentValueAndUnits.getUnits().ordinal() + 1;
           if (nextOrdinal == maxOrdinal) {
               // we could theoretically get bigger, but we don't have any units to represent that
               break;
           }

           MeasurementUnits biggerUnits = MeasurementUnits.values()[nextOrdinal];
           if (biggerUnits.getFamily() != currentValueAndUnits.getUnits().getFamily()) {
               // we're as big as we can get, break out of the loop so we can return
               break;
           }

           Double smallerValue = scale(currentValueAndUnits, biggerUnits);

           nextValueAndUnits = new MeasurementNumericValueAndUnits(smallerValue, biggerUnits);
       } while (nextValueAndUnits.getValue() > 1.0);

       // next, make the value bigger if it's too small
       int minOrdinal = (lowUnits != null) ? (lowUnits.ordinal() - 1) : -1;

       while (currentValueAndUnits.getValue() < 1.0) {
           int nextOrdinal = currentValueAndUnits.getUnits().ordinal() - 1;
           if (nextOrdinal == minOrdinal) {
               // we could theoretically get smaller, but we don't have any units to represent that
               break;
           }

           MeasurementUnits smallerUnits = MeasurementUnits.values()[nextOrdinal];
           if (smallerUnits.getFamily() != currentValueAndUnits.getUnits().getFamily()) {
               // we're as small as we can get, break out of the loop so we can return
               break;
           }

           Double biggerValue = scale(currentValueAndUnits, smallerUnits);

           nextValueAndUnits = new MeasurementNumericValueAndUnits(biggerValue, smallerUnits);

           currentValueAndUnits = nextValueAndUnits;
       }

       if (wasNegative) {
           return new MeasurementNumericValueAndUnits(-currentValueAndUnits.getValue(), currentValueAndUnits
               .getUnits());
       }

       return currentValueAndUnits;
   }
View Full Code Here

            absoluteValue.setValidators(new NumberWithUnitsValidator(this.resourceType.getMetricDefinitions(),
                metricDropDownMenu));
            if (editMode) {
                MeasurementUnits units = existingCondition.getMeasurementDefinition().getUnits();
                double doubleValue = existingCondition.getThreshold();
                MeasurementNumericValueAndUnits valueWithUnits = null;
                if (units.getFamily() == MeasurementUnits.Family.RELATIVE) {
                    valueWithUnits = new MeasurementNumericValueAndUnits(doubleValue * 100, MeasurementUnits.PERCENTAGE);
                } else {
                    valueWithUnits = MeasurementConverterClient.fit(doubleValue, units);
                }
                absoluteValue.setDefaultValue(valueWithUnits.toString());
            }
            absoluteValue.setShowIfCondition(ifFunc);
            formItems.add(absoluteValue);
            formItems.add(buildBaseUnitsItem(metricDropDownMenu, ifFunc, editMode));
        } else {
View Full Code Here

    private String produceInnerValuesArray(List<MeasurementDataNumericHighLowComposite> measurementList) {
        StringBuilder sb = new StringBuilder("[");
        for (MeasurementDataNumericHighLowComposite measurement : measurementList) {
            sb.append("{ \"x\":" + measurement.getTimestamp() + ",");
            if (!Double.isNaN(measurement.getValue())) {
                MeasurementNumericValueAndUnits dataValue = normalizeUnitsAndValues(measurement.getValue(),
                        definition.getUnits());
                sb.append(" \"y\":" + dataValue.getValue() + "},");
                adjustedMeasurementUnits = dataValue.getUnits().toString();
            }else {
                sb.append(" \"y\": 0},");
            }
        }
        sb.setLength(sb.length() - 1); // delete the last ','
View Full Code Here

        //Log.debug("Multi-resource Graph json: " + sb.toString());
        return sb.toString();
    }

    protected MeasurementNumericValueAndUnits normalizeUnitsAndValues(double value, MeasurementUnits measurementUnits) {
        MeasurementNumericValueAndUnits newValue = MeasurementConverterClient.fit(value, measurementUnits);
        MeasurementNumericValueAndUnits returnValue;

        // adjust for percentage numbers
        if (measurementUnits.equals(MeasurementUnits.PERCENTAGE)) {
            returnValue = new MeasurementNumericValueAndUnits(newValue.getValue() * 100, newValue.getUnits());
        } else {
            returnValue = new MeasurementNumericValueAndUnits(newValue.getValue(), newValue.getUnits());
        }

        return returnValue;
    }
View Full Code Here

TOP

Related Classes of org.rhq.core.domain.measurement.composite.MeasurementNumericValueAndUnits

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.