Revision 240418be src/com/rackspacecloud/android/EnableCDNActivity.java

b/src/com/rackspacecloud/android/EnableCDNActivity.java
35 35
import com.rackspace.cloud.servers.api.client.CloudServersException;
36 36
import com.rackspace.cloud.servers.api.client.parsers.CloudServersFaultXMLParser;
37 37

  
38
public class EnableCDNActivity extends Activity implements  OnClickListener, OnItemSelectedListener {
39
	
38
public class EnableCDNActivity extends Activity implements OnClickListener,
39
		OnItemSelectedListener {
40 40

  
41 41
	public static String containerName = null;
42 42
	private String selectedTtlId;
......
45 45
	private Spinner ttlSpinner;
46 46
	private Spinner logRetSpinner;
47 47
	private Spinner cdnSpinner;
48
	
49
    /** Called when the activity is first created. */
50
    @Override
51
    public void onCreate(Bundle savedInstanceState) {
52
        super.onCreate(savedInstanceState);
53
        setContentView(R.layout.enable_cdn_container);
54
        containerName = (String) this.getIntent().getExtras().get("Cname");
55
        setupButtons();
56
        loadTtlSpinner();
48

  
49
	/** Called when the activity is first created. */
50
	@Override
51
	public void onCreate(Bundle savedInstanceState) {
52
		super.onCreate(savedInstanceState);
53
		setContentView(R.layout.enable_cdn_container);
54
		containerName = (String) this.getIntent().getExtras().get("Cname");
55
		setupButtons();
56
		loadTtlSpinner();
57 57
		loadLogRetSpinner();
58 58
		loadCdnSpinner();
59
       
60
    }
61
    private void setupButton(int resourceId, OnClickListener onClickListener) {
59

  
60
	}
61

  
62
	private void setupButton(int resourceId, OnClickListener onClickListener) {
62 63
		Button button = (Button) findViewById(resourceId);
63 64
		button.setOnClickListener(onClickListener);
64
    }
65
    
66
    private void setupButtons() {
67
    	setupButton(R.id.enable_button, new OnClickListener() {
68
            public void onClick(View v) {
69
                showDialog(R.id.enable_button);
70
            }
71
        });
72
    	
73
    	setupButton(R.id.disable_button, new OnClickListener() {
74
            public void onClick(View v) {
75
                showDialog(R.id.disable_button);
76
            }
77
    	});
78
    }
79

  
80
private void loadCdnSpinner(){
81
	cdnSpinner = (Spinner) findViewById(R.id.cdn_spinner);
82
	cdnSpinner.setOnItemSelectedListener(this);
83
	ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
84
			this, R.array.cdn, android.R.layout.simple_spinner_item);
85
			adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
86
			cdnSpinner.setAdapter(adapter);
87

  
88
			
89
}
90
	
91
private void loadTtlSpinner() {
92
	ttlSpinner = (Spinner) findViewById(R.id.ttl_spinner);
93
	ttlSpinner.setOnItemSelectedListener(this);
94
	ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
95
			this, R.array.ttl, android.R.layout.simple_spinner_item);
96
			adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
97
			ttlSpinner.setAdapter(adapter);
98

  
99
			
100
}
101

  
102

  
103
private void loadLogRetSpinner() {
104
	logRetSpinner = (Spinner) findViewById(R.id.log_retention_spinner);
105
	logRetSpinner.setOnItemSelectedListener(this);
106
	ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
107
			this, R.array.logRet, android.R.layout.simple_spinner_item);
108
			adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
109
			logRetSpinner.setAdapter(adapter);		
110

  
111
}
112
   
113
public void onItemSelected(AdapterView<?> parent, View view, int id,
114
		long arg3) {
115
	    if (parent == cdnSpinner) {
116
	    	selectedCdnId = cdnSpinner.getSelectedItem().toString();
117
	    }
65
	}
66

  
67
	private void setupButtons() {
68
		setupButton(R.id.enable_button, new OnClickListener() {
69
			public void onClick(View v) {
70
				showDialog(R.id.enable_button);
71
			}
72
		});
73

  
74
		setupButton(R.id.disable_button, new OnClickListener() {
75
			public void onClick(View v) {
76
				showDialog(R.id.disable_button);
77
			}
78
		});
79
	}
80

  
81
	private void loadCdnSpinner() {
82
		cdnSpinner = (Spinner) findViewById(R.id.cdn_spinner);
83
		cdnSpinner.setOnItemSelectedListener(this);
84
		ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
85
				this, R.array.cdn, android.R.layout.simple_spinner_item);
86
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
87
		cdnSpinner.setAdapter(adapter);
88

  
89
	}
90

  
91
	private void loadTtlSpinner() {
92
		ttlSpinner = (Spinner) findViewById(R.id.ttl_spinner);
93
		ttlSpinner.setOnItemSelectedListener(this);
94
		ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
95
				this, R.array.ttl, android.R.layout.simple_spinner_item);
96
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
97
		ttlSpinner.setAdapter(adapter);
98

  
99
	}
100

  
101
	private void loadLogRetSpinner() {
102
		logRetSpinner = (Spinner) findViewById(R.id.log_retention_spinner);
103
		logRetSpinner.setOnItemSelectedListener(this);
104
		ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
105
				this, R.array.logRet, android.R.layout.simple_spinner_item);
106
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
107
		logRetSpinner.setAdapter(adapter);
108

  
109
	}
110

  
111
	public void onItemSelected(AdapterView<?> parent, View view, int id,
112
			long arg3) {
113
		if (parent == cdnSpinner) {
114
			selectedCdnId = cdnSpinner.getSelectedItem().toString();
115
		}
118 116
		if (parent == ttlSpinner) {
119 117
			selectedTtlId = ttlSpinner.getSelectedItem().toString();
120 118
		} else if (parent == logRetSpinner) {
121 119
			selectedLogRetId = logRetSpinner.getSelectedItem().toString();
122 120
		}
123
}
124
public void onNothingSelected(AdapterView<?> parent) {
125
	
126
}
121
	}
122

  
123
	public void onNothingSelected(AdapterView<?> parent) {
124

  
125
	}
126

  
127 127
	private void showAlert(String title, String message) {
128 128
		AlertDialog alert = new AlertDialog.Builder(this).create();
129 129
		alert.setTitle(title);
130 130
		alert.setMessage(message);
131 131
		alert.setButton("OK", new DialogInterface.OnClickListener() {
132
	      public void onClick(DialogInterface dialog, int which) {
133
	        return;
134
	    } }); 
132
			public void onClick(DialogInterface dialog, int which) {
133
				return;
134
			}
135
		});
135 136
		alert.show();
136 137
		hideActivityIndicators();
137
    }
138
	 @Override
139
	    protected Dialog onCreateDialog(int id) {
140
	        switch (id) {
141
	        case R.id.enable_button:
142
	            return new AlertDialog.Builder(EnableCDNActivity.this)
143
	        	.setIcon(R.drawable.alert_dialog_icon)
144
	        	.setTitle("Enable CDN")
145
	        	.setMessage("Are you sure you want to enable CDN on this container?")
146
	        	.setPositiveButton("Enable CDN", new DialogInterface.OnClickListener() {
147
	        		public void onClick(DialogInterface dialog, int whichButton) {
148
	        			// User clicked OK so do some stuff
149
	        			new EnableCDNTask().execute((Void[]) null);
150
	        		}
151
	        	})
152
	        	.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
153
	        		public void onClick(DialogInterface dialog, int whichButton) {
154
	        			// User clicked Cancel so do some stuff
155
	        		}
156
	        	})
157
	        	.create();
158
	        case R.id.disable_button:
159
	            return new AlertDialog.Builder(EnableCDNActivity.this)
160
	        	.setIcon(R.drawable.alert_dialog_icon)
161
	        	.setTitle("Change Attributes")
162
	        	.setMessage("Are you sure you want to disable CDN, and/or change attributes?")
163
	        	.setPositiveButton("Change Attributes", new DialogInterface.OnClickListener() {
164
	        		public void onClick(DialogInterface dialog, int whichButton) {
165
	        			// User clicked OK so do some stuff
166
	        		new DisableCDNTask().execute((Void[]) null);
167
	        		}
168
	        	})
169
	        	.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
170
	        		public void onClick(DialogInterface dialog, int whichButton) {
171
	        			// User clicked Cancel so do some stuff
172
	        		}
173
	        	})
174
	        	.create();
175
	        }
176
	        return null;
177
	 }
178
    private void setActivityIndicatorsVisibility(int visibility) {
179
        ProgressBar pb = (ProgressBar) findViewById(R.id.save_container_progress_bar);
180
    	TextView tv = (TextView) findViewById(R.id.saving_container_label);
181
        pb.setVisibility(visibility);
182
        tv.setVisibility(visibility);
183
    }
184

  
185
    @SuppressWarnings("unused")
138
	}
139

  
140
	@Override
141
	protected Dialog onCreateDialog(int id) {
142
		switch (id) {
143
		case R.id.enable_button:
144
			return new AlertDialog.Builder(EnableCDNActivity.this)
145
					.setIcon(R.drawable.alert_dialog_icon)
146
					.setTitle("Enable CDN")
147
					.setMessage(
148
							"Are you sure you want to enable CDN on this container?")
149
					.setPositiveButton("Enable CDN",
150
							new DialogInterface.OnClickListener() {
151
								public void onClick(DialogInterface dialog,
152
										int whichButton) {
153
									// User clicked OK so do some stuff
154
									new EnableCDNTask().execute((Void[]) null);
155
								}
156
							})
157
					.setNegativeButton("Cancel",
158
							new DialogInterface.OnClickListener() {
159
								public void onClick(DialogInterface dialog,
160
										int whichButton) {
161
									// User clicked Cancel so do some stuff
162
								}
163
							}).create();
164
		case R.id.disable_button:
165
			return new AlertDialog.Builder(EnableCDNActivity.this)
166
					.setIcon(R.drawable.alert_dialog_icon)
167
					.setTitle("Change Attributes")
168
					.setMessage(
169
							"Are you sure you want to disable CDN, and/or change attributes?")
170
					.setPositiveButton("Change Attributes",
171
							new DialogInterface.OnClickListener() {
172
								public void onClick(DialogInterface dialog,
173
										int whichButton) {
174
									// User clicked OK so do some stuff
175
									new ChangeAttributesCDNTask().execute((Void[]) null);
176
								}
177
							})
178
					.setNegativeButton("Cancel",
179
							new DialogInterface.OnClickListener() {
180
								public void onClick(DialogInterface dialog,
181
										int whichButton) {
182
									// User clicked Cancel so do some stuff
183
								}
184
							}).create();
185
		}
186
		return null;
187
	}
188

  
189
	private void setActivityIndicatorsVisibility(int visibility) {
190
		ProgressBar pb = (ProgressBar) findViewById(R.id.save_container_progress_bar);
191
		TextView tv = (TextView) findViewById(R.id.saving_container_label);
192
		pb.setVisibility(visibility);
193
		tv.setVisibility(visibility);
194
	}
195

  
196
	@SuppressWarnings("unused")
186 197
	private void showActivityIndicators() {
187
    	setActivityIndicatorsVisibility(View.VISIBLE);
188
    }
189
    
190
    private void hideActivityIndicators() {
191
    	setActivityIndicatorsVisibility(View.INVISIBLE);
192
    }
193
    //using CloudServersException, it works for us too
194
    private CloudServersException parseCloudServersException(HttpResponse response) {
198
		setActivityIndicatorsVisibility(View.VISIBLE);
199
	}
200

  
201
	private void hideActivityIndicators() {
202
		setActivityIndicatorsVisibility(View.INVISIBLE);
203
	}
204

  
205
	// using CloudServersException, it works for us too
206
	private CloudServersException parseCloudServersException(
207
			HttpResponse response) {
195 208
		CloudServersException cse = new CloudServersException();
196 209
		try {
197
		    BasicResponseHandler responseHandler = new BasicResponseHandler();
198
		    String body = responseHandler.handleResponse(response);
199
	    	CloudServersFaultXMLParser parser = new CloudServersFaultXMLParser();
200
	    	SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
201
	    	XMLReader xmlReader = saxParser.getXMLReader();
202
	    	xmlReader.setContentHandler(parser);
203
	    	xmlReader.parse(new InputSource(new StringReader(body)));		    	
204
	    	cse = parser.getException();		    	
210
			BasicResponseHandler responseHandler = new BasicResponseHandler();
211
			String body = responseHandler.handleResponse(response);
212
			CloudServersFaultXMLParser parser = new CloudServersFaultXMLParser();
213
			SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
214
			XMLReader xmlReader = saxParser.getXMLReader();
215
			xmlReader.setContentHandler(parser);
216
			xmlReader.parse(new InputSource(new StringReader(body)));
217
			cse = parser.getException();
205 218
		} catch (ClientProtocolException e) {
206 219
			cse = new CloudServersException();
207 220
			cse.setMessage(e.getLocalizedMessage());
......
219 232
			cse.setMessage(e.getLocalizedMessage());
220 233
		}
221 234
		return cse;
222
    }
223
    
224
    public class EnableCDNTask extends AsyncTask<Void, Void, HttpResponse> {
225
    	private CloudServersException exception;
226
    	
227
    	@Override
235
	}
236

  
237
	public class EnableCDNTask extends AsyncTask<Void, Void, HttpResponse> {
238
		private CloudServersException exception;
239

  
240
		@Override
228 241
		protected HttpResponse doInBackground(Void... arg0) {
229 242
			HttpResponse resp = null;
230 243
			try {
231
				resp = (new ContainerManager()).enable(containerName,  selectedTtlId, selectedLogRetId);
244
				resp = (new ContainerManager()).enable(containerName,
245
						selectedTtlId, selectedLogRetId);
232 246
			} catch (CloudServersException e) {
233 247
				exception = e;
234 248
			}
235 249
			return resp;
236 250
		}
237
    	
251

  
238 252
		@Override
239 253
		protected void onPostExecute(HttpResponse response) {
240 254
			if (response != null) {
......
243 257
					setResult(Activity.RESULT_OK);
244 258
					finish();
245 259
				} else if (statusCode == 202) {
246
						showAlert("Accepted", "Container is already cdn enabled");
247
						finish();
248
				} else  {					
260
					showAlert("Accepted", "Container is already cdn enabled");
261
					finish();
262
				} else {
249 263
					CloudServersException cse = parseCloudServersException(response);
250 264
					if ("".equals(cse.getMessage())) {
251
						showAlert("Error", "There was a problem creating your container.");
265
						showAlert("Error",
266
								"There was a problem creating your container.");
252 267
					} else {
253
						showAlert("Error", "There was a problem creating your container: " + cse.getMessage() + " Check container name and try again");
268
						showAlert("Error",
269
								"There was a problem creating your container: "
270
										+ cse.getMessage()
271
										+ " Check container name and try again");
254 272
					}
255 273
				}
256 274
			} else if (exception != null) {
257
				showAlert("Error", "There was a problem creating your container: " + exception.getMessage()+" Check container name and try again");				
258
			}			
275
				showAlert("Error",
276
						"There was a problem creating your container: "
277
								+ exception.getMessage()
278
								+ " Check container name and try again");
279
			}
259 280
		}
260
    }
261
    public class DisableCDNTask extends AsyncTask<Void, Void, HttpResponse> {
262
    	private CloudServersException exception;
263
    	
264
    	@Override
281
	}
282

  
283
	public class ChangeAttributesCDNTask extends AsyncTask<Void, Void, HttpResponse> {
284
		private CloudServersException exception;
285

  
286
		@Override
265 287
		protected HttpResponse doInBackground(Void... arg0) {
266 288
			HttpResponse resp = null;
267 289
			try {
268
				resp = (new ContainerManager()).disable(containerName, selectedCdnId, selectedTtlId, selectedLogRetId);
290
				resp = (new ContainerManager()).disable(containerName,
291
						selectedCdnId, selectedTtlId, selectedLogRetId);
269 292
			} catch (CloudServersException e) {
270 293
				exception = e;
271 294
			}
272 295
			return resp;
273 296
		}
274
    	
297

  
275 298
		@Override
276 299
		protected void onPostExecute(HttpResponse response) {
277 300
			if (response != null) {
......
282 305
				} else {
283 306
					CloudServersException cse = parseCloudServersException(response);
284 307
					if ("".equals(cse.getMessage())) {
285
						showAlert("Error", "There was a problem creating your container.");
308
						showAlert("Error",
309
								"There was a problem creating your container.");
286 310
					} else {
287
						showAlert("Error", "There was a problem creating your container: " + cse.getMessage() + " Check container name and try again");
311
						showAlert("Error",
312
								"There was a problem creating your container: "
313
										+ cse.getMessage()
314
										+ " Check container name and try again");
288 315
					}
289 316
				}
290 317
			} else if (exception != null) {
291
				showAlert("Error", "There was a problem creating your container: " + exception.getMessage()+" Check container name and try again");				
292
			}			
318
				showAlert("Error",
319
						"There was a problem creating your container: "
320
								+ exception.getMessage()
321
								+ " Check container name and try again");
322
			}
293 323
		}
294
    }
324
	}
325

  
295 326
	public void onClick(View v) {
296 327
		// TODO Auto-generated method stub
297
		
298
	}
299
	
300 328

  
329
	}
301 330

  
302
	}
331
}

Also available in: Unified diff