]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6236 Remove BaseDao from WidgetDao and WidgetPropertyDao
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Wed, 18 Mar 2015 09:19:11 +0000 (10:19 +0100)
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Wed, 18 Mar 2015 12:19:47 +0000 (13:19 +0100)
server/sonar-server/src/main/java/org/sonar/server/dashboard/db/WidgetDao.java
server/sonar-server/src/main/java/org/sonar/server/dashboard/db/WidgetPropertyDao.java
server/sonar-server/src/main/java/org/sonar/server/startup/RenameIssueWidgets.java
server/sonar-server/src/test/java/org/sonar/server/startup/RenameIssueWidgetsTest.java
sonar-core/src/main/java/org/sonar/core/dashboard/WidgetDto.java
sonar-core/src/main/java/org/sonar/core/dashboard/WidgetPropertyDto.java

index d6d12e4c0f5b0a739d4cd717973b9762e5833774..3b3c6476fbd2862ae4c1f95084850fdbdc42fce4 100644 (file)
  */
 package org.sonar.server.dashboard.db;
 
-import org.sonar.api.utils.System2;
 import org.sonar.core.dashboard.WidgetDto;
 import org.sonar.core.dashboard.WidgetMapper;
+import org.sonar.core.persistence.DaoComponent;
 import org.sonar.core.persistence.DbSession;
-import org.sonar.server.db.BaseDao;
+import org.sonar.core.persistence.MyBatis;
 
 import java.util.Collection;
 
-public class WidgetDao extends BaseDao<WidgetMapper, WidgetDto, Long> {
+public class WidgetDao implements DaoComponent {
 
-  public WidgetDao(System2 system2) {
-    super(WidgetMapper.class, system2);
+  private MyBatis myBatis;
+
+  public WidgetDao(MyBatis myBatis) {
+    this.myBatis = myBatis;
+  }
+
+  public WidgetDto getNullableByKey(Long widgetId) {
+    DbSession session = myBatis.openSession(false);
+    try {
+      return getNullableByKey(session, widgetId);
+    } finally {
+      MyBatis.closeQuietly(session);
+    }
   }
 
-  @Override
-  protected WidgetDto doGetNullableByKey(DbSession session, Long widgetId) {
+  public WidgetDto getNullableByKey(DbSession session, Long widgetId) {
     return mapper(session).selectById(widgetId);
   }
 
-  @Override
-  protected WidgetDto doUpdate(DbSession session, WidgetDto item) {
+  public WidgetDto update(WidgetDto item) {
+    DbSession session = myBatis.openSession(false);
+    try {
+      return update(session, item);
+    } finally {
+      MyBatis.closeQuietly(session);
+    }
+  }
+
+  public WidgetDto update(DbSession session, WidgetDto item) {
     mapper(session).update(item);
     return item;
   }
@@ -51,4 +69,9 @@ public class WidgetDao extends BaseDao<WidgetMapper, WidgetDto, Long> {
   public Collection<WidgetDto> findAll(DbSession session) {
     return mapper(session).selectAll();
   }
+
+  private WidgetMapper mapper(DbSession session) {
+    return session.getMapper(WidgetMapper.class);
+  }
+
 }
index 9aeead48d6ab9b9e5081fc76686a48955ec0541f..763d1843469795c99160cee770aba20d4d07bb28 100644 (file)
  */
 package org.sonar.server.dashboard.db;
 
-import org.sonar.api.utils.System2;
 import org.sonar.core.dashboard.WidgetPropertyDto;
 import org.sonar.core.dashboard.WidgetPropertyMapper;
+import org.sonar.core.persistence.DaoComponent;
 import org.sonar.core.persistence.DbSession;
-import org.sonar.server.db.BaseDao;
+import org.sonar.core.persistence.MyBatis;
 
 import java.util.Collection;
 import java.util.List;
 
-public class WidgetPropertyDao extends BaseDao<WidgetPropertyMapper, WidgetPropertyDto, Long> {
+public class WidgetPropertyDao implements DaoComponent {
 
-  public WidgetPropertyDao(System2 system2) {
-    super(WidgetPropertyMapper.class, system2);
+  private final MyBatis myBatis;
+
+  public WidgetPropertyDao(MyBatis myBatis) {
+    this.myBatis = myBatis;
+  }
+
+  public WidgetPropertyDto insert(WidgetPropertyDto item) {
+    DbSession session = myBatis.openSession(false);
+    try {
+      return insert(session, item);
+    } finally {
+      MyBatis.closeQuietly(session);
+    }
   }
 
-  @Override
-  protected WidgetPropertyDto doInsert(DbSession session, WidgetPropertyDto item) {
+  public WidgetPropertyDto insert(DbSession session, WidgetPropertyDto item) {
     mapper(session).insert(item);
     return item;
   }
 
-  @Override
-  protected WidgetPropertyDto doGetNullableByKey(DbSession session, Long propertyId) {
+  public void insert(DbSession session, Collection<WidgetPropertyDto> items) {
+    for (WidgetPropertyDto item : items) {
+      insert(session, item);
+    }
+  }
+
+  public WidgetPropertyDto getNullableByKey(Long propertyId) {
+    DbSession session = myBatis.openSession(false);
+    try {
+      return getNullableByKey(session, propertyId);
+    } finally {
+      MyBatis.closeQuietly(session);
+    }
+  }
+
+  public WidgetPropertyDto getNullableByKey(DbSession session, Long propertyId) {
     return mapper(session).selectById(propertyId);
   }
 
@@ -53,4 +77,7 @@ public class WidgetPropertyDao extends BaseDao<WidgetPropertyMapper, WidgetPrope
     mapper(session).deleteByWidgetIds(widgetIdsWithPropertiesToDelete);
   }
 
+  private WidgetPropertyMapper mapper(DbSession session) {
+    return session.getMapper(WidgetPropertyMapper.class);
+  }
 }
index e0fbf8212093366ef90a414ea2d0bdfcc005dad1..92be64913334a1004afc2413844a4cfca4c460f9 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.server.startup;
 
 import com.google.common.collect.Lists;
 import org.picocontainer.Startable;
+import org.sonar.api.utils.System2;
 import org.sonar.api.utils.log.Loggers;
 import org.sonar.core.dashboard.WidgetDto;
 import org.sonar.core.dashboard.WidgetPropertyDto;
@@ -30,6 +31,7 @@ import org.sonar.core.persistence.MyBatis;
 import org.sonar.core.template.LoadedTemplateDto;
 import org.sonar.server.db.DbClient;
 
+import java.util.Date;
 import java.util.List;
 
 public class RenameIssueWidgets implements Startable {
@@ -40,8 +42,11 @@ public class RenameIssueWidgets implements Startable {
 
   private final DbClient dbClient;
 
-  public RenameIssueWidgets(DbClient dbClient) {
+  private final System2 system;
+
+  public RenameIssueWidgets(DbClient dbClient, System2 system) {
     this.dbClient = dbClient;
+    this.system = system;
   }
 
   @Override
@@ -67,6 +72,7 @@ public class RenameIssueWidgets implements Startable {
 
       List<Long> widgetIdsWithPropertiesToDelete = Lists.newArrayList();
       List<WidgetPropertyDto> widgetPropertiesToCreate = Lists.newArrayList();
+      Date now = system.newDate();
 
       for (WidgetDto widget : dbClient.widgetDao().findAll(session)) {
         switch (widget.getWidgetKey()) {
@@ -139,6 +145,7 @@ public class RenameIssueWidgets implements Startable {
   private void updateWidget(DbSession session, List<Long> widgetIdsWithPropertiesToDelete, WidgetDto widget) {
     dbClient.widgetDao().update(session,
       widget.setWidgetKey(PROJECT_ISSUE_FILTER_WIDGET_KEY)
+        .setUpdatedAt(system.newDate())
         .setConfigured(true));
     widgetIdsWithPropertiesToDelete.add(widget.getId());
   }
index 95047b5c59b60d62aa60e38bdecc0ef0e037c69a..92d8e2c5ca8ca1d361af0dab61d39a3da702f6cf 100644 (file)
@@ -32,6 +32,8 @@ import org.sonar.server.dashboard.db.WidgetPropertyDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.test.DbTests;
 
+import java.util.Date;
+
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -66,17 +68,19 @@ public class RenameIssueWidgetsTest {
 
   private void doStart() {
     System2 system2 = mock(System2.class);
-    when(system2.now()).thenReturn(DateUtils.parseDateTime("2003-03-23T01:23:45+0100").getTime());
+    Date now = DateUtils.parseDateTime("2003-03-23T01:23:45+0100");
+    when(system2.newDate()).thenReturn(now);
 
     RenameIssueWidgets task = new RenameIssueWidgets(
       new DbClient(
         dbTester.database(),
         dbTester.myBatis(),
-        new WidgetDao(system2),
-        new WidgetPropertyDao(system2),
+        new WidgetDao(dbTester.myBatis()),
+        new WidgetPropertyDao(dbTester.myBatis()),
         new IssueFilterDao(dbTester.myBatis()),
         new LoadedTemplateDao(dbTester.myBatis())
-      ));
+      ),
+      system2);
 
     task.start();
     task.stop();
index 989ff9e0eb8d7c10c9b819c92023c4cddde3039a..dcd945da250a96b11f6e3edd87134aa8453ff9e9 100644 (file)
 package org.sonar.core.dashboard;
 
 import com.google.common.collect.Lists;
-import org.sonar.core.persistence.Dto;
 
 import java.util.Collection;
+import java.util.Date;
 import java.util.List;
 
-public class WidgetDto extends Dto<Long> {
+public class WidgetDto {
   private Long id;
   private Long dashboardId;
   private String widgetKey;
@@ -35,6 +35,8 @@ public class WidgetDto extends Dto<Long> {
   private Integer rowIndex;
   private boolean configured;
   private Integer resourceId;
+  private Date createdAt;
+  private Date updatedAt;
   private List<WidgetPropertyDto> widgetPropertyDtos = Lists.newArrayList();
 
   /**
@@ -183,8 +185,26 @@ public class WidgetDto extends Dto<Long> {
     return this;
   }
 
-  @Override
   public Long getKey() {
     return id;
   }
+
+  public WidgetDto setCreatedAt(Date datetime) {
+    this.createdAt = datetime;
+    return this;
+  }
+
+  public WidgetDto setUpdatedAt(Date datetime) {
+    this.updatedAt = datetime;
+    return this;
+  }
+
+  public final Date getCreatedAt() {
+    return this.createdAt;
+  }
+
+  public final Date getUpdatedAt() {
+    return this.updatedAt;
+  }
+
 }
index 352b531bb439764db0b8ee74f38db62086243241..501e179b620e5da30c1d75262f4b25fd77bf337e 100644 (file)
@@ -21,11 +21,10 @@ package org.sonar.core.dashboard;
 
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ListMultimap;
-import org.sonar.core.persistence.Dto;
 
 import java.util.Collection;
 
-public class WidgetPropertyDto extends Dto<Long> {
+public class WidgetPropertyDto {
   private Long id;
   private Long widgetId;
   private String propertyKey;
@@ -67,11 +66,6 @@ public class WidgetPropertyDto extends Dto<Long> {
     return this;
   }
 
-  @Override
-  public Long getKey() {
-    return id;
-  }
-
   public static ListMultimap<Long, WidgetPropertyDto> groupByWidgetId(Collection<WidgetPropertyDto> properties) {
     ListMultimap<Long, WidgetPropertyDto> group = ArrayListMultimap.create();
     for (WidgetPropertyDto property : properties) {