All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.charleslzq.facestore.FaceStore.kt Maven / Gradle / Ivy

The newest version!
package com.github.charleslzq.facestore

import org.joda.time.LocalDateTime
import rx.Observable

/**
 * Created by charleslzq on 18-2-28.
 */
fun  createObservableFromNullable(data: T?): Observable = Observable.create {
    data?.run { it.onNext(this) }
    it.onCompleted()
}

fun  createObservableFromNullable(generator: () -> T?): Observable = Observable.create {
    generator()?.run { it.onNext(this) }
    it.onCompleted()
}

interface Meta {
    val id: String
    val createTime: LocalDateTime
    val updateTime: LocalDateTime
}

interface ReadOnlyFaceStore

{ val personClass: Class

val faceClass: Class fun getPersonIds(): List = emptyList() fun getPersonIdsAsObservable(): Observable = Observable.from(getPersonIds()) fun getPerson(personId: String): P? = null fun getPersonAsObservable(personId: String): Observable

= createObservableFromNullable(getPerson(personId)) fun getFaceIdList(personId: String): List = emptyList() fun getFaceIdListAsObservable(personId: String): Observable = Observable.from(getFaceIdList(personId)) fun getFace(personId: String, faceId: String): F? = null fun getFaceAsObservable(personId: String, faceId: String): Observable = createObservableFromNullable(getFace(personId, faceId)) } interface ReadWriteFaceStore

: ReadOnlyFaceStore { fun savePerson(person: P) {} fun saveFace(personId: String, face: F) {} fun deletePerson(personId: String) {} fun deleteFace(personId: String, faceId: String) {} } interface FaceStoreChangeListener { fun onPersonUpdate(person: P) {} fun onFaceUpdate(personId: String, face: F) {} fun onPersonDelete(personId: String) {} fun onFaceDelete(personId: String, faceId: String) {} } interface ListenableReadWriteFaceStore

: ReadWriteFaceStore { val listeners: MutableList> } abstract class CompositeReadWriteFaceStore

( readOnlyStore: ReadOnlyFaceStore ) : ReadOnlyFaceStore by readOnlyStore, ReadWriteFaceStore





© 2015 - 2025 Weber Informatics LLC | Privacy Policy