Added state saving

This commit is contained in:
Ziver Koc 2014-08-04 15:36:45 +02:00
parent e020204ce5
commit 580f4fdc3d
7 changed files with 56 additions and 12 deletions

Binary file not shown.

View file

@ -8,8 +8,8 @@ android {
applicationId "com.ericsson.uecontrol"
minSdkVersion 15
targetSdkVersion 19
versionCode 7
versionName "1.0.7"
versionCode 8
versionName "1.0.8"
}
buildTypes {
release {

View file

@ -2,12 +2,14 @@ package com.ericsson.uecontrol.core;
import org.apache.log4j.Logger;
import java.io.Serializable;
/**
* Base class for Ue behaviours that can be used by the executor
*
* Created by ezivkoc on 2014-07-15.
*/
public abstract class UeBehaviour {
public abstract class UeBehaviour implements Serializable{
private static final Logger log = Logger.getLogger(UeBehaviour.class);
private transient boolean running;

View file

@ -4,6 +4,13 @@ import com.ericsson.uecontrol.core.util.ThroughputCalculator;
import org.apache.log4j.Logger;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
@ -34,11 +41,21 @@ public class UeControlExecutor implements Runnable, UeBehaviour.DataHandledListe
b.setDataHandledListener(this);
}
public void read(String file){
public void read(String file) throws Exception {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
int size = in.readInt();
for(int i=0; i<size; i++){
behaviours.add( (UeBehaviour)in.readObject() );
}
in.close();
}
public void save(String file){
public void save(String file) throws IOException {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream(file));
out.writeInt(behaviours.size());
for(UeBehaviour behaviour : behaviours){
out.writeObject(behaviour);
}
out.close();
}

View file

@ -19,6 +19,7 @@ import com.ericsson.uecontrol.gui.util.DynamicListView;
import org.apache.log4j.Logger;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@ -89,4 +90,14 @@ public class EditActivity extends ListActivity implements AdapterView.OnItemClic
dialog.setConfigurator(confer);
dialog.show(getFragmentManager(), "behaviour_configurator");
}
@Override
protected void onPause() {
try {
File input = new File(this.getFilesDir(), MainActivity.BEHAVIOUR_SAVE_FILE);
executor.save(input.getAbsolutePath());
log.debug("Saved current state");
}catch(Exception e){log.error(null, e);}
super.onPause();
}
}

View file

@ -32,6 +32,8 @@ import de.mindpipe.android.logging.log4j.LogConfigurator;
public class MainActivity extends FragmentActivity implements OnSharedPreferenceChangeListener{
private static final Logger log = Logger.getLogger(MainActivity.class);
public static final String DEFAULT_LOG_PATH = "/sdcard/uecontrol/";
public static final String BEHAVIOUR_SAVE_FILE = "behaviour_list.dat";
/** Fragments **/
private StatusFragment statusFragment;
@ -57,12 +59,23 @@ public class MainActivity extends FragmentActivity implements OnSharedPreference
currentExecutor = new UeControlExecutor();
currentExecutor.addBehaviour(new UeBehaviourSleep());
currentExecutor.addBehaviour(new UeBehaviourSurfing());
currentExecutor.addBehaviour(new UeBehaviourSleep(4000));
currentExecutor.setThroughputListener(statusFragment.getThroughputListener());
File input = new File(this.getFilesDir(), BEHAVIOUR_SAVE_FILE);
if(input.exists()) {
try {
log.debug("Reading saved state");
currentExecutor.read(input.getAbsolutePath());
}catch(Exception e){log.error(null, e);}
}
else{
log.debug("No saved state found, creating default behaviours");
currentExecutor.addBehaviour(new UeBehaviourSleep());
currentExecutor.addBehaviour(new UeBehaviourSurfing());
currentExecutor.addBehaviour(new UeBehaviourSleep(4000));
}
}
public void setupDebugLogging(){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String path = prefs.getString("logging_path", DEFAULT_LOG_PATH);
@ -133,12 +146,12 @@ public class MainActivity extends FragmentActivity implements OnSharedPreference
}
return true;
}
if (id == R.id.action_edit) {
else if (id == R.id.action_edit) {
Intent intent = new Intent(this, EditActivity.class);
startActivity(intent);
return true;
}
if (id == R.id.action_settings) {
else if (id == R.id.action_settings) {
startActivity(new Intent(this, SettingsActivity.class));
return true;
}

View file

@ -80,6 +80,7 @@ public class StatusFragment extends Fragment {
down_speed.setText(ThroughputCalculator.getBitThroughputString(downThroughput));
up_speed.setText(ThroughputCalculator.getBitThroughputString(upThroughput));
rat_type.setText(CSVWriter.getRat(getActivity()));
downGraph.appendData(new GraphViewData(x, downThroughput), true, 120);
upGraph.appendData(new GraphViewData(x, upThroughput), true, 120);
x++;