-
Notifications
You must be signed in to change notification settings - Fork 82
/
ControlsModel.kt
124 lines (103 loc) · 3.52 KB
/
ControlsModel.kt
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package com.robohorse.robopojogenerator.view
data class ControlsModel(
val sources: List<SourceVM>,
var selectedSource: SourceVM? = null
)
sealed class SourceVM(
val languages: List<LanguageVM>,
var selectedLanguage: LanguageVM? = null,
val propertyName: String
) {
class Json(
languages: List<LanguageVM>,
selected: LanguageVM? = null
) : SourceVM(languages, selected, JSON)
class JsonSchema(
languages: List<LanguageVM>,
selected: LanguageVM? = null
) : SourceVM(languages, selected, JSON_SCHEMA)
companion object {
const val JSON = "Json"
const val JSON_SCHEMA = "Json Schema"
}
}
sealed class LanguageVM(
val frameworks: List<FrameworkVW>,
var selectedFramework: FrameworkVW? = null,
val propertyName: String
) {
class Java(
frameworks: List<FrameworkVW>,
selected: FrameworkVW? = null
) : LanguageVM(frameworks, selected, JAVA)
class Kotlin(
frameworks: List<FrameworkVW>,
selected: FrameworkVW? = null
) : LanguageVM(frameworks, selected, KOTLIN)
companion object {
const val JAVA = "Java"
const val KOTLIN = "Kotlin"
}
}
sealed class FrameworkVW(
val propertyName: String,
val properties: List<AdditionalPropertiesVM>
) {
class None(
properties: List<AdditionalPropertiesVM> = emptyList()
) : FrameworkVW(NONE, properties)
class Gson(
properties: List<AdditionalPropertiesVM> = emptyList()
) : FrameworkVW(GSON, properties)
class Jackson(
properties: List<AdditionalPropertiesVM> = emptyList()
) : FrameworkVW(JACKSON, properties)
class LoganSquare(
properties: List<AdditionalPropertiesVM> = emptyList()
) : FrameworkVW(LOGAN_SQUARE, properties)
class Moshi(
properties: List<AdditionalPropertiesVM> = emptyList()
) : FrameworkVW(MOSHI, properties)
class AutoValue(
properties: List<AdditionalPropertiesVM> = emptyList()
) : FrameworkVW(AUTO_VALUE, properties)
class FastJson(
properties: List<AdditionalPropertiesVM> = emptyList()
) : FrameworkVW(FAST_JSON, properties)
companion object {
const val NONE = "none"
const val GSON = "GSON"
const val JACKSON = "Jackson"
const val LOGAN_SQUARE = "Logan Square"
const val MOSHI = "Moshi"
const val AUTO_VALUE = "AutoValue"
const val FAST_JSON = "FastJson"
}
}
sealed class AdditionalPropertiesVM(
var selected: Boolean,
val propertyName: String
) {
class UseSetters(
selected: Boolean = false
) : AdditionalPropertiesVM(selected, SETTERS)
class UseGetters(
selected: Boolean = false
) : AdditionalPropertiesVM(selected, GETTERS)
class UseToString(
selected: Boolean = false
) : AdditionalPropertiesVM(selected, TO_STRING)
class UseKotlinParcelable(
selected: Boolean = false
) : AdditionalPropertiesVM(selected, KOTLIN_PARCELABLE)
class UseKotlinSingleDataClass(
selected: Boolean = false
) : AdditionalPropertiesVM(selected, KOTLIN_SINGLE_DATA_CLASS)
companion object {
const val SETTERS = "create setters"
const val GETTERS = "create getters"
const val TO_STRING = "override toString()"
const val KOTLIN_PARCELABLE = "parcelable (Android)"
const val KOTLIN_SINGLE_DATA_CLASS = "single data class"
}
}