diff --git a/.gitignore b/.gitignore
index 1cfa470..7715aab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@ out/
build/
.gradle/
/.idea/
+local.properties
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 7eea8da..0c647b5 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -12,8 +12,7 @@
-
-
+
@@ -31,12 +30,26 @@
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -96,18 +109,18 @@
- {
+ "lastFilter": {
+ "state": "OPEN",
+ "assignee": "NeProgramist"
}
-}]]>
-
+ {
+ "selectedUrlAndAccountId": {
+ "url": "https://github.com/Promova/Eventsdroid",
+ "accountId": "fd870b85-6e0f-4755-b633-27afdbe203f1"
}
-}]]>
+}
-
+ {
+ "associatedIndex": 1
+}
@@ -573,14 +586,22 @@
@@ -591,7 +612,7 @@
-
+
@@ -618,6 +639,50 @@
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ false
+ false
+
+
@@ -634,11 +699,21 @@
+
+
+
+
+
+
+
+
+
+
@@ -721,6 +796,17 @@
+
+
+
+
+
diff --git a/build.gradle b/build.gradle
index a9d8427..bb05568 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,13 +1,10 @@
-
plugins {
- id 'org.jetbrains.kotlin.jvm' version '1.9.22'
+ id 'org.jetbrains.kotlin.jvm' version '2.1.20'
id 'java-gradle-plugin'
id "com.gradle.plugin-publish" version '1.2.1'
+ id("maven-publish")
}
-group 'sleepsci.analytics'
-version '0.9.2'
-
repositories {
jcenter()
}
@@ -16,38 +13,43 @@ dependencies {
compileOnly gradleApi()
// Kotlin
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.22"
- implementation "com.squareup:kotlinpoet:1.0.0-RC1"
-
- // JSON Parsing
- implementation "com.google.code.gson:gson:2.8.2"
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20"
+ implementation "com.squareup:kotlinpoet:2.1.0"
}
gradlePlugin {
plugins {
eventsGenerator {
- id = 'com.sleepsci.eventsdroid'
- implementationClass = 'com.betterme.eventsdroid.EventsGeneratorPlugin'
+ id = 'com.appsci.words.eventsdroid'
+ implementationClass = 'com.appsci.words.eventsdroid.EventsGeneratorPlugin'
}
}
}
-gradlePlugin {
- description = 'Plugin which allows automatic analytics events generation based on the given schema'
- website = 'https://github.com/AppSci/Eventsdroid'
- vcsUrl = 'https://github.com/AppSci/Eventsdroid'
-
- plugins {
-
- eventsGenerator {
- tags = ['analytics', 'events', 'codegen', 'generation']
- displayName = 'eventsDroid'
- version = '0.9.2'
- description = "events generator plugin"
+Properties properties = new Properties()
+properties.load(project.rootProject.file('local.properties').newDataInputStream())
+
+group = "com.appsci.words"
+version = "1.0.0-alpha11"
+
+publishing {
+ repositories {
+ maven {
+ name = "GitHubPackages"
+ url = uri("https://maven.pkg.github.com/Promova/Eventsdroid")
+ credentials {
+ username = properties["github.actor"] as String
+ password = properties["github.token"] as String
+ }
}
}
}
+java {
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
+}
+
compileKotlin {
kotlinOptions.jvmTarget = "17"
}
diff --git a/local.properties b/local.properties
deleted file mode 100644
index 442337d..0000000
--- a/local.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-## This file must *NOT* be checked into Version Control Systems,
-# as it contains information specific to your local configuration.
-#
-# Location of the SDK. This is only used by Gradle.
-# For customization when using a Version Control System, please read the
-# header note.
-#Tue Jan 28 12:33:35 EET 2025
-sdk.dir=/Users/yevhenii.zasko/Library/Android/sdk
diff --git a/settings.gradle b/settings.gradle
index 1d798b1..e45b13c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-rootProject.name = 'com.betterme.eventsdroid'
+rootProject.name = 'eventsdroid'
diff --git a/src/main/kotlin/com/appsci/words/eventsdroid/EventsGenerator.kt b/src/main/kotlin/com/appsci/words/eventsdroid/EventsGenerator.kt
new file mode 100644
index 0000000..eb52843
--- /dev/null
+++ b/src/main/kotlin/com/appsci/words/eventsdroid/EventsGenerator.kt
@@ -0,0 +1,308 @@
+package com.appsci.words.eventsdroid
+
+import com.squareup.kotlinpoet.*
+import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
+import java.io.File
+
+data class EventGroup(
+ val name: String,
+ val events: List,
+)
+
+data class Event(
+ val name: String,
+ val customClassName: String?,
+ val description: String?,
+ val parameters: List,
+)
+
+data class Parameter(
+ val name: String,
+ val nullable: Boolean,
+ val description: String?,
+)
+
+class EventsGenerator(
+ private val destFilePath: File,
+ private val packageName: String
+) {
+
+ companion object {
+ private const val BASE_EVENT_CLASS_NAME = "BaseEvent"
+ }
+
+ private fun parseCsvFile(file: File): List {
+ return file
+ .readLines()
+ .asSequence()
+ .drop(1) // drop first line with column names
+ .map { it.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)".toRegex()) } // split by a cleaver regexp
+ .filter {
+ // category and name are mandatory
+ !it.getOrNull(0).isNullOrBlank() && !it.getOrNull(2).isNullOrBlank()
+ }
+ .groupBy { it.first() }
+ .map { eventGroup ->
+ val eventGroupName = eventGroup.key
+ val events = eventGroup.value.map { events ->
+ val customName = events.getOrNull(1)?.takeIf { it.isNotBlank() }
+ val eventName = events[2]
+ val description = events.getOrNull(3)?.takeIf { it.isNotBlank() }
+
+ val eventParams = events
+ .drop(4)
+ .chunked(2) // take pairs of parameters
+ .mapNotNull { pair ->
+ val name = pair[0]
+ val description = pair.getOrNull(1)
+
+ val paramName = name.trim()
+ if (paramName.isNotBlank()) {
+ val isNullable = paramName.last() == '?'
+ val paramDescription = description?.trim()?.takeIf { it.isNotBlank() }
+
+ Parameter(
+ name = paramName.trimEnd('?'),
+ nullable = isNullable,
+ description = paramDescription,
+ )
+ } else {
+ null
+ }
+ }
+
+ Event(
+ name = eventName,
+ customClassName = customName,
+ description = description,
+ parameters = eventParams,
+ )
+ }
+
+ EventGroup(
+ name = eventGroupName,
+ events = events,
+ )
+ }
+ }
+
+ fun generateEventsClasses(schemaFile: File) = runCatching {
+ val eventGroups = parseCsvFile(schemaFile)
+
+ eventGroups.forEach { eventGroup ->
+ var hasNullableParams = false
+ val categoryName = eventGroup.name
+ val formattedClassName = getFormattedEventSetClassName(categoryName)
+
+ val className = ClassName("", formattedClassName)
+ val rootObjectBuilder = TypeSpec.objectBuilder(formattedClassName)
+
+ val eventNames = mutableListOf()
+ eventGroup.events.forEach { event ->
+
+ val eventName = event.name
+ var eventClassName = getFormattedEventClassName(event.customClassName ?: event.name)
+
+ val duplicateCount = eventNames.count { it == eventClassName }
+ if (duplicateCount > 0) {
+ eventClassName += "V${duplicateCount + 1}"
+ }
+ eventNames.add(eventClassName)
+
+ val parameters = event.parameters
+ hasNullableParams = hasNullableParams || parameters.any { it.nullable }
+
+ if (parameters.isEmpty()) {
+ // Otherwise, plain Event object with empty custom parameters map will be
+ // generated for this event.
+ val eventObjectBuilder = createEventObjectBuilder(
+ eventName = eventName,
+ eventClassName = eventClassName,
+ description = event.description,
+ categoryName = categoryName,
+ )
+
+ rootObjectBuilder.addType(eventObjectBuilder.build())
+ } else {
+ // If there are many parameters defined, data class with custom fields will be generated.
+ val eventDataClassBuilder = createEventDataClassBuilder(
+ eventName = eventName,
+ eventClassName = eventClassName,
+ description = event.description,
+ categoryName = categoryName,
+ parameters = parameters,
+ )
+
+ rootObjectBuilder.addType(eventDataClassBuilder.build())
+ }
+ }
+
+ val generalPackageName = packageName
+ val eventsFile = FileSpec
+ .builder(
+ packageName = "$packageName.${categoryName.lowercase()}",
+ fileName = "$className"
+ )
+ .apply {
+ if (hasNullableParams) addImport(generalPackageName, "orNone")
+ }
+ .addType(rootObjectBuilder.build())
+ .build()
+ eventsFile.writeTo(destFilePath)
+ }
+ }.onFailure { e ->
+ println("Error generating event classes: ${e.message}")
+ e.printStackTrace()
+ }
+
+ fun generateBaseEventFile() {
+ val baseEventClassBuilder = TypeSpec.classBuilder("BaseEvent").apply {
+ primaryConstructor(
+ FunSpec.constructorBuilder()
+ .addParameter("categoryName", String::class)
+ .addParameter("eventName", String::class)
+ .addParameter(
+ "params",
+ Map::class.parameterizedBy(String::class, String::class)
+ )
+ .build()
+ )
+ addModifiers(KModifier.OPEN)
+ addProperty(
+ PropertySpec.builder("categoryName", String::class)
+ .initializer("categoryName")
+ .build()
+ )
+ addProperty(
+ PropertySpec.builder("eventName", String::class)
+ .initializer("eventName")
+ .build()
+ )
+ addProperty(
+ PropertySpec
+ .builder(
+ "params",
+ Map::class.parameterizedBy(String::class, String::class)
+ )
+ .initializer("params")
+ .build()
+ )
+ }
+
+ val defaultValueFunction = FunSpec.builder("orNone")
+ .receiver(String::class.asTypeName().copy(nullable = true))
+ .addStatement("return this ?: \"none\"")
+ .returns(String::class)
+
+ val file = FileSpec.builder(packageName, BASE_EVENT_CLASS_NAME)
+ .addType(baseEventClassBuilder.build())
+ .addFunction(defaultValueFunction.build())
+ .build()
+ file.writeTo(destFilePath)
+ }
+
+ private fun createEventObjectBuilder(
+ eventClassName: String,
+ eventName: String,
+ description: String?,
+ categoryName: String,
+ ): TypeSpec.Builder {
+
+ val eventObjectBuilder = TypeSpec.objectBuilder(eventClassName)
+
+ return eventObjectBuilder
+ .apply {
+ if (description != null) addKdoc("%L\n", description)
+ }
+ .superclass(ClassName(packageName, BASE_EVENT_CLASS_NAME))
+ .addSuperclassConstructorParameter("%S", categoryName)
+ .addSuperclassConstructorParameter("%S", eventName)
+ .addSuperclassConstructorParameter("emptyMap()")
+ }
+
+ private fun createEventDataClassBuilder(
+ parameters: List,
+ eventClassName: String,
+ description: String?,
+ categoryName: String,
+ eventName: String
+ ): TypeSpec.Builder {
+
+ val eventDataClassBuilder = TypeSpec.classBuilder(eventClassName)
+
+ // Initialize the builder of event data class constructor which accepts custom parameters as arguments.
+ val customParamsConstructorBuilder = FunSpec.constructorBuilder()
+
+ // Generate map of custom parameters
+ val customEventParamsBuilder = CodeBlock.builder()
+ customEventParamsBuilder.add("mapOf(")
+
+ val eventParamsSet = parameters.toSet()
+
+ eventParamsSet.forEachIndexed { index, field ->
+ val formattedParamName = getFormattedParameterName(field.name)
+
+ // Add custom parameter to event constructor's signature.
+ val type = String::class.asTypeName().copy(nullable = field.nullable)
+ customParamsConstructorBuilder.addParameter(formattedParamName, type)
+
+ // Provide specification for this custom parameter.
+ val eventParamSpec = PropertySpec.builder(formattedParamName, type)
+ .apply {
+ if (field.description != null) addKdoc("%L\n", field.description)
+ }
+ .initializer(formattedParamName)
+ .build()
+ eventDataClassBuilder.addProperty(eventParamSpec)
+
+ // Add custom parameters to map.
+ if (field.nullable) {
+ customEventParamsBuilder.add("%S to %N.orNone()", field.name, eventParamSpec)
+ } else {
+ customEventParamsBuilder.add("%S to %N", field.name, eventParamSpec)
+ }
+ if (index < eventParamsSet.size - 1) {
+ // Separate all pairs except for the last one with comma.
+ customEventParamsBuilder.add(", ")
+ }
+ }
+ customEventParamsBuilder.add(")")
+
+ return eventDataClassBuilder
+ .apply {
+ if (description != null) addKdoc("%L\n", description)
+ }
+ .addModifiers(KModifier.DATA)
+ .primaryConstructor(customParamsConstructorBuilder.build())
+ .superclass(ClassName(packageName, BASE_EVENT_CLASS_NAME))
+ .addSuperclassConstructorParameter("%S", categoryName)
+ .addSuperclassConstructorParameter("%S", eventName)
+ .addSuperclassConstructorParameter(customEventParamsBuilder.build())
+ }
+
+ private fun getFormattedEventSetClassName(categoryName: String): String {
+ return categoryName
+ .split("_")
+ .asSequence()
+ .map { it.capitalize() }
+ .joinToString(postfix = "Events", separator = "")
+ }
+
+ private fun getFormattedEventClassName(eventName: String): String {
+ return eventName
+ .split("_")
+ .asSequence()
+ .map { it.capitalize() }
+ .joinToString(separator = "", postfix = "Event")
+ }
+
+ private fun getFormattedParameterName(paramName: String): String {
+ return paramName
+ .split("_")
+ .asSequence()
+ .mapIndexed { index: Int, param: String ->
+ if (index > 0) param.capitalize() else param
+ }
+ .joinToString(separator = "")
+ }
+}
diff --git a/src/main/kotlin/com/betterme/eventsdroid/EventsGeneratorExtension.kt b/src/main/kotlin/com/appsci/words/eventsdroid/EventsGeneratorExtension.kt
similarity index 92%
rename from src/main/kotlin/com/betterme/eventsdroid/EventsGeneratorExtension.kt
rename to src/main/kotlin/com/appsci/words/eventsdroid/EventsGeneratorExtension.kt
index dfb9ba8..e13706f 100644
--- a/src/main/kotlin/com/betterme/eventsdroid/EventsGeneratorExtension.kt
+++ b/src/main/kotlin/com/appsci/words/eventsdroid/EventsGeneratorExtension.kt
@@ -1,4 +1,4 @@
-package com.betterme.eventsdroid
+package com.appsci.words.eventsdroid
import org.gradle.api.Project
import org.gradle.api.provider.Property
diff --git a/src/main/kotlin/com/betterme/eventsdroid/EventsGeneratorPlugin.kt b/src/main/kotlin/com/appsci/words/eventsdroid/EventsGeneratorPlugin.kt
similarity index 86%
rename from src/main/kotlin/com/betterme/eventsdroid/EventsGeneratorPlugin.kt
rename to src/main/kotlin/com/appsci/words/eventsdroid/EventsGeneratorPlugin.kt
index 90985ec..01b6250 100644
--- a/src/main/kotlin/com/betterme/eventsdroid/EventsGeneratorPlugin.kt
+++ b/src/main/kotlin/com/appsci/words/eventsdroid/EventsGeneratorPlugin.kt
@@ -1,4 +1,4 @@
-package com.betterme.eventsdroid
+package com.appsci.words.eventsdroid
import org.gradle.api.Plugin
import org.gradle.api.Project
diff --git a/src/main/kotlin/com/betterme/eventsdroid/EventsGeneratorTask.kt b/src/main/kotlin/com/appsci/words/eventsdroid/EventsGeneratorTask.kt
similarity index 78%
rename from src/main/kotlin/com/betterme/eventsdroid/EventsGeneratorTask.kt
rename to src/main/kotlin/com/appsci/words/eventsdroid/EventsGeneratorTask.kt
index 6af5263..0f1a367 100644
--- a/src/main/kotlin/com/betterme/eventsdroid/EventsGeneratorTask.kt
+++ b/src/main/kotlin/com/appsci/words/eventsdroid/EventsGeneratorTask.kt
@@ -1,6 +1,5 @@
-package com.betterme.eventsdroid
+package com.appsci.words.eventsdroid
-import com.google.gson.Gson
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.TaskAction
@@ -19,8 +18,8 @@ open class EventsGeneratorTask : DefaultTask() {
@TaskAction
fun generateEvents() {
- EventsGenerator(Gson(), destPath.get(), packageName.get()).also {
- it.generateBaseEventClass()
+ EventsGenerator(destPath.get(), packageName.get()).also {
+ it.generateBaseEventFile()
it.generateEventsClasses(eventsSchemaFile.get())
}
}
diff --git a/src/main/kotlin/com/betterme/eventsdroid/EventsGenerator.kt b/src/main/kotlin/com/betterme/eventsdroid/EventsGenerator.kt
deleted file mode 100644
index 4283437..0000000
--- a/src/main/kotlin/com/betterme/eventsdroid/EventsGenerator.kt
+++ /dev/null
@@ -1,218 +0,0 @@
-package com.betterme.eventsdroid
-
-import com.betterme.eventsdroid.entities.AnalyticsCategoryEntity
-import com.betterme.eventsdroid.entities.EventParameterEntity
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-import com.squareup.kotlinpoet.*
-import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
-import java.io.File
-
-class EventsGenerator(
- private val gson: Gson,
- private val destFilePath: File,
- private val packageName: String
-) {
-
- companion object {
- private const val BASE_EVENT_CLASS_NAME = "BaseEvent"
- }
-
- fun generateEventsClasses(schemaFile: File) {
- val jsonString = readFile(schemaFile)
-
- val analyticsCategories = gson.fromJson>(jsonString)
- analyticsCategories.forEach { eventEntity ->
- val categoryName = eventEntity.categoryName
- val formattedClassName = getFormattedEventSetClassName(categoryName)
- val className = ClassName("", formattedClassName)
- val rootObjectBuilder = TypeSpec.objectBuilder(formattedClassName)
-
- val predefinedValuesSet = mutableSetOf()
-
- eventEntity.events.forEach { event ->
- var eventNames = mutableListOf()
-
- val eventName = event.eventName
- var eventClassName = getFormattedEventClassName(eventName)
- eventNames.add(eventClassName)
-
- eventNames
- .count { it == eventClassName }
- .takeIf { it <= 1 }
- ?.let {
- eventClassName += "V$it"
- }
-
- val parameters = event.parameters
- val parametersNames = parameters.map { it.param }
-
-
- if (parametersNames.isEmpty()) {
- // Otherwise, plain Event object with empty custom parameters map will be
- // generated for this event.
- val eventObjectBuilder = createEventObjectBuilder(eventClassName, categoryName,
- eventName)
-
- rootObjectBuilder.addType(eventObjectBuilder.build())
- } else {
- // If there are many parameters defined, data class with custom fields will be generated.
- val eventDataClassBuilder = createEventDataClassBuilder(parameters,
- eventClassName, categoryName, eventName)
-
- rootObjectBuilder.addType(eventDataClassBuilder.build())
- }
-
- parameters.filter { it.value.isNotEmpty() && it.value != "null" }.forEach {
- predefinedValuesSet.add(it.value)
- }
- }
-
- if (predefinedValuesSet.isNotEmpty()) {
- val predefinedValuesObjectBuilder = createPredefinedValuesObjectBuilder(predefinedValuesSet)
- rootObjectBuilder.addType(predefinedValuesObjectBuilder.build())
- }
-
- val eventsFile = FileSpec.builder("$packageName.${categoryName.toLowerCase().replace("_", "")}", "$className")
- .addType(rootObjectBuilder.build())
- .build()
- eventsFile.writeTo(destFilePath)
- }
- }
-
- fun generateBaseEventClass() {
- val baseEventClassBuilder = TypeSpec.classBuilder("BaseEvent").apply {
- primaryConstructor(FunSpec.constructorBuilder()
- .addParameter("categoryName", String::class)
- .addParameter("eventName", String::class)
- .addParameter("params", Map::class.parameterizedBy(String::class, String::class))
- .build())
- addModifiers(KModifier.OPEN)
- addProperty(PropertySpec.builder("categoryName", String::class)
- .initializer("categoryName")
- .build())
- addProperty(PropertySpec.builder("eventName", String::class)
- .initializer("eventName")
- .build())
- addProperty(PropertySpec.builder("params", Map::class.parameterizedBy(String::class, String::class))
- .initializer("params")
- .build()
- )
- }
- val file = FileSpec.builder(packageName, BASE_EVENT_CLASS_NAME)
- .addType(baseEventClassBuilder.build())
- .build()
- file.writeTo(destFilePath)
- }
-
- private fun createEventObjectBuilder(
- eventClassName: String,
- categoryName: String,
- eventName: String
- ): TypeSpec.Builder {
-
- val eventObjectBuilder = TypeSpec.objectBuilder(eventClassName)
-
- return eventObjectBuilder
- .superclass(ClassName(packageName, BASE_EVENT_CLASS_NAME))
- .addSuperclassConstructorParameter("%S", categoryName)
- .addSuperclassConstructorParameter("%S", eventName)
- .addSuperclassConstructorParameter("emptyMap()")
- }
-
- private fun createEventDataClassBuilder(
- parameters: List,
- eventClassName: String,
- categoryName: String,
- eventName: String
- ): TypeSpec.Builder {
-
- val eventDataClassBuilder = TypeSpec.classBuilder(eventClassName)
-
- // Initialize the builder of event data class constructor which accepts custom parameters as arguments.
- val customParamsConstructorBuilder = FunSpec.constructorBuilder()
-
- // Generate map of custom parameters
- val customEventParamsBuilder = CodeBlock.builder()
- customEventParamsBuilder.add("mapOf(")
-
- val eventParamsSet = parameters.toSet()
-
- eventParamsSet.forEachIndexed { index, field ->
- val formattedParamName = getFormattedParameterName(field.param)
-
- // Add custom parameter to event constructor's signature.
- customParamsConstructorBuilder.addParameter(formattedParamName, String::class)
-
- // Provide specification for this custom parameter.
- val eventParamSpec = PropertySpec.builder(formattedParamName, String::class)
- .initializer(formattedParamName)
- .build()
- eventDataClassBuilder.addProperty(eventParamSpec)
-
- // Add custom parameters to map.
- customEventParamsBuilder.add("%S to %N", field.param, eventParamSpec)
- if (index < eventParamsSet.size - 1) {
- // Separate all pairs except for the last one with comma.
- customEventParamsBuilder.add(", ")
- }
- }
- customEventParamsBuilder.add(")")
-
- return eventDataClassBuilder
- .addModifiers(KModifier.DATA)
- .primaryConstructor(customParamsConstructorBuilder.build())
- .superclass(ClassName(packageName, BASE_EVENT_CLASS_NAME))
- .addSuperclassConstructorParameter("%S", categoryName)
- .addSuperclassConstructorParameter("%S", eventName)
- .addSuperclassConstructorParameter(customEventParamsBuilder.build())
- }
-
- private fun createPredefinedValuesObjectBuilder(predefinedValues: Set): TypeSpec.Builder {
- val valuesObjectBuilder = TypeSpec.objectBuilder("Values")
- predefinedValues
- .forEach { predefinedValue ->
- valuesObjectBuilder
- .addProperty(PropertySpec.builder(getPredefinedValueVariableName(predefinedValue), String::class)
- .addModifiers(KModifier.CONST)
- .initializer("%S", predefinedValue)
- .build())
- }
- return valuesObjectBuilder
- }
-
- private fun readFile(file: File): String = file.readText(Charsets.UTF_8)
-
- private fun getFormattedEventSetClassName(categoryName: String): String {
- return categoryName
- .split("_")
- .asSequence()
- .map { it.capitalize() }
- .joinToString(postfix = "Events", separator = "")
- }
-
- private fun getFormattedEventClassName(eventName: String): String {
- return eventName
- .split("_")
- .asSequence()
- .map { it.capitalize() }
- .joinToString(separator = "", postfix = "Event")
- }
-
- private fun getFormattedParameterName(paramName: String): String {
- return paramName
- .split("_")
- .asSequence()
- .mapIndexed { index: Int, param: String ->
- if (index > 0) param.capitalize() else param
- }
- .joinToString(separator = "")
- }
-
- private fun getPredefinedValueVariableName(paramValue: String) =
- paramValue.toUpperCase().replace(" ", "_")
-
- inline fun Gson.fromJson(json: String) =
- this.fromJson(json, object : TypeToken() {}.type)
-
-}
diff --git a/src/main/kotlin/com/betterme/eventsdroid/entities/AnalyticsEntities.kt b/src/main/kotlin/com/betterme/eventsdroid/entities/AnalyticsEntities.kt
deleted file mode 100644
index abcce42..0000000
--- a/src/main/kotlin/com/betterme/eventsdroid/entities/AnalyticsEntities.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.betterme.eventsdroid.entities
-
-import com.google.gson.annotations.SerializedName
-
-data class AnalyticsCategoryEntity(
- @SerializedName("name") val categoryName: String,
- @SerializedName("events") val events: List
-)
-
-data class EventEntity(
- @SerializedName("name") val eventName: String,
- @SerializedName("parameters") val parameters: List
-)
-
-data class EventParameterEntity(
- @SerializedName("name") val param: String,
- @SerializedName("value") val value: String
-)
diff --git a/src/main/kotlin/com/betterme/eventsdroid/entities/Event.kt b/src/main/kotlin/com/betterme/eventsdroid/entities/Event.kt
deleted file mode 100644
index a1335fe..0000000
--- a/src/main/kotlin/com/betterme/eventsdroid/entities/Event.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.betterme.eventsdroid.entities
-
-open class Event(
- val categoryName: String,
- val eventName: String,
- open val params: Map
-)
diff --git a/src/main/resources/com.appsci.words.eventsdroid.properties b/src/main/resources/com.appsci.words.eventsdroid.properties
new file mode 100644
index 0000000..a3db2aa
--- /dev/null
+++ b/src/main/resources/com.appsci.words.eventsdroid.properties
@@ -0,0 +1 @@
+implementation-class=com.appsci.words.eventsdroid.EventsGeneratorPlugin
\ No newline at end of file
diff --git a/src/main/resources/com.betterme.eventsdroid.properties b/src/main/resources/com.betterme.eventsdroid.properties
deleted file mode 100644
index 97b06e1..0000000
--- a/src/main/resources/com.betterme.eventsdroid.properties
+++ /dev/null
@@ -1 +0,0 @@
-implementation-class=com.betterme.eventsdroid.EventsGeneratorPlugin
\ No newline at end of file