@@ -58,9 +58,9 @@ import org.domaframework.doma.intellij.formatter.block.word.SqlFunctionGroupBloc
5858import org.domaframework.doma.intellij.formatter.block.word.SqlTableBlock
5959import org.domaframework.doma.intellij.formatter.block.word.SqlWordBlock
6060import org.domaframework.doma.intellij.formatter.builder.SqlBlockBuilder
61+ import org.domaframework.doma.intellij.formatter.builder.SqlBlockRelationBuilder
6162import org.domaframework.doma.intellij.formatter.builder.SqlCustomSpacingBuilder
6263import org.domaframework.doma.intellij.formatter.handler.CreateClauseHandler
63- import org.domaframework.doma.intellij.formatter.processor.SqlSetParentGroupProcessor
6464import org.domaframework.doma.intellij.formatter.util.IndentType
6565import org.domaframework.doma.intellij.formatter.util.SqlBlockFormattingContext
6666import org.domaframework.doma.intellij.formatter.util.SqlBlockGenerator
@@ -96,7 +96,7 @@ open class SqlFileBlock(
9696 private val blocks = mutableListOf<AbstractBlock >()
9797
9898 private val blockBuilder = SqlBlockBuilder ()
99- private val parentSetProcessor = SqlSetParentGroupProcessor (blockBuilder)
99+ private val blockRelationBuilder = SqlBlockRelationBuilder (blockBuilder)
100100 private val blockUtil = SqlBlockGenerator (this , isEnableFormat(), formatMode)
101101
102102 private val pendingCommentBlocks = mutableListOf<SqlBlock >()
@@ -150,6 +150,7 @@ open class SqlFileBlock(
150150 formatMode,
151151 )
152152 val lastGroup = blockBuilder.getLastGroupTopNodeIndexHistory()
153+ val lastGroupFilteredDirective = blockBuilder.getLastGroupFilterDirective()
153154 return when (child.elementType) {
154155 SqlTypes .KEYWORD -> {
155156 return blockUtil.getKeywordBlock(
@@ -218,10 +219,20 @@ open class SqlFileBlock(
218219 }
219220
220221 SqlTypes .BLOCK_COMMENT -> {
222+ val tempBlock =
223+ blockUtil.getBlockCommentBlock(
224+ child,
225+ createBlockDirectiveCommentSpacingBuilder(),
226+ )
227+ if (tempBlock !is SqlElConditionLoopCommentBlock ) {
228+ if (lastGroup is SqlWithQueryGroupBlock || lastGroupFilteredDirective is SqlWithQueryGroupBlock ) {
229+ return SqlWithCommonTableGroupBlock (child, defaultFormatCtx)
230+ }
231+ }
221232 return if (lastGroup is SqlWithCommonTableGroupBlock ) {
222233 SqlWithCommonTableGroupBlock (child, defaultFormatCtx)
223234 } else {
224- blockUtil.getBlockCommentBlock(child, createBlockDirectiveCommentSpacingBuilder())
235+ tempBlock
225236 }
226237 }
227238
@@ -309,7 +320,7 @@ open class SqlFileBlock(
309320 val lastGroupBlock = blockBuilder.getLastGroupTopNodeIndexHistory()
310321 val lastIndentLevel = lastGroupBlock?.indent?.indentLevel
311322 if (lastGroupBlock == null || lastIndentLevel == null ) {
312- parentSetProcessor .updateGroupBlockAddGroup(
323+ blockRelationBuilder .updateGroupBlockAddGroup(
313324 childBlock,
314325 )
315326 return
@@ -319,81 +330,81 @@ open class SqlFileBlock(
319330
320331 when (childBlock) {
321332 is SqlKeywordGroupBlock -> {
322- parentSetProcessor .updateKeywordGroupBlockParentAndAddGroup(
333+ blockRelationBuilder .updateKeywordGroupBlockParentAndAddGroup(
323334 lastGroupBlock,
324335 lastIndentLevel,
325336 childBlock,
326337 )
327338 }
328339
329340 is SqlColumnDefinitionRawGroupBlock -> {
330- parentSetProcessor .updateColumnDefinitionRawGroupBlockParentAndAddGroup(
341+ blockRelationBuilder .updateColumnDefinitionRawGroupBlockParentAndAddGroup(
331342 lastGroupBlock,
332343 lastIndentLevel,
333344 childBlock,
334345 )
335346 }
336347
337348 is SqlColumnRawGroupBlock -> {
338- parentSetProcessor .updateColumnRawGroupBlockParentAndAddGroup(
349+ blockRelationBuilder .updateColumnRawGroupBlockParentAndAddGroup(
339350 lastGroupBlock,
340351 childBlock,
341352 )
342353 }
343354
344355 is SqlInlineGroupBlock -> {
345356 // case-end
346- parentSetProcessor .updateGroupBlockParentAndAddGroup(
357+ blockRelationBuilder .updateGroupBlockParentAndAddGroup(
347358 childBlock,
348359 )
349360 }
350361
351362 is SqlInlineSecondGroupBlock -> {
352- parentSetProcessor .updateInlineSecondGroupBlockParentAndAddGroup(
363+ blockRelationBuilder .updateInlineSecondGroupBlockParentAndAddGroup(
353364 childBlock,
354365 )
355366 }
356367
357368 is SqlColumnBlock -> {
358- parentSetProcessor .updateGroupBlockParentAndAddGroup(
369+ blockRelationBuilder .updateGroupBlockParentAndAddGroup(
359370 childBlock,
360371 )
361372 }
362373
363374 is SqlElConditionLoopCommentBlock -> {
364- parentSetProcessor .updateConditionLoopCommentBlockParent(
375+ blockRelationBuilder .updateConditionLoopCommentBlockParent(
365376 lastGroupBlock,
366377 childBlock,
367378 )
368379 }
369380
370381 is SqlWordBlock , is SqlOtherBlock -> {
371- parentSetProcessor .updateGroupBlockParentAndAddGroup(
382+ blockRelationBuilder .updateGroupBlockParentAndAddGroup(
372383 childBlock,
373384 )
374385 }
375386
376387 is SqlSubGroupBlock -> {
377- parentSetProcessor .updateSubGroupBlockParent(
388+ blockRelationBuilder .updateSubGroupBlockParent(
378389 lastGroupBlock,
379390 childBlock,
380391 )
381392 }
382393
383394 is SqlRightPatternBlock -> {
384- parentSetProcessor .updateSqlRightPatternBlockParent(
395+ blockRelationBuilder .updateSqlRightPatternBlockParent(
385396 childBlock,
386397 )
387398 }
388399
389400 is SqlElSymbolBlock -> {
390- parentSetProcessor .updateGroupBlockParentAndAddGroup(
401+ blockRelationBuilder .updateGroupBlockParentAndAddGroup(
391402 childBlock,
392403 )
393404 }
394405
395406 is SqlDataTypeBlock -> {
396- parentSetProcessor .updateGroupBlockParentAndAddGroup(
407+ blockRelationBuilder .updateGroupBlockParentAndAddGroup(
397408 childBlock,
398409 )
399410 }
@@ -402,13 +413,13 @@ open class SqlFileBlock(
402413 if (lastGroupBlock is SqlCommaBlock ) {
403414 blockBuilder.removeLastGroupTopNodeIndexHistory()
404415 }
405- parentSetProcessor .updateGroupBlockParentAndAddGroup(
416+ blockRelationBuilder .updateGroupBlockParentAndAddGroup(
406417 childBlock,
407418 )
408419 }
409420
410421 else -> {
411- parentSetProcessor .updateGroupBlockParentAndAddGroup(
422+ blockRelationBuilder .updateGroupBlockParentAndAddGroup(
412423 childBlock,
413424 )
414425 }
0 commit comments