]> source.dussan.org Git - sonarqube.git/commitdiff
SONARCLOUD-78 add metric org_15d_active_orgs
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Mon, 25 Jun 2018 11:24:17 +0000 (13:24 +0200)
committersonartech <sonartech@sonarsource.com>
Fri, 29 Jun 2018 07:10:18 +0000 (09:10 +0200)
server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationQuery.java
server/sonar-db-dao/src/main/resources/org/sonar/db/organization/OrganizationMapper.xml

index 2117660e8e6f2de4f25312c59e5ba93cb47cdec8..ca3e2b27943d8b75ab0ebee3ac9c43a5d9ac9484 100644 (file)
@@ -30,10 +30,13 @@ import static org.sonar.core.util.stream.MoreCollectors.toSet;
 public class OrganizationQuery {
   private static final OrganizationQuery NO_FILTER = newOrganizationQueryBuilder().build();
   private final Set<String> keys;
+  @Nullable
   private final Integer userId;
   private final boolean onlyTeam;
   private final boolean onlyPersonal;
   private final boolean withAnalyses;
+  @Nullable
+  private final Long analyzedAfter;
 
   private OrganizationQuery(Builder builder) {
     this.keys = builder.keys;
@@ -44,6 +47,7 @@ public class OrganizationQuery {
       throw new IllegalArgumentException("Only one of onlyPersonal and onlyTeam can be true");
     }
     this.withAnalyses = builder.withAnalyses;
+    this.analyzedAfter = builder.analyzedAfter;
   }
 
   @CheckForNull
@@ -68,6 +72,11 @@ public class OrganizationQuery {
     return withAnalyses;
   }
 
+  @CheckForNull
+  public Long getAnalyzedAfter() {
+    return analyzedAfter;
+  }
+
   public static OrganizationQuery returnAll() {
     return NO_FILTER;
   }
@@ -83,6 +92,8 @@ public class OrganizationQuery {
     private boolean onlyTeam = false;
     private boolean onlyPersonal = false;
     private boolean withAnalyses = false;
+    @Nullable
+    private Long analyzedAfter;
 
     private Builder() {
       // use static factory method
@@ -117,6 +128,11 @@ public class OrganizationQuery {
       return this;
     }
 
+    public Builder setAnalyzedAfter(long l) {
+      this.analyzedAfter = l;
+      return this;
+    }
+
     public OrganizationQuery build() {
       return new OrganizationQuery(this);
     }
index 46d8dd1c9e722499c30e17d766ec292197454087..74578417dc7b9c2c5252f5e82240873a15d114c4 100644 (file)
           and s.islast = ${_true}
         )
       </if>
+      <if test="query.analyzedAfter != null">
+        and exists(
+        select 1
+          from snapshots s
+          inner join projects p on p.uuid = s.component_uuid
+          where p.organization_uuid = org.uuid
+          and p.enabled = ${_true}
+          and s.islast = ${_true}
+          and s.created_at &gt;= #{query.analyzedAfter,jdbcType=BIGINT}
+        )
+      </if>
     </where>
   </sql>