Rewrite the ThrustCurve search and download process to be orientation friendly.
[debian/openrocket] / android / src / net / sf / openrocket / android / thrustcurve / TCMissingMotorDownloadAction.java
1 package net.sf.openrocket.android.thrustcurve;\r
2 \r
3 import java.util.Set;\r
4 \r
5 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
6 import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder;\r
7 \r
8 public class TCMissingMotorDownloadAction extends TCQueryAction {\r
9 \r
10         public static TCMissingMotorDownloadAction newInstance( Set<ThrustCurveMotorPlaceholder> missingMotors ) {\r
11                 TCMissingMotorDownloadAction frag = new TCMissingMotorDownloadAction();\r
12                 frag.task = frag.new Downloader(missingMotors);\r
13                 return frag;\r
14         }\r
15 \r
16         private class Downloader extends TCQueryAction.TCQueryTask {\r
17 \r
18                 private Set<ThrustCurveMotorPlaceholder> missingMotors;\r
19                 \r
20                 private Downloader( Set<ThrustCurveMotorPlaceholder> missingMotors ) {\r
21                         this.missingMotors = missingMotors;\r
22                 }\r
23                 \r
24                 private void downloadMissingMotor( ThrustCurveMotorPlaceholder motor ) {\r
25                         try {\r
26                                 SearchRequest request = new SearchRequest();\r
27                                 request.setManufacturer(motor.getManufacturer());\r
28                                 request.setDesignation(motor.getDesignation());\r
29 \r
30                                 handler.post( new UpdateMessage("Looking for " + motor.getManufacturer() + " " + motor.getDesignation()));\r
31 \r
32                                 SearchResponse res = new ThrustCurveAPI().doSearch(request);\r
33 \r
34                                 int total = res.getResults().size();\r
35                                 int count = 1;\r
36                                 for( TCMotor mi : res.getResults() ) {\r
37                                         StringBuilder message = new StringBuilder();\r
38                                         message.append("Downloading details ");\r
39                                         if ( total > 1 ) {\r
40                                                 message.append(count);\r
41                                                 message.append(" of " );\r
42                                                 message.append(total);\r
43                                                 message.append("\n");\r
44                                         }\r
45                                         message.append(mi.getManufacturer());\r
46                                         message.append(" ");\r
47                                         message.append(mi.getCommon_name());\r
48                                         handler.post(new UpdateMessage(message.toString()));\r
49                                         count++;\r
50                                         if ( mi.getData_files() == null || mi.getData_files().intValue() == 0 ) {\r
51                                                 continue;\r
52                                         }\r
53 \r
54                                         AndroidLogWrapper.d(TCQueryAction.class, mi.toString());\r
55 \r
56                                         MotorBurnFile b = new ThrustCurveAPI().downloadData(mi.getMotor_id());\r
57 \r
58                                         writeMotor( mi, b);\r
59 \r
60                                 }\r
61                         }\r
62                         catch( Exception ex){\r
63                                 AndroidLogWrapper.d(TCQueryAction.class,ex.toString());\r
64                                 handler.post( new UpdateMessage("Failed") );\r
65 \r
66                         }\r
67 \r
68                 }\r
69 \r
70                 @Override\r
71                 protected String doInBackground(Void... arg0) {\r
72                         for ( ThrustCurveMotorPlaceholder motor : missingMotors ) {\r
73                                 AndroidLogWrapper.d(TCMissingMotorDownloadAction.class, "Motor: {}", motor);\r
74                                 downloadMissingMotor(motor);\r
75                         }\r
76                         dismiss();\r
77                         return null;\r
78                 }\r
79 \r
80         }\r
81 \r
82 }\r