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