]> source.dussan.org Git - sonarqube.git/commitdiff
DAOv.2 - Updated Dao interface for upcoming Synchronizer
authorStephane Gamard <stephane.gamard@searchbox.com>
Fri, 23 May 2014 15:23:42 +0000 (17:23 +0200)
committerStephane Gamard <stephane.gamard@searchbox.com>
Fri, 23 May 2014 15:39:04 +0000 (17:39 +0200)
sonar-core/src/main/resources/org/sonar/core/qualityprofile/db/ActiveRuleMapper.xml
sonar-core/src/main/resources/org/sonar/core/rule/RuleMapper.xml
sonar-server/src/main/java/org/sonar/server/component/persistence/ComponentDao.java
sonar-server/src/main/java/org/sonar/server/measure/persistence/MeasureDao.java
sonar-server/src/main/java/org/sonar/server/qualityprofile/persistence/ActiveRuleDao.java
sonar-server/src/main/java/org/sonar/server/rule2/persistence/RuleDao.java
sonar-server/src/test/java/org/sonar/server/qualityprofile/persistence/ActiveRuleDaoTest.java

index bb120c7b4b0d4f514d4348674e631786e05a519c..b6fc979e329aa1e4467cb9b8b06aacad3c1fa29b 100644 (file)
 
     <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 &gt;= #{id}
         </where>
     </select>
 
index 643d7b5c71220e86cdbb8d79d535dfec58bc5d94..73450f041d3366f174cdd3ebe17e13eaafeed2c9 100644 (file)
   </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 &gt;= #{id}
   </select>
index 36ac10bebe78703e0a62a7b01d7b6b8b403b06aa..789db2f58dae09d5bd6e8188c33ed6dc630f077d 100644 (file)
@@ -75,12 +75,12 @@ public class ComponentDao extends BaseDao<ComponentMapper, ComponentDto, String>
     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");
   }
 }
index c77e87014e26d221138841c3855c7c98841d4f75..7aa3f4380fd2fc06a4842642db9c2268a61f08eb 100644 (file)
@@ -84,7 +84,7 @@ public class MeasureDao extends BaseDao<MeasureMapper, MeasureDto, MeasureKey> i
   }
 
   @Override
-  public Iterable<MeasureKey> keysOfRowsUpdatedAfter(long timestamp, DbSession session) {
+  public void synchronizeAfter(long timestamp, DbSession session) {
     throw new IllegalStateException("Not implemented yet");
   }
 }
index daf2f7744af176aca84a3edb9f01b0712934e308..cbe56e8f7cc512a3efe1167d78eb9ee57a6b55cc 100644 (file)
@@ -39,8 +39,10 @@ import org.sonar.server.db.BaseDao;
 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;
 
@@ -62,13 +64,15 @@ public class ActiveRuleDao extends BaseDao<ActiveRuleMapper, ActiveRuleDto, Acti
   }
 
   @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));
       }
     });
   }
index 8cece78d6ecc89e1101d880620930300c2f44fa1..b4cef739556f6f4717c7195efab138af950aa7d3 100644 (file)
@@ -21,7 +21,6 @@ package org.sonar.server.rule2.persistence;
 
 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;
@@ -32,11 +31,12 @@ import org.sonar.core.rule.RuleMapper;
 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;
 
@@ -90,17 +90,17 @@ public class RuleDao extends BaseDao<RuleMapper, RuleDto, RuleKey> {
     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;
   }
 
   /**
index dc1cf73dfae2f43206496fe5ab72b304d69db3a6..12689e3569e911f9b380502182cab586fbe21fe7 100644 (file)
@@ -75,7 +75,5 @@ public class ActiveRuleDaoTest  extends AbstractDaoTestCase{
 
     assertThat(result).isNotNull();
     assertThat(result.getKey()).isNotNull();
-
-
   }
-}
+}
\ No newline at end of file