motor updates
This commit is contained in:
parent
7eca17a372
commit
bd8e82c1d2
@ -7,59 +7,60 @@ import net.sf.openrocket.motor.ThrustCurveMotor;
|
|||||||
import net.sf.openrocket.util.Coordinate;
|
import net.sf.openrocket.util.Coordinate;
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.database.SQLException;
|
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
public class MotorDao {
|
public class MotorDao {
|
||||||
|
|
||||||
private static final String TAG = "MotorDao";
|
private static final String TAG = "MotorDao";
|
||||||
|
|
||||||
private SQLiteDatabase mDb;
|
private SQLiteDatabase mDb;
|
||||||
|
|
||||||
private final static String DATABASE_TABLE = "motor";
|
private final static String DATABASE_TABLE = "motor";
|
||||||
private final static String DROP_TABLE = "DROP TABLE IF EXISTS " + DATABASE_TABLE;
|
private final static String DROP_TABLE = "DROP TABLE IF EXISTS " + DATABASE_TABLE;
|
||||||
private final static String CREATE_TABLE =
|
private final static String CREATE_TABLE =
|
||||||
"create table "+ DATABASE_TABLE + " ( " +
|
"create table " + DATABASE_TABLE + " ( " +
|
||||||
"_id integer primary key, "+
|
"_id integer primary key, " +
|
||||||
"unique_name text unique, "+
|
"unique_name text unique, " +
|
||||||
"digest string, " +
|
"digest string, " +
|
||||||
"designation text, "+
|
"designation text, " +
|
||||||
"delays text, "+
|
"delays text, " +
|
||||||
"diameter number, "+
|
"diameter number, " +
|
||||||
"tot_impulse_ns number, "+
|
"tot_impulse_ns number, " +
|
||||||
"avg_thrust_n number, "+
|
"avg_thrust_n number, " +
|
||||||
"max_thrust_n number, "+
|
"max_thrust_n number, " +
|
||||||
"burn_time_s number, "+
|
"burn_time_s number, " +
|
||||||
"length number," +
|
"length number," +
|
||||||
"prop_mass_g number,"+
|
"prop_mass_g number," +
|
||||||
"tot_mass_g number,"+
|
"tot_mass_g number," +
|
||||||
"case_info text,"+
|
"case_info text," +
|
||||||
"manufacturer text," +
|
"manufacturer text," +
|
||||||
"type text," +
|
"type text," +
|
||||||
"impulse_class text," +
|
"impulse_class text," +
|
||||||
"thrust_data blob,"+
|
"thrust_data blob," +
|
||||||
"time_data blob," +
|
"time_data blob," +
|
||||||
"cg_data blob"+
|
"cg_data blob" +
|
||||||
");";
|
");";
|
||||||
|
|
||||||
MotorDao( SQLiteDatabase mDb ) {
|
MotorDao(SQLiteDatabase mDb) {
|
||||||
this.mDb = mDb;
|
this.mDb = mDb;
|
||||||
}
|
}
|
||||||
|
|
||||||
static String[] create() { return new String[] {CREATE_TABLE}; }
|
static String[] create() {
|
||||||
|
return new String[] { CREATE_TABLE };
|
||||||
static String[] update( int oldVer, int newVer ) {
|
}
|
||||||
|
|
||||||
|
static String[] update(int oldVer, int newVer) {
|
||||||
return new String[] { DROP_TABLE, CREATE_TABLE };
|
return new String[] { DROP_TABLE, CREATE_TABLE };
|
||||||
}
|
}
|
||||||
|
|
||||||
public final static String ID = "_id";
|
public final static String ID = "_id";
|
||||||
public final static String UNIQUE_NAME = "unique_name";
|
public final static String UNIQUE_NAME = "unique_name";
|
||||||
public final static String DIGEST = "digest";
|
public final static String DIGEST = "digest";
|
||||||
public final static String DESIGNATION = "designation";
|
public final static String DESIGNATION = "designation";
|
||||||
public final static String DELAYS = "delays";
|
public final static String DELAYS = "delays";
|
||||||
public final static String DIAMETER = "diameter";
|
public final static String DIAMETER = "diameter";
|
||||||
public final static String TOTAL_IMPULSE = "tot_impulse_ns";
|
public final static String TOTAL_IMPULSE = "tot_impulse_ns";
|
||||||
public final static String AVG_THRUST = "avg_thrust_n";
|
public final static String AVG_THRUST = "avg_thrust_n";
|
||||||
public final static String MAX_THRUST = "max_thrust_n";
|
public final static String MAX_THRUST = "max_thrust_n";
|
||||||
public final static String BURN_TIME = "burn_time_s";
|
public final static String BURN_TIME = "burn_time_s";
|
||||||
@ -71,54 +72,54 @@ public class MotorDao {
|
|||||||
public final static String THRUST_DATA = "thrust_data";
|
public final static String THRUST_DATA = "thrust_data";
|
||||||
public final static String TIME_DATA = "time_data";
|
public final static String TIME_DATA = "time_data";
|
||||||
public final static String CG_DATA = "cg_data";
|
public final static String CG_DATA = "cg_data";
|
||||||
|
|
||||||
private final static String[] ALL_COLS = new String[] {
|
private final static String[] ALL_COLS = new String[] {
|
||||||
ID,
|
ID,
|
||||||
DIGEST,
|
DIGEST,
|
||||||
DESIGNATION ,
|
DESIGNATION,
|
||||||
DELAYS ,
|
DELAYS,
|
||||||
DIAMETER ,
|
DIAMETER,
|
||||||
TOTAL_IMPULSE ,
|
TOTAL_IMPULSE,
|
||||||
AVG_THRUST ,
|
AVG_THRUST,
|
||||||
MAX_THRUST ,
|
MAX_THRUST,
|
||||||
BURN_TIME ,
|
BURN_TIME,
|
||||||
LENGTH,
|
LENGTH,
|
||||||
CASE_INFO,
|
CASE_INFO,
|
||||||
TYPE,
|
TYPE,
|
||||||
IMPULSE_CLASS,
|
IMPULSE_CLASS,
|
||||||
MANUFACTURER,
|
MANUFACTURER,
|
||||||
THRUST_DATA,
|
THRUST_DATA,
|
||||||
TIME_DATA,
|
TIME_DATA,
|
||||||
CG_DATA
|
CG_DATA
|
||||||
};
|
};
|
||||||
|
|
||||||
public long insertOrUpdateMotor(ExtendedThrustCurveMotor mi) throws Exception {
|
public long insertOrUpdateMotor(ExtendedThrustCurveMotor mi) throws Exception {
|
||||||
ContentValues initialValues = new ContentValues();
|
ContentValues initialValues = new ContentValues();
|
||||||
final ThrustCurveMotor tcm = mi.getThrustCurveMotor();
|
final ThrustCurveMotor tcm = mi.getThrustCurveMotor();
|
||||||
initialValues.put(ID, mi.getId());
|
initialValues.put(ID, mi.getId());
|
||||||
initialValues.put(UNIQUE_NAME, tcm.getManufacturer()+tcm.getDesignation());
|
initialValues.put(UNIQUE_NAME, tcm.getManufacturer() + tcm.getDesignation());
|
||||||
initialValues.put(DIGEST, tcm.getDigest());
|
initialValues.put(DIGEST, tcm.getDigest());
|
||||||
initialValues.put(DESIGNATION, tcm.getDesignation());
|
initialValues.put(DESIGNATION, tcm.getDesignation());
|
||||||
initialValues.put(DELAYS, ConversionUtils.delaysToString(tcm.getStandardDelays()));
|
initialValues.put(DELAYS, ConversionUtils.delaysToString(tcm.getStandardDelays()));
|
||||||
initialValues.put(DIAMETER,tcm.getDiameter());
|
initialValues.put(DIAMETER, tcm.getDiameter());
|
||||||
initialValues.put(TOTAL_IMPULSE,tcm.getTotalImpulseEstimate());
|
initialValues.put(TOTAL_IMPULSE, tcm.getTotalImpulseEstimate());
|
||||||
initialValues.put(AVG_THRUST,tcm.getAverageThrustEstimate());
|
initialValues.put(AVG_THRUST, tcm.getAverageThrustEstimate());
|
||||||
initialValues.put(MAX_THRUST,tcm.getMaxThrustEstimate());
|
initialValues.put(MAX_THRUST, tcm.getMaxThrustEstimate());
|
||||||
initialValues.put(BURN_TIME,tcm.getBurnTimeEstimate());
|
initialValues.put(BURN_TIME, tcm.getBurnTimeEstimate());
|
||||||
initialValues.put(LENGTH, tcm.getLength());
|
initialValues.put(LENGTH, tcm.getLength());
|
||||||
initialValues.put(CASE_INFO, mi.getCaseInfo());
|
initialValues.put(CASE_INFO, mi.getCaseInfo());
|
||||||
initialValues.put(TYPE, tcm.getMotorType().getName());
|
initialValues.put(TYPE, tcm.getMotorType().name());
|
||||||
initialValues.put(IMPULSE_CLASS,mi.getImpulseClass());
|
initialValues.put(IMPULSE_CLASS, mi.getImpulseClass());
|
||||||
initialValues.put(MANUFACTURER,tcm.getManufacturer().getSimpleName());
|
initialValues.put(MANUFACTURER, tcm.getManufacturer().getSimpleName());
|
||||||
initialValues.put(THRUST_DATA, ConversionUtils.serializeArrayOfDouble(tcm.getThrustPoints()));
|
initialValues.put(THRUST_DATA, ConversionUtils.serializeArrayOfDouble(tcm.getThrustPoints()));
|
||||||
initialValues.put(TIME_DATA,ConversionUtils.serializeArrayOfDouble(tcm.getTimePoints()));
|
initialValues.put(TIME_DATA, ConversionUtils.serializeArrayOfDouble(tcm.getTimePoints()));
|
||||||
initialValues.put(CG_DATA,ConversionUtils.serializeArrayOfCoordinate(tcm.getCGPoints()));
|
initialValues.put(CG_DATA, ConversionUtils.serializeArrayOfCoordinate(tcm.getCGPoints()));
|
||||||
|
|
||||||
Log.d(TAG,"insertOrUpdate Motor");
|
Log.d(TAG, "insertOrUpdate Motor");
|
||||||
long rv = mDb.insertWithOnConflict(DATABASE_TABLE, null, initialValues,SQLiteDatabase.CONFLICT_REPLACE);
|
long rv = mDb.insertWithOnConflict(DATABASE_TABLE, null, initialValues, SQLiteDatabase.CONFLICT_REPLACE);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete the motor and burn data with the given rowId
|
* Delete the motor and burn data with the given rowId
|
||||||
*
|
*
|
||||||
@ -126,70 +127,70 @@ public class MotorDao {
|
|||||||
* @return true if deleted, false otherwise
|
* @return true if deleted, false otherwise
|
||||||
*/
|
*/
|
||||||
public boolean deleteMotor(Long id) {
|
public boolean deleteMotor(Long id) {
|
||||||
|
|
||||||
boolean rv = mDb.delete(DATABASE_TABLE, ID + "=" + id, null) > 0;
|
boolean rv = mDb.delete(DATABASE_TABLE, ID + "=" + id, null) > 0;
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param groupCol
|
* @param groupCol
|
||||||
* @param groupVal
|
* @param groupVal
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public Cursor fetchAllInGroups( String groupCol, String groupVal ) {
|
public Cursor fetchAllInGroups(String groupCol, String groupVal) {
|
||||||
return mDb.query(DATABASE_TABLE,
|
return mDb.query(DATABASE_TABLE,
|
||||||
/* columns */ ALL_COLS,
|
/* columns */ALL_COLS,
|
||||||
/* selection */groupCol + "=?",
|
/* selection */groupCol + "=?",
|
||||||
/* selection args*/new String[] {groupVal},
|
/* selection args*/new String[] { groupVal },
|
||||||
/* groupby */null,
|
/* groupby */null,
|
||||||
/* having*/null,
|
/* having*/null,
|
||||||
/* orderby*/ DESIGNATION );
|
/* orderby*/DESIGNATION);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch the groups based on groupCol
|
* Fetch the groups based on groupCol
|
||||||
* @param groupCol
|
* @param groupCol
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public Cursor fetchGroups( String groupCol ) {
|
public Cursor fetchGroups(String groupCol) {
|
||||||
return mDb.query(true, DATABASE_TABLE,
|
return mDb.query(true, DATABASE_TABLE,
|
||||||
/* columns */new String[] {
|
/* columns */new String[] {
|
||||||
groupCol
|
groupCol
|
||||||
},
|
},
|
||||||
/* selection */null,
|
/* selection */null,
|
||||||
/* selection args*/null,
|
/* selection args*/null,
|
||||||
/* groupby */null,
|
/* groupby */null,
|
||||||
/* having*/null,
|
/* having*/null,
|
||||||
/* orderby*/null,
|
/* orderby*/null,
|
||||||
/* limit*/ null);
|
/* limit*/null);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a Cursor over the list of all motors
|
* Return a Cursor over the list of all motors
|
||||||
*
|
*
|
||||||
* @return Cursor over all notes
|
* @return Cursor over all notes
|
||||||
*/
|
*/
|
||||||
public Cursor fetchAllMotors() {
|
public Cursor fetchAllMotors() {
|
||||||
|
|
||||||
return mDb.query(DATABASE_TABLE,
|
return mDb.query(DATABASE_TABLE,
|
||||||
/* columns */ ALL_COLS,
|
/* columns */ALL_COLS,
|
||||||
/* selection */null,
|
/* selection */null,
|
||||||
/* selection args*/null,
|
/* selection args*/null,
|
||||||
/* groupby */null,
|
/* groupby */null,
|
||||||
/* having*/null,
|
/* having*/null,
|
||||||
/* orderby*/null);
|
/* orderby*/null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ExtendedThrustCurveMotor hydrateMotor( Cursor mCursor ) throws Exception {
|
private ExtendedThrustCurveMotor hydrateMotor(Cursor mCursor) throws Exception {
|
||||||
ExtendedThrustCurveMotor mi = new ExtendedThrustCurveMotor();
|
ExtendedThrustCurveMotor mi = new ExtendedThrustCurveMotor();
|
||||||
|
|
||||||
mi.setId(mCursor.getLong(mCursor.getColumnIndex(ID)));
|
mi.setId(mCursor.getLong(mCursor.getColumnIndex(ID)));
|
||||||
mi.setCaseInfo(mCursor.getString(mCursor.getColumnIndex(CASE_INFO)));
|
mi.setCaseInfo(mCursor.getString(mCursor.getColumnIndex(CASE_INFO)));
|
||||||
mi.setImpulseClass(mCursor.getString(mCursor.getColumnIndex(IMPULSE_CLASS)));
|
mi.setImpulseClass(mCursor.getString(mCursor.getColumnIndex(IMPULSE_CLASS)));
|
||||||
|
|
||||||
{
|
{
|
||||||
String digest = mCursor.getString(mCursor.getColumnIndex(DIGEST));
|
String digest = mCursor.getString(mCursor.getColumnIndex(DIGEST));
|
||||||
String designation = mCursor.getString(mCursor.getColumnIndex(DESIGNATION));
|
String designation = mCursor.getString(mCursor.getColumnIndex(DESIGNATION));
|
||||||
@ -200,12 +201,17 @@ public class MotorDao {
|
|||||||
double avgImpulse = mCursor.getDouble(mCursor.getColumnIndex(AVG_THRUST));
|
double avgImpulse = mCursor.getDouble(mCursor.getColumnIndex(AVG_THRUST));
|
||||||
double maxThrust = mCursor.getDouble(mCursor.getColumnIndex(MAX_THRUST));
|
double maxThrust = mCursor.getDouble(mCursor.getColumnIndex(MAX_THRUST));
|
||||||
double length = mCursor.getDouble(mCursor.getColumnIndex(LENGTH));
|
double length = mCursor.getDouble(mCursor.getColumnIndex(LENGTH));
|
||||||
Motor.Type type = Motor.Type.fromName( mCursor.getString(mCursor.getColumnIndex(TYPE)));
|
Motor.Type type;
|
||||||
Manufacturer manufacturer = Manufacturer.getManufacturer( mCursor.getString( mCursor.getColumnIndex(MANUFACTURER)));
|
try {
|
||||||
double[] thrustData = ConversionUtils.deserializeArrayOfDouble( mCursor.getBlob(mCursor.getColumnIndex(THRUST_DATA)));
|
type = Enum.valueOf(Motor.Type.class, mCursor.getString(mCursor.getColumnIndex(TYPE)));
|
||||||
double[] timeData = ConversionUtils.deserializeArrayOfDouble( mCursor.getBlob(mCursor.getColumnIndex(TIME_DATA)));
|
} catch (IllegalArgumentException e) {
|
||||||
Coordinate[] cgData = ConversionUtils.deserializeArrayOfCoordinate( mCursor.getBlob(mCursor.getColumnIndex(CG_DATA)));
|
type = Motor.Type.UNKNOWN;
|
||||||
|
}
|
||||||
|
Manufacturer manufacturer = Manufacturer.getManufacturer(mCursor.getString(mCursor.getColumnIndex(MANUFACTURER)));
|
||||||
|
double[] thrustData = ConversionUtils.deserializeArrayOfDouble(mCursor.getBlob(mCursor.getColumnIndex(THRUST_DATA)));
|
||||||
|
double[] timeData = ConversionUtils.deserializeArrayOfDouble(mCursor.getBlob(mCursor.getColumnIndex(TIME_DATA)));
|
||||||
|
Coordinate[] cgData = ConversionUtils.deserializeArrayOfCoordinate(mCursor.getBlob(mCursor.getColumnIndex(CG_DATA)));
|
||||||
|
|
||||||
ThrustCurveMotor tcm = new ThrustCurveMotor(manufacturer,
|
ThrustCurveMotor tcm = new ThrustCurveMotor(manufacturer,
|
||||||
designation,
|
designation,
|
||||||
"",
|
"",
|
||||||
@ -221,18 +227,18 @@ public class MotorDao {
|
|||||||
mi.setThrustCurveMotor(tcm);
|
mi.setThrustCurveMotor(tcm);
|
||||||
}
|
}
|
||||||
return mi;
|
return mi;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExtendedThrustCurveMotor fetchMotor(Long id ) throws Exception {
|
public ExtendedThrustCurveMotor fetchMotor(Long id) throws Exception {
|
||||||
Cursor mCursor = mDb.query(DATABASE_TABLE,
|
Cursor mCursor = mDb.query(DATABASE_TABLE,
|
||||||
/* columns */ ALL_COLS,
|
/* columns */ALL_COLS,
|
||||||
/* selection */ID + "="+id,
|
/* selection */ID + "=" + id,
|
||||||
/* selection args*/null,
|
/* selection args*/null,
|
||||||
/* groupby */null,
|
/* groupby */null,
|
||||||
/* having*/null,
|
/* having*/null,
|
||||||
/* orderby*/null);
|
/* orderby*/null);
|
||||||
if ( mCursor == null ) {
|
if (mCursor == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@ -241,22 +247,21 @@ public class MotorDao {
|
|||||||
}
|
}
|
||||||
mCursor.moveToFirst();
|
mCursor.moveToFirst();
|
||||||
return hydrateMotor(mCursor);
|
return hydrateMotor(mCursor);
|
||||||
}
|
} finally {
|
||||||
finally {
|
|
||||||
mCursor.close();
|
mCursor.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExtendedThrustCurveMotor fetchMotor(String manufacturerShortName, String designation ) throws Exception {
|
public ExtendedThrustCurveMotor fetchMotor(String manufacturerShortName, String designation) throws Exception {
|
||||||
Cursor mCursor = mDb.query(DATABASE_TABLE,
|
Cursor mCursor = mDb.query(DATABASE_TABLE,
|
||||||
/* columns */ ALL_COLS,
|
/* columns */ALL_COLS,
|
||||||
/* selection */MANUFACTURER + "='"+manufacturerShortName + "' and "+DESIGNATION+"='"+designation+"'",
|
/* selection */MANUFACTURER + "='" + manufacturerShortName + "' and " + DESIGNATION + "='" + designation + "'",
|
||||||
/* selection args*/null,
|
/* selection args*/null,
|
||||||
/* groupby */null,
|
/* groupby */null,
|
||||||
/* having*/null,
|
/* having*/null,
|
||||||
/* orderby*/null);
|
/* orderby*/null);
|
||||||
if ( mCursor == null ) {
|
if (mCursor == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@ -265,11 +270,10 @@ public class MotorDao {
|
|||||||
}
|
}
|
||||||
mCursor.moveToFirst();
|
mCursor.moveToFirst();
|
||||||
return hydrateMotor(mCursor);
|
return hydrateMotor(mCursor);
|
||||||
}
|
} finally {
|
||||||
finally {
|
|
||||||
mCursor.close();
|
mCursor.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user