<select id="selectAllKeysAfterTimestamp" parameterType="Date" resultType="map">
SELECT
- rule.plugin_rule_key as rule,
- rule.plugin_name as repository,
- profile.name as profile,
- profile.language as language
+ rule.plugin_rule_key as ruleField,
+ rule.plugin_name as repositoryField,
+ profile.name as profileField,
+ profile.language as languageField
FROM active_rules a
<include refid="activeRuleKeyJoin"/>
<where>
- AND profile.name = #{profile}
- AND profile.language = #{language}
- AND rule.plugin_rule_key = #{rule}
- AND rule.plugin_name = #{repository}
+ WHERE a.updated_at IS NULL or a.updated_at >= #{id}
</where>
</select>
</update>
<select id="selectKeysOfRulesUpdatedSince" resultType="map">
- SELECT r.plugin_name as "repo", r.plugin_rule_key as "rule"
+ SELECT r.plugin_name as "repoField", r.plugin_rule_key as "ruleField"
FROM rules r
WHERE r.updated_at IS NULL or r.updated_at >= #{id}
</select>
throw notImplemented();
}
- @Override
- public Iterable<String> keysOfRowsUpdatedAfter(long timestamp, DbSession session) {
- throw notImplemented();
+ private static IllegalStateException notImplemented() {
+ throw new IllegalStateException("Not implemented yet");
}
- private static IllegalStateException notImplemented() {
+ @Override
+ public void synchronizeAfter(long timestamp, DbSession session) {
throw new IllegalStateException("Not implemented yet");
}
}
}
@Override
- public Iterable<MeasureKey> keysOfRowsUpdatedAfter(long timestamp, DbSession session) {
+ public void synchronizeAfter(long timestamp, DbSession session) {
throw new IllegalStateException("Not implemented yet");
}
}
import org.sonar.server.qualityprofile.QProfile;
import org.sonar.server.qualityprofile.index.ActiveRuleIndexDefinition;
import org.sonar.server.rule2.persistence.RuleDao;
+import org.sonar.server.search.action.IndexAction;
+import org.sonar.server.search.action.KeyIndexAction;
-import java.util.Date;
+import java.sql.Timestamp;
import java.util.List;
import java.util.Map;
}
@Override
- public void synchronizeAfter(long timestamp, DbSession session) {
- session.select("selectAllKeysAfterTimestamp",new Date(timestamp), new ResultHandler() {
+ public void synchronizeAfter(long timestamp, final DbSession session) {
+ session.select("selectAllKeysAfterTimestamp",new Timestamp(timestamp), new ResultHandler() {
@Override
public void handleResult(ResultContext context) {
- Map<String, Object> resultObject = (Map<String, Object>) context.getResultObject();
- resultObject.get(|TOTO);
- //session.enqueue();
+ Map<String, Object> fields = (Map<String, Object>) context.getResultObject();
+ ActiveRuleKey key = ActiveRuleKey.of(
+ QualityProfileKey.of((String) fields.get("PROFILEFIELD"), (String) fields.get("LANGUAGEFIELD")),
+ RuleKey.of((String) fields.get("REPOSITORYFIELD"), (String) fields.get("RULEFIELD")));
+ session.enqueue(new KeyIndexAction<ActiveRuleKey>(getIndexType(), IndexAction.Method.UPSERT, key));
}
});
}
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
import org.sonar.api.rule.RuleKey;
import org.sonar.core.rule.RuleParamDto;
import org.sonar.server.db.BaseDao;
import org.sonar.server.rule2.index.RuleIndexDefinition;
+import org.sonar.server.search.action.IndexAction;
+import org.sonar.server.search.action.KeyIndexAction;
import javax.annotation.CheckForNull;
import java.sql.Timestamp;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
import java.util.Map;
return mapper(session).selectById(rule.getParentId());
}
+
@Override
- public Collection<RuleKey> keysOfRowsUpdatedAfter(long timestamp, DbSession session) {
- final List<RuleKey> keys = Lists.newArrayList();
+ public void synchronizeAfter(long timestamp, final DbSession session) {
session.select("selectKeysOfRulesUpdatedSince", new Timestamp(timestamp), new ResultHandler() {
@Override
public void handleResult(ResultContext context) {
Map<String, String> map = (Map) context.getResultObject();
- keys.add(RuleKey.of(map.get("repo"), map.get("rule")));
+ session.enqueue(new KeyIndexAction<RuleKey>(getIndexType(), IndexAction.Method.UPSERT,
+ RuleKey.of(map.get("repoField"), map.get("ruleField"))));
}
});
- return keys;
}
/**
assertThat(result).isNotNull();
assertThat(result.getKey()).isNotNull();
-
-
}
-}
+}
\ No newline at end of file