Statistics
| Branch: | Revision:

root / src / com / rackspace / cloud / servers / api / client / BackupManager.java @ 1a79c76b

History | View | Annotate | Download (3.1 kB)

1 1a79c76b Adam Menz
/**
2 1a79c76b Adam Menz
 * 
3 1a79c76b Adam Menz
 */
4 1a79c76b Adam Menz
package com.rackspace.cloud.servers.api.client;
5 1a79c76b Adam Menz
6 1a79c76b Adam Menz
import java.io.IOException;
7 1a79c76b Adam Menz
import java.io.StringReader;
8 1a79c76b Adam Menz
9 1a79c76b Adam Menz
import javax.xml.parsers.FactoryConfigurationError;
10 1a79c76b Adam Menz
import javax.xml.parsers.ParserConfigurationException;
11 1a79c76b Adam Menz
import javax.xml.parsers.SAXParser;
12 1a79c76b Adam Menz
import javax.xml.parsers.SAXParserFactory;
13 1a79c76b Adam Menz
14 1a79c76b Adam Menz
import org.apache.http.HttpResponse;
15 1a79c76b Adam Menz
import org.apache.http.client.ClientProtocolException;
16 1a79c76b Adam Menz
import org.apache.http.client.methods.HttpGet;
17 1a79c76b Adam Menz
import org.apache.http.impl.client.BasicResponseHandler;
18 1a79c76b Adam Menz
import org.xml.sax.InputSource;
19 1a79c76b Adam Menz
import org.xml.sax.SAXException;
20 1a79c76b Adam Menz
import org.xml.sax.XMLReader;
21 1a79c76b Adam Menz
22 1a79c76b Adam Menz
import android.content.Context;
23 1a79c76b Adam Menz
24 1a79c76b Adam Menz
import com.rackspace.cloud.files.api.client.CustomHttpClient;
25 1a79c76b Adam Menz
import com.rackspace.cloud.servers.api.client.parsers.BackupXMLParser;
26 1a79c76b Adam Menz
import com.rackspace.cloud.servers.api.client.parsers.CloudServersFaultXMLParser;
27 1a79c76b Adam Menz
28 1a79c76b Adam Menz
public class BackupManager extends EntityManager {
29 1a79c76b Adam Menz
30 1a79c76b Adam Menz
        public Backup getBackup(Server server, Context context) throws CloudServersException {
31 1a79c76b Adam Menz
                
32 1a79c76b Adam Menz
                CustomHttpClient httpclient = new CustomHttpClient(context);
33 1a79c76b Adam Menz
                HttpGet get = new HttpGet(Account.getAccount().getServerUrl() + "/servers/" + server.getId() + "/backup_schedule/.xml" + cacheBuster());
34 1a79c76b Adam Menz
                Backup backup = new Backup();
35 1a79c76b Adam Menz
                get.addHeader("X-Auth-Token", Account.getAccount().getAuthToken());
36 1a79c76b Adam Menz
                
37 1a79c76b Adam Menz
                try {                        
38 1a79c76b Adam Menz
                        HttpResponse resp = httpclient.execute(get);                    
39 1a79c76b Adam Menz
                    BasicResponseHandler responseHandler = new BasicResponseHandler();
40 1a79c76b Adam Menz
                    String body = responseHandler.handleResponse(resp);
41 1a79c76b Adam Menz
                    
42 1a79c76b Adam Menz
                    if (resp.getStatusLine().getStatusCode() == 200 || resp.getStatusLine().getStatusCode() == 203) {                            
43 1a79c76b Adam Menz
                            BackupXMLParser backupXMLParser = new BackupXMLParser();
44 1a79c76b Adam Menz
                            SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
45 1a79c76b Adam Menz
                            XMLReader xmlReader = saxParser.getXMLReader();
46 1a79c76b Adam Menz
                            xmlReader.setContentHandler(backupXMLParser);
47 1a79c76b Adam Menz
                            xmlReader.parse(new InputSource(new StringReader(body)));                            
48 1a79c76b Adam Menz
                            backup = backupXMLParser.getBackup();                            
49 1a79c76b Adam Menz
                    } else {
50 1a79c76b Adam Menz
                            CloudServersFaultXMLParser parser = new CloudServersFaultXMLParser();
51 1a79c76b Adam Menz
                            SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
52 1a79c76b Adam Menz
                            XMLReader xmlReader = saxParser.getXMLReader();
53 1a79c76b Adam Menz
                            xmlReader.setContentHandler(parser);
54 1a79c76b Adam Menz
                            xmlReader.parse(new InputSource(new StringReader(body)));                            
55 1a79c76b Adam Menz
                            CloudServersException cse = parser.getException();                            
56 1a79c76b Adam Menz
                            throw cse;
57 1a79c76b Adam Menz
                    }
58 1a79c76b Adam Menz
                } catch (ClientProtocolException e) {
59 1a79c76b Adam Menz
                        CloudServersException cse = new CloudServersException();
60 1a79c76b Adam Menz
                        cse.setMessage(e.getLocalizedMessage());
61 1a79c76b Adam Menz
                        throw cse;
62 1a79c76b Adam Menz
                } catch (IOException e) {
63 1a79c76b Adam Menz
                        CloudServersException cse = new CloudServersException();
64 1a79c76b Adam Menz
                        cse.setMessage(e.getLocalizedMessage());
65 1a79c76b Adam Menz
                        throw cse;
66 1a79c76b Adam Menz
                } catch (ParserConfigurationException e) {
67 1a79c76b Adam Menz
                        CloudServersException cse = new CloudServersException();
68 1a79c76b Adam Menz
                        cse.setMessage(e.getLocalizedMessage());
69 1a79c76b Adam Menz
                        throw cse;
70 1a79c76b Adam Menz
                } catch (SAXException e) {
71 1a79c76b Adam Menz
                        CloudServersException cse = new CloudServersException();
72 1a79c76b Adam Menz
                        cse.setMessage(e.getLocalizedMessage());
73 1a79c76b Adam Menz
                        throw cse;
74 1a79c76b Adam Menz
                } catch (FactoryConfigurationError e) {
75 1a79c76b Adam Menz
                        CloudServersException cse = new CloudServersException();
76 1a79c76b Adam Menz
                        cse.setMessage(e.getLocalizedMessage());
77 1a79c76b Adam Menz
                        throw cse;
78 1a79c76b Adam Menz
                }
79 1a79c76b Adam Menz
                
80 1a79c76b Adam Menz
                
81 1a79c76b Adam Menz
                return backup;
82 1a79c76b Adam Menz
        }
83 1a79c76b Adam Menz
84 1a79c76b Adam Menz
        
85 1a79c76b Adam Menz
}