@ImmutableValidator private void validate() { if (sensitivity.size() != parameterMetadata.size()) { throw new IllegalArgumentException("Length of sensitivity and parameter metadata must match"); } if (parameterSplit != null) { long total = parameterSplit.stream().mapToInt(p -> p.getParameterCount()).sum(); if (sensitivity.size() != total) { throw new IllegalArgumentException("Length of sensitivity and parameter split must match"); } if (parameterSplit.stream().map(p -> p.getName()).distinct().count() != parameterSplit.size()) { throw new IllegalArgumentException("Parameter split must not contain duplicate market data names"); } } }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 3373707: // name return ((ParameterSize) bean).getName(); case 1107332838: // parameterCount return ((ParameterSize) bean).getParameterCount(); } return super.propertyGet(bean, propertyName, quiet); }
@ImmutableValidator private void validate() { if (sensitivity.size() != parameterMetadata.size()) { throw new IllegalArgumentException("Length of sensitivity and parameter metadata must match"); } if (parameterSplit != null) { long total = parameterSplit.stream().mapToInt(p -> p.getParameterCount()).sum(); if (sensitivity.size() != total) { throw new IllegalArgumentException("Length of sensitivity and parameter split must match"); } if (parameterSplit.stream().map(p -> p.getName()).distinct().count() != parameterSplit.size()) { throw new IllegalArgumentException("Parameter split must not contain duplicate market data names"); } } }
/** * Splits this sensitivity instance. * <p> * A single sensitivity instance may be based on more than one underlying {@link ParameterizedData}, * as represented by {@link #getParameterSplit()}. Calling this method returns a list * where the sensitivity of this instance has been split into multiple instances as per * the parameter split definition. In the common case where there is a single underlying * {@code ParameterizedData}, the list will be of size one containing this instance. * * @return this sensitivity split as per the defined parameter split, ordered as per this instance */ public ImmutableList<UnitParameterSensitivity> split() { if (parameterSplit == null) { return ImmutableList.of(this); } ImmutableList.Builder<UnitParameterSensitivity> builder = ImmutableList.builder(); int count = 0; for (ParameterSize size : parameterSplit) { List<ParameterMetadata> splitMetadata = parameterMetadata.subList(count, count + size.getParameterCount()); DoubleArray splitSensitivity = sensitivity.subArray(count, count + size.getParameterCount()); builder.add(UnitParameterSensitivity.of(size.getName(), splitMetadata, splitSensitivity)); count += size.getParameterCount(); } return builder.build(); }
/** * Splits this sensitivity instance. * <p> * A single sensitivity instance may be based on more than one underlying {@link ParameterizedData}, * as represented by {@link #getParameterSplit()}. Calling this method returns a list * where the sensitivity of this instance has been split into multiple instances as per * the parameter split definition. In the common case where there is a single underlying * {@code ParameterizedData}, the list will be of size one containing this instance. * * @return this sensitivity split as per the defined parameter split, ordered as per this instance */ public ImmutableList<CurrencyParameterSensitivity> split() { if (parameterSplit == null) { return ImmutableList.of(this); } ImmutableList.Builder<CurrencyParameterSensitivity> builder = ImmutableList.builder(); int count = 0; for (ParameterSize size : parameterSplit) { List<ParameterMetadata> splitMetadata = parameterMetadata.subList(count, count + size.getParameterCount()); DoubleArray splitSensitivity = sensitivity.subArray(count, count + size.getParameterCount()); builder.add(CurrencyParameterSensitivity.of(size.getName(), splitMetadata, currency, splitSensitivity)); count += size.getParameterCount(); } return builder.build(); }
public void test_of() { ParameterSize test = ParameterSize.of(CURVE_NAME, 3); assertEquals(test.getName(), CURVE_NAME); assertEquals(test.getParameterCount(), 3); }