import java.io.Serializable;
-public abstract class BaseDao<E extends Dto<K>, K extends Serializable, M extends Dao<E,K>>
+public abstract class BaseDao<E extends Dto<K>, K extends Serializable>
implements Dao<E, K> {
protected MyBatis mybatis;
protected abstract String getIndexName();
- protected abstract Class<M> getMapperClass();
+ protected abstract void doInsert(E item, SqlSession session);
- private M getMapper(SqlSession session) {
- return session.getMapper(getMapperClass());
- }
+ protected abstract void doUpdate(E item, SqlSession session);
+
+ protected abstract void doDelete(E item, SqlSession session);
+
+ protected abstract void doDeleteByKey(E item, SqlSession session);
+
+ protected abstract E doGetByKey(K key, SqlSession session);
protected void enqueInsert(K key) {
this.queue.enqueInsert(this.getIndexName(), key);
this.queue.enqueDelete(this.getIndexName(), key);
}
- protected MyBatis getMyBatis(){
+ protected MyBatis getMyBatis() {
return this.mybatis;
}
@Override
- @SuppressWarnings("unchecked")
public E getByKey(K key) {
- E item = null;
SqlSession session = getMyBatis().openSession();
- item = getMapper(session).getByKey(key);
+ E item = this.doGetByKey(key, session);
MyBatis.closeQuietly(session);
return item;
}
@Override
- public void update(E item) {
+ public E update(E item) {
SqlSession session = getMyBatis().openSession();
try {
- getMapper(session).update(item);
+ this.doUpdate(item, session);
session.commit();
this.enqueUpdate(item.getKey());
+ return item;
} finally {
MyBatis.closeQuietly(session);
}
}
@Override
- public void insert(E item) {
+ public E insert(E item) {
SqlSession session = getMyBatis().openSession();
try {
- getMapper(session).insert(item);
+ this.doInsert(item, session);
session.commit();
this.enqueInsert(item.getKey());
+ return item;
} finally {
MyBatis.closeQuietly(session);
}
}
+ public void insert(E item, SqlSession session) {
+
+ }
+
+ public void update(E item, SqlSession session) {
+
+ }
+
+ public void delete(E item, SqlSession session) {
+
+ }
+
@Override
public void delete(E item) {
this.deleteByKey(item.getKey());
public void deleteByKey(K key) {
SqlSession session = getMyBatis().openSession();
try {
- getMapper(session).deleteByKey(key);
+ this.deleteByKey(key);
session.commit();
} finally {
MyBatis.closeQuietly(session);
public E getByKey(K key);
- public void update(E item);
+ public E update(E item);
- public void insert(E item);
+ public E insert(E item);
public void delete(E item);
--- /dev/null
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.core.db;
+
+public class UnsuportedException extends RuntimeException {
+
+ public UnsuportedException(String cause) {
+ super(cause);
+ }
+
+}
private final int batchSize;
private int count = 0;
+
BatchSession(SqlSession session) {
this(session, MAX_BATCH_SIZE);
}
*/
package org.sonar.core.rule;
+import org.sonar.core.db.UnsuportedException;
+
import com.google.common.collect.Lists;
import org.apache.ibatis.session.SqlSession;
import org.sonar.api.BatchComponent;
import static com.google.common.collect.Lists.newArrayList;
-public class RuleDao extends BaseDao<RuleDto, RuleKey, RuleMapper>
+public class RuleDao extends BaseDao<RuleDto, RuleKey>
implements BatchComponent, ServerComponent {
-
public RuleDao(MyBatis mybatis, WorkQueue queue) {
super(queue, mybatis);
}
}
@Override
- protected Class<RuleMapper> getMapperClass() {
- return RuleMapper.class;
+ protected void doInsert(RuleDto item, SqlSession session) {
+ session.getMapper(RuleMapper.class).insert(item);
+ }
+
+ @Override
+ protected void doUpdate(RuleDto item, SqlSession session) {
+ session.getMapper(RuleMapper.class).update(item);
+ }
+
+ @Override
+ protected void doDelete(RuleDto item, SqlSession session) {
+ throw new UnsuportedException("Rules cannot be deleted");
+ }
+
+ @Override
+ protected void doDeleteByKey(RuleDto item, SqlSession session) {
+ throw new UnsuportedException("Rules cannot be deleted");
+ }
+
+ @Override
+ @CheckForNull
+ protected RuleDto doGetByKey(RuleKey key, SqlSession session) {
+ return getMapper(session).selectByKey(key);
}
public List<RuleDto> selectAll() {
}
}
+ /**
+ *
+ * @deprecated use {@link getByKey(RuleKey key, SqlSession session)} instead.
+ */
+ @Deprecated
@CheckForNull
public RuleDto selectByKey(RuleKey ruleKey, SqlSession session) {
return getMapper(session).selectByKey(ruleKey);
}
+ /**
+ *
+ * @deprecated use {@link getByKey(RuleKey key)} instead.
+ */
+ @Deprecated
@CheckForNull
public RuleDto selectByKey(RuleKey ruleKey) {
SqlSession session = mybatis.openSession();
}
}
- public void update(RuleDto rule, SqlSession session) {
- getMapper(session).update(rule);
- }
-
-// public RuleDto update(RuleDto rule) {
-// return super.update(rule);
-// }
-//
-// public RuleDto insert(RuleDto ruleToInsert) {
-// return super.insert(ruleToInsert);
-// }
-
- public void insert(RuleDto ruleToInsert, SqlSession session) {
- getMapper(session).insert(ruleToInsert);
- }
-
-
public void insert(Collection<RuleDto> rules) {
SqlSession session = mybatis.openBatchSession();
try {
}
}
- //******************************
+ // ******************************
// Methods for Rule Parameters
- //******************************
+ // ******************************
public List<RuleParamDto> selectParameters() {
SqlSession session = mybatis.openSession();
return session.getMapper(RuleMapper.class);
}
- //***************************
+ // ***************************
// Methods for Rule Tags
- //***************************
-
+ // ***************************
public void insert(RuleRuleTagDto newTag, SqlSession session) {
getMapper(session).insertTag(newTag);
import org.apache.ibatis.annotations.Param;
import org.sonar.api.rule.RuleKey;
-import org.sonar.core.db.Dao;
import java.util.List;
-public interface RuleMapper extends Dao<RuleDto, RuleKey>{
+public interface RuleMapper {
List<RuleDto> selectAll();