blob: 6fd1be36a3ad680f9ebbc5791478a53dbcb52a8a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
package net.lacolaco.smileessence.data
import com.github.gfx.android.orma.annotation.PrimaryKey
import com.github.gfx.android.orma.annotation.Table
import java.util.*
import java.util.regex.Pattern
@Table
class ExtractionWord {
@PrimaryKey
lateinit var patternString: String
val pattern: Pattern by lazy {
Pattern.compile(patternString)
}
constructor()
private constructor(patternString: String) {
this.patternString = patternString
}
fun remove() {
relation().deleter().patternStringEq(patternString).execute()
cache!!.remove(this)
}
companion object {
private var cache: MutableSet<ExtractionWord>? = null
@Synchronized
fun cached(): Collection<ExtractionWord> {
return cache ?: throw IllegalStateException("extraction pattern not loaded")
}
@Synchronized
fun load() {
cache = HashSet(OrmaHolder.orma.selectFromExtractionWord().toList())
}
private fun relation(): ExtractionWord_Relation {
return OrmaHolder.orma.relationOfExtractionWord()
}
@Synchronized
fun add(patternString: String): ExtractionWord {
val extractionWord = ExtractionWord(patternString)
relation().upserter().execute(extractionWord)
cache!!.add(extractionWord)
return extractionWord
}
}
}
|