*/
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;
}
public Collection<WidgetDto> findAll(DbSession session) {
return mapper(session).selectAll();
}
+
+ private WidgetMapper mapper(DbSession session) {
+ return session.getMapper(WidgetMapper.class);
+ }
+
}
*/
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);
}
mapper(session).deleteByWidgetIds(widgetIdsWithPropertiesToDelete);
}
+ private WidgetPropertyMapper mapper(DbSession session) {
+ return session.getMapper(WidgetPropertyMapper.class);
+ }
}
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;
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 {
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
List<Long> widgetIdsWithPropertiesToDelete = Lists.newArrayList();
List<WidgetPropertyDto> widgetPropertiesToCreate = Lists.newArrayList();
+ Date now = system.newDate();
for (WidgetDto widget : dbClient.widgetDao().findAll(session)) {
switch (widget.getWidgetKey()) {
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());
}
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;
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();
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;
private Integer rowIndex;
private boolean configured;
private Integer resourceId;
+ private Date createdAt;
+ private Date updatedAt;
private List<WidgetPropertyDto> widgetPropertyDtos = Lists.newArrayList();
/**
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;
+ }
+
}
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;
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) {