From b59db74adb27e7a7ff4b91001d3594786418c468 Mon Sep 17 00:00:00 2001 From: Helena Rodriguez Date: Wed, 23 May 2012 19:24:11 +0200 Subject: [PATCH] Added Groups to Database --- SWADroid/res/xml/tables.xml | 36 ++++++++ .../src/es/ugr/swad/swadroid/SWADMain.java | 11 ++- .../swad/swadroid/model/DataBaseHelper.java | 85 ++++++++++++++++--- .../src/es/ugr/swad/swadroid/model/Group.java | 5 +- .../es/ugr/swad/swadroid/modules/Groups.java | 30 ++++++- 5 files changed, 147 insertions(+), 20 deletions(-) diff --git a/SWADroid/res/xml/tables.xml b/SWADroid/res/xml/tables.xml index 116089fc..720f464e 100644 --- a/SWADroid/res/xml/tables.xml +++ b/SWADroid/res/xml/tables.xml @@ -259,4 +259,40 @@ obligatory="true" type="foreign-key" /> + + + + + +
+ + + +
diff --git a/SWADroid/src/es/ugr/swad/swadroid/SWADMain.java b/SWADroid/src/es/ugr/swad/swadroid/SWADMain.java index 5341bbd8..e1bc67e1 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/SWADMain.java +++ b/SWADroid/src/es/ugr/swad/swadroid/SWADMain.java @@ -223,9 +223,12 @@ public class SWADMain extends MenuExpandableListActivity { activity = new Intent(getBaseContext(), Attendance.class); startActivityForResult(activity, Global.ATTENDANCE_REQUEST_CODE); } else if(keyword.equals(getString(R.string.documentsDownloadModuleLabel))){ - activity = new Intent(getBaseContext(), DownloadsManager.class); - activity.putExtra("downloadsAreaCode", Global.DOCUMENTS_AREA_CODE); - startActivityForResult(activity,Global.DOWNLOADSMANAGER_REQUEST_CODE); + activity = new Intent(getBaseContext(),Groups.class); + startActivityForResult(activity,Global.GROUPS_REQUEST_CODE); + + //activity = new Intent(getBaseContext(), DownloadsManager.class); + //activity.putExtra("downloadsAreaCode", Global.DOCUMENTS_AREA_CODE); + //startActivityForResult(activity,Global.DOWNLOADSMANAGER_REQUEST_CODE); }else if(keyword.equals(getString(R.string.sharedsDownloadModuleLabel))){ activity = new Intent(getBaseContext(), DownloadsManager.class); @@ -359,6 +362,8 @@ public class SWADMain extends MenuExpandableListActivity { createSpinnerAdapter(); createMenu(); break; + case Global.GROUPS_REQUEST_CODE: + break; } } } diff --git a/SWADroid/src/es/ugr/swad/swadroid/model/DataBaseHelper.java b/SWADroid/src/es/ugr/swad/swadroid/model/DataBaseHelper.java index f6dcd6ac..35b18edd 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/model/DataBaseHelper.java +++ b/SWADroid/src/es/ugr/swad/swadroid/model/DataBaseHelper.java @@ -478,20 +478,33 @@ public class DataBaseHelper { * @param q Test question to be inserted * @param selectedCourseCode Course code to be referenced */ - public void insertGroup(Group g, long selectedCourseCode) + public boolean insertGroup(Group g, long courseCode) { - Entity ent = new Entity(Global.DB_TABLE_GROUPS); + List rows = db.getEntityList(Global.DB_TABLE_GROUPS, "groupCode = " + g.getId()); - ent.setValue("groupCode", g.getId()); - ent.setValue("groupName", g.getGroupName()); - ent.setValue("groupTypeCode", g.getGroupTypeCode()); - ent.setValue("groupTypeName", g.getGroupTypeName()); - ent.save(); - - ent = new Entity(Global.DB_TABLE_GROUPS_COURSES) ; - ent.setValue("grpCod", g.getId()); - ent.setValue("crsCod", selectedCourseCode); - ent.save(); + if(rows.isEmpty()) { + Entity ent = new Entity(Global.DB_TABLE_GROUPS); + + ent.setValue("groupCode", g.getId()); + ent.setValue("groupName", g.getGroupName()); + ent.setValue("groupTypeCode", g.getGroupTypeCode()); + ent.setValue("groupTypeName", g.getGroupTypeName()); + ent.save(); + + rows = db.getEntityList(Global.DB_TABLE_GROUPS_COURSES,"grpCod =" + g.getId()); + if(rows.isEmpty()){ + ent = new Entity(Global.DB_TABLE_GROUPS_COURSES); + ent.setValue("grpCod", g.getId()); + ent.setValue("crsCod", courseCode); + ent.save(); + }else{ + rows.get(0).setValue("crsCod", courseCode); + rows.get(0).save(); + } + + return true; + } else + return false; } /** @@ -711,6 +724,38 @@ public class DataBaseHelper { ent.setValue("userRole", actual.getUserRole()); ent.save(); } + + /** + * Updates a Group and the relationship between Groups and Courses + * @param groupCode code of the group to be updated + * @param courseCode current code of the course related to the group + * @param currentGroup updated group + * */ + public boolean updateGroup(long groupCode, long courseCode, Group currentGroup){ + List rows = db.getEntityList(Global.DB_TABLE_GROUPS, "groupCode =" + groupCode); + if(!rows.isEmpty()){ + Entity ent = rows.get(0); + + //ent.setValue("groupCode", g.getId()); + ent.setValue("groupName", currentGroup.getGroupName()); + ent.setValue("groupTypeCode", currentGroup.getGroupTypeCode()); + ent.setValue("groupTypeName", currentGroup.getGroupTypeName()); + ent.save(); + + rows = db.getEntityList(Global.DB_TABLE_GROUPS_COURSES,"grpCod =" + groupCode); + if(rows.isEmpty()){ + ent = new Entity(Global.DB_TABLE_GROUPS_COURSES); + ent.setValue("grpCod", groupCode); + ent.setValue("crsCod", courseCode); + ent.save(); + }else{ + rows.get(0).setValue("crsCod", courseCode); + rows.get(0).save(); + } + return true; + }else + return false; + } /** * Removes a User from database @@ -730,6 +775,19 @@ public class DataBaseHelper { Entity ent = rows.get(0); ent.delete(); } + /** + * Removes all rows from a database table where fieldName has the given value as value + * @param fieldName Name field to search + * @param value Value field of row to be removed + */ + public void removeAllRow(String table, String fieldName ,long value) + { + List rows = db.getEntityList(table, fieldName + "= " + value); + for(int i = 0; i < rows.size(); ++i){ + Entity ent = rows.get(i); + ent.delete(); + } + } /** * Removes a PairTable from database @@ -986,6 +1044,9 @@ public class DataBaseHelper { emptyTable(Global.DB_TABLE_TEST_TAGS); emptyTable(Global.DB_TABLE_USERS_COURSES); emptyTable(Global.DB_TABLE_USERS); + emptyTable(Global.DB_TABLE_GROUPS); + emptyTable(Global.DB_TABLE_GROUPS_COURSES); + compactDB(); } diff --git a/SWADroid/src/es/ugr/swad/swadroid/model/Group.java b/SWADroid/src/es/ugr/swad/swadroid/model/Group.java index 790f5086..2b770b4d 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/model/Group.java +++ b/SWADroid/src/es/ugr/swad/swadroid/model/Group.java @@ -16,7 +16,6 @@ public class Group extends Model { private int groupTypeCode; private String groupTypeName; - private static PropertyInfo PI_id = new PropertyInfo(); private static PropertyInfo PI_groupName = new PropertyInfo(); private static PropertyInfo PI_groupTypeCode = new PropertyInfo(); @@ -28,8 +27,7 @@ public class Group extends Model { PI_id, PI_groupName, PI_groupTypeCode, - PI_groupTypeName - + PI_groupTypeName, }; @@ -116,6 +114,7 @@ public class Group extends Model { public int getGroupTypeCode(){ return groupTypeCode; } + @Override public int hashCode() { diff --git a/SWADroid/src/es/ugr/swad/swadroid/modules/Groups.java b/SWADroid/src/es/ugr/swad/swadroid/modules/Groups.java index 9d842025..09739d70 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/modules/Groups.java +++ b/SWADroid/src/es/ugr/swad/swadroid/modules/Groups.java @@ -2,6 +2,8 @@ package es.ugr.swad.swadroid.modules; import java.io.IOException; import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.List; import java.util.Vector; import org.ksoap2.SoapFault; @@ -14,6 +16,7 @@ import android.widget.Toast; import es.ugr.swad.swadroid.Global; import es.ugr.swad.swadroid.model.Course; import es.ugr.swad.swadroid.model.Group; +import es.ugr.swad.swadroid.model.Model; /** * Groups module gets user's groups inside the current course @@ -34,9 +37,15 @@ public class Groups extends Module { if(result != null){ + //Stores groups data returned by webservice response + List groupsSWAD = new ArrayList(); + + Vector res = (Vector ) result; SoapObject soap = (SoapObject) res.get(1); int csSize = soap.getPropertyCount(); + + for (int i = 0; i < csSize; i++) { SoapObject pii = (SoapObject)soap.getProperty(i); long id = Long.parseLong(pii.getProperty("groupCode").toString()); @@ -44,15 +53,32 @@ public class Groups extends Module { int groupTypeCode = Integer.parseInt(pii.getProperty("groupTypeCode").toString()); String groupTypeName = pii.getProperty("groupTypeName").toString(); Group g = new Group(id,groupName,groupTypeCode,groupTypeName); - //coursesSWAD.add(c); - + + groupsSWAD.add(g); + if(isDebuggable){ Log.i(TAG, g.toString()); } } + + //TODO remove obsolete groups + 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())){ + Log.i(TAG, "group to update"); + dbHelper.updateGroup(g.getId(), Global.getSelectedCourseCode(), g); + Log.i(TAG, "group updated"); + } + } + //Request finalized without errors + setResult(RESULT_OK); } + + } @Override