Skip to content

Commit 5b39747

Browse files
Use _ separator for new entity names since 7.0 #179
1 parent ff86c85 commit 5b39747

6 files changed

Lines changed: 39 additions & 27 deletions

File tree

src/main/kotlin/com/haulmont/cuba/cli/cubaplugin/screen/entityscreen/CreateBrowseScreenCommand.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package com.haulmont.cuba.cli.cubaplugin.screen.entityscreen
1818

1919
import com.beust.jcommander.Parameters
2020
import com.haulmont.cuba.cli.commands.NonInteractiveInfo
21+
import com.haulmont.cuba.cli.cubaplugin.model.Entity
2122
import com.haulmont.cuba.cli.cubaplugin.model.ModuleStructure
2223
import com.haulmont.cuba.cli.cubaplugin.model.PlatformVersion
2324
import com.haulmont.cuba.cli.generation.Properties
@@ -31,13 +32,13 @@ class CreateBrowseScreenCommand(private val forceVersion: PlatformVersion? = nul
3132

3233
override fun getModelName(): String = EntityScreenModel.MODEL_NAME
3334

34-
override fun createModel(answers: Answers): EntityScreenModel = EntityScreenModel(answers, entitySearch)
35+
override fun createModel(answers: Answers): EntityScreenModel = EntityScreenModel(answers)
3536

36-
override fun getDefaultScreenId(entityName: String) = projectModel.namespace + "$" + entityName.split('.').last() + ".browse"
37+
override fun getDefaultScreenId(entityName: String) = "$entityName.browse"
3738

38-
override fun getDefaultControllerName(entityName: String) = entityName.split('.').last() + "Browse"
39+
override fun getDefaultControllerName(entity: Entity) = entity.className + "Browse"
3940

40-
override fun getDefaultDescriptorName(entityName: String) = entityName.split('.').last().toLowerCase() + "-browse"
41+
override fun getDefaultDescriptorName(entity: Entity) = entity.className.toLowerCase() + "-browse"
4142

4243
override fun generate(bindings: Map<String, Any>) {
4344
TemplateProcessor(resources.getTemplate("browseScreen"), bindings, version) {

src/main/kotlin/com/haulmont/cuba/cli/cubaplugin/screen/entityscreen/CreateEditScreenCommand.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package com.haulmont.cuba.cli.cubaplugin.screen.entityscreen
1818

1919
import com.beust.jcommander.Parameters
2020
import com.haulmont.cuba.cli.commands.NonInteractiveInfo
21+
import com.haulmont.cuba.cli.cubaplugin.model.Entity
2122
import com.haulmont.cuba.cli.cubaplugin.model.ModuleStructure
2223
import com.haulmont.cuba.cli.cubaplugin.model.PlatformVersion
2324
import com.haulmont.cuba.cli.generation.Properties
@@ -31,13 +32,13 @@ class CreateEditScreenCommand(private val forceVersion: PlatformVersion? = null)
3132

3233
override fun getModelName(): String = EntityScreenModel.MODEL_NAME
3334

34-
override fun createModel(answers: Answers): EntityScreenModel = EntityScreenModel(answers, entitySearch)
35+
override fun createModel(answers: Answers): EntityScreenModel = EntityScreenModel(answers)
3536

36-
override fun getDefaultScreenId(entityName: String) = projectModel.namespace + "$" + entityName.split('.').last() + ".edit"
37+
override fun getDefaultScreenId(entityName: String) = "$entityName.edit"
3738

38-
override fun getDefaultControllerName(entityName: String) = entityName.split('.').last() + "Edit"
39+
override fun getDefaultControllerName(entity: Entity) = entity.className + "Edit"
3940

40-
override fun getDefaultDescriptorName(entityName: String) = entityName.split('.').last().toLowerCase() + "-edit"
41+
override fun getDefaultDescriptorName(entity: Entity) = entity.className.toLowerCase() + "-edit"
4142

4243
override fun generate(bindings: Map<String, Any>) {
4344
TemplateProcessor(resources.getTemplate("editScreen"), bindings, version) {

src/main/kotlin/com/haulmont/cuba/cli/cubaplugin/screen/entityscreen/EntityScreenCommandBase.kt

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ package com.haulmont.cuba.cli.cubaplugin.screen.entityscreen
1919
import com.haulmont.cuba.cli.Resources
2020
import com.haulmont.cuba.cli.commands.NonInteractiveInfo
2121
import com.haulmont.cuba.cli.cubaplugin.di.cubaKodein
22+
import com.haulmont.cuba.cli.cubaplugin.model.Entity
2223
import com.haulmont.cuba.cli.cubaplugin.screen.ScreenCommandBase
24+
import com.haulmont.cuba.cli.prompting.Option
2325
import com.haulmont.cuba.cli.prompting.QuestionsList
2426
import org.kodein.di.generic.instance
2527
import java.io.PrintWriter
@@ -45,32 +47,31 @@ abstract class EntityScreenCommandBase<out T : EntityScreenModel> : ScreenComman
4547
override fun QuestionsList.prompting() {
4648
val entitiesList = entitySearch.getAllEntities()
4749
.filter { !it.embeddable }
48-
.map { it.fqn }
4950
if (entitiesList.isEmpty()) {
5051
printWriter.println("Project does not have any suitable entities.")
5152
abort()
5253
}
5354

54-
textOptions("entityName", "Choose entity", entitiesList)
55+
options("entity", "Choose entity", entitiesList.map { Option("", it.fqn, it) })
5556

5657
question("packageName", "Package name") {
5758
validate {
5859
checkIsPackage()
5960
}
6061

6162
default { answers ->
62-
val entityName: String by answers
63+
val entity: Entity by answers
6364

64-
val packageParts = entityName.split('.').filter { it != "entity" }
65-
packageParts.take(packageParts.lastIndex).joinToString(".") + ".web." + packageParts.last().toLowerCase()
65+
val packageParts = entity.packageName.split('.').filter { it != "entity" }
66+
packageParts.joinToString(".") + ".web." + entity.className.toLowerCase()
6667
}
6768
}
6869

6970
question("screenId", "Screen id") {
7071
default { answers ->
71-
val entityName: String by answers
72+
val entity: Entity by answers
7273

73-
getDefaultScreenId(entityName)
74+
getDefaultScreenId(entity.name)
7475
}
7576

7677
validate {
@@ -80,9 +81,9 @@ abstract class EntityScreenCommandBase<out T : EntityScreenModel> : ScreenComman
8081

8182
question("descriptorName", "Descriptor name") {
8283
default { answers ->
83-
val entityName: String by answers
84+
val entity: Entity by answers
8485

85-
getDefaultDescriptorName(entityName)
86+
getDefaultDescriptorName(entity)
8687
}
8788

8889
validate {
@@ -94,8 +95,8 @@ abstract class EntityScreenCommandBase<out T : EntityScreenModel> : ScreenComman
9495

9596
question("controllerName", "Controller name") {
9697
default { answers ->
97-
val entityName: String by answers
98-
getDefaultControllerName(entityName)
98+
val entity: Entity by answers
99+
getDefaultControllerName(entity)
99100
}
100101

101102
validate {
@@ -106,9 +107,9 @@ abstract class EntityScreenCommandBase<out T : EntityScreenModel> : ScreenComman
106107
}
107108
}
108109

109-
protected abstract fun getDefaultControllerName(entityName: String): String
110+
protected abstract fun getDefaultControllerName(entity: Entity): String
110111

111-
protected abstract fun getDefaultDescriptorName(entityName: String): String
112+
protected abstract fun getDefaultDescriptorName(entity: Entity): String
112113

113114
protected abstract fun getDefaultScreenId(entityName: String) : String
114115

src/main/kotlin/com/haulmont/cuba/cli/cubaplugin/screen/entityscreen/EntityScreenModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ import com.haulmont.cuba.cli.cubaplugin.model.Entity
2020
import com.haulmont.cuba.cli.cubaplugin.model.EntitySearch
2121
import com.haulmont.cuba.cli.prompting.Answers
2222

23-
class EntityScreenModel(answers: Answers, entitySearch: EntitySearch) {
23+
class EntityScreenModel(answers: Answers) {
2424
val screenId: String by answers
2525
val descriptorName: String by answers
2626
val packageName: String by answers
27-
val entity: Entity = entitySearch.findEntity(answers["entityName"] as String)!!
27+
val entity: Entity by answers
2828
val controllerName: String by answers
2929

3030
companion object {

src/main/kotlin/com/haulmont/cuba/cli/cubaplugin/screen/entityscreen/MasterDetailScreenCommand.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.haulmont.cuba.cli.cubaplugin.screen.entityscreen
1818

1919
import com.beust.jcommander.Parameters
20+
import com.haulmont.cuba.cli.cubaplugin.model.Entity
2021
import com.haulmont.cuba.cli.cubaplugin.model.ModuleStructure
2122
import com.haulmont.cuba.cli.generation.Properties
2223
import com.haulmont.cuba.cli.generation.TemplateProcessor
@@ -26,13 +27,13 @@ import com.haulmont.cuba.cli.prompting.Answers
2627
class MasterDetailScreenCommand : EntityScreenCommandBase<EntityScreenModel>() {
2728
override fun getModelName(): String = EntityScreenModel.MODEL_NAME
2829

29-
override fun createModel(answers: Answers): EntityScreenModel = EntityScreenModel(answers, entitySearch)
30+
override fun createModel(answers: Answers): EntityScreenModel = EntityScreenModel(answers)
3031

31-
override fun getDefaultScreenId(entityName: String) = projectModel.namespace + "$" + entityName.split('.').last() + ".browse"
32+
override fun getDefaultScreenId(entityName: String) = "$entityName.browse"
3233

33-
override fun getDefaultControllerName(entityName: String) = entityName.split('.').last() + "Browse"
34+
override fun getDefaultControllerName(entity: Entity) = entity.className + "Browse"
3435

35-
override fun getDefaultDescriptorName(entityName: String) = entityName.split('.').last().toLowerCase() + "-browse"
36+
override fun getDefaultDescriptorName(entity: Entity) = entity.className.toLowerCase() + "-browse"
3637

3738
override fun generate(bindings: Map<String, Any>) {
3839
TemplateProcessor(resources.getTemplate("masterDetailScreen"), bindings) {

src/test/kotlin/com/haulmont/cuba/cli/cubaplugin/project/ProjectInitCommandTest.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package com.haulmont.cuba.cli.cubaplugin.project
1818

1919
import com.haulmont.cuba.cli.CliPlugin
2020
import com.haulmont.cuba.cli.command.CommandTestBase
21+
import com.haulmont.cuba.cli.commands.CommandExecutionException
2122
import com.haulmont.cuba.cli.cubaplugin.CubaPlugin
2223
import com.haulmont.cuba.cli.cubaplugin.di.cubaKodein
2324
import com.haulmont.cuba.cli.cubaplugin.model.PlatformVersion
@@ -64,4 +65,11 @@ class ProjectInitCommandTest : CommandTestBase() {
6465
assertTrue(projectModel.namespace == "tp")
6566
assertTrue(projectModel.platformVersion == PlatformVersion("7.1-SNAPSHOT"))
6667
}
68+
69+
@Test
70+
fun testFailOnCreatingInsideAnotherProject() {
71+
createProject()
72+
executeCommand(ProjectInitCommand(kodein))
73+
assertErrorEvent<CommandExecutionException>()
74+
}
6775
}

0 commit comments

Comments
 (0)