From 8917c0d7a122c154a83b13cd9b7f1cfba2a41bda Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Fri, 23 May 2014 16:26:37 +0200 Subject: [PATCH] SONAR-5012 - Removed empty facets. --- .../qualityprofile/db/ActiveRuleMapper.xml | 16 ++++++++++++++++ .../src/main/java/org/sonar/server/db/Dao.java | 4 ++-- .../qualityprofile/ActiveRuleService.java | 12 ++++++------ .../persistence/ActiveRuleDao.java | 18 +++++++++++++----- .../sonar/server/rule2/index/RuleIndex.java | 6 +++--- .../org/sonar/server/search/IndexClient.java | 11 ++++++++++- .../sonar/server/search/IndexSynchronizer.java | 17 +++++++++++++++++ 7 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 sonar-server/src/main/java/org/sonar/server/search/IndexSynchronizer.java diff --git a/sonar-core/src/main/resources/org/sonar/core/qualityprofile/db/ActiveRuleMapper.xml b/sonar-core/src/main/resources/org/sonar/core/qualityprofile/db/ActiveRuleMapper.xml index 45f24380931..bb120c7b4b0 100644 --- a/sonar-core/src/main/resources/org/sonar/core/qualityprofile/db/ActiveRuleMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/qualityprofile/db/ActiveRuleMapper.xml @@ -36,6 +36,22 @@ LEFT JOIN active_rules active_rule_parent ON active_rule_parent.profile_id=profile_parent.id AND a.rule_id=active_rule_parent.rule_id + + INSERT INTO active_rules (profile_id, rule_id, failure_level, inheritance) VALUES (#{profileId}, #{ruleId}, #{severity}, #{inheritance}) diff --git a/sonar-server/src/main/java/org/sonar/server/db/Dao.java b/sonar-server/src/main/java/org/sonar/server/db/Dao.java index b061a10f89c..86e04bfa43a 100644 --- a/sonar-server/src/main/java/org/sonar/server/db/Dao.java +++ b/sonar-server/src/main/java/org/sonar/server/db/Dao.java @@ -20,8 +20,8 @@ package org.sonar.server.db; import org.sonar.api.ServerComponent; -import org.sonar.core.persistence.Dto; import org.sonar.core.persistence.DbSession; +import org.sonar.core.persistence.Dto; import javax.annotation.CheckForNull; import java.io.Serializable; @@ -49,6 +49,6 @@ public interface Dao, K extends Serializable> extends ServerCom void deleteByKey(K key, DbSession session); - Iterable keysOfRowsUpdatedAfter(long timestamp, DbSession session); + void synchronizeAfter(long timestamp, DbSession session); } diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleService.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleService.java index b5484164ed2..846b36531cc 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleService.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRuleService.java @@ -90,12 +90,12 @@ public class ActiveRuleService implements ServerComponent { List changes = activate(activation, dbSession); if (!changes.isEmpty()) { dbSession.commit(); - previewCache.reportGlobalModification(); - } - return changes; - } finally { - dbSession.close(); - } + previewCache.reportGlobalModification(); + } + return changes; +} finally { + dbSession.close(); + } } /** diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/persistence/ActiveRuleDao.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/persistence/ActiveRuleDao.java index 1d525c512af..daf2f7744af 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/persistence/ActiveRuleDao.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/persistence/ActiveRuleDao.java @@ -22,6 +22,8 @@ package org.sonar.server.qualityprofile.persistence; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; +import org.apache.ibatis.session.ResultContext; +import org.apache.ibatis.session.ResultHandler; import org.sonar.api.rule.RuleKey; import org.sonar.api.utils.System2; import org.sonar.core.persistence.DbSession; @@ -33,15 +35,14 @@ import org.sonar.core.qualityprofile.db.QualityProfileDao; import org.sonar.core.qualityprofile.db.QualityProfileDto; import org.sonar.core.qualityprofile.db.QualityProfileKey; import org.sonar.core.rule.RuleDto; -import org.sonar.core.rule.RuleParamDto; 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 java.util.Date; import java.util.List; - -import static com.google.common.collect.Lists.newArrayList; +import java.util.Map; public class ActiveRuleDao extends BaseDao { @@ -61,8 +62,15 @@ public class ActiveRuleDao extends BaseDao keysOfRowsUpdatedAfter(long timestamp, DbSession session) { - throw new UnsupportedOperationException("Need to implement ActiveRuleDto.doGetByKey() method"); + public void synchronizeAfter(long timestamp, DbSession session) { + session.select("selectAllKeysAfterTimestamp",new Date(timestamp), new ResultHandler() { + @Override + public void handleResult(ResultContext context) { + Map resultObject = (Map) context.getResultObject(); + resultObject.get(|TOTO); + //session.enqueue(); + } + }); } diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java b/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java index af103e34461..0b1db75a65a 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java +++ b/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java @@ -332,7 +332,7 @@ public class RuleIndex extends BaseIndex { .field(RuleNormalizer.RuleField.LANGUAGE.key()) .order(Terms.Order.count(false)) .size(10) - .minDocCount(0)); + .minDocCount(1)); /* the Tag facet */ query.addAggregation(AggregationBuilders @@ -340,7 +340,7 @@ public class RuleIndex extends BaseIndex { .field(RuleNormalizer.RuleField._TAGS.key()) .order(Terms.Order.count(false)) .size(10) - .minDocCount(0)); + .minDocCount(1)); /* the Repo facet */ query.addAggregation(AggregationBuilders @@ -348,7 +348,7 @@ public class RuleIndex extends BaseIndex { .field(RuleNormalizer.RuleField.REPOSITORY.key()) .order(Terms.Order.count(false)) .size(10) - .minDocCount(0)); + .minDocCount(1)); } diff --git a/sonar-server/src/main/java/org/sonar/server/search/IndexClient.java b/sonar-server/src/main/java/org/sonar/server/search/IndexClient.java index da4da7fc17a..6586e37618d 100644 --- a/sonar-server/src/main/java/org/sonar/server/search/IndexClient.java +++ b/sonar-server/src/main/java/org/sonar/server/search/IndexClient.java @@ -40,6 +40,15 @@ public class IndexClient implements ServerComponent { } } + public Long getLastUpdate(String indexType){ + for(Index index:indexComponents.values()){ + if(index.getIndexType().equals(indexType)){ + return index.getLastSynchronization(); + } + } + throw new IllegalStateException("no index for type '"+indexType+"' is registered"); + } + public K get(Class clazz){ return (K) this.indexComponents.get(clazz); } @@ -50,6 +59,6 @@ public class IndexClient implements ServerComponent { return (K) index; } } - throw new IllegalStateException("no index for tyle '"+indexType+"' is registered"); + throw new IllegalStateException("no index for type '"+indexType+"' is registered"); } } diff --git a/sonar-server/src/main/java/org/sonar/server/search/IndexSynchronizer.java b/sonar-server/src/main/java/org/sonar/server/search/IndexSynchronizer.java new file mode 100644 index 00000000000..2bebb73da06 --- /dev/null +++ b/sonar-server/src/main/java/org/sonar/server/search/IndexSynchronizer.java @@ -0,0 +1,17 @@ +package org.sonar.server.search; + +import org.sonar.server.db.DbClient; + +/** + * @since 4.4 + */ +public class IndexSynchronizer { + + private final DbClient db; + private final IndexClient index; + + public IndexSynchronizer(DbClient db, IndexClient index) { + this.db = db; + this.index = index; + } +} -- 2.39.5