import java.util.Map; | import java.util.Map; | ||||
import java.util.Optional; | import java.util.Optional; | ||||
import java.util.function.Consumer; | import java.util.function.Consumer; | ||||
import org.sonar.core.util.UuidFactory; | |||||
import org.sonar.db.Dao; | import org.sonar.db.Dao; | ||||
import org.sonar.db.DatabaseUtils; | import org.sonar.db.DatabaseUtils; | ||||
import org.sonar.db.DbSession; | import org.sonar.db.DbSession; | ||||
private static final String ACTIVE_RULE_PARAM_IS_NOT_PERSISTED = "ActiveRuleParam is not persisted"; | private static final String ACTIVE_RULE_PARAM_IS_NOT_PERSISTED = "ActiveRuleParam is not persisted"; | ||||
private static final String ACTIVE_RULE_PARAM_IS_ALREADY_PERSISTED = "ActiveRuleParam is already persisted"; | private static final String ACTIVE_RULE_PARAM_IS_ALREADY_PERSISTED = "ActiveRuleParam is already persisted"; | ||||
private final UuidFactory uuidFactory; | |||||
public ActiveRuleDao(UuidFactory uuidFactory) { | |||||
this.uuidFactory = uuidFactory; | |||||
} | |||||
public Optional<ActiveRuleDto> selectByKey(DbSession dbSession, ActiveRuleKey key) { | public Optional<ActiveRuleDto> selectByKey(DbSession dbSession, ActiveRuleKey key) { | ||||
return Optional.ofNullable(mapper(dbSession).selectByKey(key.getRuleProfileUuid(), key.getRuleKey().repository(), key.getRuleKey().rule())); | return Optional.ofNullable(mapper(dbSession).selectByKey(key.getRuleProfileUuid(), key.getRuleKey().repository(), key.getRuleKey().rule())); | ||||
} | } | ||||
public ActiveRuleParamDto insertParam(DbSession dbSession, ActiveRuleDto activeRule, ActiveRuleParamDto activeRuleParam) { | public ActiveRuleParamDto insertParam(DbSession dbSession, ActiveRuleDto activeRule, ActiveRuleParamDto activeRuleParam) { | ||||
checkArgument(activeRule.getId() != null, ACTIVE_RULE_IS_NOT_PERSISTED); | checkArgument(activeRule.getId() != null, ACTIVE_RULE_IS_NOT_PERSISTED); | ||||
checkArgument(activeRuleParam.getId() == null, ACTIVE_RULE_PARAM_IS_ALREADY_PERSISTED); | |||||
checkArgument(activeRuleParam.getUuid() == null, ACTIVE_RULE_PARAM_IS_ALREADY_PERSISTED); | |||||
Preconditions.checkNotNull(activeRuleParam.getRulesParameterId(), RULE_PARAM_IS_NOT_PERSISTED); | Preconditions.checkNotNull(activeRuleParam.getRulesParameterId(), RULE_PARAM_IS_NOT_PERSISTED); | ||||
activeRuleParam.setActiveRuleId(activeRule.getId()); | activeRuleParam.setActiveRuleId(activeRule.getId()); | ||||
activeRuleParam.setUuid(uuidFactory.create()); | |||||
mapper(dbSession).insertParameter(activeRuleParam); | mapper(dbSession).insertParameter(activeRuleParam); | ||||
return activeRuleParam; | return activeRuleParam; | ||||
} | } | ||||
public void updateParam(DbSession dbSession, ActiveRuleParamDto activeRuleParam) { | public void updateParam(DbSession dbSession, ActiveRuleParamDto activeRuleParam) { | ||||
Preconditions.checkNotNull(activeRuleParam.getId(), ACTIVE_RULE_PARAM_IS_NOT_PERSISTED); | |||||
Preconditions.checkNotNull(activeRuleParam.getUuid(), ACTIVE_RULE_PARAM_IS_NOT_PERSISTED); | |||||
mapper(dbSession).updateParameter(activeRuleParam); | mapper(dbSession).updateParameter(activeRuleParam); | ||||
} | } | ||||
public void deleteParam(DbSession dbSession, ActiveRuleParamDto activeRuleParam) { | public void deleteParam(DbSession dbSession, ActiveRuleParamDto activeRuleParam) { | ||||
Preconditions.checkNotNull(activeRuleParam.getId(), ACTIVE_RULE_PARAM_IS_NOT_PERSISTED); | |||||
deleteParamById(dbSession, activeRuleParam.getId()); | |||||
Preconditions.checkNotNull(activeRuleParam.getUuid(), ACTIVE_RULE_PARAM_IS_NOT_PERSISTED); | |||||
deleteParamById(dbSession, activeRuleParam.getUuid()); | |||||
} | } | ||||
public void deleteParamById(DbSession dbSession, int id) { | |||||
mapper(dbSession).deleteParameter(id); | |||||
public void deleteParamById(DbSession dbSession, String uuid) { | |||||
mapper(dbSession).deleteParameter(uuid); | |||||
} | } | ||||
public void deleteParamsByRuleParamOfAllOrganizations(DbSession dbSession, RuleParamDto param) { | public void deleteParamsByRuleParamOfAllOrganizations(DbSession dbSession, RuleParamDto param) { |
void deleteParametersByRuleProfileUuids(@Param("rulesProfileUuids") Collection<String> rulesProfileUuids); | void deleteParametersByRuleProfileUuids(@Param("rulesProfileUuids") Collection<String> rulesProfileUuids); | ||||
void deleteParameter(int activeRuleParamId); | |||||
void deleteParameter(String activeRuleParamUuid); | |||||
void deleteParamsByActiveRuleIds(@Param("activeRuleIds") Collection<Integer> activeRuleIds); | void deleteParamsByActiveRuleIds(@Param("activeRuleIds") Collection<Integer> activeRuleIds); | ||||
public class ActiveRuleParamDto { | public class ActiveRuleParamDto { | ||||
private Integer id; | |||||
private String uuid; | |||||
private Integer activeRuleId; | private Integer activeRuleId; | ||||
private Integer rulesParameterId; | private Integer rulesParameterId; | ||||
private String kee; | private String kee; | ||||
private String value; | private String value; | ||||
public Integer getId() { | |||||
return id; | |||||
public String getUuid() { | |||||
return uuid; | |||||
} | } | ||||
public ActiveRuleParamDto setId(Integer id) { | |||||
this.id = id; | |||||
public ActiveRuleParamDto setUuid(String uuid) { | |||||
this.uuid = uuid; | |||||
return this; | return this; | ||||
} | } | ||||
<!-- Parameters --> | <!-- Parameters --> | ||||
<sql id="activeRuleParamColumns"> | <sql id="activeRuleParamColumns"> | ||||
p.id, | |||||
p.uuid, | |||||
p.active_rule_id as activeRuleId, | p.active_rule_id as activeRuleId, | ||||
p.rules_parameter_id as rulesParameterId, | p.rules_parameter_id as rulesParameterId, | ||||
p.rules_parameter_key as kee, | p.rules_parameter_key as kee, | ||||
p.value as value | p.value as value | ||||
</sql> | </sql> | ||||
<insert id="insertParameter" parameterType="ActiveRuleParam" keyColumn="id" useGeneratedKeys="true" keyProperty="id"> | |||||
<insert id="insertParameter" parameterType="ActiveRuleParam" useGeneratedKeys="false"> | |||||
insert into active_rule_parameters ( | insert into active_rule_parameters ( | ||||
uuid, | |||||
active_rule_id, | active_rule_id, | ||||
rules_parameter_id, | rules_parameter_id, | ||||
rules_parameter_key, | rules_parameter_key, | ||||
value | value | ||||
) values ( | ) values ( | ||||
#{uuid, jdbcType=VARCHAR}, | |||||
#{activeRuleId, jdbcType=BIGINT}, | #{activeRuleId, jdbcType=BIGINT}, | ||||
#{rulesParameterId, jdbcType=BIGINT}, | #{rulesParameterId, jdbcType=BIGINT}, | ||||
#{key, jdbcType=VARCHAR}, | #{key, jdbcType=VARCHAR}, | ||||
<update id="updateParameter" parameterType="ActiveRuleParam"> | <update id="updateParameter" parameterType="ActiveRuleParam"> | ||||
UPDATE active_rule_parameters SET | UPDATE active_rule_parameters SET | ||||
value=#{value, jdbcType=VARCHAR} | value=#{value, jdbcType=VARCHAR} | ||||
WHERE id=#{id, jdbcType=BIGINT} | |||||
WHERE uuid=#{uuid, jdbcType=VARCHAR} | |||||
</update> | </update> | ||||
<delete id="deleteParameters" parameterType="int"> | <delete id="deleteParameters" parameterType="int"> | ||||
DELETE FROM active_rule_parameters WHERE active_rule_id=#{id, jdbcType=BIGINT} | |||||
DELETE FROM active_rule_parameters WHERE active_rule_id=#{activeRuleId, jdbcType=BIGINT} | |||||
</delete> | </delete> | ||||
<delete id="deleteParametersByRuleProfileUuids" parameterType="String"> | <delete id="deleteParametersByRuleProfileUuids" parameterType="String"> | ||||
) | ) | ||||
</delete> | </delete> | ||||
<delete id="deleteParameter" parameterType="int"> | |||||
DELETE FROM active_rule_parameters WHERE id=#{id, jdbcType=BIGINT} | |||||
<delete id="deleteParameter" parameterType="String"> | |||||
DELETE FROM active_rule_parameters WHERE uuid=#{uuid, jdbcType=VARCHAR} | |||||
</delete> | </delete> | ||||
<delete id="deleteParamsByActiveRuleIds" parameterType="Integer"> | <delete id="deleteParamsByActiveRuleIds" parameterType="Integer"> |
); | ); | ||||
CREATE TABLE "ACTIVE_RULE_PARAMETERS"( | CREATE TABLE "ACTIVE_RULE_PARAMETERS"( | ||||
"ID" INTEGER NOT NULL AUTO_INCREMENT (1,1), | |||||
"ACTIVE_RULE_ID" INTEGER NOT NULL, | "ACTIVE_RULE_ID" INTEGER NOT NULL, | ||||
"RULES_PARAMETER_ID" INTEGER NOT NULL, | "RULES_PARAMETER_ID" INTEGER NOT NULL, | ||||
"VALUE" VARCHAR(4000), | "VALUE" VARCHAR(4000), | ||||
"RULES_PARAMETER_KEY" VARCHAR(128) | |||||
"RULES_PARAMETER_KEY" VARCHAR(128), | |||||
"UUID" VARCHAR(40) NOT NULL | |||||
); | ); | ||||
ALTER TABLE "ACTIVE_RULE_PARAMETERS" ADD CONSTRAINT "PK_ACTIVE_RULE_PARAMETERS" PRIMARY KEY("ID"); | |||||
ALTER TABLE "ACTIVE_RULE_PARAMETERS" ADD CONSTRAINT "PK_ACTIVE_RULE_PARAMETERS" PRIMARY KEY("UUID"); | |||||
CREATE INDEX "IX_ARP_ON_ACTIVE_RULE_ID" ON "ACTIVE_RULE_PARAMETERS"("ACTIVE_RULE_ID"); | CREATE INDEX "IX_ARP_ON_ACTIVE_RULE_ID" ON "ACTIVE_RULE_PARAMETERS"("ACTIVE_RULE_ID"); | ||||
CREATE TABLE "ACTIVE_RULES"( | CREATE TABLE "ACTIVE_RULES"( |
import org.junit.Rule; | import org.junit.Rule; | ||||
import org.junit.Test; | import org.junit.Test; | ||||
import org.junit.rules.ExpectedException; | import org.junit.rules.ExpectedException; | ||||
import org.sonar.api.impl.utils.TestSystem2; | |||||
import org.sonar.api.rule.Severity; | import org.sonar.api.rule.Severity; | ||||
import org.sonar.api.rules.RuleType; | import org.sonar.api.rules.RuleType; | ||||
import org.sonar.api.server.rule.RuleParamType; | import org.sonar.api.server.rule.RuleParamType; | ||||
import org.sonar.api.utils.System2; | import org.sonar.api.utils.System2; | ||||
import org.sonar.api.impl.utils.TestSystem2; | |||||
import org.sonar.db.DbSession; | import org.sonar.db.DbSession; | ||||
import org.sonar.db.DbTester; | import org.sonar.db.DbTester; | ||||
import org.sonar.db.organization.OrganizationDto; | import org.sonar.db.organization.OrganizationDto; | ||||
List<ActiveRuleParamDto> reloaded = underTest.selectParamsByActiveRuleId(dbSession, activeRule.getId()); | List<ActiveRuleParamDto> reloaded = underTest.selectParamsByActiveRuleId(dbSession, activeRule.getId()); | ||||
assertThat(reloaded).hasSize(1); | assertThat(reloaded).hasSize(1); | ||||
assertThat(reloaded.get(0)) | assertThat(reloaded.get(0)) | ||||
.matches(p -> Objects.equals(p.getId(), activeRuleParam.getId())) | |||||
.matches(p -> Objects.equals(p.getUuid(), activeRuleParam.getUuid())) | |||||
.matches(p -> p.getKey().equals(activeRuleParam.getKey())) | .matches(p -> p.getKey().equals(activeRuleParam.getKey())) | ||||
.matches(p -> p.getActiveRuleId().equals(activeRule.getId())) | .matches(p -> p.getActiveRuleId().equals(activeRule.getId())) | ||||
.matches(p -> p.getRulesParameterId().equals(rule1Param1.getId())) | .matches(p -> p.getRulesParameterId().equals(rule1Param1.getId())) | ||||
underTest.insertParam(dbSession, | underTest.insertParam(dbSession, | ||||
createFor(profile1, rule1).setId(100), | createFor(profile1, rule1).setId(100), | ||||
ActiveRuleParamDto.createFor(rule1Param1).setValue("activeValue1").setId(100)); | |||||
ActiveRuleParamDto.createFor(rule1Param1).setValue("activeValue1").setUuid("uuid-1")); | |||||
} | } | ||||
@Test | @Test | ||||
List<ActiveRuleParamDto> reloaded = underTest.selectParamsByActiveRuleId(dbSession, activeRule.getId()); | List<ActiveRuleParamDto> reloaded = underTest.selectParamsByActiveRuleId(dbSession, activeRule.getId()); | ||||
assertThat(reloaded).hasSize(1); | assertThat(reloaded).hasSize(1); | ||||
assertThat(reloaded.get(0)) | assertThat(reloaded.get(0)) | ||||
.matches(p -> Objects.equals(p.getId(), activeRuleParam.getId())) | |||||
.matches(p -> Objects.equals(p.getUuid(), activeRuleParam.getUuid())) | |||||
.matches(p -> p.getKey().equals(activeRuleParam.getKey())) | .matches(p -> p.getKey().equals(activeRuleParam.getKey())) | ||||
.matches(p -> p.getActiveRuleId().equals(activeRule.getId())) | .matches(p -> p.getActiveRuleId().equals(activeRule.getId())) | ||||
.matches(p -> p.getRulesParameterId().equals(rule1Param1.getId())) | .matches(p -> p.getRulesParameterId().equals(rule1Param1.getId())) |
import org.sonar.server.platform.db.migration.step.MigrationStepRegistry; | import org.sonar.server.platform.db.migration.step.MigrationStepRegistry; | ||||
import org.sonar.server.platform.db.migration.version.DbVersion; | import org.sonar.server.platform.db.migration.version.DbVersion; | ||||
import org.sonar.server.platform.db.migration.version.v83.activeruleparameters.AddPrimaryKeyOnUuidColumnOfActiveRuleParametersTable; | |||||
import org.sonar.server.platform.db.migration.version.v83.activeruleparameters.AddUuidColumnToActiveRuleParametersTable; | |||||
import org.sonar.server.platform.db.migration.version.v83.activeruleparameters.DropIdColumnOfActiveRuleParametersTable; | |||||
import org.sonar.server.platform.db.migration.version.v83.activeruleparameters.DropPrimaryKeyOnIdColumnOfActiveRuleParametersTable; | |||||
import org.sonar.server.platform.db.migration.version.v83.activeruleparameters.MakeActiveRuleParametersUuidColumnNotNullable; | |||||
import org.sonar.server.platform.db.migration.version.v83.activeruleparameters.PopulateActiveRuleParametersUuid; | |||||
import org.sonar.server.platform.db.migration.version.v83.ceactivity.AddPrimaryKeyOnUuidColumnOfCeActivityTable; | import org.sonar.server.platform.db.migration.version.v83.ceactivity.AddPrimaryKeyOnUuidColumnOfCeActivityTable; | ||||
import org.sonar.server.platform.db.migration.version.v83.ceactivity.DropIdColumnOfCeActivityTable; | import org.sonar.server.platform.db.migration.version.v83.ceactivity.DropIdColumnOfCeActivityTable; | ||||
import org.sonar.server.platform.db.migration.version.v83.ceactivity.DropPrimaryKeyOnIdColumnOfCeActivityTable; | import org.sonar.server.platform.db.migration.version.v83.ceactivity.DropPrimaryKeyOnIdColumnOfCeActivityTable; | ||||
.add(3425, "Drop primary key on 'ID' column of 'DUPLICATIONS_INDEX' table", DropPrimaryKeyOnIdColumnOfDuplicationsIndexTable.class) | .add(3425, "Drop primary key on 'ID' column of 'DUPLICATIONS_INDEX' table", DropPrimaryKeyOnIdColumnOfDuplicationsIndexTable.class) | ||||
.add(3426, "Add primary key on 'UUID' column of 'DUPLICATIONS_INDEX' table", AddPrimaryKeyOnUuidColumnOfDuplicationsIndexTable.class) | .add(3426, "Add primary key on 'UUID' column of 'DUPLICATIONS_INDEX' table", AddPrimaryKeyOnUuidColumnOfDuplicationsIndexTable.class) | ||||
.add(3427, "Drop column 'ID' of 'DUPLICATIONS_INDEX' table", DropIdColumnOfDuplicationsIndexTable.class) | .add(3427, "Drop column 'ID' of 'DUPLICATIONS_INDEX' table", DropIdColumnOfDuplicationsIndexTable.class) | ||||
// Migration of ACTIVE_RULE_PARAMS table | |||||
.add(3428, "Add 'uuid' column for 'ACTIVE_RULE_PARAMS' table", AddUuidColumnToActiveRuleParametersTable.class) | |||||
.add(3429, "Populate 'uuid' column for 'ACTIVE_RULE_PARAMS' table", PopulateActiveRuleParametersUuid.class) | |||||
.add(3430, "Make 'uuid' column not nullable for 'ACTIVE_RULE_PARAMS' table", MakeActiveRuleParametersUuidColumnNotNullable.class) | |||||
.add(3431, "Drop primary key on 'ID' column of 'ACTIVE_RULE_PARAMS' table", DropPrimaryKeyOnIdColumnOfActiveRuleParametersTable.class) | |||||
.add(3432, "Add primary key on 'UUID' column of 'ACTIVE_RULE_PARAMS' table", AddPrimaryKeyOnUuidColumnOfActiveRuleParametersTable.class) | |||||
.add(3433, "Drop column 'ID' of 'ACTIVE_RULE_PARAMS' table", DropIdColumnOfActiveRuleParametersTable.class) | |||||
; | ; | ||||
} | } | ||||
} | } |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import org.sonar.db.Database; | |||||
import org.sonar.server.platform.db.migration.step.DdlChange; | |||||
import org.sonar.server.platform.db.migration.version.v83.util.AddPrimaryKeyBuilder; | |||||
public class AddPrimaryKeyOnUuidColumnOfActiveRuleParametersTable extends DdlChange { | |||||
public AddPrimaryKeyOnUuidColumnOfActiveRuleParametersTable(Database db) { | |||||
super(db); | |||||
} | |||||
@Override | |||||
public void execute(Context context) throws SQLException { | |||||
context.execute(new AddPrimaryKeyBuilder("active_rule_parameters", "uuid").build()); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import org.sonar.db.Database; | |||||
import org.sonar.server.platform.db.migration.def.VarcharColumnDef; | |||||
import org.sonar.server.platform.db.migration.sql.AddColumnsBuilder; | |||||
import org.sonar.server.platform.db.migration.step.DdlChange; | |||||
import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.newVarcharColumnDefBuilder; | |||||
public class AddUuidColumnToActiveRuleParametersTable extends DdlChange { | |||||
private static final String TABLE = "active_rule_parameters"; | |||||
private static final VarcharColumnDef uuidColumnDefinition = newVarcharColumnDefBuilder() | |||||
.setColumnName("uuid") | |||||
.setIsNullable(true) | |||||
.setDefaultValue(null) | |||||
.setLimit(VarcharColumnDef.UUID_SIZE) | |||||
.build(); | |||||
public AddUuidColumnToActiveRuleParametersTable(Database db) { | |||||
super(db); | |||||
} | |||||
@Override | |||||
public void execute(Context context) throws SQLException { | |||||
context.execute(new AddColumnsBuilder(getDialect(), TABLE) | |||||
.addColumn(uuidColumnDefinition) | |||||
.build()); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import org.sonar.db.Database; | |||||
import org.sonar.server.platform.db.migration.sql.DropColumnsBuilder; | |||||
import org.sonar.server.platform.db.migration.step.DdlChange; | |||||
public class DropIdColumnOfActiveRuleParametersTable extends DdlChange { | |||||
public DropIdColumnOfActiveRuleParametersTable(Database db) { | |||||
super(db); | |||||
} | |||||
@Override | |||||
public void execute(Context context) throws SQLException { | |||||
context.execute(new DropColumnsBuilder(getDialect(), "active_rule_parameters", "id").build()); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import org.sonar.db.Database; | |||||
import org.sonar.server.platform.db.migration.step.DdlChange; | |||||
import org.sonar.server.platform.db.migration.version.v83.util.DropPrimaryKeySqlGenerator; | |||||
public class DropPrimaryKeyOnIdColumnOfActiveRuleParametersTable extends DdlChange { | |||||
private final DropPrimaryKeySqlGenerator dropPrimaryKeySqlGenerator; | |||||
public DropPrimaryKeyOnIdColumnOfActiveRuleParametersTable(Database db, DropPrimaryKeySqlGenerator dropPrimaryKeySqlGenerator) { | |||||
super(db); | |||||
this.dropPrimaryKeySqlGenerator = dropPrimaryKeySqlGenerator; | |||||
} | |||||
@Override | |||||
public void execute(Context context) throws SQLException { | |||||
context.execute(dropPrimaryKeySqlGenerator.generate("active_rule_parameters", "active_rule_parameters", "id")); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import org.sonar.db.Database; | |||||
import org.sonar.server.platform.db.migration.def.VarcharColumnDef; | |||||
import org.sonar.server.platform.db.migration.sql.AlterColumnsBuilder; | |||||
import org.sonar.server.platform.db.migration.step.DdlChange; | |||||
import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.newVarcharColumnDefBuilder; | |||||
public class MakeActiveRuleParametersUuidColumnNotNullable extends DdlChange { | |||||
private static final String TABLE = "active_rule_parameters"; | |||||
private static final VarcharColumnDef uuidColumnDefinition = newVarcharColumnDefBuilder() | |||||
.setColumnName("uuid") | |||||
.setIsNullable(false) | |||||
.setDefaultValue(null) | |||||
.setLimit(VarcharColumnDef.UUID_SIZE) | |||||
.build(); | |||||
public MakeActiveRuleParametersUuidColumnNotNullable(Database db) { | |||||
super(db); | |||||
} | |||||
@Override | |||||
public void execute(Context context) throws SQLException { | |||||
context.execute(new AlterColumnsBuilder(getDialect(), TABLE) | |||||
.updateColumn(uuidColumnDefinition) | |||||
.build()); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import org.sonar.core.util.UuidFactory; | |||||
import org.sonar.db.Database; | |||||
import org.sonar.server.platform.db.migration.step.DataChange; | |||||
import org.sonar.server.platform.db.migration.step.MassUpdate; | |||||
public class PopulateActiveRuleParametersUuid extends DataChange { | |||||
private final UuidFactory uuidFactory; | |||||
public PopulateActiveRuleParametersUuid(Database db, UuidFactory uuidFactory) { | |||||
super(db); | |||||
this.uuidFactory = uuidFactory; | |||||
} | |||||
@Override | |||||
protected void execute(Context context) throws SQLException { | |||||
MassUpdate massUpdate = context.prepareMassUpdate(); | |||||
massUpdate.select("select id from active_rule_parameters where uuid is null"); | |||||
massUpdate.update("update active_rule_parameters set uuid = ? where id = ?"); | |||||
massUpdate.execute((row, update) -> { | |||||
update.setString(1, uuidFactory.create()); | |||||
update.setLong(2, row.getLong(1)); | |||||
return true; | |||||
}); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import org.sonar.db.CoreDbTester; | |||||
import org.sonar.server.platform.db.migration.step.MigrationStep; | |||||
import static org.assertj.core.api.Assertions.assertThatThrownBy; | |||||
public class AddPrimaryKeyOnUuidColumnOfActiveRuleParametersTableTest { | |||||
@Rule | |||||
public CoreDbTester db = CoreDbTester.createForSchema(AddPrimaryKeyOnUuidColumnOfActiveRuleParametersTableTest.class, "schema.sql"); | |||||
private MigrationStep underTest = new AddPrimaryKeyOnUuidColumnOfActiveRuleParametersTable(db.database()); | |||||
@Test | |||||
public void execute() throws SQLException { | |||||
underTest.execute(); | |||||
db.assertPrimaryKey("active_rule_parameters", "pk_active_rule_parameters", "uuid"); | |||||
} | |||||
@Test | |||||
public void migration_is_not_re_entrant() throws SQLException { | |||||
underTest.execute(); | |||||
assertThatThrownBy(() -> underTest.execute()).isInstanceOf(IllegalStateException.class); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import java.sql.Types; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import org.sonar.db.CoreDbTester; | |||||
import org.sonar.server.platform.db.migration.step.DdlChange; | |||||
import static org.assertj.core.api.Assertions.assertThat; | |||||
public class AddUuidColumnToActiveRuleParametersTest { | |||||
@Rule | |||||
public CoreDbTester db = CoreDbTester.createForSchema(AddUuidColumnToActiveRuleParametersTest.class, "schema.sql"); | |||||
private DdlChange underTest = new AddUuidColumnToActiveRuleParametersTable(db.database()); | |||||
@Before | |||||
public void setup() { | |||||
insertActiveRuleParameter(1L); | |||||
insertActiveRuleParameter(2L); | |||||
insertActiveRuleParameter(3L); | |||||
} | |||||
@Test | |||||
public void add_uuid_column_to_active_rule_parameters() throws SQLException { | |||||
underTest.execute(); | |||||
db.assertColumnDefinition("active_rule_parameters", "uuid", Types.VARCHAR, 40, true); | |||||
assertThat(db.countSql("select count(id) from active_rule_parameters")) | |||||
.isEqualTo(3); | |||||
} | |||||
private void insertActiveRuleParameter(Long id) { | |||||
db.executeInsert("active_rule_parameters", | |||||
"id", id, | |||||
"active_rule_id", id + 2, | |||||
"rules_parameter_id", id + 3); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import org.sonar.db.CoreDbTester; | |||||
import org.sonar.server.platform.db.migration.step.MigrationStep; | |||||
import static org.assertj.core.api.Assertions.assertThatThrownBy; | |||||
public class DropIdColumnOfActiveRuleParametersTableTest { | |||||
@Rule | |||||
public CoreDbTester db = CoreDbTester.createForSchema(DropIdColumnOfActiveRuleParametersTableTest.class, "schema.sql"); | |||||
private MigrationStep underTest = new DropIdColumnOfActiveRuleParametersTable(db.database()); | |||||
@Test | |||||
public void execute() throws SQLException { | |||||
underTest.execute(); | |||||
db.assertColumnDoesNotExist("active_rule_parameters", "id"); | |||||
} | |||||
@Test | |||||
public void migration_is_not_re_entrant() throws SQLException { | |||||
underTest.execute(); | |||||
assertThatThrownBy(() -> underTest.execute()).isInstanceOf(IllegalStateException.class); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import org.sonar.db.CoreDbTester; | |||||
import org.sonar.server.platform.db.migration.step.MigrationStep; | |||||
import org.sonar.server.platform.db.migration.version.v83.util.DropPrimaryKeySqlGenerator; | |||||
import org.sonar.server.platform.db.migration.version.v83.util.GetConstraintHelper; | |||||
import static org.assertj.core.api.Assertions.assertThatThrownBy; | |||||
public class DropPrimaryKeyOnIdColumnOfActiveRuleParametersTableTest { | |||||
private static final String TABLE_NAME = "active_rule_parameters"; | |||||
@Rule | |||||
public CoreDbTester db = CoreDbTester.createForSchema(DropPrimaryKeyOnIdColumnOfActiveRuleParametersTableTest.class, "schema.sql"); | |||||
private DropPrimaryKeySqlGenerator dropPrimaryKeySqlGenerator = new DropPrimaryKeySqlGenerator(db.database(), new GetConstraintHelper(db.database())); | |||||
private MigrationStep underTest = new DropPrimaryKeyOnIdColumnOfActiveRuleParametersTable(db.database(), dropPrimaryKeySqlGenerator); | |||||
@Test | |||||
public void execute() throws SQLException { | |||||
underTest.execute(); | |||||
db.assertNoPrimaryKey(TABLE_NAME); | |||||
} | |||||
@Test | |||||
public void migration_is_not_re_entrant() throws SQLException { | |||||
underTest.execute(); | |||||
assertThatThrownBy(() -> underTest.execute()).isInstanceOf(IllegalStateException.class); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import org.sonar.db.CoreDbTester; | |||||
import org.sonar.server.platform.db.migration.step.MigrationStep; | |||||
import static java.sql.Types.VARCHAR; | |||||
public class MakeActiveRuleParametersUuidColumnNotNullableTest { | |||||
@Rule | |||||
public CoreDbTester db = CoreDbTester.createForSchema(MakeActiveRuleParametersUuidColumnNotNullableTest.class, "schema.sql"); | |||||
private MigrationStep underTest = new MakeActiveRuleParametersUuidColumnNotNullable(db.database()); | |||||
@Test | |||||
public void created_at_and_uuid_columns_are_not_null() throws SQLException { | |||||
underTest.execute(); | |||||
db.assertColumnDefinition("active_rule_parameters", "uuid", VARCHAR, null, false); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2020 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
package org.sonar.server.platform.db.migration.version.v83.activeruleparameters; | |||||
import java.sql.SQLException; | |||||
import java.util.Objects; | |||||
import java.util.stream.Collectors; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import org.sonar.core.util.UuidFactory; | |||||
import org.sonar.core.util.UuidFactoryFast; | |||||
import org.sonar.db.CoreDbTester; | |||||
import org.sonar.server.platform.db.migration.step.DataChange; | |||||
import static org.assertj.core.api.Assertions.assertThat; | |||||
public class PopulateActiveRuleParametersUuidTest { | |||||
@Rule | |||||
public CoreDbTester db = CoreDbTester.createForSchema(PopulateActiveRuleParametersUuidTest.class, "schema.sql"); | |||||
private UuidFactory uuidFactory = UuidFactoryFast.getInstance(); | |||||
private DataChange underTest = new PopulateActiveRuleParametersUuid(db.database(), uuidFactory); | |||||
@Test | |||||
public void populate_uuids() throws SQLException { | |||||
insertActiveRuleParameter(1L); | |||||
insertActiveRuleParameter(2L); | |||||
insertActiveRuleParameter(3L); | |||||
underTest.execute(); | |||||
verifyUuidsAreNotNull(); | |||||
} | |||||
@Test | |||||
public void migration_is_reentrant() throws SQLException { | |||||
insertActiveRuleParameter(1L); | |||||
insertActiveRuleParameter(2L); | |||||
insertActiveRuleParameter(3L); | |||||
underTest.execute(); | |||||
// re-entrant | |||||
underTest.execute(); | |||||
verifyUuidsAreNotNull(); | |||||
} | |||||
private void verifyUuidsAreNotNull() { | |||||
assertThat(db.select("select uuid from active_rule_parameters") | |||||
.stream() | |||||
.map(row -> row.get("UUID")) | |||||
.filter(Objects::isNull) | |||||
.collect(Collectors.toList())).isEmpty(); | |||||
} | |||||
private void insertActiveRuleParameter(Long id) { | |||||
db.executeInsert("active_rule_parameters", | |||||
"id", id, | |||||
"active_rule_id", id + 2, | |||||
"rules_parameter_id", id + 3); | |||||
} | |||||
} |
CREATE TABLE "ACTIVE_RULE_PARAMETERS"( | |||||
"ID" INTEGER NOT NULL AUTO_INCREMENT (1,1), | |||||
"UUID" VARCHAR(40) NOT NULL, | |||||
"ACTIVE_RULE_ID" INTEGER NOT NULL, | |||||
"RULES_PARAMETER_ID" INTEGER NOT NULL, | |||||
"VALUE" VARCHAR(4000), | |||||
"RULES_PARAMETER_KEY" VARCHAR(128) | |||||
); | |||||
CREATE INDEX "IX_ARP_ON_ACTIVE_RULE_ID" ON "ACTIVE_RULE_PARAMETERS"("ACTIVE_RULE_ID"); |
CREATE TABLE "ACTIVE_RULE_PARAMETERS"( | |||||
"ID" INTEGER NOT NULL AUTO_INCREMENT (1,1), | |||||
"ACTIVE_RULE_ID" INTEGER NOT NULL, | |||||
"RULES_PARAMETER_ID" INTEGER NOT NULL, | |||||
"VALUE" VARCHAR(4000), | |||||
"RULES_PARAMETER_KEY" VARCHAR(128) | |||||
); | |||||
ALTER TABLE "ACTIVE_RULE_PARAMETERS" ADD CONSTRAINT "PK_ACTIVE_RULE_PARAMETERS" PRIMARY KEY("ID"); | |||||
CREATE INDEX "IX_ARP_ON_ACTIVE_RULE_ID" ON "ACTIVE_RULE_PARAMETERS"("ACTIVE_RULE_ID"); |
CREATE TABLE "ACTIVE_RULE_PARAMETERS"( | |||||
"ID" INTEGER NOT NULL AUTO_INCREMENT (1,1), | |||||
"UUID" VARCHAR(40) NOT NULL, | |||||
"ACTIVE_RULE_ID" INTEGER NOT NULL, | |||||
"RULES_PARAMETER_ID" INTEGER NOT NULL, | |||||
"VALUE" VARCHAR(4000), | |||||
"RULES_PARAMETER_KEY" VARCHAR(128) | |||||
); | |||||
ALTER TABLE "ACTIVE_RULE_PARAMETERS" ADD CONSTRAINT "PK_ACTIVE_RULE_PARAMETERS" PRIMARY KEY("UUID"); | |||||
CREATE INDEX "IX_ARP_ON_ACTIVE_RULE_ID" ON "ACTIVE_RULE_PARAMETERS"("ACTIVE_RULE_ID"); |
CREATE TABLE "ACTIVE_RULE_PARAMETERS"( | |||||
"ID" INTEGER NOT NULL AUTO_INCREMENT (1,1), | |||||
"UUID" VARCHAR(40) NOT NULL, | |||||
"ACTIVE_RULE_ID" INTEGER NOT NULL, | |||||
"RULES_PARAMETER_ID" INTEGER NOT NULL, | |||||
"VALUE" VARCHAR(4000), | |||||
"RULES_PARAMETER_KEY" VARCHAR(128) | |||||
); | |||||
ALTER TABLE "ACTIVE_RULE_PARAMETERS" ADD CONSTRAINT "PK_ACTIVE_RULE_PARAMETERS" PRIMARY KEY("ID"); | |||||
CREATE INDEX "IX_ARP_ON_ACTIVE_RULE_ID" ON "ACTIVE_RULE_PARAMETERS"("ACTIVE_RULE_ID"); |
CREATE TABLE "ACTIVE_RULE_PARAMETERS"( | |||||
"ID" INTEGER NOT NULL AUTO_INCREMENT (1,1), | |||||
"UUID" VARCHAR(40), | |||||
"ACTIVE_RULE_ID" INTEGER NOT NULL, | |||||
"RULES_PARAMETER_ID" INTEGER NOT NULL, | |||||
"VALUE" VARCHAR(4000), | |||||
"RULES_PARAMETER_KEY" VARCHAR(128) | |||||
); | |||||
ALTER TABLE "ACTIVE_RULE_PARAMETERS" ADD CONSTRAINT "PK_ACTIVE_RULE_PARAMETERS" PRIMARY KEY("ID"); | |||||
CREATE INDEX "IX_ARP_ON_ACTIVE_RULE_ID" ON "ACTIVE_RULE_PARAMETERS"("ACTIVE_RULE_ID"); |
CREATE TABLE "ACTIVE_RULE_PARAMETERS"( | |||||
"ID" INTEGER NOT NULL AUTO_INCREMENT (1,1), | |||||
"UUID" VARCHAR(40), | |||||
"ACTIVE_RULE_ID" INTEGER NOT NULL, | |||||
"RULES_PARAMETER_ID" INTEGER NOT NULL, | |||||
"VALUE" VARCHAR(4000), | |||||
"RULES_PARAMETER_KEY" VARCHAR(128) | |||||
); | |||||
ALTER TABLE "ACTIVE_RULE_PARAMETERS" ADD CONSTRAINT "PK_ACTIVE_RULE_PARAMETERS" PRIMARY KEY("ID"); | |||||
CREATE INDEX "IX_ARP_ON_ACTIVE_RULE_ID" ON "ACTIVE_RULE_PARAMETERS"("ACTIVE_RULE_ID"); |
@Override | @Override | ||||
public void accept(@Nonnull ActiveRuleParamDto activeRuleParamDto) { | public void accept(@Nonnull ActiveRuleParamDto activeRuleParamDto) { | ||||
if (activeRuleParamDto.getKey().equals(key)) { | if (activeRuleParamDto.getKey().equals(key)) { | ||||
dbClient.activeRuleDao().deleteParamById(dbSession, activeRuleParamDto.getId()); | |||||
dbClient.activeRuleDao().deleteParamById(dbSession, activeRuleParamDto.getUuid()); | |||||
} | } | ||||
} | } | ||||
} | } |