From 01563e9d2f14a0e0f3c4f5eae7c42cd9b9c551cb Mon Sep 17 00:00:00 2001 From: Michael Pollmeier Date: Thu, 4 Jul 2024 12:59:07 +0200 Subject: [PATCH] codegen: put everything into the correct subdirectory (#220) * move Accessors.scala into correct directory * refactor output dir handling, move BaseTypes into `nodes` dir * move edges to correct subdir * codegen: put everything into the correct subdirectory --- .../codegen/DomainClassesGenerator.scala | 43 ++++++++++--------- .../generic/{ => accessors}/Accessors.scala | 0 .../generic/{ => edges}/EdgeTypes.scala | 0 .../generic/{ => nodes}/BaseTypes.scala | 0 .../generic/{ => nodes}/RootTypes.scala | 0 .../{ => nodes}/RootTypesTraversals.scala | 0 .../{ => accessors}/Accessors.scala | 0 .../gratefuldead/{ => edges}/EdgeTypes.scala | 0 .../gratefuldead/{ => nodes}/BaseTypes.scala | 0 .../gratefuldead/{ => nodes}/RootTypes.scala | 0 .../{ => nodes}/RootTypesTraversals.scala | 0 .../{ => accessors}/Accessors.scala | 0 .../hierarchical/{ => edges}/EdgeTypes.scala | 0 .../hierarchical/{ => nodes}/BaseTypes.scala | 0 .../hierarchical/{ => nodes}/RootTypes.scala | 0 .../{ => nodes}/RootTypesTraversals.scala | 0 16 files changed, 23 insertions(+), 20 deletions(-) rename test-schemas-domain-classes/src/main/scala/testdomains/generic/{ => accessors}/Accessors.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/generic/{ => edges}/EdgeTypes.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/generic/{ => nodes}/BaseTypes.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/generic/{ => nodes}/RootTypes.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/generic/{ => nodes}/RootTypesTraversals.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/{ => accessors}/Accessors.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/{ => edges}/EdgeTypes.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/{ => nodes}/BaseTypes.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/{ => nodes}/RootTypes.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/{ => nodes}/RootTypesTraversals.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/{ => accessors}/Accessors.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/{ => edges}/EdgeTypes.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/{ => nodes}/BaseTypes.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/{ => nodes}/RootTypes.scala (100%) rename test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/{ => nodes}/RootTypesTraversals.scala (100%) diff --git a/domain-classes-generator/src/main/scala/flatgraph/codegen/DomainClassesGenerator.scala b/domain-classes-generator/src/main/scala/flatgraph/codegen/DomainClassesGenerator.scala index bcece9eb..c2ea8ab0 100644 --- a/domain-classes-generator/src/main/scala/flatgraph/codegen/DomainClassesGenerator.scala +++ b/domain-classes-generator/src/main/scala/flatgraph/codegen/DomainClassesGenerator.scala @@ -37,6 +37,16 @@ class DomainClassesGenerator(schema: Schema) { os.makeDir.all(outputDirForBasePackage) outputDirForBasePackage } + def makeSubdirectory(name: String): os.Path = { + val subdir = outputDir0 / name + os.makeDir(subdir) + subdir + } + val accessorsOutputDir = makeSubdirectory("accessors") + val edgesOutputDir = makeSubdirectory("edges") + val neighborAccessorsOutputDir = makeSubdirectory("neighboraccessors") + val nodesOutputDir = makeSubdirectory("nodes") + val traversalsOutputDir = makeSubdirectory("traversals") val propertyContexts = relevantPropertyContexts(schema) val relevantProperties = propertyContexts.properties @@ -95,7 +105,8 @@ class DomainClassesGenerator(schema: Schema) { .sorted .mkString("\n") - val rootTypes = + os.write( + nodesOutputDir / "RootTypes.scala", s"""package $basePackage.nodes | |trait StaticType[+T] @@ -118,10 +129,9 @@ class DomainClassesGenerator(schema: Schema) { | def copy(): this.type |} |""".stripMargin + ) - os.write(outputDir0 / "RootTypes.scala", rootTypes) - - os.write(outputDir0 / "RootTypesTraversals.scala", generateRootTypesTraversals(schema)) + os.write(nodesOutputDir / "RootTypesTraversals.scala", generateRootTypesTraversals(schema)) val markerTraitsForProperties = relevantProperties .map { p => @@ -206,7 +216,7 @@ class DomainClassesGenerator(schema: Schema) { "\n\n", s"\n$schemaDefinedMarkerTraits\n$markerTraitsForProperties\n" ) - os.write(outputDir0 / "BaseTypes.scala", basetypefile) + os.write(nodesOutputDir / "BaseTypes.scala", basetypefile) val edgeKindByEdgeType = edgeTypes.iterator.zipWithIndex.toMap val edgeTypesSource = edgeTypes.iterator @@ -251,10 +261,8 @@ class DomainClassesGenerator(schema: Schema) { "\n", "\n" ) - os.write(outputDir0 / "EdgeTypes.scala", edgeTypesSource) + os.write(edgesOutputDir / "EdgeTypes.scala", edgeTypesSource) - val nodesRootDir = outputDir0 / "nodes" - os.makeDir(nodesRootDir) nodeTypes.iterator.zipWithIndex.foreach { case (nodeType, kind) => val newExtendz = newExtendzMap(nodeType) val newProperties = newPropsAtNodeList(nodeType) @@ -550,7 +558,7 @@ class DomainClassesGenerator(schema: Schema) { |$newNode |""".stripMargin } - os.write(nodesRootDir / s"${nodeType.className}.scala", nodeSource) + os.write(nodesOutputDir / s"${nodeType.className}.scala", nodeSource) } val schemaFile = { @@ -858,7 +866,8 @@ class DomainClassesGenerator(schema: Schema) { |}""".stripMargin) } - val accessors = + os.write( + accessorsOutputDir / "Accessors.scala", s"""package $basePackage.accessors |import $basePackage.nodes |import scala.collection.immutable.IndexedSeq @@ -879,11 +888,8 @@ class DomainClassesGenerator(schema: Schema) { |import Accessors.* |${conversionsForProperties.mkString("\n\n")} |""".stripMargin + ) - os.write(outputDir0 / "Accessors.scala", accessors) - - val traversalsOutputDir = outputDir0 / "traversals" - os.makeDir(traversalsOutputDir) os.write( traversalsOutputDir / "package.scala", s"""package $basePackage @@ -913,7 +919,7 @@ class DomainClassesGenerator(schema: Schema) { ) } - writeNeighborAccessors(outputDir0, basePackage) + writeNeighborAccessors(neighborAccessorsOutputDir, basePackage) // Accessors and traversals: end // domain object and starters: start @@ -1178,9 +1184,6 @@ class DomainClassesGenerator(schema: Schema) { def writeNeighborAccessors(outputDir: os.Path, basePackage: String): Unit = { val conversions = Seq.newBuilder[String] - val neighborAccessorsRootDir = outputDir / "neighboraccessors" - os.makeDir(neighborAccessorsRootDir) - case class NeighborContext(adjacentNode: AdjacentNode, scaladoc: String, defaultMethodName: String, customStepName: Option[String]) case class NeighborContextsByEdge(direction: Direction.Value, edge: EdgeType, neighborContexts: Seq[NeighborContext]) { lazy val edgeAccessorName = camelCase(edge.name + "_" + direction) @@ -1315,7 +1318,7 @@ class DomainClassesGenerator(schema: Schema) { if (forSingleNode.trim.size + forTraversal.trim.size > 0) { os.write( - neighborAccessorsRootDir / s"${nodeType.className}.scala", + outputDir / s"${nodeType.className}.scala", s""" |package $basePackage.neighboraccessors | @@ -1330,7 +1333,7 @@ class DomainClassesGenerator(schema: Schema) { } os.write( - neighborAccessorsRootDir / "package.scala", + outputDir / "package.scala", s"""package $basePackage | |import flatgraph.traversal.language.* diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/generic/Accessors.scala b/test-schemas-domain-classes/src/main/scala/testdomains/generic/accessors/Accessors.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/generic/Accessors.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/generic/accessors/Accessors.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/generic/EdgeTypes.scala b/test-schemas-domain-classes/src/main/scala/testdomains/generic/edges/EdgeTypes.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/generic/EdgeTypes.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/generic/edges/EdgeTypes.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/generic/BaseTypes.scala b/test-schemas-domain-classes/src/main/scala/testdomains/generic/nodes/BaseTypes.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/generic/BaseTypes.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/generic/nodes/BaseTypes.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/generic/RootTypes.scala b/test-schemas-domain-classes/src/main/scala/testdomains/generic/nodes/RootTypes.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/generic/RootTypes.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/generic/nodes/RootTypes.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/generic/RootTypesTraversals.scala b/test-schemas-domain-classes/src/main/scala/testdomains/generic/nodes/RootTypesTraversals.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/generic/RootTypesTraversals.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/generic/nodes/RootTypesTraversals.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/Accessors.scala b/test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/accessors/Accessors.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/Accessors.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/accessors/Accessors.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/EdgeTypes.scala b/test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/edges/EdgeTypes.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/EdgeTypes.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/edges/EdgeTypes.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/BaseTypes.scala b/test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/nodes/BaseTypes.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/BaseTypes.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/nodes/BaseTypes.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/RootTypes.scala b/test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/nodes/RootTypes.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/RootTypes.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/nodes/RootTypes.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/RootTypesTraversals.scala b/test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/nodes/RootTypesTraversals.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/RootTypesTraversals.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/gratefuldead/nodes/RootTypesTraversals.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/Accessors.scala b/test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/accessors/Accessors.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/Accessors.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/accessors/Accessors.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/EdgeTypes.scala b/test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/edges/EdgeTypes.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/EdgeTypes.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/edges/EdgeTypes.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/BaseTypes.scala b/test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/nodes/BaseTypes.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/BaseTypes.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/nodes/BaseTypes.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/RootTypes.scala b/test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/nodes/RootTypes.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/RootTypes.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/nodes/RootTypes.scala diff --git a/test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/RootTypesTraversals.scala b/test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/nodes/RootTypesTraversals.scala similarity index 100% rename from test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/RootTypesTraversals.scala rename to test-schemas-domain-classes/src/main/scala/testdomains/hierarchical/nodes/RootTypesTraversals.scala