Class TariffSpecification

All Implemented Interfaces:
ValidatableMessage

@Domain(fields={"broker","powerType","expiration","minDuration","signupPayment","earlyWithdrawPayment","periodicPayment","supersedes"})
public class TariffSpecification
extends TariffMessage
Represents a Tariff offered by a Broker to customers. A TariffSpecification may specify upfront and periodic payments, and aggregates a set of Rate instances that specify prices for energy in various circumstances. This class is a value type -- a serializable, immutable data structure. You need to initialize a Tariff from it to make serious use of it. New tariffs and their Rates are communicated to Customers and to Brokers when tariffs are published.

TariffSpecifications and their associated Rates and HourlyCharges are specified from the Customer's viewpoint in terms of quantities and charges. In other words, a positive charge means the broker pays the customer, while a positive energy quantity means the broker sends energy to the customer.

Note: Must be serialized "deep" to gather up the Rates and associated HourlyCharge instances.

State log entry format for new instance:
long brokerId, PowerType powerType

State log fields for readResolve():
long brokerId, PowerType powerType, long minDuration,
  double signupPayment, double earlyWithdrawPayment,
  double periodicPayment, List supersedes

Author:
John Collins