Skip to content

Instantly share code, notes, and snippets.

@luiscarch11
Created June 21, 2022 18:57
Show Gist options
  • Save luiscarch11/0a85a973d1ca6d292037d9f3f794d3c6 to your computer and use it in GitHub Desktop.
Save luiscarch11/0a85a973d1ca6d292037d9f3f794d3c6 to your computer and use it in GitHub Desktop.
abstract class FurnaceRefinementFailure {
const FurnaceRefinementFailure();
const factory FurnaceRefinementFailure.insufficientMinerals() = _FurnaceRefinementFailureInsufficientMinerals;
const factory FurnaceRefinementFailure.insuficcientCoal() = _FurnaceRefinementFailureInsuficcientCoal;
const factory FurnaceRefinementFailure.notEnoughCapacity() = _FurnaceRefinementFailureNotEnoughCapacity;
const factory FurnaceRefinementFailure.invalidOwner() = _FurnaceRefinementFailureInvalidOwner;
const factory FurnaceRefinementFailure.serverError() = _FurnaceRefinementFailureServerError;
R map<R>({
required R Function(_FurnaceRefinementFailureInsufficientMinerals) insufficientMinerals,
required R Function(_FurnaceRefinementFailureInsuficcientCoal) insuficcientCoal,
required R Function(_FurnaceRefinementFailureNotEnoughCapacity) notEnoughCapacity,
required R Function(_FurnaceRefinementFailureInvalidOwner) invalidOwner,
required R Function(_FurnaceRefinementFailureServerError) serverError,
}) {
if (this is _FurnaceRefinementFailureInsufficientMinerals) {
return insufficientMinerals.call(this as _FurnaceRefinementFailureInsufficientMinerals);
}
if (this is _FurnaceRefinementFailureInsuficcientCoal) {
return insuficcientCoal.call(this as _FurnaceRefinementFailureInsuficcientCoal);
}
if (this is _FurnaceRefinementFailureNotEnoughCapacity) {
return notEnoughCapacity.call(this as _FurnaceRefinementFailureNotEnoughCapacity);
}
if (this is _FurnaceRefinementFailureInvalidOwner) {
return invalidOwner.call(this as _FurnaceRefinementFailureInvalidOwner);
}
if (this is _FurnaceRefinementFailureServerError) {
return serverError.call(this as _FurnaceRefinementFailureServerError);
}
return insufficientMinerals.call(this as _FurnaceRefinementFailureInsufficientMinerals);
}
R maybeMap<R>({
R Function(_FurnaceRefinementFailureInsufficientMinerals)? insufficientMinerals,
R Function(_FurnaceRefinementFailureInsuficcientCoal)? insuficcientCoal,
R Function(_FurnaceRefinementFailureNotEnoughCapacity)? notEnoughCapacity,
R Function(_FurnaceRefinementFailureInvalidOwner)? invalidOwner,
R Function(_FurnaceRefinementFailureServerError)? serverError,
required R Function() orElse,
}) {
if (this is _FurnaceRefinementFailureInsufficientMinerals && insufficientMinerals != null) {
return insufficientMinerals.call(this as _FurnaceRefinementFailureInsufficientMinerals);
}
if (this is _FurnaceRefinementFailureInsuficcientCoal && insuficcientCoal != null) {
return insuficcientCoal.call(this as _FurnaceRefinementFailureInsuficcientCoal);
}
if (this is _FurnaceRefinementFailureNotEnoughCapacity && notEnoughCapacity != null) {
return notEnoughCapacity.call(this as _FurnaceRefinementFailureNotEnoughCapacity);
}
if (this is _FurnaceRefinementFailureInvalidOwner && invalidOwner != null) {
return invalidOwner.call(this as _FurnaceRefinementFailureInvalidOwner);
}
if (this is _FurnaceRefinementFailureServerError && serverError != null) {
return serverError.call(this as _FurnaceRefinementFailureServerError);
}
return orElse.call();
}
factory FurnaceRefinementFailure.fromString(String value) {
if (value == 'INSUFFICIENT_MINERALS') {
return const FurnaceRefinementFailure.insufficientMinerals();
}
if (value == 'INSUFFICIENT_COAL') {
return const FurnaceRefinementFailure.insuficcientCoal();
}
if (value == 'NO_ENOUGH_CAPACITY') {
return const FurnaceRefinementFailure.notEnoughCapacity();
}
if (value == 'INVALID_OWNER') {
return const FurnaceRefinementFailure.invalidOwner();
}
return const FurnaceRefinementFailure.serverError();
}
@override
String toString() {
if (this is _FurnaceRefinementFailureInsufficientMinerals) {
return 'insufficientMinerals';
}
if (this is _FurnaceRefinementFailureInsuficcientCoal) {
return 'insuficcientCoal';
}
if (this is _FurnaceRefinementFailureNotEnoughCapacity) {
return 'notEnoughCapacity';
}
if (this is _FurnaceRefinementFailureInvalidOwner) {
return 'invalidOwner';
}
if (this is _FurnaceRefinementFailureServerError) {
return 'serverError';
}
return 'insufficientMinerals';
}
}
class _FurnaceRefinementFailureInsufficientMinerals extends FurnaceRefinementFailure {
const _FurnaceRefinementFailureInsufficientMinerals();
}
class _FurnaceRefinementFailureInsuficcientCoal extends FurnaceRefinementFailure {
const _FurnaceRefinementFailureInsuficcientCoal();
}
class _FurnaceRefinementFailureNotEnoughCapacity extends FurnaceRefinementFailure {
const _FurnaceRefinementFailureNotEnoughCapacity();
}
class _FurnaceRefinementFailureInvalidOwner extends FurnaceRefinementFailure {
const _FurnaceRefinementFailureInvalidOwner();
}
class _FurnaceRefinementFailureServerError extends FurnaceRefinementFailure {
const _FurnaceRefinementFailureServerError();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment