addTemporaryProperty method

Danger<PropertyTable, PropertyTableException> addTemporaryProperty(
  1. PropertyName temporaryPropertyName,
  2. PropertyName listPropertyName
)

Implementation

Danger<PropertyTable, PropertyTableException> addTemporaryProperty(PropertyName temporaryPropertyName, PropertyName listPropertyName) {

    final log = Log(classLocation: runtimeType, functionLocation: 'addTemporaryProperty');

    final listPropertyResult = listPropertyRoster.getByPrimaryKey(listPropertyName);
    log.add(listPropertyResult);
    if (listPropertyResult is! Success<ListProperty, RosterPatternExceptionB>) return Failure(PropertyTableExceptionC(), log.monitor({
        'list property name': listPropertyName.value,
        'exists list property name list': listPropertyRoster.nameList.toPrimitive(),
    }));

    final temporaryPropertyResult = TemporaryProperty.result(
        temporaryPropertyName,
        listPropertyResult.wrapped.value,
        PropertyLaps.one(),
    );
    log.add(temporaryPropertyResult);

    final addResult = temporaryPropertyRoster.add(temporaryPropertyResult.wrapped);
    log.add(addResult);
    if (addResult is! Success<PropertyRoster<TemporaryProperty>, PropertyExceptionA>) return Failure(addResult.asException, log.monitor({
        'duplicate temporary property name': temporaryPropertyName.value,
        'temporary property name list': temporaryPropertyRoster.nameList.toPrimitive(),
    }));

    final result = PropertyTable.result(this.permanentlyPropertyRoster, addResult.wrapped, this.listPropertyRoster, this.fragmentPropertyRoster);
    log.add(result);
    if (result is! Success<PropertyTable, PropertyTableExceptionA>) return Failure(result.asException, log);

    return Success(result.wrapped, log);

}