Revision 9548973b

b/src/com/rackspace/cloud/servers/api/client/ServerManager.java
27 27
import org.xml.sax.XMLReader;
28 28

  
29 29
import android.content.Context;
30
import android.util.Log;
30 31

  
31 32
import com.rackspace.cloud.files.api.client.CustomHttpClient;
32 33
import com.rackspace.cloud.servers.api.client.parsers.CloudServersFaultXMLParser;
......
163 164
		
164 165
		Server server = null;
165 166
		CustomHttpClient httpclient = new CustomHttpClient(context);
167
		Log.d("info", "captin the url is " + Account.getAccount().getServerUrl() + "/servers/" + id + ".xml" + cacheBuster());
166 168
		HttpGet get = new HttpGet(Account.getAccount().getServerUrl() + "/servers/" + id + ".xml" + cacheBuster());
167 169
		get.addHeader("X-Auth-Token", Account.getAccount().getAuthToken());
168 170
		
b/src/com/rackspacecloud/android/ListServersActivity.java
12 12
import android.content.Intent;
13 13
import android.os.AsyncTask;
14 14
import android.os.Bundle;
15
import android.util.Log;
16 15
import android.view.LayoutInflater;
17 16
import android.view.Menu;
18 17
import android.view.MenuInflater;
......
140 139
    	
141 140
    	private CloudServersException exception;
142 141
    	
143
    	@Override
144
    	protected void onPreExecute(){
145
    		Log.d("info", "captin load called");
146
    	}
147
    	
148 142
		@Override
149 143
		protected ArrayList<Server> doInBackground(Void... arg0) {
150 144
			ArrayList<Server> servers = null;
b/src/com/rackspacecloud/android/TabViewActivity.java
5 5

  
6 6
import android.app.TabActivity;
7 7
import android.content.Intent;
8
import android.util.Log;
9 8
import android.widget.TabHost;
10 9
import android.os.Bundle;
11 10

  
......
30 29
		spec.setContent(new Intent(this, ListContainerActivity.class));
31 30
		spec.setIndicator("Cloud Files", getResources().getDrawable(R.drawable.cloudfiles));
32 31
		tabs.addTab(spec);
33
		
34
		Log.d("tabview", "captin we have made it");
35 32
	}
36 33
	
37 34
}
b/src/com/rackspacecloud/android/ViewServerActivity.java
23 23
import android.app.Activity;
24 24
import android.app.AlertDialog;
25 25
import android.app.Dialog;
26
import android.app.ProgressDialog;
26 27
import android.content.Context;
27 28
import android.content.DialogInterface;
28 29
import android.content.Intent;
......
34 35
import android.view.View.OnClickListener;
35 36
import android.widget.Button;
36 37
import android.widget.EditText;
37
import android.widget.ImageView;
38 38
import android.widget.LinearLayout;
39 39
import android.widget.TextView;
40 40
import android.widget.Toast;
41 41

  
42
import com.rackspace.cloud.servers.api.client.Account;
42 43
import com.rackspace.cloud.servers.api.client.CloudServersException;
43 44
import com.rackspace.cloud.servers.api.client.Flavor;
44 45
import com.rackspace.cloud.servers.api.client.Image;
......
63 64
    private Image[] images;
64 65
	private String[] imageNames;
65 66
	private String selectedImageId;
67
	private boolean isPolling;
68
	private PollServerTask pollServerTask;
69
	private boolean canPoll;
66 70
	
67 71
    /** Called when the activity is first created. */
68 72
    @Override
......
78 82
	protected void onSaveInstanceState(Bundle outState) {
79 83
		super.onSaveInstanceState(outState);
80 84
		outState.putSerializable("server", server);
81
		//outState.putBoolean("imageLoaded", imageLoaded);
85
		if(pollServerTask != null && isPolling){
86
			Log.d("info", "captin cancelling the polling");
87
			pollServerTask.cancel(true);
88
		}
89
		outState.putBoolean("wasPolling", isPolling);
82 90
	}
83 91

  
84 92
    private void restoreState(Bundle state) {
93
    	if(state != null && state.containsKey("wasPolling") && state.getBoolean("wasPolling") == true){
94
    		pollServerTask = new PollServerTask();
95
    		pollServerTask.execute((Void[]) null);
96
    	}
85 97
    	if (state != null && state.containsKey("server")) {
86 98
    		server = (Server) state.getSerializable("server");
87 99
    		//imageLoaded = state.getBoolean("imageLoaded");
......
104 116

  
105 117
    }
106 118
*/  
119
    
120
    /*
121
     * need to manage the polling task
122
     * if the activity is stopped
123
     */
124
    @Override
125
    public void onStop(){
126
    	super.onStop();
127
    	if(pollServerTask != null && isPolling){
128
    		Log.d("info", "captin in onStop cancelling");
129
    		pollServerTask.cancel(true);
130
    		isPolling = true;
131
			Log.d("info", "captin polling is true");
132
    	}
133
    	canPoll = false;
134
    	
135
    }
136
    
137
    /*
138
     * restart the pollingtask 
139
     * if it was running before
140
     * 
141
     */
142
    @Override
143
    public void onStart(){
144
    	super.onStart();
145
    	if(isPolling){
146
    		Log.d("info", "captin in onStart starting");
147
    		pollServerTask = new PollServerTask();
148
    		pollServerTask.execute((Void[]) null);
149
    	}
150
    	canPoll = true;
151
    
152
    }
153
   
107 154
    private void loadServerData() {
108 155
    	TextView name = (TextView) findViewById(R.id.view_server_name);
109 156
    	name.setText(server.getName());
110
    	
157

  
111 158
    	TextView os = (TextView) findViewById(R.id.view_server_os);
112 159
    	os.setText(server.getImage().getName());
113
    	
160

  
114 161
    	TextView memory = (TextView) findViewById(R.id.view_server_memory);
115 162
    	memory.setText(server.getFlavor().getRam() + " MB");
116
    	
163

  
117 164
    	TextView disk = (TextView) findViewById(R.id.view_server_disk);
118 165
    	disk.setText(server.getFlavor().getDisk() + " GB");
119
    	
166

  
120 167
    	TextView status = (TextView) findViewById(R.id.view_server_status);
121 168

  
122 169
    	// show status and possibly the progress, with polling
123 170
    	if (!"ACTIVE".equals(server.getStatus())) {
124
        	status.setText(server.getStatus() + " - " + server.getProgress() + "%");
125
    		new PollServerTask().execute((Void[]) null);
171
    		status.setText(server.getStatus() + " - " + server.getProgress() + "%");
172
    		pollServerTask = new PollServerTask();
173
    		pollServerTask.execute((Void[]) null);
126 174
    	} else {
127
        	status.setText(server.getStatus());
175
    		status.setText(server.getStatus());
128 176
    	}
129
    	
177

  
130 178
    	if (!ipAddressesLoaded) {
131
	    	// public IPs
132
	    	int layoutIndex = 12; // public IPs start here
133
	    	LinearLayout layout = (LinearLayout) this.findViewById(R.id.view_server_layout);    	
134
	    	String publicIps[] = server.getPublicIpAddresses();
135
	    	for (int i = 0; i < publicIps.length; i++) {
136
	        	TextView tv = new TextView(this.getBaseContext());
137
	        	tv.setLayoutParams(os.getLayoutParams()); // easy quick styling! :)
138
	        	tv.setTypeface(tv.getTypeface(), 1); // 1 == bold
139
	        	tv.setTextSize(os.getTextSize());
140
	        	tv.setTextColor(Color.WHITE);
141
	        	tv.setText(publicIps[i]);
142
	        	layout.addView(tv, layoutIndex++);
143
	    	}
144
	    	
145
	    	// private IPs
146
	    	layoutIndex++; // skip over the Private IPs label
147
	    	String privateIps[] = server.getPrivateIpAddresses();
148
	    	for (int i = 0; i < privateIps.length; i++) {
149
	        	TextView tv = new TextView(this.getBaseContext());
150
	        	tv.setLayoutParams(os.getLayoutParams()); // easy quick styling! :)
151
	        	tv.setTypeface(tv.getTypeface(), 1); // 1 == bold
152
	        	tv.setTextSize(os.getTextSize());
153
	        	tv.setTextColor(Color.WHITE);
154
	        	tv.setText(privateIps[i]);
155
	        	layout.addView(tv, layoutIndex++);
156
	    	}
157
	    	ipAddressesLoaded = true;
179
    		// public IPs
180
    		int layoutIndex = 12; // public IPs start here
181
    		LinearLayout layout = (LinearLayout) this.findViewById(R.id.view_server_layout);    	
182
    		String publicIps[] = server.getPublicIpAddresses();
183
    		for (int i = 0; i < publicIps.length; i++) {
184
    			TextView tv = new TextView(this.getBaseContext());
185
    			tv.setLayoutParams(os.getLayoutParams()); // easy quick styling! :)
186
    			tv.setTypeface(tv.getTypeface(), 1); // 1 == bold
187
    			tv.setTextSize(os.getTextSize());
188
    			tv.setTextColor(Color.WHITE);
189
    			tv.setText(publicIps[i]);
190
    			layout.addView(tv, layoutIndex++);
191
    		}
192

  
193
    		// private IPs
194
    		layoutIndex++; // skip over the Private IPs label
195
    		String privateIps[] = server.getPrivateIpAddresses();
196
    		for (int i = 0; i < privateIps.length; i++) {
197
    			TextView tv = new TextView(this.getBaseContext());
198
    			tv.setLayoutParams(os.getLayoutParams()); // easy quick styling! :)
199
    			tv.setTypeface(tv.getTypeface(), 1); // 1 == bold
200
    			tv.setTextSize(os.getTextSize());
201
    			tv.setTextColor(Color.WHITE);
202
    			tv.setText(privateIps[i]);
203
    			layout.addView(tv, layoutIndex++);
204
    		}
205
    		ipAddressesLoaded = true;
158 206
    	}
159
    	
207

  
160 208
    	//loadImage();
161 209
    }
162 210
    
......
202 250
    private void setupButtons() {
203 251
    	setupButton(R.id.view_server_soft_reboot_button, new OnClickListener() {
204 252
            public void onClick(View v) {
205
                showDialog(R.id.view_server_soft_reboot_button);
253
            		showDialog(R.id.view_server_soft_reboot_button);
206 254
            }
207 255
        });
208 256
    	
209 257
    	setupButton(R.id.view_server_hard_reboot_button, new OnClickListener() {
210 258
            public void onClick(View v) {
211
                showDialog(R.id.view_server_hard_reboot_button);
259
            		showDialog(R.id.view_server_hard_reboot_button);
212 260
            }
213 261
    	});
214 262

  
215 263
    	setupButton(R.id.view_server_resize_button, new OnClickListener() {
216 264
            public void onClick(View v) {
217
                showDialog(R.id.view_server_resize_button);
265
            		showDialog(R.id.view_server_resize_button);
218 266
            }
219 267
    	});
220 268

  
221 269
    	setupButton(R.id.view_server_delete_button, new OnClickListener() {
222 270
            public void onClick(View v) {
223
                showDialog(R.id.view_server_delete_button);
271
            		showDialog(R.id.view_server_delete_button);
224 272
            }
225 273
    	});
226 274
    	
227 275
    	setupButton(R.id.view_server_rename_button, new OnClickListener() {
228 276
            public void onClick(View v) {
229
                showDialog(R.id.view_server_rename_button);
277
            		showDialog(R.id.view_server_rename_button);
230 278
            }
231 279
    	});
232 280
    	
233 281
    	setupButton(R.id.view_server_rebuild_button, new OnClickListener() {
234 282
            public void onClick(View v) {
235
                showDialog(R.id.view_server_rebuild_button);
283
            		showDialog(R.id.view_server_rebuild_button);
236 284
            }
237 285
    	});
238 286
    	
239 287
    	
240 288
    	setupButton(R.id.view_server_backup_button, new OnClickListener() {
241 289
            public void onClick(View v) {
242
            	Intent viewIntent = new Intent(v.getContext(), BackupServerActivity.class);
243
            	viewIntent.putExtra("server", server);
244
            	startActivity(viewIntent);
290
                	Intent viewIntent = new Intent(v.getContext(), BackupServerActivity.class);
291
                	viewIntent.putExtra("server", server);
292
                	startActivity(viewIntent);
245 293
            }
246 294
    	});
247
    	
295

  
248 296
    	setupButton(R.id.view_server_password_button, new OnClickListener() {
249
            public void onClick(View v) {
250
            	Intent viewIntent = new Intent(v.getContext(), PasswordServerActivity.class);
251
            	viewIntent.putExtra("server", server);
252
            	startActivity(viewIntent);
253
            }
297
    		public void onClick(View v) {
298
    				Intent viewIntent = new Intent(v.getContext(), PasswordServerActivity.class);
299
    				viewIntent.putExtra("server", server);
300
    				startActivity(viewIntent);
301
    		}
254 302
    	});
255 303
    	
256 304
    	setupButton(R.id.view_server_ping_button, new OnClickListener() {
......
260 308
            	//ping the first public ip
261 309
            	viewIntent.putExtra("ipAddress", server.getPublicIpAddresses()[0]);
262 310
            	startActivity(viewIntent);
311
            	
312
            	
263 313
            }
264 314
    	});
265 315
    	
266 316
    }
267 317
    
268 318
    private void showAlert(String title, String message) {
269
		AlertDialog alert = new AlertDialog.Builder(this).create();
319
		AlertDialog alert = new AlertDialog.Builder(ViewServerActivity.this).create();
270 320
		alert.setTitle(title);
271 321
		alert.setMessage(message);
272 322
		alert.setButton("OK", new DialogInterface.OnClickListener() {
......
282 332
		Toast toast = Toast.makeText(context, message, duration);
283 333
		toast.show();
284 334
    }
335
    
336
    private void showToast(String title, String message) {
337
		Context context = getApplicationContext();
338
		int duration = Toast.LENGTH_SHORT;
339
		Toast toast = Toast.makeText(context, "   "+title + "\n\n" + message, duration);
340
		toast.show();
341
    }
285 342
	
286 343
    /**
287 344
	 * @return the server
......
415 472
		}
416 473
    	
417 474
    }
418
    
419

  
420
    
475
      
421 476
    private CloudServersException parseCloudServersException(HttpResponse response) {
422 477
		CloudServersException cse = new CloudServersException();
423 478
		try {
......
452 507
    
453 508
	private class PollServerTask extends AsyncTask<Void, Void, Server> {
454 509
    	
510
		private Server tempServer;
511
		
512
		@Override 
513
		protected void onPreExecute(){
514
			Log.d("info", "captin The POLLING TASK HAS STARTED!");
515
			isPolling = true;
516
		}
517
		
455 518
		@Override
456 519
		protected Server doInBackground(Void... arg0) {
520
			Log.d("info", "captin can poll is " + canPoll);
521
			if(isCancelled() || !canPoll){
522
				return null;
523
			}
457 524
			try {
458
				server = (new ServerManager()).find(Integer.parseInt(server.getId()), context);
525
				 tempServer = (new ServerManager()).find(Integer.parseInt(server.getId()), context);
459 526
			} catch (NumberFormatException e) {
460 527
				// we're polling, so need to show exceptions
461 528
			} catch (CloudServersException e) {
462 529
				// we're polling, so need to show exceptions
463 530
			}
464
			return server;
531
			return tempServer;
465 532
		}
466 533
    	
467 534
		@Override
468 535
		protected void onPostExecute(Server result) {
469 536
			server = result;
470
			loadServerData();
537
			if(server != null){
538
				Log.d("info", "captin about to load data");
539
				loadServerData();
540
			}
541
			isPolling = false;
542
			Log.d("info", "captin polling is false");
543
		}
544
		
545
		@Override
546
		protected void onCancelled (){
547
			isPolling = false;
548
			Log.d("info", "captin polling is false and the poll has been canceled");
471 549
		}
550
		
472 551
    }
473 552

  
474 553
    
......
495 574
    	
496 575
		@Override
497 576
		protected void onPostExecute(HttpResponse response) {
498

  
499 577
			if (response != null) {
500 578
				int statusCode = response.getStatusLine().getStatusCode();	
501 579
				if(statusCode == 202){ showToast("Reboot successful"); }
502 580
				if (statusCode != 202) {
503 581
					CloudServersException cse = parseCloudServersException(response);
504 582
					if ("".equals(cse.getMessage())) {
505
						showAlert("Error", "There was a problem rebooting your server.");
583
						showToast("Error", "There was a problem rebooting your server.");
506 584
					} else {
507
						showAlert("Error", "There was a problem rebooting your server: " + cse.getMessage());
585
						showToast("Error", "There was a problem rebooting your server: " + cse.getMessage());
508 586
					}
509 587
				}
510 588
			} else if (exception != null) {
511
				showAlert("Error", "There was a problem rebooting your server: " + exception.getMessage());
589
				showToast("Error", "There was a problem rebooting your server: " + exception.getMessage());
512 590
				
513 591
			}
514 592
		}
......
543 621
				if (statusCode != 202) {
544 622
					CloudServersException cse = parseCloudServersException(response);
545 623
					if ("".equals(cse.getMessage())) {
546
						showAlert("Error", "There was a problem rebooting your server.");
624
						showToast("Error", "There was a problem rebooting your server.");
547 625
					} else {
548
						showAlert("Error", "There was a problem rebooting your server: " + cse.getMessage());
626
						showToast("Error", "There was a problem rebooting your server: " + cse.getMessage());
549 627
					}
550 628
				}
551 629
			} else if (exception != null) {
552
				showAlert("Error", "There was a problem rebooting your server: " + exception.getMessage());
630
				showToast("Error", "There was a problem rebooting your server: " + exception.getMessage());
553 631
				
554 632
			}
555 633
		}
......
558 636
	private class ResizeServerTask extends AsyncTask<Void, Void, HttpResponse> {
559 637
    	
560 638
		private CloudServersException exception;
639
		
640
		@Override
641
		protected void onPreExecute(){
642
			showToast("Resize process has begun, please confirm your resize after process finishes.");
643
		}
561 644

  
562 645
		@Override
563 646
		protected HttpResponse doInBackground(Void... arg0) {
......
575 658
			if (response != null) {
576 659
				int statusCode = response.getStatusLine().getStatusCode();			
577 660
				if (statusCode == 202) {
578
					showToast("Resize process has begun, please confirm your resize after process finishes.");
579
					new PollServerTask().execute((Void[]) null);
661
					pollServerTask = new PollServerTask();
662
		    		pollServerTask.execute((Void[]) null);
580 663
				} else {					
581 664
					CloudServersException cse = parseCloudServersException(response);
582 665
					if ("".equals(cse.getMessage())) {
583
						showAlert("Error", "There was a problem resizing your server.");
666
						showToast("Error", "There was a problem resizing your server.");
584 667
					} else {
585
						showAlert("Error", "There was a problem resizing your server: " + cse.getMessage());
668
						showToast("Error", "There was a problem resizing your server: " + cse.getMessage());
586 669
					}					
587 670
				}
588 671
			} else if (exception != null) {
589
				showAlert("Error", "There was a problem resizing your server: " + exception.getMessage());
672
				showToast("Error", "There was a problem resizing your server: " + exception.getMessage());
590 673
				
591 674
			}
592 675
			
......
625 708
				} else {
626 709
					CloudServersException cse = parseCloudServersException(response);
627 710
					if ("".equals(cse.getMessage())) {
628
						showAlert("Error", "There was a problem deleting your server.");
711
						showToast("Error", "There was a problem deleting your server.");
629 712
					} else {
630
						showAlert("Error", "There was a problem deleting your server: " + cse.getMessage());
713
						showToast("Error", "There was a problem deleting your server: " + cse.getMessage());
631 714
					}
632 715
				}
633 716
			} else if (exception != null) {
634
				showAlert("Error", "There was a problem deleting your server: " + exception.getMessage());				
717
				showToast("Error", "There was a problem deleting your server: " + exception.getMessage());				
635 718
			}			
636 719
		}
637 720
    }
......
643 726
		@Override
644 727
		//let user know their process has started
645 728
		protected void onPreExecute(){
646
			showToast("Rename process has begun");
729
			showToast("Rename process has begun.");
647 730
		}
648 731
		
649 732
		@Override
......
663 746
				int statusCode = response.getStatusLine().getStatusCode();	
664 747
				if (statusCode == 204) {	
665 748
					showToast("Rename successful");
666
					new PollServerTask().execute((Void[]) null);
749
					pollServerTask = new PollServerTask();
750
		    		pollServerTask.execute((Void[]) null);
667 751
				} else {
668 752
					CloudServersException cse = parseCloudServersException(response);
669 753
					if ("".equals(cse.getMessage())) {
670
						showAlert("Error", "There was a problem renaming your server.");
754
						showToast("Error", "There was a problem renaming your server.");
671 755
					} else {
672
						showAlert("Error", "There was a problem renaming your server: " + cse.getMessage());
756
						showToast("Error", "There was a problem renaming your server: " + cse.getMessage());
673 757
					}					
674 758
				}
675 759
			}
676 760
		    else if (exception != null) {
677
		    	showAlert("Error", "There was a problem renaming your server: " + exception.getMessage());	
761
		    	showToast("Error", "There was a problem renaming your server: " + exception.getMessage());	
678 762
		    }
679 763
		}
680 764
		
......
685 769
		private CloudServersException exception;
686 770
		
687 771
		@Override
772
		protected void onPreExecute(){
773
			showToast("Rebuild process has begun");
774
		}
775
		
776
		@Override
688 777
		protected HttpResponse doInBackground(Void... arg0) {
689 778
			HttpResponse resp = null;
690 779
			try {
......
700 789
			if (response != null) {
701 790
				int statusCode = response.getStatusLine().getStatusCode();			
702 791
				if (statusCode == 202) {
703
					showToast("Rebuild process has begun");
704
					new PollServerTask().execute((Void[]) null);
792
					pollServerTask = new PollServerTask();
793
		    		pollServerTask.execute((Void[]) null);
705 794
				} else {					
706 795
					CloudServersException cse = parseCloudServersException(response);
707 796
					if ("".equals(cse.getMessage())) {
708
						showAlert("Error", "There was a problem rebuilding your server.");
797
						showToast("Error", "There was a problem rebuilding your server.");
709 798
					} else {
710
						showAlert("Error", "There was a problem rebuilding your server: " + cse.getMessage());
799
						showToast("Error", "There was a problem rebuilding your server: " + cse.getMessage());
711 800
					}					
712 801
				}
713 802
			} else if (exception != null) {
714
				showAlert("Error", "There was a problem rebuilding your server: " + exception.getMessage());
803
				showToast("Error", "There was a problem rebuilding your server: " + exception.getMessage());
715 804
				
716 805
			}
717 806
			

Also available in: Unified diff