Add 'namespaced' property to support flat vs deep directory structure

Defaults to 'no' to use the preferred flat directory structure.
diff --git a/README.md b/README.md
index c763a38..010a070 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,18 @@
     <dd>
         the package namespace, for example "com.example"
     </dd>
+    <dt>namespaced</dt>
+    <dd>
+        if 'no', uses a flattened directory structure with no package
+        directories and mixed source and resource files in src/ and test/
+        directories (default)
+    </dd>
+    <dd>
+        if 'yes', uses a deep directory structure with package directories and
+        separate directories for source and resource files. This should
+        only be used when namespacing is required to avoid file name
+        ambiguities.
+    </dd>
     <dt>daffodil_version</dt>
     <dd>
         the version of Apache Daffodil to add as a dependency, defaults to the
diff --git a/src/main/g8/src/main/resources/$package$/$name__camel$/xsd/$name__camel$.dfdl.xsd "b/src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/$if\050namespaced.truthy\051$main$else$src$endif$/$if\050namespaced.truthy\051$resources$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/$if\050namespaced.truthy\051$xsd$else$.$endif$/$name__camel$.dfdl.xsd"
similarity index 100%
rename from src/main/g8/src/main/resources/$package$/$name__camel$/xsd/$name__camel$.dfdl.xsd
rename to "src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/$if\050namespaced.truthy\051$main$else$src$endif$/$if\050namespaced.truthy\051$resources$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/$if\050namespaced.truthy\051$xsd$else$.$endif$/$name__camel$.dfdl.xsd"
diff --git a/src/main/g8/src/test/resources/$package$/$name__camel$/Test$name__Camel$.tdml "b/src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/test/$if\050namespaced.truthy\051$resources$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/Test$name__Camel$.tdml"
similarity index 73%
rename from src/main/g8/src/test/resources/$package$/$name__camel$/Test$name__Camel$.tdml
rename to "src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/test/$if\050namespaced.truthy\051$resources$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/Test$name__Camel$.tdml"
index 3654cd3..d897b72 100644
--- a/src/main/g8/src/test/resources/$package$/$name__camel$/Test$name__Camel$.tdml
+++ "b/src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/test/$if\050namespaced.truthy\051$resources$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/Test$name__Camel$.tdml"
@@ -26,12 +26,12 @@
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   defaultRoundTrip="onePass">
 
-  <tdml:parserTestCase name="test_$name;format="camel"$_01" root="$name;format="Camel"$" model="$package;format="packaged"$/$name;format="camel"$/xsd/$name;format="camel"$.dfdl.xsd">
+  <tdml:parserTestCase name="test_$name;format="camel"$_01" root="$name;format="Camel"$" model="$if(namespaced.truthy)$$package;format="packaged"$/$name;format="camel"$/xsd/$endif$$name;format="camel"$.dfdl.xsd">
     <tdml:document>
-      <tdml:documentPart type="file">$package;format="packaged"$/$name;format="camel"$/data/test_01.$name;format="camel"$</tdml:documentPart>
+      <tdml:documentPart type="file">$if(namespaced.truthy)$$package;format="packaged"$/$name;format="camel"$/$endif$data/test_01.$name;format="camel"$</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">$package;format="packaged"$/$name;format="camel"$/infosets/test_01.$name;format="camel"$.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">$if(namespaced.truthy)$$package;format="packaged"$/$name;format="camel"$/$endif$infosets/test_01.$name;format="camel"$.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
diff --git a/src/main/g8/src/test/resources/$package$/$name__camel$/data/test_01.$name__camel$ "b/src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/test/$if\050namespaced.truthy\051$resources$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/data/test_01.$name__camel$"
similarity index 100%
rename from src/main/g8/src/test/resources/$package$/$name__camel$/data/test_01.$name__camel$
rename to "src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/test/$if\050namespaced.truthy\051$resources$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/data/test_01.$name__camel$"
diff --git a/src/main/g8/src/test/resources/$package$/$name__camel$/infosets/test_01.$name__camel$.xml "b/src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/test/$if\050namespaced.truthy\051$resources$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/infosets/test_01.$name__camel$.xml"
similarity index 100%
rename from src/main/g8/src/test/resources/$package$/$name__camel$/infosets/test_01.$name__camel$.xml
rename to "src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/test/$if\050namespaced.truthy\051$resources$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/infosets/test_01.$name__camel$.xml"
diff --git a/src/main/g8/src/test/scala/$package$/$name__camel$/Test$name__Camel$.scala "b/src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/test/$if\050namespaced.truthy\051$scala$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/Test$name__Camel$.scala"
similarity index 88%
rename from src/main/g8/src/test/scala/$package$/$name__camel$/Test$name__Camel$.scala
rename to "src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/test/$if\050namespaced.truthy\051$scala$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/Test$name__Camel$.scala"
index d14d617..83135ce 100644
--- a/src/main/g8/src/test/scala/$package$/$name__camel$/Test$name__Camel$.scala
+++ "b/src/main/g8/$if\050namespaced.truthy\051$src$else$.$endif$/test/$if\050namespaced.truthy\051$scala$else$.$endif$/$if\050namespaced.truthy\051$$package$$else$.$endif$/$if\050namespaced.truthy\051$$name__camel$$else$.$endif$/Test$name__Camel$.scala"
@@ -22,7 +22,7 @@
 import org.apache.daffodil.tdml.Runner
 
 object Test$name;format="Camel"$ {
-  lazy val runner = Runner("/$package;format="packaged"$/$name;format="camel"$/", "Test$name;format="Camel"$.tdml")
+  lazy val runner = Runner("/$if(namespaced.truthy)$$package;format="packaged"$/$name;format="camel"$/$endif$", "Test$name;format="Camel"$.tdml")
 
   @AfterClass def shutDown {
     runner.reset
diff --git a/src/main/g8/.gitattributes b/src/main/g8/.gitattributes
index b2b04d0..0120b8e 100644
--- a/src/main/g8/.gitattributes
+++ b/src/main/g8/.gitattributes
@@ -14,4 +14,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 $endif$
-src/test/resources/**/data/** text=false
+$if(namespaced.truthy)$src/test/resources/**/$else$test/$endif$data/** text=false
diff --git a/src/main/g8/build.sbt b/src/main/g8/build.sbt
index e71786a..b6f4c78 100644
--- a/src/main/g8/build.sbt
+++ b/src/main/g8/build.sbt
@@ -31,3 +31,17 @@
 testOptions += Tests.Argument(TestFrameworks.JUnit, "-v")
 
 crossPaths := false
+
+$if(!namespaced.truthy)$
+// Use flat folder structure. This means *.java and *.scala files are in the
+// same directory as resources files, and source/resource files are only
+// differentiated by their file extension.
+Compile / unmanagedSourceDirectories := Seq(baseDirectory.value / "src")
+Compile / unmanagedResourceDirectories := Seq(baseDirectory.value / "src")
+Compile / unmanagedSources / includeFilter := "*.java" | "*.scala"
+Compile / unmanagedResources / excludeFilter := "*.java" | "*.scala"
+Test / unmanagedSourceDirectories := Seq(baseDirectory.value / "test")
+Test / unmanagedResourceDirectories := Seq(baseDirectory.value / "test")
+Test / unmanagedSources / includeFilter := "*.java" | "*.scala"
+Test / unmanagedResources / excludeFilter := "*.java" | "*.scala"
+$endif$
diff --git a/src/main/g8/default.properties b/src/main/g8/default.properties
index 2f03142..bdf02f4 100644
--- a/src/main/g8/default.properties
+++ b/src/main/g8/default.properties
@@ -15,4 +15,5 @@
 
 name=format
 package=com.example
+namespaced=no
 daffodil_version=maven(org.apache.daffodil, daffodil-tdml-processor_2.12)