-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: improve Trigger type hierarchy
- Loading branch information
Showing
3 changed files
with
38 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
65 changes: 32 additions & 33 deletions
65
jakta-api/src/main/kotlin/it/unibo/jakta/events/Trigger.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,52 +1,51 @@ | ||
package it.unibo.jakta.events | ||
|
||
import it.unibo.jakta.beliefs.Belief | ||
import it.unibo.jakta.beliefs.BeliefBase | ||
|
||
/** [Trigger] denotes the change that took place for the [Event] generation. */ | ||
sealed interface Trigger<out X> { | ||
val value: X | ||
sealed interface Trigger<out Query> { | ||
val value: Query | ||
} | ||
|
||
/** [Trigger] generated after a [Belief] addition (or removal) from the [BeliefBase]. */ | ||
interface BeliefBaseRevision<out X : Belief<*>> : Trigger<X> | ||
sealed interface BeliefBaseRevision<out Query> : Trigger<Query> { | ||
/** [Trigger] generated after a Belief addition to agent's [BeliefBase]. */ | ||
data class BeliefBaseAddition<out Query>(override val value: Query) : BeliefBaseRevision<Query> { | ||
override fun toString(): String = "BeliefBaseAddition(value=$value)" | ||
} | ||
|
||
/** [Trigger] generated after a [Belief] addition to agent's [BeliefBase]. */ | ||
class BeliefBaseAddition<X : Belief<*>>(override val value: X) : BeliefBaseRevision<X> { | ||
override fun toString(): String = "BeliefBaseAddition(value=$value)" | ||
} | ||
|
||
/** [Trigger] generated after a [Belief] removal from agent's [BeliefBase]. */ | ||
data class BeliefBaseRemoval<X : Belief<*>>(override val value: X) : BeliefBaseRevision<X> { | ||
override fun toString(): String = "BeliefBaseRemoval(value=$value)" | ||
} | ||
/** [Trigger] generated after a Belief removal from agent's [BeliefBase]. */ | ||
data class BeliefBaseRemoval<out Query>(override val value: Query) : BeliefBaseRevision<Query> { | ||
override fun toString(): String = "BeliefBaseRemoval(value=$value)" | ||
} | ||
|
||
data class BeliefBaseUpdate<X : Belief<*>>(override val value: X) : BeliefBaseRevision<X> { | ||
override fun toString(): String = "BeliefBaseUpdate(value=$value)" | ||
data class BeliefBaseUpdate<out Query>(override val value: Query) : BeliefBaseRevision<Query> { | ||
override fun toString(): String = "BeliefBaseUpdate(value=$value)" | ||
} | ||
} | ||
|
||
/** [Trigger] of an event made by a [Test] Goal. */ | ||
interface TestGoalTrigger<out X> : Trigger<X> | ||
sealed interface TestGoalTrigger<out Query> : Trigger<Query> { | ||
/** [Trigger] generated after an invocation of a [Test] Goal. */ | ||
data class TestGoalInvocation<out Query>(override val value: Query) : TestGoalTrigger<Query> { | ||
override fun toString(): String = "TestGoalInvocation(value=$value)" | ||
} | ||
|
||
/** [Trigger] generated after an invocation of a [Test] Goal. */ | ||
data class TestGoalInvocation<X>(override val value: X) : TestGoalTrigger<X> { | ||
override fun toString(): String = "TestGoalInvocation(value=$value)" | ||
} | ||
|
||
/** [Trigger] generated after a failure of a [Test] Goal. */ | ||
data class TestGoalFailure<X>(override val value: X) : TestGoalTrigger<X> { | ||
override fun toString(): String = "TestGoalFailure(value=$value)" | ||
/** [Trigger] generated after a failure of a [Test] Goal. */ | ||
data class TestGoalFailure<out Query>(override val value: Query) : TestGoalTrigger<Query> { | ||
override fun toString(): String = "TestGoalFailure(value=$value)" | ||
} | ||
} | ||
|
||
/** [Trigger] of an event made by a [Achieve] Goal. */ | ||
interface AchievementGoalTrigger<out X> : Trigger<X> | ||
sealed interface AchievementGoalTrigger<out Query> : Trigger<Query> { | ||
|
||
/** [Trigger] generated after the invocation of a [Achieve] Goal. */ | ||
data class AchievementGoalInvocation<X>(override val value: X) : AchievementGoalTrigger<X> { | ||
override fun toString(): String = "AchievementGoalInvocation(value=$value)" | ||
} | ||
/** [Trigger] generated after the invocation of a [Achieve] Goal. */ | ||
data class AchievementGoalInvocation<out Query>(override val value: Query) : AchievementGoalTrigger<Query> { | ||
override fun toString(): String = "AchievementGoalInvocation(value=$value)" | ||
} | ||
|
||
/** [Trigger] generated after the failure of a [Achieve] Goal. */ | ||
data class AchievementGoalFailure<X>(override val value: X) : AchievementGoalTrigger<X> { | ||
override fun toString(): String = "AchievementGoalFailure(value=$value)" | ||
/** [Trigger] generated after the failure of a [Achieve] Goal. */ | ||
data class AchievementGoalFailure<out Query>(override val value: Query) : AchievementGoalTrigger<Query> { | ||
override fun toString(): String = "AchievementGoalFailure(value=$value)" | ||
} | ||
} |