Commit b6590b1f by Lee Munkyeong

Checkのテーブル復元

parent b47d99f6
...@@ -8,13 +8,12 @@ import jp.agentec.abook.abv.bl.common.db.Cursor; ...@@ -8,13 +8,12 @@ import jp.agentec.abook.abv.bl.common.db.Cursor;
import jp.agentec.abook.abv.bl.common.db.SQLiteDatabase; import jp.agentec.abook.abv.bl.common.db.SQLiteDatabase;
import jp.agentec.abook.abv.bl.common.log.Logger; import jp.agentec.abook.abv.bl.common.log.Logger;
import jp.agentec.abook.abv.bl.dto.GroupDto; import jp.agentec.abook.abv.bl.dto.GroupDto;
import jp.agentec.adf.util.CollectionUtil;
import jp.agentec.adf.util.NumericUtil; import jp.agentec.adf.util.NumericUtil;
import jp.agentec.adf.util.StringUtil; import jp.agentec.adf.util.StringUtil;
public class GroupDao extends AbstractDao { public class GroupDao extends AbstractDao {
private static final String TAG = "GroupDao"; private static final String TAG = "GroupDao";
private enum QueryType {GetAllGroups, GetRootGroups, GetGroups} private enum QueryType {GetAllGroups, GetRootGroups, GetGroups}
/*package*/ GroupDao() { /*package*/ GroupDao() {
...@@ -60,10 +59,7 @@ public class GroupDao extends AbstractDao { ...@@ -60,10 +59,7 @@ public class GroupDao extends AbstractDao {
if (column != -1) { if (column != -1) {
dto.userGroupFlg = toBool(cursor.getInt(column)); dto.userGroupFlg = toBool(cursor.getInt(column));
} }
column = cursor.getColumnIndex("favorite_register_date");
if (column != -1) {
dto.favoriteRegisterDate = cursor.getString(column);
}
return dto; return dto;
} }
...@@ -73,49 +69,17 @@ public class GroupDao extends AbstractDao { ...@@ -73,49 +69,17 @@ public class GroupDao extends AbstractDao {
//해당 콘텐츠 아이디를 가지고 있는 그룹정보 //해당 콘텐츠 아이디를 가지고 있는 그룹정보
public List<GroupDto> getExistContentGroup(long contentId) { public List<GroupDto> getExistContentGroup(long contentId) {
return rawQueryGetDtoList("select * from m_group where group_relation_id in (select group_relation_id from r_content_group where content_id = " + contentId + ") order by group_id", null, GroupDto.class); return rawQueryGetDtoList("select * from m_group where group_relation_id in (select group_relation_id from r_content_group where content_id = " + contentId + ") order by group_id", null, GroupDto.class);
}
public List<String> getMyGroupPathList() {
StringBuffer sql = new StringBuffer();
sql.append(" SELECT ");
sql.append(" CASE WHEN (grandparentgroup.group_name IS NOT NULL) THEN grandparentgroup.group_name || ' / ' || parentgroup.group_name || ' / ' || mygroup.group_name ");
sql.append(" WHEN (parentgroup.group_name IS NOT NULL) THEN parentgroup.group_name || ' / ' || mygroup.group_name ");
sql.append(" ELSE mygroup.group_name ");
sql.append(" END AS group_path_list ");
sql.append(" FROM m_group mygroup ");
sql.append(" LEFT JOIN m_group parentgroup on mygroup.parent_group_id = parentgroup.group_id ");
sql.append(" LEFT JOIN m_group grandparentgroup on parentgroup.parent_group_id = grandparentgroup.group_id ");
sql.append(" WHERE mygroup.user_group_flg = 1 ");
return rawQueryGetStringList(sql.toString(), null);
}
public List<GroupDto> getUserGroupPathList(Integer shopMemberId) {
StringBuffer sql = new StringBuffer();
sql.append(" SELECT ");
sql.append(" CASE WHEN (grandparentgroup.group_name IS NOT NULL) THEN grandparentgroup.group_name || ' / ' || parentgroup.group_name || ' / ' || usergroup.group_name ");
sql.append(" WHEN (parentgroup.group_name IS NOT NULL) THEN parentgroup.group_name || ' / ' || usergroup.group_name ");
sql.append(" ELSE usergroup.group_name ");
sql.append(" END AS group_path, usergroup.group_id ");
sql.append(" FROM m_group usergroup ");
sql.append(" LEFT JOIN m_group parentgroup on usergroup.parent_group_id = parentgroup.group_id ");
sql.append(" LEFT JOIN m_group grandparentgroup on parentgroup.parent_group_id = grandparentgroup.group_id ");
sql.append(" WHERE usergroup.group_id IN ");
sql.append(" (SELECT group_id ");
sql.append(" FROM m_shop_member sm INNER JOIN r_shop_member_group rsmg on sm.shop_member_id = rsmg.shop_member_id ");
sql.append(" WHERE sm.shop_member_id = ? ) ");
return rawQueryGetDtoList(sql.toString(), new String[] { "" + shopMemberId}, GroupDto.class);
} }
private String generateGetGroupsQuery(QueryType queryType, int[] groupRelationids, int[] parentGroupIds, Boolean downloaded, String searchKeyword, SearchDivisionType searchDivisionType, boolean isOnlineSearched) { private String generateGetGroupsQuery(QueryType queryType, int[] groupRelationids, int[] parentGroupIds, Boolean downloaded, String searchKeyword, SearchDivisionType searchDivisionType, boolean isOnlineSearched) {
StringBuffer sql = new StringBuffer(); StringBuffer sql = new StringBuffer();
switch (queryType) { switch (queryType) {
/* /*
* GetAllGroupsとGetRootGroupsのSQLは使っていない。これらのSQLはContentDaoにある。 * GetAllGroupsとGetRootGroupsのSQLは使っていない。これらのSQLはContentDaoにある。
* もし、このSQLを使おうとしても、このままでは使わないので、充分検討すること。 * もし、このSQLを使おうとしても、このままでは使わないので、充分検討すること。
*/ */
case GetAllGroups: case GetAllGroups:
// AllGroups グループ初期化用 // AllGroups グループ初期化用
sql.append(" SELECT mg.group_id AS group_id "); sql.append(" SELECT mg.group_id AS group_id ");
...@@ -440,7 +404,7 @@ public class GroupDao extends AbstractDao { ...@@ -440,7 +404,7 @@ public class GroupDao extends AbstractDao {
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
List<Long> deleteContentIds = new ArrayList<Long>(); List<Long> deleteContentIds = new ArrayList<Long>();
List<Long> updateContentIds = new ArrayList<Long>(); List<Long> updateContentIds = new ArrayList<Long>();
do { do {
if (cursor.getShort(1) == 1) { if (cursor.getShort(1) == 1) {
deleteContentIds.add(cursor.getLong(0)); deleteContentIds.add(cursor.getLong(0));
...@@ -448,12 +412,12 @@ public class GroupDao extends AbstractDao { ...@@ -448,12 +412,12 @@ public class GroupDao extends AbstractDao {
updateContentIds.add(cursor.getLong(0)); updateContentIds.add(cursor.getLong(0));
} }
} while (cursor.moveToNext()); } while (cursor.moveToNext());
if (deleteContentIds.size() > 0) { if (deleteContentIds.size() > 0) {
String whereClause = generateInClause(deleteContentIds); String whereClause = generateInClause(deleteContentIds);
StringUtil.clear(sql); StringUtil.clear(sql);
sql.append(" DELETE "); sql.append(" DELETE ");
sql.append(" FROM r_content_group "); sql.append(" FROM r_content_group ");
sql.append(" WHERE group_relation_id = ( "); sql.append(" WHERE group_relation_id = ( ");
...@@ -465,15 +429,15 @@ public class GroupDao extends AbstractDao { ...@@ -465,15 +429,15 @@ public class GroupDao extends AbstractDao {
sql.append(" ) "); sql.append(" ) ");
sql.append(" AND content_id IN "); sql.append(" AND content_id IN ");
sql.append(whereClause); sql.append(whereClause);
execSql(sql.toString(), new Object[]{NumericUtil.parseInt(keyValues[0]),NumericUtil.parseInt(keyValues[1]),NumericUtil.parseInt(keyValues[2])}); execSql(sql.toString(), new Object[]{NumericUtil.parseInt(keyValues[0]),NumericUtil.parseInt(keyValues[1]),NumericUtil.parseInt(keyValues[2])});
} }
if (updateContentIds.size() > 0) { if (updateContentIds.size() > 0) {
String whereClause = generateInClause(updateContentIds); String whereClause = generateInClause(updateContentIds);
StringUtil.clear(sql); StringUtil.clear(sql);
sql.append(" UPDATE r_content_group "); sql.append(" UPDATE r_content_group ");
sql.append(" SET group_relation_id = ( "); sql.append(" SET group_relation_id = ( ");
sql.append(" SELECT group_relation_id "); sql.append(" SELECT group_relation_id ");
...@@ -483,7 +447,7 @@ public class GroupDao extends AbstractDao { ...@@ -483,7 +447,7 @@ public class GroupDao extends AbstractDao {
sql.append(" ) "); sql.append(" ) ");
sql.append(" WHERE content_id IN "); sql.append(" WHERE content_id IN ");
sql.append(whereClause); sql.append(whereClause);
db.execSQL(sql.toString()); db.execSQL(sql.toString());
} }
} }
...@@ -493,7 +457,7 @@ public class GroupDao extends AbstractDao { ...@@ -493,7 +457,7 @@ public class GroupDao extends AbstractDao {
cursor.close(); cursor.close();
} }
catch (Exception e) {} catch (Exception e) {}
} }
} }
delete("m_group", "group_id=? AND parent_group_id=? AND group_level=?", keyValues); delete("m_group", "group_id=? AND parent_group_id=? AND group_level=?", keyValues);
...@@ -506,89 +470,38 @@ public class GroupDao extends AbstractDao { ...@@ -506,89 +470,38 @@ public class GroupDao extends AbstractDao {
} finally { } finally {
} }
} }
public GroupDto getTopGroupInfo() { public GroupDto getTopGroupInfo() {
return rawQueryGetDto("select * from m_group where group_relation_id = 1", null, GroupDto.class); return rawQueryGetDto("select * from m_group where group_relation_id = 1", null, GroupDto.class);
} }
public GroupDto getGroup(int groupId) { public GroupDto getGroup(int groupId) {
return rawQueryGetDto("select * from m_group where group_id = " + groupId, null, GroupDto.class); return rawQueryGetDto("select * from m_group where group_id = " + groupId, null, GroupDto.class);
} }
public List<GroupDto> getFavoriteGroup() {
return rawQueryGetDtoList("select * from m_group where favorite_register_date IS NOT NULL ORDER BY favorite_register_date ", null, GroupDto.class);
}
public List<GroupDto> getGroupByName(String[] keywords) {
StringBuffer sql = new StringBuffer();
sql.append(" SELECT * ");
sql.append(" FROM m_group ");
ArrayList<String> whereSqlList = new ArrayList<String>();
for (String keyword : keywords) {
if(StringUtil.isNullOrEmpty(keyword)){
continue;
}
String whereSql = "group_name LIKE '%"+keyword+"%'";
whereSqlList.add(whereSql);
}
if (CollectionUtil.isNotEmpty(whereSqlList)) {
sql.append("WHERE " + StringUtil.join(" AND ", whereSqlList));
}
sql.append(" ORDER BY group_name ASC ");
return rawQueryGetDtoList(sql.toString(), null, GroupDto.class);
}
public List<GroupDto> getGroupSpareList(int baseId, int parentId) { public List<GroupDto> getGroupSpareList(int baseId, int parentId) {
List<GroupDto> list; List<GroupDto> list;
list = rawQueryGetDtoList("select * from m_group mg where (mg.group_id = ?) UNION select * from m_group mg where (mg.parent_group_id = ?)", new String[]{""+ baseId, ""+ parentId}, GroupDto.class); list = rawQueryGetDtoList("select * from m_group mg where (mg.group_id = ?) UNION select * from m_group mg where (mg.parent_group_id = ?)", new String[]{""+ baseId, ""+ parentId}, GroupDto.class);
return list; return list;
} }
public List<GroupDto> getGroupTree(Integer groupId) {
List<GroupDto> list;
StringBuffer sql = new StringBuffer();
sql.append(" WITH group_loop AS ");
sql.append(" ( ");
sql.append(" SELECT 1 rownum,group_id,group_name,parent_group_id,user_group_flg from m_group where group_id = ? ");
sql.append(" UNION ALL ");
sql.append(" SELECT rownum+1 rownum,parent.group_id,parent. group_name,parent.parent_group_id,parent.user_group_flg ");
sql.append(" FROM group_loop inner join m_group parent on parent.group_id = group_loop.parent_group_id ");
sql.append(" ) ");
sql.append(" SELECT * FROM group_loop ORDER BY group_loop.rownum DESC ");
list = rawQueryGetDtoList(sql.toString(), new String[]{""+ groupId}, GroupDto.class);
return list;
}
public List<GroupDto> getGroupChildList(int parentId) { public List<GroupDto> getGroupChildList(int parentId) {
List<GroupDto> list; List<GroupDto> list;
list = rawQueryGetDtoList("select * from m_group mg where (mg.parent_group_id = ?) ORDER BY group_name ASC", new String[]{""+ parentId}, GroupDto.class); list = rawQueryGetDtoList("select * from m_group mg where (mg.parent_group_id = ?)", new String[]{""+ parentId}, GroupDto.class);
return list; return list;
} }
public GroupDto getRootGroup() {
return rawQueryGetDto("select * from m_group mg where (mg.parent_group_id = 0)",null, GroupDto.class);
}
public GroupDto getParentGroup(Integer childGroupId) {
return rawQueryGetDto("select parent.* from m_group parent inner join m_group child on child.parent_group_id = parent.group_id where child.group_id = ?", new String[]{""+ childGroupId}, GroupDto.class);
}
public boolean isExistParent(int baseId) { public boolean isExistParent(int baseId) {
return rawQueryGetInt("select * from m_group where parent_group_id = " + baseId, null) > 0; return rawQueryGetInt("select * from m_group where parent_group_id = " + baseId, null) > 0;
} }
public List<GroupDto> getUserGroups() { public List<GroupDto> getUserGroups() {
return rawQueryGetDtoList("select * from m_group where user_group_flg = 1 ORDER BY group_name", null, GroupDto.class); return rawQueryGetDtoList("select * from m_group where user_group_flg = 1", null, GroupDto.class);
}
public List<GroupDto> getMyGroups() {
return rawQueryGetDtoList("select * from m_group where group_id IN (select group_id from m_shop_member sm inner join r_shop_member_group rmg on sm.shop_member_id = rmg.shop_member_id where sm.self_flg = 1) ORDER BY group_name ASC", null, GroupDto.class);
} }
/** /**
* ユーザが所属しているグループを返す(複数ある場合はどれか一つを返す。1グループに所属するサイネージで使用) * ユーザが所属しているグループを返す(複数ある場合はどれか一つを返す。1グループに所属するサイネージで使用)
* *
* @return * @return
*/ */
public Integer getGroupId() { public Integer getGroupId() {
...@@ -599,95 +512,4 @@ public class GroupDao extends AbstractDao { ...@@ -599,95 +512,4 @@ public class GroupDao extends AbstractDao {
return userGroupList.get(0).groupId; return userGroupList.get(0).groupId;
} }
public void insertGroupList(List<GroupDto> groupList) {
StringBuffer sql = new StringBuffer();
sql.append(" INSERT INTO m_group (group_id, parent_group_id, group_name, group_path, group_level, user_group_flg) ");
sql.append(" VALUES (?,?,?,?,?,?) ");
try {
beginTransaction();
for (GroupDto groupDto : groupList) {
insert(sql.toString(), new Object[] { groupDto.groupId, groupDto.parentGroupId, groupDto.groupName, ""+ groupDto.groupId, 0, 0 });
}
commit();
} catch (Exception e) {
rollback();
Logger.e("insertGroupList failed.", e);
throw new RuntimeException(e);
}
}
public void updateGroupList(List<GroupDto> groupList) {
StringBuffer sql = new StringBuffer();
sql.append(" UPDATE m_group ");
sql.append(" SET group_name = ? ");
sql.append(" , parent_group_id = ? ");
sql.append(" WHERE group_id = ? ");
try {
beginTransaction();
for (GroupDto groupDto : groupList) {
update(sql.toString(), new Object[] { groupDto.groupName, groupDto.parentGroupId, groupDto.groupId });
}
commit();
} catch (Exception e) {
rollback();
Logger.e("updateGroupList failed.", e);
throw new RuntimeException(e);
}
}
public void updateUserGroupList(List<Integer> groupIds) {
StringBuffer sql = new StringBuffer();
sql.append(" UPDATE m_group ");
sql.append(" SET user_group_flg = 1 ");
sql.append(" WHERE group_id = ? ");
try {
beginTransaction();
for (Integer groupId : groupIds) {
update(sql.toString(), new Object[] { groupId });
}
commit();
} catch (Exception e) {
rollback();
Logger.e("updateGroupList failed.", e);
throw new RuntimeException(e);
}
}
public void updateFavoriteGroupList(List<GroupDto> groupList) {
StringBuffer sql = new StringBuffer();
sql.append(" UPDATE m_group ");
sql.append(" SET favorite_register_date = ? ");
sql.append(" WHERE group_id = ? ");
try {
beginTransaction();
for (GroupDto groupDto : groupList) {
update(sql.toString(), new Object[] { groupDto.favoriteRegisterDate, groupDto.groupId });
}
commit();
} catch (Exception e) {
rollback();
Logger.e("updateFavoriteGroupList failed.", e);
throw new RuntimeException(e);
}
}
public void deleteGroupList(List<GroupDto> groupList) {
StringBuffer sql = new StringBuffer();
sql.append(" delete from m_group ");
sql.append(" WHERE group_id = ? ");
try {
beginTransaction();
for (GroupDto groupDto : groupList) {
update(sql.toString(), new Object[] { groupDto.groupId });
}
commit();
} catch (Exception e) {
rollback();
Logger.e("deleteGroupList failed.", e);
throw new RuntimeException(e);
}
}
} }
...@@ -15,16 +15,16 @@ import jp.agentec.adf.util.StringUtil; ...@@ -15,16 +15,16 @@ import jp.agentec.adf.util.StringUtil;
* @version 1.1.1 * @version 1.1.1
*/ */
public class MGroup extends SQLiteTableScript { public class MGroup extends SQLiteTableScript {
public MGroup() { public MGroup() {
super(); super();
} }
@Override @Override
public List<String> getCreateScript(int version) { public List<String> getCreateScript(int version) {
List<String> ddl = new ArrayList<String>(); List<String> ddl = new ArrayList<String>();
StringBuffer sql = new StringBuffer(); StringBuffer sql = new StringBuffer();
// since DatabaseVersions.Ver1_0_0 // since DatabaseVersions.Ver1_0_0
sql.append(" CREATE TABLE m_group ( "); sql.append(" CREATE TABLE m_group ( ");
sql.append(" group_relation_id INTEGER NOT NULL "); sql.append(" group_relation_id INTEGER NOT NULL ");
...@@ -34,34 +34,33 @@ public class MGroup extends SQLiteTableScript { ...@@ -34,34 +34,33 @@ public class MGroup extends SQLiteTableScript {
sql.append(" , group_name VARCHAR(64) NOT NULL "); sql.append(" , group_name VARCHAR(64) NOT NULL ");
sql.append(" , group_path TEXT NOT NULL "); // path enumaerationパターンを適用する。since DatabaseVersions.Ver1_5_0 sql.append(" , group_path TEXT NOT NULL "); // path enumaerationパターンを適用する。since DatabaseVersions.Ver1_5_0
sql.append(" , user_group_flg BOOLEAN NOT NULL DEFAULT 0 "); // since DatabaseVersions.Plus_1_1_0 sql.append(" , user_group_flg BOOLEAN NOT NULL DEFAULT 0 "); // since DatabaseVersions.Plus_1_1_0
sql.append(" , favorite_register_date VARCHAR2(64) ");
sql.append(" , PRIMARY KEY (group_relation_id) "); sql.append(" , PRIMARY KEY (group_relation_id) ");
sql.append(" ) "); sql.append(" ) ");
ddl.add(sql.toString()); ddl.add(sql.toString());
StringUtil.clear(sql); StringUtil.clear(sql);
sql.append(" CREATE INDEX idx_group_1 ON m_group ( "); sql.append(" CREATE INDEX idx_group_1 ON m_group ( ");
sql.append(" parent_group_id "); sql.append(" parent_group_id ");
sql.append(" ) "); sql.append(" ) ");
ddl.add(sql.toString()); ddl.add(sql.toString());
StringUtil.clear(sql); StringUtil.clear(sql);
// sql.append(" CREATE UNIQUE INDEX udx_group_1 ON m_group ( "); // TODO: これは複数の親を持てる場合には必要だが。 // sql.append(" CREATE UNIQUE INDEX udx_group_1 ON m_group ( "); // TODO: これは複数の親を持てる場合には必要だが。
// sql.append(" group_id, parent_group_id, group_level "); // sql.append(" group_id, parent_group_id, group_level ");
// sql.append(" ) "); // sql.append(" ) ");
// //
// ddl.add(sql.toString()); // ddl.add(sql.toString());
// StringUtil.clear(sql); // StringUtil.clear(sql);
// since DatabaseVersions.Ver1_5_0 // since DatabaseVersions.Ver1_5_0
sql.append(" CREATE UNIQUE INDEX udx_group_2 ON m_group ( "); sql.append(" CREATE UNIQUE INDEX udx_group_2 ON m_group ( ");
sql.append(" group_path "); sql.append(" group_path ");
sql.append(" ) "); sql.append(" ) ");
ddl.add(sql.toString()); ddl.add(sql.toString());
return ddl; return ddl;
} }
......
package jp.agentec.abook.abv.bl.dto; package jp.agentec.abook.abv.bl.dto;
import java.util.List;
/** /**
* グループ情報を格納します。m_groupのPKであるgroup_relation_idはこのdtoの扱いません。内部的なキーはgetKyeValuesメソッドで定義してあります。 * グループ情報を格納します。m_groupのPKであるgroup_relation_idはこのdtoの扱いません。内部的なキーはgetKyeValuesメソッドで定義してあります。
* @author Taejin Hong * @author Taejin Hong
...@@ -17,12 +15,7 @@ public class GroupDto extends AbstractDto { ...@@ -17,12 +15,7 @@ public class GroupDto extends AbstractDto {
public int contentCount = 0; public int contentCount = 0;
public String displayCount; public String displayCount;
public String groupPath; public String groupPath;
public String favoriteRegisterDate = "";
public boolean userGroupFlg; public boolean userGroupFlg;
public int delFlg;
public List<ShopMemberDto> groupMembers;
public List<String> groupPathList;
public String updateDate;
public GroupDto() { public GroupDto() {
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment