Skip to content
Snippets Groups Projects
Commit 498a131c authored by Xavier Gibert's avatar Xavier Gibert
Browse files

loading serialized missions but buggy

parent 021b8f81
No related branches found
No related tags found
No related merge requests found
...@@ -126,6 +126,8 @@ ...@@ -126,6 +126,8 @@
<string name="sim_local_mission_not_removable">This mission cannot be deleted</string> <string name="sim_local_mission_not_removable">This mission cannot be deleted</string>
<string name="sim_local_select_first_a_mission">Select a mission first</string> <string name="sim_local_select_first_a_mission">Select a mission first</string>
<string name="sim_local_simulator_connected">Simulator connected!</string> <string name="sim_local_simulator_connected">Simulator connected!</string>
<string name="sim_local_cannot_deserialize_selected_mission">Error, cannot deserialize selected mission</string>
<string name="sim_local_cannot_find_selected_mission_in_db">Error, cannot find selected mission in database</string>
<string name="sim_orekit_init_error">Simulator initialization error</string> <string name="sim_orekit_init_error">Simulator initialization error</string>
<string name="sim_orekit_prop_error">Simulator propagation error</string> <string name="sim_orekit_prop_error">Simulator propagation error</string>
<string name="sim_remote_simulator_connected">Remote simulator connected!</string> <string name="sim_remote_simulator_connected">Remote simulator connected!</string>
......
...@@ -14,14 +14,14 @@ public final class MissionReaderContract { ...@@ -14,14 +14,14 @@ public final class MissionReaderContract {
} }
private static final String TEXT_TYPE = " TEXT"; private static final String TEXT_TYPE = " TEXT";
//private static final String SERIALIZED_TYPE = " BLOB"; private static final String SERIALIZED_TYPE = " BLOB";
private static final String COMMA_SEP = ","; private static final String COMMA_SEP = ",";
static final String SQL_CREATE_ENTRIES = static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + MissionEntry.TABLE_NAME + " (" + "CREATE TABLE " + MissionEntry.TABLE_NAME + " (" +
MissionEntry._ID + " INTEGER PRIMARY KEY," + MissionEntry._ID + " INTEGER PRIMARY KEY," +
MissionEntry.COLUMN_NAME_NAME + TEXT_TYPE + COMMA_SEP + MissionEntry.COLUMN_NAME_NAME + TEXT_TYPE + COMMA_SEP +
MissionEntry.COLUMN_NAME_DESCRIPTION + TEXT_TYPE + COMMA_SEP + MissionEntry.COLUMN_NAME_DESCRIPTION + TEXT_TYPE + COMMA_SEP +
MissionEntry.COLUMN_NAME_CLASS + TEXT_TYPE + MissionEntry.COLUMN_NAME_CLASS + SERIALIZED_TYPE +
" )"; " )";
static final String SQL_DELETE_ENTRIES = static final String SQL_DELETE_ENTRIES =
......
...@@ -18,11 +18,10 @@ import org.orekit.propagation.SpacecraftState; ...@@ -18,11 +18,10 @@ import org.orekit.propagation.SpacecraftState;
public class SerializationUtil { public class SerializationUtil {
// deserialize to Object from given file // deserialize to Object from given file
public static Mission deserialize(String serialized) throws IOException, public static Mission deserialize(byte[] serialized) {
ClassNotFoundException {
try { try {
byte b[] = serialized.getBytes(); //byte b[] = serialized.getBytes();
ByteArrayInputStream bi = new ByteArrayInputStream(b); ByteArrayInputStream bi = new ByteArrayInputStream(serialized);
ObjectInputStream si = new ObjectInputStream(bi); ObjectInputStream si = new ObjectInputStream(bi);
Mission obj = (Mission) si.readObject(); Mission obj = (Mission) si.readObject();
si.close(); si.close();
...@@ -34,15 +33,16 @@ public class SerializationUtil { ...@@ -34,15 +33,16 @@ public class SerializationUtil {
} }
// serialize the given object and save it to file // serialize the given object and save it to file
public static String serialize(Object obj)//str.getBytes("UTF-8") public static byte[] serialize(Object obj)//str.getBytes("UTF-8")
throws IOException { throws IOException {
ByteArrayOutputStream fos = new ByteArrayOutputStream(); ByteArrayOutputStream fos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(fos); ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(obj); oos.writeObject(obj);
oos.flush(); oos.flush();
String tmp = fos.toString(); //String tmp = fos.toString();
byte[] ba = fos.toByteArray();
fos.close(); fos.close();
return tmp; return ba;
} }
} }
\ No newline at end of file
...@@ -3,12 +3,14 @@ package fragments; ...@@ -3,12 +3,14 @@ package fragments;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import mission.Mission;
import simulator.Simulator; import simulator.Simulator;
import simulator.SimulatorStatus; import simulator.SimulatorStatus;
import cs.si.satatt.MainActivity; import cs.si.satatt.MainActivity;
import cs.si.satatt.R; import cs.si.satatt.R;
import database.MissionReaderDbHelper; import database.MissionReaderDbHelper;
import database.MissionReaderContract.MissionEntry; import database.MissionReaderContract.MissionEntry;
import database.SerializationUtil;
import dialogs.DeleteMissionDialogFragment; import dialogs.DeleteMissionDialogFragment;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
...@@ -162,12 +164,42 @@ public final class SimulatorFragment extends Fragment implements LoaderCallbacks ...@@ -162,12 +164,42 @@ public final class SimulatorFragment extends Fragment implements LoaderCallbacks
R.string.pref_key_sim_remote_port), R.string.pref_key_sim_remote_port),
port_view.getText().toString() port_view.getText().toString()
).commit(); ).commit();
simulator.connect();
}else{ }else{
//Set mission //Set mission
String[] projection = {
MissionEntry._ID,
MissionEntry.COLUMN_NAME_CLASS
};
//XGGDEBUG: put db in activity to not load it always.
Cursor c = ((MainActivity)getActivity()).db_help.getWritableDatabase()
.query(
MissionEntry.TABLE_NAME, // The table to query
projection, // The columns to return
MissionEntry._ID+" = ?", // The columns for the WHERE clause
new String[]{Integer.toString(activeMissionId)}, // The values for the WHERE clause
"", // don't group the rows
"", // don't filter by row groups
null // The sort order
);
if (c != null && c.getCount() > 0) {
c.moveToFirst();
int idIndex = c.getColumnIndex(MissionEntry._ID);
int nameIndex = c.getColumnIndex(MissionEntry.COLUMN_NAME_CLASS);
//this.itemId = cursor.getLong(idIndex);
byte[] mission_serie = c.getBlob(nameIndex);
Mission mis = SerializationUtil.deserialize(mission_serie);
if(mis!=null){
simulator.setSelectedMission(mis);
simulator.connect();
}else{
Toast.makeText(getActivity().getApplicationContext(), getString(R.string.sim_local_cannot_deserialize_selected_mission), Toast.LENGTH_LONG).show();
}
}else{
Toast.makeText(getActivity().getApplicationContext(), getString(R.string.sim_local_cannot_find_selected_mission_in_db), Toast.LENGTH_LONG).show();
}
} }
//Log.d("Sim",System.currentTimeMillis()+": "+"button connect pressed");
simulator.connect();
//Log.d("Sim",System.currentTimeMillis()+": "+"button connect onlick ends");
} }
} }
}); });
......
package mission; package mission;
import java.io.Serializable;
import mission.Orbit; import mission.Orbit;
import org.orekit.time.AbsoluteDate; import org.orekit.time.AbsoluteDate;
public class Mission { public class Mission implements Serializable{
public String name = "CustomMission"; public String name = "CustomMission";
public String description = "Mission description"; public String description = "Mission description";
//public String initial_stage = "First Stage"; //public String initial_stage = "First Stage";
......
package mission; package mission;
import java.io.Serializable;
/** /**
* Contains all the values of a Mission. * Contains all the values of a Mission.
* @author XavierGibert * @author XavierGibert
* *
*/ */
public class Orbit { public class Orbit implements Serializable{
public double mu = 3.986004415e+14; public double mu = 3.986004415e+14;
/** /**
* Semi major axis in meters * Semi major axis in meters
......
...@@ -27,6 +27,11 @@ public class Simulator { ...@@ -27,6 +27,11 @@ public class Simulator {
private ModelSimulation simulation; private ModelSimulation simulation;
private Button buttonConnect; private Button buttonConnect;
private Switch switchSelector; private Switch switchSelector;
private Mission mission;
public void setSelectedMission(Mission mis){
mission = mis;
}
public void setButtonConnect(Button bt){ public void setButtonConnect(Button bt){
buttonConnect=bt; buttonConnect=bt;
...@@ -169,7 +174,7 @@ public class Simulator { ...@@ -169,7 +174,7 @@ public class Simulator {
simulation = new ModelSimulation((MainActivity)activity); simulation = new ModelSimulation((MainActivity)activity);
setProgress(40 * 100); setProgress(40 * 100);
simulation.preInitialize(); simulation.preInitialize();
sthread = (SimulatorThread) new SimulatorThread(this, new Mission()).execute(simulation); sthread = (SimulatorThread) new SimulatorThread(this, mission).execute(simulation);
//TODO new mission implement selector of mission //TODO new mission implement selector of mission
} }
//Log.d("Sim",System.currentTimeMillis()+": "+"simulator interior thread connected"); //Log.d("Sim",System.currentTimeMillis()+": "+"simulator interior thread connected");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment