1 package net.sf.openrocket.android.thrustcurve;
\r
3 import net.sf.openrocket.android.motor.ExtendedThrustCurveMotor;
\r
4 import net.sf.openrocket.android.util.AndroidLogWrapper;
\r
5 import android.app.Activity;
\r
7 public class TCSearchAction extends TCQueryAction {
\r
9 private SearchRequest request;
\r
11 public TCSearchAction(Activity parent) {
\r
15 public void setRequest( SearchRequest request ) {
\r
16 this.request = request;
\r
19 protected Runnable getTask() {
\r
20 return new Downloader();
\r
23 private class Downloader implements Runnable {
\r
28 handler.post( new UpdateMessage("Quering Thrustcurve"));
\r
29 SearchResponse res = new ThrustCurveAPI().doSearch(request);
\r
31 int total = res.getResults().size();
\r
33 for( TCMotor mi : res.getResults() ) {
\r
34 StringBuilder message = new StringBuilder();
\r
35 message.append("Downloading details ");
\r
37 message.append(count);
\r
38 message.append(" of " );
\r
39 message.append(total);
\r
40 message.append("\n");
\r
42 message.append(mi.getManufacturer());
\r
43 message.append(" ");
\r
44 message.append(mi.getCommon_name());
\r
45 handler.post(new UpdateMessage(message.toString()));
\r
47 if ( mi.getData_files() == null || mi.getData_files().intValue() == 0 ) {
\r
51 MotorBurnFile b = new ThrustCurveAPI().downloadData(mi.getMotor_id());
\r
53 AndroidLogWrapper.d(TCQueryAction.class, mi.toString());
\r
55 ExtendedThrustCurveMotor m = new ExtendedThrustCurveMotor();
\r
57 m.setThrustCurveMotor( b.getThrustCurveMotor() );
\r
59 // Convert impulse class. ThrustCurve puts mmx, 1/4a and 1/2a as A.
\r
60 m.setImpulseClass(mi.getImpulse_class());
\r
61 if ( "a".equalsIgnoreCase(mi.getImpulse_class())) {
\r
62 if( mi.getCommon_name().startsWith("1/2A") ) {
\r
63 m.setImpulseClass("1/2A");
\r
64 } else if (mi.getCommon_name().startsWith("1/4A") ) {
\r
65 m.setImpulseClass("1/4A");
\r
66 } else if (mi.getCommon_name().startsWith("Micro") ) {
\r
67 m.setImpulseClass("1/8A");
\r
71 // Convert Case Info.
\r
72 if ( mi.getCase_info() == null
\r
73 || "single use".equalsIgnoreCase(mi.getCase_info())
\r
74 || "single-use".equalsIgnoreCase(mi.getCase_info())) {
\r
75 m.setCaseInfo(mi.getType()+ " " + mi.getDiameter() + "x" + mi.getLength());
\r
77 m.setCaseInfo(mi.getCase_info());
\r
80 AndroidLogWrapper.d(TCQueryAction.class,"adding motor " + m.toString());
\r
82 mDbHelper.getMotorDao().insertOrUpdateMotor(m);
\r
84 if ( total < res.getMatches() ) {
\r
85 handler.post( new Error( total + " motors downloaded, " + res.getMatches() + " matched. Try restricting the query more.") );
\r
87 handler.post( new Dismiss());
\r
90 catch( Exception ex){
\r
91 AndroidLogWrapper.d(TCQueryAction.class,ex.toString());
\r
92 handler.post( new Error(ex.toString()) );
\r