issue #744 solved

parent d2ef1eba
Showing with 196 additions and 97 deletions
......@@ -21,6 +21,7 @@ android {
resValue "bool", "ssl_connect", "true"
resValue "bool", "force_img_download", "false"
resValue "integer", "netservice_timing", "5"
resValue "integer", "netservice_force_restapi_synchro", "0"
}
debug {
resValue "string", "server", "https://dev.yottacode.com"
......@@ -28,6 +29,7 @@ android {
resValue "bool", "ssl_connect", "false"
resValue "bool", "force_img_download", "false"
resValue "integer", "netservice_timing", "5"
resValue "integer", "netservice_force_restfull_synchro", "0"
}
}
}
......
......@@ -41,7 +41,7 @@ public class RestapiWrapper {
private static final String SERVER_ERROR="error";
// String constant for logs
private final String LOG_TAG = this.getClass().getSimpleName(); // Or .getCanonicalName()
private final static String LOG_TAG = RestapiWrapper.class.getSimpleName(); // Or .getCanonicalName()
public RestapiWrapper(String server, String token) {
this.server=server;
......@@ -123,7 +123,7 @@ public class RestapiWrapper {
return false;
} catch (IOException e) {
e.printStackTrace();
Log.i(com.yottacode.net.RestapiWrapper.class.getName(), "ping failed at"+ping_op);
Log.i(LOG_TAG, "ping failed at"+ping_op);
//error_listener.error(e);
}
return pingResult;
......@@ -137,7 +137,7 @@ public class RestapiWrapper {
BufferedReader br = new BufferedReader(new InputStreamReader(responseCode == HttpsURLConnection.HTTP_OK
? urlConnection.getInputStream()
: urlConnection.getErrorStream()));
// Log.i(com.yottacode.net.RestapiWrapper.class.getName(), "starting to read server answer for"+urlConnection.getURL().toString());
// Log.i(LOG_TAG, "starting to read server answer for"+urlConnection.getURL().toString());
while ((line=br.readLine()) != null) {
response.append(line);
}
......@@ -145,7 +145,7 @@ public class RestapiWrapper {
if (Character.isAlphabetic(response.charAt(0)))
response.append('\'').insert(0,'\'');
Log.i(com.yottacode.net.RestapiWrapper.class.getName(), "Raw server answer: " + response);
Log.i(LOG_TAG, "Raw server answer: " + response);
try {
JSONresponse = new JSONObject("{ "+SERVER_RESULT+": " + response + (responseCode == HttpsURLConnection.HTTP_OK
? "}"
......@@ -154,7 +154,7 @@ public class RestapiWrapper {
JSONresponse = null;
Log.e(RestapiWrapper.class.getCanonicalName(),e.getMessage());
}
Log.i(com.yottacode.net.RestapiWrapper.class.getName(), "server answer: " + JSONresponse.toString());
Log.i(LOG_TAG, "server answer: " + JSONresponse.toString());
return JSONresponse;
}
......@@ -252,7 +252,7 @@ public class RestapiWrapper {
protected HttpAsyncTaskParams doInBackground(HttpAsyncTaskParams... params) {
JSONObject jresult=null;
try {
Log.i(com.yottacode.net.RestapiWrapper.class.getName(), " Asking to the server for " + params[0].url+" params:"+params[0].url_params +" JSON?"+params[0].json_params);
Log.i(LOG_TAG, " Asking to the server for " + params[0].url+" params:"+params[0].url_params +" JSON?"+params[0].json_params);
jresult = params[0].request_method.equalsIgnoreCase("GET")
? GET(params[0].url, params[0].url_params)
: POST(params[0].url, params[0].request_method, params[0].url_params, params[0].json_params);
......@@ -260,11 +260,11 @@ public class RestapiWrapper {
if (jresult.has(SERVER_ERROR))
params[0].error= new HTTPException(params[0].result+" (err code "+jresult.getString(SERVER_ERROR)+")", jresult.getInt(SERVER_ERROR));
} catch (IOException e) {
Log.e(com.yottacode.net.RestapiWrapper.class.getName(), "Error: '" + e.getLocalizedMessage() + "' when asking for " + params[0].url);
Log.e(LOG_TAG, "Error: '" + e.getLocalizedMessage() + "' when asking for " + params[0].url);
params[0].result=null;
params[0].error=new HTTPException(e.getMessage(),-1);
} catch (JSONException e) {
Log.e(com.yottacode.net.RestapiWrapper.class.getName(), "Error: '" + e.getLocalizedMessage() +
Log.e(LOG_TAG, "Error: '" + e.getLocalizedMessage() +
"' when parsing " + jresult==null ? "null json result" : jresult.toString());
params[0].result=null;
params[0].error=new HTTPException(e.getMessage(),-1);
......
......@@ -10,9 +10,11 @@ import com.yottacode.pictogram.dao.User;
import com.yottacode.pictogram.tools.PCBcontext;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Date;
import java.util.Vector;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
......@@ -33,20 +35,30 @@ public class NetService implements Runnable {
static final String ping_session="server/ping";
private boolean updated;
private iNetServiceDevice device;
public NetService(int delay, iNetServiceDevice device) {
private final String LOG_TAG=this.getClass().getCanonicalName();
private Vector<iNetServiceStatus> listeners;
private static final long restfullSynchroTimming=PCBcontext.getContext().getResources().getInteger(R.integer.netservice_force_restfull_synchro)*1000;
private long lastRestfullSynchro;
public NetService(int delay, iNetServiceStatus listener) {
this.updated=RestapiWrapper.ping(PCBcontext.getContext().getResources().getString(R.string.server), ping_session);
this.device = device;
this.device.build();
Log.i(this.getClass().getName(), "Checking Pictogram server access...");
Log.i(this.getClass().getName(), this.updated ? "Pictogram server access ok" : "Pictogram server access failed, Internet connection available?");
this.listeners = new Vector<>(2);
this.listeners.add(listener);
if (listener instanceof iNetServiceDevice) ((iNetServiceDevice)listener).build();
Log.i(LOG_TAG, "Checking Pictogram server access...");
Log.i(LOG_TAG, this.updated ? "Pictogram server access ok" : "Pictogram server access failed, Internet connection available?");
ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
exec.scheduleWithFixedDelay(this, 0, delay, TimeUnit.SECONDS);
}
public void addListener(iNetServiceStatus listener) {
if (!listeners.contains(listener))
listeners.add(listener);
}
public void removeListener(iNetServiceStatus listener) {
listeners.remove(listener);
}
public void login() {
User user=PCBcontext.getPcbdb().getCurrentUser();
User user=PCBcontext.getPcbdb().getCurrentUser();
if (user.is_supervisor())
ServerLogin.login_supervisor(user.get_email_sup(), user.get_pwd_sup(), new RestapiWrapper.iRestapiListener() {
@Override
......@@ -56,7 +68,7 @@ public class NetService implements Runnable {
@Override
public void result(JSONArray result) {
PCBcontext.getPcbdb().user_online(true);
PCBcontext.getPcbdb().user_online(true);
}
@Override
......@@ -67,7 +79,9 @@ public class NetService implements Runnable {
@Override
public void error(RestapiWrapper.HTTPException e) {
Log.e(this.getClass().getSimpleName(), "Error un when server login:" + e.getMessage()+"( error "+e.getCode()+")");
if (e instanceof LoginException) NetService.this.device.restart_app(false);
if (e instanceof LoginException)
for (iNetServiceStatus listener: listeners)
if (listener instanceof iNetServiceDevice) ((iNetServiceDevice)listener).restart_app(false);
}
});
else ServerLogin.login_student(user.get_nickname_stu(), user.get_pwd_stu(), new RestapiWrapper.iRestapiListener() {
......@@ -78,7 +92,7 @@ public class NetService implements Runnable {
@Override
public void result(JSONArray result) {
PCBcontext.getPcbdb().user_online(true);
PCBcontext.getPcbdb().user_online(true);
}
@Override
......@@ -89,7 +103,9 @@ public class NetService implements Runnable {
@Override
public void error(RestapiWrapper.HTTPException e) {
Log.e(this.getClass().getSimpleName(),"Error un when server login:"+e.getMessage()+"( error "+e.getCode()+")");
if (e instanceof LoginException) NetService.this.device.restart_app(false);
if (e instanceof LoginException)
for (iNetServiceStatus listener: listeners)
if (listener instanceof iNetServiceDevice) ((iNetServiceDevice)listener).restart_app(false);
}
});
}
......@@ -97,11 +113,13 @@ public class NetService implements Runnable {
public void restart_app(boolean direct_login) {
PCBcontext.unset_user();
this.device.restart_app(direct_login);
for (iNetServiceStatus listener: listeners)
if (listener instanceof iNetServiceDevice) ((iNetServiceDevice)listener).restart_app(direct_login);
}
public void restart_app(Intent intent, boolean direct_login) {
PCBcontext.unset_user();
this.device.restart_app(intent, direct_login);
for (iNetServiceStatus listener: listeners)
if (listener instanceof iNetServiceDevice) ((iNetServiceDevice)listener).restart_app(intent, direct_login);
}
/**
......@@ -123,20 +141,35 @@ public class NetService implements Runnable {
public void result(JSONObject result) {
if (!updated) {
lastRestfullSynchro=new Date().getTime();
updated = true;
if (PCBcontext.is_user_logged()) //si el usuario aun no hizo login, en realidad no es necesario hacer nada
// Comprobar si hay usuario offline, para hacer login transparente
if (PCBcontext.is_user_offline()){
Log.e(LOG_TAG, "PCB online login from offline login");
login();
} else if (PCBcontext.is_user_online()){
Log.e(this.getClass().getName(), "PCB reconnect");
PCBcontext.getRoom().reconnect();
Log.e(LOG_TAG, "PCB reconnect");
PCBcontext.getRoom().connect();
PCBcontext.getVocabulary().synchronize();
PCBcontext.getActionLog().batch();
}
}
Log.i(this.getClass().getName(), "PCB status checked. Updated? " + updated);
notifyStatus();
else {
//cada minuto se fuerza sincronización de vocabulario y configuración de usuario
long now=new Date().getTime();
if (PCBcontext.is_user_logged()) {
if (restfullSynchroTimming>0 && (now - lastRestfullSynchro > restfullSynchroTimming)) {
Log.i(LOG_TAG, "Vocabulary request");
PCBcontext.getVocabulary().synchronize();
synchronizeStudentAttributes();
lastRestfullSynchro = now;
}
}
else lastRestfullSynchro=new Date().getTime();
}
}
@Override
......@@ -145,40 +178,79 @@ public class NetService implements Runnable {
}
});
//cada minuto se fuerza sincronización de vocabulario y configuración de usuario
if (online() && new Date().getTime()%60==0) {
Log.i(this.getClass().getCanonicalName(),"Vocabulary request");
PCBcontext.getVocabulary().synchronize();
}
}
private void synchronizeStudentAttributes() {
int id=PCBcontext.getPcbdb().getCurrentUser().get_id_stu();
PCBcontext.getRestapiWrapper().ask("stu/" + id, null, "get", new RestapiWrapper.iRestapiListener() {
@Override
public void preExecute() {
}
@Override
public void result(JSONArray result) {
}
@Override
public void result(JSONObject result) {
Object objects[] = new Object[0];
try {
objects = new Object[]{new JSONObject().put("student",result)};
PCBcontext.getStudentTalk().call(objects);
} catch (JSONException e) {
e.printStackTrace();
Log.e(LOG_TAG, e.getMessage() );
}
}
@Override
public void error(RestapiWrapper.HTTPException e) {
Log.e(LOG_TAG, "Raw error from server when getting student info:" + e.getMessage() + " (error " + e.getCode() + ")");
}
});
}
public void notifyStatus() {
device.notifyStatus(this.updated);
for (iNetServiceStatus listener: listeners)
listener.notifyStatus(this.updated);
}
public void closeNotifyStatus(){
device.closeNotifyStatus();
for (iNetServiceStatus listener: listeners)
if (listener instanceof iNetServiceDevice) ((iNetServiceDevice)listener).closeNotifyStatus();
}
public void setOffline(Exception e) {
this.updated=false;
Log.e(this.getClass().getName(), "PCB offline because exception happens: " + e.getMessage());
Log.e(LOG_TAG, "PCB offline because exception happens: " + e.getMessage());
notifyStatus();
}
public iNetServiceDevice getNetServiceDevice() {
return this.device;
iNetServiceDevice device=null;
for (iNetServiceStatus listener: listeners)
if (listener instanceof iNetServiceDevice)
device=(iNetServiceDevice)listener;
return device;
}
/**
* Created by Fernando on 12/08/2016.
*/
public static interface iNetServiceDevice {
public void build();
public void notifyStatus(boolean updated);
public void closeNotifyStatus();
public void restart_app(boolean direct_login);
public void restart_app(Intent intent, boolean direct_login);
public void updateUserConfig(User user);
public static interface iNetServiceStatus {
public void notifyStatus(boolean updated);
}
public static interface iNetServiceDevice extends iNetServiceStatus {
public void build();
public void closeNotifyStatus();
public void restart_app(boolean direct_login);
public void restart_app(Intent intent, boolean direct_login);
public void updateUserConfig(User user);
}
}
......@@ -50,6 +50,7 @@ public class ServerLogin {
PCBcontext.getPcbdb().user_online(true);
PCBcontext.getRestapiWrapper().setToken(result.getString(TAG_TOKEN));
PCBcontext.getVocabulary().synchronize();
PCBcontext.getRoom().connect();
}
listener.result(result);
}catch (JSONException e) {
......
......@@ -35,7 +35,7 @@ public class Room {
public Room( ) {
Log.i(this.getClass().getName(), "Entering room");
listeners=new Hashtable<>();
reconnect();
connect();
}
private JSONObject common_data(String action, JSONObject attributes) throws JSONException {
......@@ -67,7 +67,7 @@ public class Room {
/**
* Reconnect to the room. It is useful if the server connection is lost for a time
*/
public void reconnect() {
public void connect() {
final String transport="polling";
exit();
......
......@@ -17,7 +17,7 @@ public class VocabularyTalk implements Emitter.Listener {
private static final String URL ="vocabulary";
private Room room;
private final String LOG_TAG=this.getClass().getName();
iVocabularyListener listeners[];
public VocabularyTalk(Room room, iVocabularyListener listeners[]) {
......@@ -40,7 +40,7 @@ public class VocabularyTalk implements Emitter.Listener {
JSONObject msg = (JSONObject) args[0];
try {
Log.i(this.getClass().getName(), "raw Received message " +msg.toString());
Log.i(LOG_TAG, "raw Received message " +msg.toString());
String action = msg.getString(param_action).toLowerCase();
JSONObject stu_picto= msg.getJSONObject(param_attributes).getJSONObject(param_stu_picto);
JSONObject attrs_stu_picto = stu_picto.optJSONObject(param_attributes);
......@@ -48,7 +48,7 @@ public class VocabularyTalk implements Emitter.Listener {
int picto_id = picto_stupicto.getInt(param_picto_id);
int picto_cat = attrs_stu_picto!=null ? attrs_stu_picto.optInt(param_picto_cat, Picto.NO_CATEGORY) : 0;
Log.i(this.getClass().getName(), "Received message '" + action +
Log.i(LOG_TAG, "Received message '" + action +
"' for picto " + picto_id + " (cat " + picto_cat + ", picto: " + picto_stupicto);
for (iVocabularyListener listener: this.listeners)
listener.change(action.equals(action_update) ? iVocabularyListener.action.update
......@@ -57,7 +57,7 @@ public class VocabularyTalk implements Emitter.Listener {
, picto_cat, picto_id, stu_picto);
} catch (JSONException e) {
Log.e(this.getClass().getCanonicalName(), e.getClass().getCanonicalName() + "--" + e);
Log.e(LOG_TAG, e.getClass().getCanonicalName() + "--" + e);
}
}
......
......@@ -26,7 +26,7 @@ public final class PCBcontext {
private static Vocabulary vocabulary;
private static ActionLog actionLog;
private static boolean init=false;
private static StudentTalk studentTalk;
/**
......@@ -70,11 +70,11 @@ public final class PCBcontext {
actionLog = new ActionLog();
vocabulary = new Vocabulary(listener);
getNetService().notifyStatus();
if (getNetService().online()) new StudentTalk(room, new StudentTalk.iStudentListener[] {new StudentTalk.iStudentListener() {
studentTalk=new StudentTalk(room, new StudentTalk.iStudentListener[] {new StudentTalk.iStudentListener() {
@Override
public void change(User updatedStudent) {
PCBcontext.getDevice().insertUser(updatedStudent);
if (updatedStudent.is_picto_size_big()!=getPcbdb().getCurrentUser().is_picto_size_big())
if (updatedStudent.is_picto_size_big()!=getPcbdb().getCurrentUser().is_picto_size_big() || updatedStudent.has_categories()!=getPcbdb().getCurrentUser().has_categories())
PCBcontext.getNetService().getNetServiceDevice().restart_app(true);
else {
PCBcontext.getPcbdb().setCurrentUser(updatedStudent);
......@@ -145,6 +145,15 @@ public final class PCBcontext {
return device;
}
public static StudentTalk getStudentTalk() {
if (studentTalk == null) {
throw new java.lang.NullPointerException("studentTalk is null. PCBcontext.init must be" +
"invoked previously");
}
return studentTalk;
}
/**
* @return PCBDB
* @TODO complete documentation
......
......@@ -54,7 +54,7 @@ public class TTSHelper {
Set<Voice> voices = this.ttobj.getVoices();
if (voices!=null)
for (Voice avoice : voices) { Log.i(context.getApplicationInfo().processName,"Voice "+avoice+" available");
for (Voice avoice : voices) { //Log.i(context.getApplicationInfo().processName,"Voice "+avoice+" available");
if (avoice.getName().equalsIgnoreCase(voice)) {
this.ttobj.setVoice(avoice);
this.voice_ok=true;
......
......@@ -66,14 +66,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/assets" type="java-test-resource" />
......@@ -82,6 +74,14 @@
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDevFlavor/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavor/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
......@@ -106,14 +106,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
......@@ -122,7 +114,14 @@
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
......@@ -136,21 +135,11 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/24.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/24.2.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
......
......@@ -1135,7 +1135,7 @@ public class PictogramActivity extends Activity implements VocabularyTalk.iVocab
if (firstTouchX > event.getX()+100) {
if (!PCBcontext.getNetService().online())
GUITools.show_alert(this,R.string.pictogram_offline);
GUITools.show_alert(this,R.string.session_noinet);
else {
Intent sessionActivity = new Intent(this, SessionActivity.class);
sessionActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
......
......@@ -170,7 +170,7 @@ public class SerialActivity extends Activity {
@Override
public void onStart() {
Vector<User> users;
Log.e(this.getClass().getCanonicalName(),"Starting serial activity");
Log.e(this.getClass().getCanonicalName(),"Starting serial activity (direct login:"+getIntent().getBooleanExtra("resetPrevUser", true)+")");
if (!PCBcontext.init()) PCBcontext.init(this, new NetServiceTablet());
String default_user[] = loginUserPolicy();
String username = default_user[0];
......
......@@ -17,6 +17,7 @@ import android.widget.TextView;
import android.widget.ToggleButton;
import com.yottacode.pictogram.dao.User;
import com.yottacode.pictogram.net.NetService;
import com.yottacode.pictogram.tabletlibrary.R;
import com.yottacode.pictogram.tabletlibrary.gui.PictogramActivity;
import com.yottacode.pictogram.tabletlibrary.net.SessionWrapper;
......@@ -36,6 +37,7 @@ public class SessionActivity extends FragmentActivity implements ListInstruction
private int currentInstruction;
private int id_session;
private Hashtable<Integer,Integer> msgs=new Hashtable<>(20);
private NetService.iNetServiceStatus listenerStatus;
float firstTouchX=-1;
......@@ -188,6 +190,23 @@ public class SessionActivity extends FragmentActivity implements ListInstruction
});
}
});
this.listenerStatus = new NetService.iNetServiceStatus() {
boolean updated=true;
@Override
public void notifyStatus(boolean updated) {
if (!updated && this.updated) {
this.updated=false;
// GUITools.show_alert(SessionActivity.this, R.string.session_noinet);
// addLogMsg(getString(R.string.session_noinet));
} else
if (updated && !this.updated) {
this.updated=true;
// GUITools.show_alert(SessionActivity.this, R.string.session_inetok);
// addLogMsg(getString(R.string.session_inetok));
}
}
};
PCBcontext.getNetService().addListener(listenerStatus);
}
@Override
......@@ -344,5 +363,6 @@ public class SessionActivity extends FragmentActivity implements ListInstruction
public void onDestroy() {
super.onDestroy();
SessionActivity.session=null;
PCBcontext.getNetService().removeListener(listenerStatus);
}
}
......@@ -168,7 +168,7 @@ public class SessionWrapper {
}
@Override
public void error(RestapiWrapper.HTTPException e) {
Log.e(this.getClass().getCanonicalName(),"Raw error from server when login:"+e.getMessage()+" (error "+e.getCode()+")");
Log.e(this.getClass().getCanonicalName(),"Raw error from server when getting student info:"+e.getMessage()+" (error "+e.getCode()+")");
listener.error("Internet error: "+e.getMessage());
}
});
......
......@@ -15,6 +15,8 @@
<string name="session_closed_ok">Session upload ok</string>
<string name="session_closed_fail">Session not uploaded. Please, try it from</string>
<string name="session_pause_error">Pause session failed</string>
<string name="session_noinet">No server conexion. Internet conexion is available?</string>
<string name="session_inetok">Server conexion ok</string>
<string name="session_log_startingsession">iniciando sesión</string>
<string name="session_log_startsession">sesión iniciada</string>
<string name="session_log_closingsession">cerrando sesión</string>
......
......@@ -15,6 +15,8 @@
<string name="session_closed_ok">Sesión grabada correctamente. Hora</string>
<string name="session_closed_fail">Sesión no cerrada. Por favor cierre la sesión en el panel de control de Pictogram Tablet</string>
<string name="session_pause_error">Error pausando la sesión</string>
<string name="session_noinet">No hay conexión con el servidor. Por favor, asegúrese que tiene conexión a Internet</string>
<string name="session_inetok">Conexión con el servidor restablecida</string>
<string name="session_log_startingsession">iniciando sesión</string>
<string name="session_log_closingsession">cerrando sesión</string>
<string name="session_log_startsession">sesión iniciada</string>
......
......@@ -17,6 +17,8 @@
<string name="session_closed_ok">Sesión grabada correctamente</string>
<string name="session_closed_fail">Sesión no cerrada. Por favor intente cerrarla desde</string>
<string name="session_pause_error">Error pausando la sesión</string>
<string name="session_noinet">No hay conexión con el servidor. Por favor, asegúrese que tiene conexión a Internet</string>
<string name="session_inetok">Conexión con el servidor restablecida</string>
<string name="session_log_startingsession">iniciando sesión</string>
<string name="session_log_closingsession">cerrando sesión</string>
<string name="session_log_startsession">sesión iniciada</string>
......
......@@ -73,14 +73,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
......@@ -89,6 +81,14 @@
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
......
......@@ -43,6 +43,13 @@
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavorDebug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/DevFlavor/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/DevFlavor/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/DevFlavor/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/DevFlavor/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/DevFlavor/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/DevFlavor/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/DevFlavor/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/assets" type="java-test-resource" />
......@@ -51,13 +58,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDevFlavorDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/DevFlavor/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/DevFlavor/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/DevFlavor/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/DevFlavor/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/DevFlavor/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/DevFlavor/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/DevFlavor/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/DevFlavor/assets" type="java-resource" />
......
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 sign in to comment