Revision 23cc0515

b/src/com/rackspace/cloud/servers/api/client/ImageManager.java
21 21
import org.xml.sax.XMLReader;
22 22

  
23 23
import android.content.Context;
24
import android.util.Log;
24 25

  
25 26
import com.rackspace.cloud.files.api.client.CustomHttpClient;
26 27
import com.rackspace.cloud.servers.api.client.parsers.ImagesXMLParser;
......
66 67
		
67 68
		return images;
68 69
	}
70
	
71
	public Image getImageDetails(int id, Context context){
72
		
73
		CustomHttpClient httpclient = new CustomHttpClient(context);
74
		HttpGet get = new HttpGet(Account.getAccount().getServerUrl() + "/images/" + id + ".xml");
75
		Image image = new Image();
76
		
77
		get.addHeader("X-Auth-Token", Account.getAccount().getAuthToken());
78

  
79
		try {		
80
			HttpResponse resp = httpclient.execute(get);
81
		    BasicResponseHandler responseHandler = new BasicResponseHandler();
82
		    String body = responseHandler.handleResponse(resp);
83
		    		    
84
		    if (resp.getStatusLine().getStatusCode() == 200 || resp.getStatusLine().getStatusCode() == 203) {		    	
85
		    	
86
		    	ImagesXMLParser imagesXMLParser = new ImagesXMLParser();
87
		    	SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
88
		    	XMLReader xmlReader = saxParser.getXMLReader();
89
		    	xmlReader.setContentHandler(imagesXMLParser);
90
		    	xmlReader.parse(new InputSource(new StringReader(body)));		    	
91
		    	image = imagesXMLParser.getImage();		
92
		    }
93
		} catch (ClientProtocolException cpe) {
94
			Log.d("info", "error " + cpe.toString());
95
		} catch (IOException e) {
96
			Log.d("info", "error " + e.toString());
97
		} catch (ParserConfigurationException e) {
98
			Log.d("info", "error " + e.toString());
99
		} catch (SAXException e) {
100
			Log.d("info", "error " + e.toString());
101
		} catch (FactoryConfigurationError e) {
102
			Log.d("info", "error " + e.toString());
103
		}
104
		
105
		return image;
106
	}
69 107
}
b/src/com/rackspace/cloud/servers/api/client/Server.java
117 117
	 * @return the image
118 118
	 */
119 119
	public Image getImage() {
120
		Image image = Image.getImages().get(imageId);
121
		if (image == null) {
122
			image = new Image();
120
		Image tempImage = Image.getImages().get(imageId);
121
		if (tempImage == null) {
122
			tempImage = new Image();
123 123
		}
124
		return image;
124
		return tempImage;
125

  
125 126
	}
126 127
	
127 128
	public String toXML() {
b/src/com/rackspacecloud/android/ListServersActivity.java
11 11
import android.content.Intent;
12 12
import android.os.AsyncTask;
13 13
import android.os.Bundle;
14
import android.util.Log;
14 15
import android.view.LayoutInflater;
15 16
import android.view.Menu;
16 17
import android.view.MenuInflater;
......
196 197
			TextView label = (TextView) row.findViewById(R.id.label);
197 198
			label.setText(server.getName());
198 199
			
199
			TextView sublabel = (TextView) row.findViewById(R.id.sublabel);
200
			sublabel.setText(server.getFlavor().getName() + " - " + server.getImage().getName());
200
			TextView sublabel = (TextView) row.findViewById(R.id.sublabel);			
201
			sublabel.setText(server.getPublicIpAddresses()[0]);
201 202
			
202 203
			ImageView icon = (ImageView) row.findViewById(R.id.icon);
203 204
			icon.setImageResource(server.getImage().iconResourceId());
b/src/com/rackspacecloud/android/ViewServerActivity.java
16 16
import android.graphics.Color;
17 17
import android.os.AsyncTask;
18 18
import android.os.Bundle;
19
import android.util.Log;
19 20
import android.view.Menu;
20 21
import android.view.MenuInflater;
21 22
import android.view.MenuItem;
......
29 30
import com.rackspace.cloud.servers.api.client.CloudServersException;
30 31
import com.rackspace.cloud.servers.api.client.Flavor;
31 32
import com.rackspace.cloud.servers.api.client.Image;
33
import com.rackspace.cloud.servers.api.client.ImageManager;
32 34
import com.rackspace.cloud.servers.api.client.Server;
33 35
import com.rackspace.cloud.servers.api.client.ServerManager;
34 36
import com.rackspace.cloud.servers.api.client.http.HttpBundle;
......
52 54
	private PollServerTask pollServerTask;
53 55
	private boolean canPoll;
54 56
	private boolean noAskForConfirm;
57
	private Image image;
55 58

  
56 59
	/** Called when the activity is first created. */
57 60
	@Override
......
59 62
		super.onCreate(savedInstanceState);
60 63
		trackPageView(GoogleAnalytics.PAGE_SERVER);
61 64
		server = (Server) this.getIntent().getExtras().get("server");
65
		//if an old image it wont be on the image list
66
		//so you have to fetch it manually
67
		if(server.getImage().getName() == null){
68
			GetImageTask getImageTask = new GetImageTask();		
69
			getImageTask.execute((Void[]) null);
70
		} 
62 71
		setContentView(R.layout.viewserver);
63 72
		restoreState(savedInstanceState);
64 73
	}
......
127 136

  
128 137
	private void loadServerData() {
129 138
		if(server != null){
139
			
130 140
			TextView name = (TextView) findViewById(R.id.view_server_name);
131 141
			name.setText(server.getName());
132 142

  
133 143
			TextView os = (TextView) findViewById(R.id.view_server_os);
134
			os.setText(server.getImage().getName());
144
			if(server.getImage().getName() == null){
145
				if(image != null){
146
					os.setText(image.getName());
147
				}
148
			} else {
149
				os.setText(server.getImage().getName());
150
			}
135 151

  
136 152
			TextView memory = (TextView) findViewById(R.id.view_server_memory);
137 153
			memory.setText(server.getFlavor().getRam() + " MB");
......
522 538
		}
523 539

  
524 540
	}
541
	
542
	private class GetImageTask extends AsyncTask<Void, Void, Image> {
543

  
544
		private Image tempImage;
545

  
546
		@Override
547
		protected Image doInBackground(Void... arg0) {
548
			try {
549
				tempImage = (new ImageManager()).getImageDetails(Integer.parseInt(server.getImageId()), getContext());
550
			} catch (NumberFormatException e) {
551
				
552
			}
553
			return tempImage;
554
		}
525 555

  
556
		@Override
557
		protected void onPostExecute(Image result) {
558
			image = result;
559
			loadServerData();
560
		}
526 561

  
562
	}
563
	
527 564
	private class SoftRebootServerTask extends AsyncTask<Void, Void, HttpBundle> {
528 565

  
529 566
		private CloudServersException exception;

Also available in: Unified diff