Changed save and read behaviour to json instead of Java serializer.
This commit is contained in:
parent
1c985b8c2d
commit
8e582b7995
6 changed files with 69 additions and 7 deletions
9
.idea/libraries/gson_2_3.xml
generated
Executable file
9
.idea/libraries/gson_2_3.xml
generated
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
<component name="libraryTable">
|
||||
<library name="gson-2.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/app/libs/gson-2.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
|
|
@ -59,7 +59,7 @@
|
|||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Android API 19 Platform" jdkType="Android SDK" />
|
||||
<orderEntry type="jdk" jdkName="Android API 15 Platform" jdkType="Android SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" exported="" name="dom4j-1.6.1" level="project" />
|
||||
<orderEntry type="library" exported="" name="GraphView-3.1.2" level="project" />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 19
|
||||
compileSdkVersion 15
|
||||
buildToolsVersion '19.1.0'
|
||||
|
||||
defaultConfig {
|
||||
|
|
|
|||
|
|
@ -2,8 +2,12 @@ package com.ericsson.uecontrol.core;
|
|||
|
||||
import android.net.TrafficStats;
|
||||
|
||||
import com.ericsson.uecontrol.core.util.AbstractElementAdapter;
|
||||
import com.ericsson.uecontrol.core.util.ThroughputCalculator;
|
||||
import com.ericsson.uecontrol.gui.MainActivity;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
|
|
@ -36,12 +40,17 @@ public class UeControlExecutor implements Runnable, UeBehaviour.DataHandledListe
|
|||
private ThroughputCalculator downloadSpeed;
|
||||
private ThroughputCalculator uploadSpeed;
|
||||
private ThroughputListener throughputListener;
|
||||
private Gson gson;
|
||||
|
||||
|
||||
public UeControlExecutor(){
|
||||
behaviours = new ArrayList<UeBehaviour>();
|
||||
downloadSpeed = new ThroughputCalculator();
|
||||
uploadSpeed = new ThroughputCalculator();
|
||||
|
||||
gson = new GsonBuilder()
|
||||
.registerTypeAdapter(UeBehaviour.class, new AbstractElementAdapter<UeBehaviour>())
|
||||
.create();
|
||||
}
|
||||
|
||||
public void addBehaviour(UeBehaviour b){
|
||||
|
|
@ -50,20 +59,32 @@ public class UeControlExecutor implements Runnable, UeBehaviour.DataHandledListe
|
|||
}
|
||||
|
||||
public void read(String file) throws Exception {
|
||||
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
|
||||
FileReader in = new FileReader(file);
|
||||
Type type = new TypeToken<ArrayList<UeBehaviour>>(){}.getType();
|
||||
ArrayList<UeBehaviour> newBehaviours = gson.fromJson(in, type);
|
||||
behaviours.addAll(newBehaviours);
|
||||
in.close();
|
||||
|
||||
/*ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
|
||||
int size = in.readInt();
|
||||
for(int i=0; i<size; i++){
|
||||
addBehaviour((UeBehaviour) in.readObject());
|
||||
}
|
||||
in.close();
|
||||
in.close();*/
|
||||
}
|
||||
public void save(String file) throws IOException {
|
||||
ObjectOutput out = new ObjectOutputStream(new FileOutputStream(file));
|
||||
FileWriter out = new FileWriter(file);
|
||||
Type type = new TypeToken<ArrayList<UeBehaviour>>(){}.getType();
|
||||
log.debug("Saving behaviours: "+gson.toJson(behaviours, type));
|
||||
gson.toJson(behaviours, type, out);
|
||||
out.close();
|
||||
|
||||
/*ObjectOutput out = new ObjectOutputStream(new FileOutputStream(file));
|
||||
out.writeInt(behaviours.size());
|
||||
for(UeBehaviour behaviour : behaviours){
|
||||
out.writeObject(behaviour);
|
||||
}
|
||||
out.close();
|
||||
out.close();*/
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
package com.ericsson.uecontrol.core.util;
|
||||
|
||||
import com.google.gson.*;
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
public class AbstractElementAdapter<T> implements JsonSerializer<T>, JsonDeserializer<T> {
|
||||
private static final String CLASS_FIELD = "@class";
|
||||
private static final String PROPERTIES_FIELD = "@properties";
|
||||
|
||||
@Override
|
||||
public JsonElement serialize(T src, Type typeOfSrc, JsonSerializationContext context) {
|
||||
JsonObject result = new JsonObject();
|
||||
result.add(CLASS_FIELD, new JsonPrimitive(src.getClass().getName()));
|
||||
result.add(PROPERTIES_FIELD, context.serialize(src, src.getClass()));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
|
||||
throws JsonParseException {
|
||||
JsonObject jsonObject = json.getAsJsonObject();
|
||||
String type = jsonObject.get(CLASS_FIELD).getAsString();
|
||||
JsonElement element = jsonObject.get(PROPERTIES_FIELD);
|
||||
|
||||
try {
|
||||
return context.deserialize(element, Class.forName(type));
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new JsonParseException("Unknown class: " + type, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ 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";
|
||||
public static final String BEHAVIOUR_SAVE_FILE = "behaviour_list.json";
|
||||
|
||||
|
||||
/** Fragments **/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue