3 Commits
1.1.1 ... 1.3.0

2 changed files with 37 additions and 16 deletions

View File

@@ -1,10 +1,6 @@
package fr.postgresjson.entity.immutable package fr.postgresjson.entity.immutable
import fr.postgresjson.entity.EntityI import fr.postgresjson.entity.EntityI
import fr.postgresjson.entity.mutable.EntityDeletedAt
import fr.postgresjson.entity.mutable.EntityDeletedAtImp
import fr.postgresjson.entity.mutable.EntityDeletedBy
import fr.postgresjson.entity.mutable.EntityDeletedByImp
import org.joda.time.DateTime import org.joda.time.DateTime
import java.util.* import java.util.*
@@ -17,7 +13,7 @@ interface UuidEntityI : EntityRefI<UUID> {
} }
abstract class Entity<T>(override val id: T) : EntityRefI<T> abstract class Entity<T>(override val id: T) : EntityRefI<T>
open class UuidEntity(override val id: UUID = UUID.randomUUID()) : UuidEntityI, Entity<UUID>(id) open class UuidEntity(id: UUID? = null) : UuidEntityI, Entity<UUID>(id ?: UUID.randomUUID())
/* Version */ /* Version */
interface EntityVersioning<ID, NUMBER> { interface EntityVersioning<ID, NUMBER> {
@@ -26,16 +22,27 @@ interface EntityVersioning<ID, NUMBER> {
} }
class UuidEntityVersioning( class UuidEntityVersioning(
override var versionNumber: Int? = null, override val versionNumber: Int,
override val versionId: UUID = UUID.randomUUID() versionId: UUID? = null
) : EntityVersioning<UUID, Int?> ) : EntityVersioning<UUID, Int> {
override val versionId: UUID = versionId ?: UUID.randomUUID()
}
/* Dates */ /* Dates */
interface EntityCreatedAt { interface EntityCreatedAt {
val createdAt: DateTime val createdAt: DateTime
} }
interface EntityUpdatedAt { interface EntityUpdatedAt {
var updatedAt: DateTime val updatedAt: DateTime
}
interface EntityDeletedAt {
val deletedAt: DateTime?
fun isDeleted(): Boolean {
return deletedAt?.let {
it < DateTime.now()
} ?: false
}
} }
class EntityCreatedAtImp( class EntityCreatedAtImp(
@@ -43,15 +50,23 @@ class EntityCreatedAtImp(
) : EntityCreatedAt ) : EntityCreatedAt
class EntityUpdatedAtImp( class EntityUpdatedAtImp(
override var updatedAt: DateTime = DateTime.now() override val updatedAt: DateTime = DateTime.now()
) : EntityUpdatedAt ) : EntityUpdatedAt
class EntityDeletedAtImp(
override val deletedAt: DateTime? = null
) : EntityDeletedAt
/* Author */ /* Author */
interface EntityCreatedBy<T : EntityI> { interface EntityCreatedBy<T : EntityI> {
val createdBy: T val createdBy: T
} }
interface EntityUpdatedBy<T : EntityI> { interface EntityUpdatedBy<T : EntityI> {
var updatedBy: T val updatedBy: T
}
interface EntityDeletedBy<T : EntityI> {
val deletedBy: T?
} }
class EntityCreatedByImp<UserT : EntityI>( class EntityCreatedByImp<UserT : EntityI>(
@@ -59,9 +74,13 @@ class EntityCreatedByImp<UserT : EntityI>(
) : EntityCreatedBy<UserT> ) : EntityCreatedBy<UserT>
class EntityUpdatedByImp<UserT : EntityI>( class EntityUpdatedByImp<UserT : EntityI>(
override var updatedBy: UserT override val updatedBy: UserT
) : EntityUpdatedBy<UserT> ) : EntityUpdatedBy<UserT>
class EntityDeletedByImp<UserT : EntityI>(
override val deletedBy: UserT?
) : EntityDeletedBy<UserT>
/* Mixed */ /* Mixed */
class EntityCreatedImp<UserT : EntityI>( class EntityCreatedImp<UserT : EntityI>(
override val createdAt: DateTime = DateTime.now(), override val createdAt: DateTime = DateTime.now(),
@@ -71,7 +90,7 @@ class EntityCreatedImp<UserT : EntityI>(
class EntityUpdatedImp<UserT : EntityI>( class EntityUpdatedImp<UserT : EntityI>(
updatedAt: DateTime = DateTime.now(), updatedAt: DateTime = DateTime.now(),
override var updatedBy: UserT override val updatedBy: UserT
) : EntityUpdatedBy<UserT>, ) : EntityUpdatedBy<UserT>,
EntityUpdatedAt by EntityUpdatedAtImp(updatedAt) EntityUpdatedAt by EntityUpdatedAtImp(updatedAt)

View File

@@ -17,7 +17,7 @@ interface IdEntityI : EntityRefI<Int> {
} }
abstract class Entity<T>(override var id: T? = null) : EntityRefI<T> abstract class Entity<T>(override var id: T? = null) : EntityRefI<T>
open class UuidEntity(override var id: UUID? = UUID.randomUUID()) : UuidEntityI, Entity<UUID>(id) open class UuidEntity(id: UUID? = null) : UuidEntityI, Entity<UUID>(id ?: UUID.randomUUID())
open class IdEntity(override var id: Int? = null) : IdEntityI, Entity<Int>(id) open class IdEntity(override var id: Int? = null) : IdEntityI, Entity<Int>(id)
/* Version */ /* Version */
@@ -28,8 +28,10 @@ interface EntityVersioning<ID, NUMBER> {
class UuidEntityVersioning( class UuidEntityVersioning(
override var versionNumber: Int? = null, override var versionNumber: Int? = null,
override var versionId: UUID = UUID.randomUUID() versionId: UUID? = null
) : EntityVersioning<UUID, Int> ) : EntityVersioning<UUID, Int> {
override var versionId: UUID = versionId ?: UUID.randomUUID()
}
/* Dates */ /* Dates */
interface EntityCreatedAt { interface EntityCreatedAt {