If you need to write repeated text in IntelliJ then you can use its live templating function to help you. Suppose I’m writing a Liquibase script that will be composed of many similar changesets:
<changeSet id="MapSalvageCategoryAToMIAFTR" author="proctorh">
<preConditions onFail="MARK_RAN">
<and>
<sqlCheck expectedResult="0">SELECT COUNT(*) FROM EXTERNAL_SYSTEM_MAPPED_PROP WHERE REF_DATA_TABLE =
'rd_salvage_category' AND REF_DATA_CODE='CATEGORYA' AND EXTERNAL_SYSTEM_ID = (SELECT ID FROM
RD_EXTERNAL_SYSTEM WHERE CODE='MIAFTR')
</sqlCheck>
</and>
</preConditions>
<sql>INSERT INTO EXTERNAL_SYSTEM_MAPPED_PROP (EXTERNAL_SYSTEM_ID,REF_DATA_TABLE,REF_DATA_CODE,EXT_SYS_PROPERTY_VALUE) (SELECT
ID,'RD_SALVAGE_CATEGORY','CATEGORYA','A' FROM RD_EXTERNAL_SYSTEM WHERE CODE='MIAFTR')
</sql>
</changeSet>I want to repeat these inserts, but with different values for the ref data code, and what it is being mapped to.
- Select the code and go to Tools -> Save as live template.
- Choose the abbreviation for the template.
- Edit the template to insert variables where required.
<changeSet id="MapSalvageCategoryAToMIAFTR" author="proctorh">
<preConditions onFail="MARK_RAN">
<and>
<sqlCheck expectedResult="0">SELECT COUNT(*) FROM EXTERNAL_SYSTEM_MAPPED_PROP WHERE REF_DATA_TABLE =
'rd_salvage_category' AND REF_DATA_CODE='$refdata$' AND EXTERNAL_SYSTEM_ID = (SELECT ID FROM
RD_EXTERNAL_SYSTEM WHERE CODE='MIAFTR')
</sqlCheck>
</and>
</preConditions>
<sql>INSERT INTO EXTERNAL_SYSTEM_MAPPED_PROP
(EXTERNAL_SYSTEM_ID,REF_DATA_TABLE,REF_DATA_CODE,EXT_SYS_PROPERTY_VALUE) (SELECT
ID,'RD_SALVAGE_CATEGORY','$refdata$','$value$' FROM RD_EXTERNAL_SYSTEM WHERE CODE='MIAFTR')
</sql>
</changeSet>Now you can repeat the code block by doing:
- Ctrl / Command + J to bring up the Insert template menu. The carat will be positioned on the first variable. Type the variable value, then press return to go to the next variable.