From 5a2919a0f342f03cf40a85ee4ea27459f3de55c5 Mon Sep 17 00:00:00 2001 From: Helena Rodriguez Date: Sat, 3 Nov 2012 12:53:38 +0100 Subject: [PATCH] added correct management with removed and updated groups and group types --- .../swad/swadroid/model/DataBaseHelper.java | 74 ++++++++++++++++--- .../ugr/swad/swadroid/modules/GroupTypes.java | 6 +- .../es/ugr/swad/swadroid/modules/Groups.java | 5 +- .../modules/groups/MyGroupsManager.java | 2 +- 4 files changed, 71 insertions(+), 16 deletions(-) diff --git a/SWADroid/src/es/ugr/swad/swadroid/model/DataBaseHelper.java b/SWADroid/src/es/ugr/swad/swadroid/model/DataBaseHelper.java index e6dd6c41..e3927235 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/model/DataBaseHelper.java +++ b/SWADroid/src/es/ugr/swad/swadroid/model/DataBaseHelper.java @@ -788,7 +788,7 @@ public class DataBaseHelper { }else{ ent = new Entity(tableName); } - if(tableName.equals(Global.DB_TABLE_GROUPS)){ + if(tableName.compareTo(Global.DB_TABLE_GROUPS) == 0){ Group g = (Group) currentModel; ent.setValue("id", g.getId()); ent.setValue("groupName", g.getGroupName()); @@ -800,7 +800,7 @@ public class DataBaseHelper { ent.save(); } - if(tableName.equals(Global.DB_TABLE_GROUP_TYPES)){ + if(tableName.compareTo(Global.DB_TABLE_GROUP_TYPES) == 0){ GroupType gt = (GroupType) currentModel; ent.setValue("id", gt.getId()); ent.setValue("groupTypeName", gt.getGroupTypeName()); @@ -875,7 +875,11 @@ public class DataBaseHelper { boolean returnValue = true; if(rows.isEmpty()) { insertEntity(Global.DB_TABLE_GROUPS,g); + } else { //already exits a group with the given code. just update + insertEntity(Global.DB_TABLE_GROUPS,g,rows.get(0)); + } + //update all the relationship Entity ent; long groupCode = g.getId(); @@ -885,7 +889,7 @@ public class DataBaseHelper { //it should not insert/modify rows in the relationship table if the course does not exists if(course != null){ if(rows.isEmpty()){ - PairTable pair = new PairTable(Global.DB_TABLE_GROUPS_COURSES,courseCode,g.getId()); + PairTable pair = new PairTable(Global.DB_TABLE_GROUPS_COURSES,g.getId(),courseCode); insertPairTable(pair); }else{ rows.get(0).setValue("crsCod", courseCode); @@ -904,22 +908,14 @@ public class DataBaseHelper { if(rows.isEmpty()){ Pair params = selectParamsPairTable(Global.DB_TABLE_GROUPS_GROUPTYPES); insertPairTable(new PairTable(Global.DB_TABLE_GROUPS_GROUPTYPES,groupTypeCode,groupCode)); - /*ent = new Entity(Global.DB_TABLE_GROUPS_GROUPTYPES); - ent.setValue("grpCod", groupCode); - ent.setValue("grpTypCod", groupTypeCode[0]); - ent.save();*/ }else{ PairTable prev = new PairTable(Global.DB_TABLE_GROUPS_GROUPTYPES,rows.get(0).getValue("grpTypCod"),rows.get(0).getValue("grpCod")); PairTable current = new PairTable(Global.DB_TABLE_GROUPS_GROUPTYPES,groupTypeCode,groupCode); updatePairTable(prev,current); - //rows.get(0).setValue("grpTypCod", groupTypeCode[0]); - //rows.get(0).save(); } /*}else returnValue = false;*/ return returnValue; - } else - return false; } /** @@ -937,6 +933,62 @@ public class DataBaseHelper { return returnValue; } + public boolean insertCollection(String table,List currentModels, long...courseCode){ + boolean result = true; + List modelsDB = getAllRows(table); + List newModels = new ArrayList(); + List obsoleteModel = new ArrayList(); + List modifiedModel = new ArrayList(); + + newModels.addAll(currentModels); + newModels.removeAll(modelsDB); + + obsoleteModel.addAll(modelsDB); + obsoleteModel.removeAll(currentModels); + + modifiedModel.addAll(currentModels); + modifiedModel.removeAll(newModels); + modifiedModel.removeAll(obsoleteModel); + + if(table.compareTo(Global.DB_TABLE_GROUP_TYPES) == 0){ + for(int i = 0; i < obsoleteModel.size(); ++i){ + long code = obsoleteModel.get(i).getId(); + removeAllRow(table,"id", code); + removeAllRow(Global.DB_TABLE_GROUPS_GROUPTYPES,"grpTypCod", code); + } + for(int i = 0; i < newModels.size(); ++i){ + Model model = newModels.get(i); + insertEntity(table,model); + } + List rows; + for(int i = 0; i < modifiedModel.size(); ++i){ + Model m = modifiedModel.get(i); + rows = db.getEntityList(table, "id="+ m.getId()); + insertEntity(table,m,rows.get(0)); + } + } + + if(table.compareTo(Global.DB_TABLE_GROUPS) == 0){ + for(int i = 0; i < obsoleteModel.size(); ++i){ + long code = obsoleteModel.get(i).getId(); + removeAllRow(table,"id", code); + removeAllRow(Global.DB_TABLE_GROUPS_GROUPTYPES,"grpCod", code); + removeAllRow(Global.DB_TABLE_GROUPS_COURSES,"grpCod",code); + } + for(int i = 0; i < newModels.size(); ++i){ + Model model = newModels.get(i); + insertGroup((Group) model, courseCode[0]); + } + List rows; + for(int i = 0; i < modifiedModel.size(); ++i){ + Model model = modifiedModel.get(i); + insertGroup((Group) model, courseCode[0]); + } + } + + return result; + } + /** * Inserts the rollcall data of a student to a practice session in database * @param l User code of student diff --git a/SWADroid/src/es/ugr/swad/swadroid/modules/GroupTypes.java b/SWADroid/src/es/ugr/swad/swadroid/modules/GroupTypes.java index 0dfa139e..2b7e0deb 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/modules/GroupTypes.java +++ b/SWADroid/src/es/ugr/swad/swadroid/modules/GroupTypes.java @@ -106,7 +106,9 @@ public class GroupTypes extends Module { } } - //TODO remove obsolete groups + dbHelper.insertCollection(Global.DB_TABLE_GROUP_TYPES, groupsSWAD); + + /* //TODO remove obsolete groups for(int i = 0; i < groupsSWAD.size(); ++i){ GroupType g = (GroupType) groupsSWAD.get(i); //boolean isAdded = dbHelper.insertGroup(g,Global.getSelectedCourseCode()); @@ -114,7 +116,7 @@ public class GroupTypes extends Module { if(!dbHelper.insertGroupType(g)){ setResult(RESULT_CANCELED); } - } + }*/ //Request finalized without errors setResult(RESULT_OK); } diff --git a/SWADroid/src/es/ugr/swad/swadroid/modules/Groups.java b/SWADroid/src/es/ugr/swad/swadroid/modules/Groups.java index 3e93a5ef..4df6ec1d 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/modules/Groups.java +++ b/SWADroid/src/es/ugr/swad/swadroid/modules/Groups.java @@ -131,15 +131,16 @@ public class Groups extends Module { } } + dbHelper.insertCollection(Global.DB_TABLE_GROUPS, groupsSWAD, courseCode); //TODO remove obsolete groups - for(int i = 0; i < groupsSWAD.size(); ++i){ + /*for(int i = 0; i < groupsSWAD.size(); ++i){ Group g = (Group) groupsSWAD.get(i); //boolean isAdded = dbHelper.insertGroup(g,Global.getSelectedCourseCode()); //if(!isAdded){ if(!dbHelper.insertGroup(g,Global.getSelectedCourseCode())){ dbHelper.updateGroup(g.getId(), Global.getSelectedCourseCode(), g); } - } + }*/ //Request finalized without errors setResult(RESULT_OK); } diff --git a/SWADroid/src/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java b/SWADroid/src/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java index b94f656a..aa9248a1 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java +++ b/SWADroid/src/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java @@ -134,7 +134,7 @@ public class MyGroupsManager extends MenuExpandableListActivity { groupTypesRequested = true; if(dbHelper.getAllRows(Global.DB_TABLE_GROUP_TYPES, "courseCode = " + courseCode , "groupTypeName").size() > 0){ //If there are not group types, either groups. Therefore, there is no need to request groups - Intent activity = new Intent(getBaseContext(),GroupTypes.class); + Intent activity = new Intent(getBaseContext(),Groups.class); activity.putExtra("courseCode", courseCode); startActivityForResult(activity,Global.GROUPS_REQUEST_CODE); }else