Show / Hide Table of Contents

Class EnergiemengeExtension

Do calculations on top of an Energiemenge BO4E.

Inheritance
System.Object
EnergiemengeExtension
Namespace: BO4E.Extensions.BusinessObjects.Energiemenge
Assembly: BO4E-dotnet.Extensions.dll
Syntax
public static class EnergiemengeExtension : object

Methods

| Improve this Doc View Source

AddDaysDST(DateTime, Double, TimeZoneInfo)

adds value days to dt. Adding 1 day might actually add 25 or 23 hours if the transisition DST<->non-DST happens.

Declaration
public static DateTime AddDaysDST(this DateTime dt, double value, TimeZoneInfo tz = null)
Parameters
Type Name Description
DateTime dt

datetime (kind unspecified or Utc)

System.Double value

number of days to add

TimeZoneInfo tz

timezone dt is meant to be iff dt.Kind == DateTimeKind.Unspecified, default (if null) is CENTRAL_EUROPE_STANDARD_TIME

Returns
Type Description
DateTime
| Improve this Doc View Source

Detangle(Energiemenge)

Declaration
public static void Detangle(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em
| Improve this Doc View Source

FixSapCDSBug(Energiemenge)

Our SAP CDS has a bug: When there's a change from non-DST to DST the Enddatum is set to the first second of the DST period. To

Declaration
public static void FixSapCDSBug(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em
| Improve this Doc View Source

GetAverage(Energiemenge)

Get Average (GetAverage(Energiemenge, TimeRange, Wertermittlungsverfahren, String, Mengeneinheit)) for a pure Energiemenge with automatically found parameters.

Declaration
public static Tuple<decimal?, Mengeneinheit> GetAverage(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
Tuple<System.Nullable<System.Decimal>, Mengeneinheit>

Tuple of average value and unit of measurement

| Improve this Doc View Source

GetAverage(Energiemenge, Wertermittlungsverfahren, String, Mengeneinheit)

Same as but without specifying a time slice.

Declaration
public static decimal? GetAverage(this Energiemenge em, Wertermittlungsverfahren wev, string obiskennzahl, Mengeneinheit me)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Wertermittlungsverfahren wev

type of measurement

System.String obiskennzahl

OBIS

Mengeneinheit me

an intensive or extensive unit

Returns
Type Description
System.Nullable<System.Decimal>

The average for the given Mengeneinheit for the Energiemenge object or null if there was no Verbrauch for the given Mengeneinheit.

| Improve this Doc View Source

GetAverage(Energiemenge, TimeRange, Wertermittlungsverfahren, String, Mengeneinheit)

Get average of Mengeneinheit for given time interval

Declaration
public static decimal? GetAverage(this Energiemenge em, TimeRange reference, Wertermittlungsverfahren wev, string obiskennzahl, Mengeneinheit me)
Parameters
Type Name Description
Energiemenge em

Energiemenge

TimeRange reference

reference time frame

Wertermittlungsverfahren wev

Wertermittlungsverfahren

System.String obiskennzahl

OBIS

Mengeneinheit me

an extensive or intensive unit

Returns
Type Description
System.Nullable<System.Decimal>

the average value or null if no Verbrauch overlapped with the specified time interval

| Improve this Doc View Source

GetCompletenessReport(Energiemenge)

GetCompletenessReport(Energiemenge, ITimeRange, Wertermittlungsverfahren, String, Mengeneinheit) for pure Energiemengen within their own time range.

Declaration
public static CompletenessReport GetCompletenessReport(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
CompletenessReport

GetCompletenessReport(Energiemenge, ITimeRange, Wertermittlungsverfahren, String, Mengeneinheit)

| Improve this Doc View Source

GetCompletenessReport(Energiemenge, CompletenessReport.CompletenessReportConfiguration)

Generate a CompletenessReport for the given configuration. Same as but with all parameters in a configuration container instead of loose arguments.

Declaration
public static CompletenessReport GetCompletenessReport(this Energiemenge em, CompletenessReport.CompletenessReportConfiguration config)
Parameters
Type Name Description
Energiemenge em

Energiemenge

CompletenessReport.CompletenessReportConfiguration config

configuration container

Returns
Type Description
CompletenessReport
| Improve this Doc View Source

GetCompletenessReport(Energiemenge, ITimeRange)

Generate a CompletenessReport for the given refenrence time frame reference

Declaration
public static CompletenessReport GetCompletenessReport(this Energiemenge em, ITimeRange reference)
Parameters
Type Name Description
Energiemenge em

Energiemenge

ITimeRange reference

reference time frame

Returns
Type Description
CompletenessReport
| Improve this Doc View Source

GetCompletenessReport(Energiemenge, ITimeRange, Wertermittlungsverfahren, String, Mengeneinheit)

Generate a CompletenessReport for the given parameters.

Declaration
public static CompletenessReport GetCompletenessReport(this Energiemenge em, ITimeRange reference, Wertermittlungsverfahren wev, string obiskennzahl, Mengeneinheit einheit)
Parameters
Type Name Description
Energiemenge em

Energiemenge

ITimeRange reference

reference time frame

Wertermittlungsverfahren wev

Wertermittlungsverfahren

System.String obiskennzahl

OBIS Kennzahl

Mengeneinheit einheit

Mengeneinheit

Returns
Type Description
CompletenessReport

the completeness report

| Improve this Doc View Source

GetConsumption(Energiemenge, ITimeRange)

Get consumption in given time reference frame. Trying to automatically determine parameters and forward to .

Declaration
public static Tuple<decimal, Mengeneinheit> GetConsumption(this Energiemenge em, ITimeRange reference)
Parameters
Type Name Description
Energiemenge em

Energiemenge

ITimeRange reference

time reference frame

Returns
Type Description
Tuple<System.Decimal, Mengeneinheit>

Tuple of consumption value and automatically determined unit of measurement

| Improve this Doc View Source

GetConsumption(Energiemenge, ITimeRange, Wertermittlungsverfahren, String, Mengeneinheit)

Returns the consumption of a given kind of Mengeneinheit within the specified reference time range.

Declaration
public static decimal GetConsumption(this Energiemenge em, ITimeRange reference, Wertermittlungsverfahren wev, string obiskennzahl, Mengeneinheit me)
Parameters
Type Name Description
Energiemenge em

Energiemenge

ITimeRange reference

reference time frame

Wertermittlungsverfahren wev

Wertermittlungsverfahren

System.String obiskennzahl

OBIS number

Mengeneinheit me

an extensive unit (e.g. "kWh")

Returns
Type Description
System.Decimal

the consumption within the give time slice reference in the unit passed as me

| Improve this Doc View Source

GetCoverage(Energiemenge)

Get percentage of full time range of energiemenge which is covered with values.

Declaration
public static decimal GetCoverage(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
System.Decimal

value between 0 (only coverage for 1 point in time) and 1.0 (100% coverage)

| Improve this Doc View Source

GetCoverage(Energiemenge, ITimeRange)

Get percentage of time range covered by pure Energiemenge.

Declaration
public static decimal GetCoverage(this Energiemenge em, ITimeRange reference)
Parameters
Type Name Description
Energiemenge em

pure Energiemenge

ITimeRange reference

time frame reference

Returns
Type Description
System.Decimal

value between 0 (only coverage for 1 point in time) and 1.0 (100% coverage)

| Improve this Doc View Source

GetCoverage(Energiemenge, ITimeRange, Wertermittlungsverfahren, String, Mengeneinheit, Int32)

Get ratio of overlap between given Energiemenge and a reference. Method is basically just another name for

Declaration
public static decimal GetCoverage(this Energiemenge em, ITimeRange reference, Wertermittlungsverfahren wev, string obisKz, Mengeneinheit mengeneinheit, int decimalRounding = 10)
Parameters
Type Name Description
Energiemenge em

Energiemenge

ITimeRange reference

reference time range

Wertermittlungsverfahren wev

type of measurement

System.String obisKz

OBIS

Mengeneinheit mengeneinheit

unit of measurement

System.Int32 decimalRounding

post decimals

Returns
Type Description
System.Decimal

value between 0 (no overlap) and 1.0 (100% overlap)

| Improve this Doc View Source

GetDailyCompletenessReports(Energiemenge, ITimeRange, Boolean)

Get Daily Completeness Reports for overallTimeRange. The magic is, that it takes DST into account!

Declaration
public static IDictionary<ITimeRange, CompletenessReport> GetDailyCompletenessReports(this Energiemenge em, ITimeRange overallTimeRange, bool useParallelExecution = false)
Parameters
Type Name Description
Energiemenge em

Energiemenge

ITimeRange overallTimeRange

overall time frame. Beginning and end must have same hour/minute/second

System.Boolean useParallelExecution

set true to internally use parallel linq

Returns
Type Description
IDictionary<ITimeRange, CompletenessReport>
| Improve this Doc View Source

GetDailyPlausibilityReports(Energiemenge, PlausibilityReport.PlausibilityReportConfiguration)

Get Daily Completeness Reports for overall time range defined in config. The magic is, that it takes DST into account!

Declaration
public static IDictionary<ITimeRange, PlausibilityReport> GetDailyPlausibilityReports(this Energiemenge em, PlausibilityReport.PlausibilityReportConfiguration config)
Parameters
Type Name Description
Energiemenge em

Energiemenge

PlausibilityReport.PlausibilityReportConfiguration config

configuration that contains the overall time range in Timeframe

Returns
Type Description
IDictionary<ITimeRange, PlausibilityReport>
| Improve this Doc View Source

GetJointCoverage(Energiemenge, TimeRange)

Get percentage of time range covered by all Wertermittlungsverfahren/OBIS/Mengeneinheit combinations, that are present in the Energiemenge->energieverbrauch array.

Declaration
public static decimal GetJointCoverage(this Energiemenge em, TimeRange reference)
Parameters
Type Name Description
Energiemenge em

Energiemenge

TimeRange reference

reference

Returns
Type Description
System.Decimal
| Improve this Doc View Source

GetLoad(Energiemenge, Mengeneinheit, DateTime)

Returns the load in an intensive unit for a given point in time.

Declaration
public static decimal? GetLoad(this Energiemenge em, Mengeneinheit me, DateTime dt)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Mengeneinheit me

an intensive unit (e.g. "kW")

DateTime dt

point in time

Returns
Type Description
System.Nullable<System.Decimal>

load if Energiemenge BO contains value for specified date timedt, null otherwise

| Improve this Doc View Source

GetMissingTimeRanges(Energiemenge)

Get list of those time ranges within the energiemenge where there are gaps.

Declaration
public static IList<TimeRange> GetMissingTimeRanges(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
IList<TimeRange>
| Improve this Doc View Source

GetMissingTimeRanges(Energiemenge, ITimeRange, Wertermittlungsverfahren, String, Mengeneinheit)

Get a list of those time ranges within a reference, where no energieverbrauch entries are defined.

Declaration
public static List<TimeRange> GetMissingTimeRanges(this Energiemenge em, ITimeRange reference, Wertermittlungsverfahren wev, string obis, Mengeneinheit me)
Parameters
Type Name Description
Energiemenge em

Energiemenge

ITimeRange reference

reference timeframe

Wertermittlungsverfahren wev

Wertermittlungsverfahren

System.String obis

OBIS-Kennzahl

Mengeneinheit me

Mengeneinheit

Returns
Type Description
List<TimeRange>
| Improve this Doc View Source

GetMissingTimeRanges(Energiemenge, TimeRange)

Declaration
public static List<TimeRange> GetMissingTimeRanges(this Energiemenge em, TimeRange reference)
Parameters
Type Name Description
Energiemenge em

Energiemenge

TimeRange reference

reference time frame

Returns
Type Description
List<TimeRange>
| Improve this Doc View Source

GetMonthlyCompletenessReports(Energiemenge, ITimeRange, Boolean)

Get Monthly Completeness Reports for overallTimeRange.

Declaration
public static IDictionary<ITimeRange, CompletenessReport> GetMonthlyCompletenessReports(this Energiemenge em, ITimeRange overallTimeRange, bool useParallelExecution = false)
Parameters
Type Name Description
Energiemenge em

Energiemenge

ITimeRange overallTimeRange
System.Boolean useParallelExecution

set true to internally use parallel linq

Returns
Type Description
IDictionary<ITimeRange, CompletenessReport>
| Improve this Doc View Source

GetMonthlyPlausibilityReports(Energiemenge, PlausibilityReport.PlausibilityReportConfiguration)

Get Monthly Completeness Reports for overall time range defined in config.

Declaration
public static IDictionary<ITimeRange, PlausibilityReport> GetMonthlyPlausibilityReports(this Energiemenge em, PlausibilityReport.PlausibilityReportConfiguration config)
Parameters
Type Name Description
Energiemenge em

Energiemenge

PlausibilityReport.PlausibilityReportConfiguration config

configuration that contains the overall time range in Timeframe

Returns
Type Description
IDictionary<ITimeRange, PlausibilityReport>
| Improve this Doc View Source

GetPlausibilityReport(Energiemenge, Energiemenge, ITimeRange, Boolean)

Returns a PlausibilityReport that compares emReference with emOther. within the interval defined in timeframe.

Declaration
public static PlausibilityReport GetPlausibilityReport(this Energiemenge emReference, Energiemenge emOther, ITimeRange timeframe = null, bool ignoreLocation = false)
Parameters
Type Name Description
Energiemenge emReference

reference Energiemenge (reference = used for normalisation)

Energiemenge emOther

other Energiemenge

ITimeRange timeframe

time frame to be analysed. If null, the overlap of emReference and emOther is used.

System.Boolean ignoreLocation

By default (false) an ArgumentException is thrown if the LokationsId do not match. Setting this flag suppresses the error.

Returns
Type Description
PlausibilityReport

a PlausibilityReport

| Improve this Doc View Source

GetPlausibilityReport(Energiemenge, PlausibilityReport.PlausibilityReportConfiguration)

same as GetPlausibilityReport(Energiemenge, Energiemenge, ITimeRange, Boolean) but with a strongly typed container as input.

Declaration
public static PlausibilityReport GetPlausibilityReport(this Energiemenge energiemenge, PlausibilityReport.PlausibilityReportConfiguration config)
Parameters
Type Name Description
Energiemenge energiemenge
PlausibilityReport.PlausibilityReportConfiguration config

container containing the relevant data

Returns
Type Description
PlausibilityReport
| Improve this Doc View Source

GetSlicedCompletenessReports(Energiemenge, IEnumerable<ITimeRange>, Boolean)

creates a dictionary of completeness reports for a given list of reference time ranges.

Declaration
public static IDictionary<ITimeRange, CompletenessReport> GetSlicedCompletenessReports(this Energiemenge em, IEnumerable<ITimeRange> ranges, bool useParallelExecution = false)
Parameters
Type Name Description
Energiemenge em

Energiemenge

IEnumerable<ITimeRange> ranges

list of ranges for which the completeness reports are generated

System.Boolean useParallelExecution

set true to internally use parallel linq

Returns
Type Description
IDictionary<ITimeRange, CompletenessReport>
| Improve this Doc View Source

GetSlicedPlausibilityReports(Energiemenge, PlausibilityReport.PlausibilityReportConfiguration, IEnumerable<ITimeRange>)

creates a dictionary of completeness reports for a given list of reference time ranges.

Declaration
public static IDictionary<ITimeRange, PlausibilityReport> GetSlicedPlausibilityReports(this Energiemenge em, PlausibilityReport.PlausibilityReportConfiguration config, IEnumerable<ITimeRange> ranges)
Parameters
Type Name Description
Energiemenge em

Energiemenge

PlausibilityReport.PlausibilityReportConfiguration config
IEnumerable<ITimeRange> ranges

list of ranges for which the completeness reports are generated

Returns
Type Description
IDictionary<ITimeRange, PlausibilityReport>
| Improve this Doc View Source

GetTimeRange(Energiemenge)

Get TimeRange covery by Energiemenge

Declaration
public static TimeRange GetTimeRange(this Energiemenge menge)
Parameters
Type Name Description
Energiemenge menge

Energiemenge

Returns
Type Description
TimeRange

TimeRange ranging from the earliest Startdatum to the latest Enddatum

| Improve this Doc View Source

GetTotalConsumption(Energiemenge)

Same as GetTotalConsumption(Energiemenge, Wertermittlungsverfahren, String, Mengeneinheit) but without autodetected parameters. By default a the full length of the Energiemenge is taken into account.

Declaration
public static Tuple<decimal, Mengeneinheit> GetTotalConsumption(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
Tuple<System.Decimal, Mengeneinheit>

Tuple of consumption value and unit of measurement

| Improve this Doc View Source

GetTotalConsumption(Energiemenge, Wertermittlungsverfahren, String, Mengeneinheit)

Get total consumption for given parameters

Declaration
public static decimal GetTotalConsumption(this Energiemenge em, Wertermittlungsverfahren wev, string obiskennzahl, Mengeneinheit me)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Wertermittlungsverfahren wev

type of measurement

System.String obiskennzahl

OBIS

Mengeneinheit me

unit of measurement

Returns
Type Description
System.Decimal

consumption value

| Improve this Doc View Source

GetWevObisMeCombinations(Energiemenge)

get all (Wertermittlungsverfahren, OBIS, Mengeneinheit) tuples occurring in em

Declaration
public static ISet<Tuple<Wertermittlungsverfahren, string, Mengeneinheit>> GetWevObisMeCombinations(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

em

Returns
Type Description
ISet<Tuple<Wertermittlungsverfahren, System.String, Mengeneinheit>>

A Set of tuples of all (Wertermittlungsverfahren, OBIS, Mengeneinheit) combinations

| Improve this Doc View Source

GetZeitraum(Energiemenge)

Get Zeitraum covered by Energiemenge.

Declaration
public static Zeitraum GetZeitraum(this Energiemenge menge)
Parameters
Type Name Description
Energiemenge menge

Energiemenge

Returns
Type Description
Zeitraum

Zeitraum ranging from the earliest Startdatum to the latest Enddatum

| Improve this Doc View Source

IsContinuous(Energiemenge)

Test, if the Energiemenge is continuous within its own min/max range. IsContinuous(Energiemenge, TimeRange)

Declaration
public static bool IsContinuous(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
System.Boolean

true iff Energiemenge has defined value for every point in time t in min(energieverbrauch.startdatum) <= t < max(energieverbrauch.enddatum); false otherwise

| Improve this Doc View Source

IsContinuous(Energiemenge, TimeRange)

Test, if the Energiemenge does have a defined value for every point in time within the given time range.

Declaration
public static bool IsContinuous(this Energiemenge em, TimeRange reference)
Parameters
Type Name Description
Energiemenge em

Energiemenge

TimeRange reference

time range to check

Returns
Type Description
System.Boolean

true iff Energiemenge has defined value for every point in time range, false otherwise

| Improve this Doc View Source

IsEvenlySpaced(Energiemenge, ITimeRange, Wertermittlungsverfahren, String, Mengeneinheit, Boolean)

Test, if the single entries/intervals of the energieverbrauch array share the same duration and spacing in time.

Declaration
public static bool IsEvenlySpaced(this Energiemenge em, ITimeRange reference, Wertermittlungsverfahren wev, string obis, Mengeneinheit me, bool allowGaps = false)
Parameters
Type Name Description
Energiemenge em

Energiemenge

ITimeRange reference

reference time frame

Wertermittlungsverfahren wev

Wertermittlungsverfahren

System.String obis

OBIS-Kennzahl

Mengeneinheit me

Mengeneinheit

System.Boolean allowGaps

set true to allow gaps

Returns
Type Description
System.Boolean

True, if all energieverbrauch entries have the same length and their start and enddatum are evenly spaced. Also true, if there less than 2 entries in the energieverbrauch array.

| Improve this Doc View Source

IsEvenlySpaced(Energiemenge, Boolean)

Declaration
public static bool IsEvenlySpaced(this Energiemenge em, bool allowGaps = false)
Parameters
Type Name Description
Energiemenge em

Energiemenge

System.Boolean allowGaps
Returns
Type Description
System.Boolean
| Improve this Doc View Source

IsExtensive(Energiemenge)

Test if the energiemenge contains only extensive consumption units

Declaration
public static bool IsExtensive(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
System.Boolean

true iff all em->energieverbrauch entries are extensive

| Improve this Doc View Source

IsIntensive(Energiemenge)

opposite of IsExtensive(Energiemenge)

Declaration
public static bool IsIntensive(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
System.Boolean

true iff all em->energieverbrauch entries are intensive

| Improve this Doc View Source

IsPure(Energiemenge, Boolean)

shortcut for IsPureMengeneinheit(Energiemenge) && IsPureObisKennzahl(Energiemenge) && IsPureWertermittlungsverfahren(Energiemenge)

Declaration
public static bool IsPure(this Energiemenge em, bool checkUserProperties = false)
Parameters
Type Name Description
Energiemenge em

Energiemenge

System.Boolean checkUserProperties

set true, to additionally check if user properties of all entries in energieverbrauch are equal.

Returns
Type Description
System.Boolean

true iff the Energiemenge is pure in all OBIS-Kennzahl, Wertermittlungsverfahren and Mengeneinheit

| Improve this Doc View Source

IsPureMengeneinheit(Energiemenge)

test if Energiemenge has only one Mengeneinheit

Declaration
public static bool IsPureMengeneinheit(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
System.Boolean

true iff the Energiemenge->energieverbrauch list does only contain entries with mutually convertible units

| Improve this Doc View Source

IsPureObisKennzahl(Energiemenge)

test if Energiemenge has only one Obiskennzahl

Declaration
public static bool IsPureObisKennzahl(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
System.Boolean

true iff the Energiemenge->energieverbrauch list has at most one distinct Obiskennzahl

| Improve this Doc View Source

IsPureUserProperties(Energiemenge)

test if all entries in Energieverbrauch do have same user properties. Only tests for those user properties present. Missing user properties do not lead to false.

Declaration
public static bool IsPureUserProperties(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
System.Boolean
| Improve this Doc View Source

IsPureWertermittlungsverfahren(Energiemenge)

test if Energiemenge has only one Wertermittlungsverfahren

Declaration
public static bool IsPureWertermittlungsverfahren(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em

Energiemenge

Returns
Type Description
System.Boolean

true iff the Energiemenge->energieverbrauch list has at most one distinct Wertermittlungsverfahren

| Improve this Doc View Source

Normalise(Energiemenge, Decimal)

normalise energiemenge->energieverbrauch consumption values to a given target value

Declaration
public static Energiemenge Normalise(this Energiemenge em, decimal target = 1.0M)
Parameters
Type Name Description
Energiemenge em

Energiemenge

System.Decimal target

normalising constant (1.0 by default)

Returns
Type Description
Energiemenge

new Energiemenge object with normalised consumption values

| Improve this Doc View Source

SplitInPureGroups(Energiemenge)

Declaration
public static List<Energiemenge> SplitInPureGroups(this Energiemenge em)
Parameters
Type Name Description
Energiemenge em
Returns
Type Description
List<Energiemenge>
  • Improve this Doc
  • View Source
Back to top Generated by DocFX