Skip to content

Commit 154860f

Browse files
committed
Change the class responsible for setting block parent-child relationships to a builder class.
1 parent a17d02e commit 154860f

File tree

2 files changed

+601
-18
lines changed

2 files changed

+601
-18
lines changed

src/main/kotlin/org/domaframework/doma/intellij/formatter/block/SqlFileBlock.kt

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ import org.domaframework.doma.intellij.formatter.block.word.SqlFunctionGroupBloc
5858
import org.domaframework.doma.intellij.formatter.block.word.SqlTableBlock
5959
import org.domaframework.doma.intellij.formatter.block.word.SqlWordBlock
6060
import org.domaframework.doma.intellij.formatter.builder.SqlBlockBuilder
61+
import org.domaframework.doma.intellij.formatter.builder.SqlBlockRelationBuilder
6162
import org.domaframework.doma.intellij.formatter.builder.SqlCustomSpacingBuilder
6263
import org.domaframework.doma.intellij.formatter.handler.CreateClauseHandler
63-
import org.domaframework.doma.intellij.formatter.processor.SqlSetParentGroupProcessor
6464
import org.domaframework.doma.intellij.formatter.util.IndentType
6565
import org.domaframework.doma.intellij.formatter.util.SqlBlockFormattingContext
6666
import 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

Comments
 (0)