diff options
Diffstat (limited to 'branches/sca-java-1.x/samples/store-android/src/services/atom/xml')
-rw-r--r-- | branches/sca-java-1.x/samples/store-android/src/services/atom/xml/AtomXML.java | 321 | ||||
-rw-r--r-- | branches/sca-java-1.x/samples/store-android/src/services/atom/xml/CartItemHandler.java | 138 |
2 files changed, 353 insertions, 106 deletions
diff --git a/branches/sca-java-1.x/samples/store-android/src/services/atom/xml/AtomXML.java b/branches/sca-java-1.x/samples/store-android/src/services/atom/xml/AtomXML.java index d5bb7f151e..69f4409ed9 100644 --- a/branches/sca-java-1.x/samples/store-android/src/services/atom/xml/AtomXML.java +++ b/branches/sca-java-1.x/samples/store-android/src/services/atom/xml/AtomXML.java @@ -18,19 +18,30 @@ */ package services.atom.xml; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + import org.apache.http.Header; import org.apache.http.HeaderElement; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.ParseException; import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; +import services.Commons; import services.Item; import android.util.Log; @@ -38,111 +49,209 @@ import android.util.Log; * */ public class AtomXML { - - public static boolean postItem(String ServiceURI, final Item item) - { - DefaultHttpClient client=new DefaultHttpClient(); - HttpPost httpost = new HttpPost(ServiceURI); - - httpost.setEntity(new HttpEntity(){ - - String entry="<entry xmlns=\"http://www.w3.org/2005/Atom\">" + - "<title>item</title>" + - "<content type=\"text/xml\">" + - "<Item xmlns=\"http://services/\">" + - "<name xmlns=\"\">" + item.getName()+ "</name>" + - "<price xmlns=\"\">" +item.getPrice()+"</price>" + - "</Item></content></entry>"; - - class mHeader implements Header - { - public HeaderElement[] getElements() throws ParseException { - // TODO Auto-generated method stub - return null; - } - - public String getName() { - // TODO Auto-generated method stub - return "Content-type"; - } - - public String getValue() { - // TODO Auto-generated method stub - return "application/atom+xml;type=entry"; - } - } - - public void consumeContent() throws IOException { - // TODO Auto-generated method stub - - } - - public InputStream getContent() throws IOException, - IllegalStateException { - // TODO Auto-generated method stub - return new InputStream(){ - - public int read() throws IOException { - // TODO Auto-generated method stub - return this.available(); - } - - }; - } - - public Header getContentEncoding() { - // TODO Auto-generated method stub - return new mHeader(); - } - - public long getContentLength() { - // TODO Auto-generated method stub - return entry.length(); - } - - public Header getContentType() { - // TODO Auto-generated method stub - return new mHeader(); - } - - public boolean isChunked() { - // TODO Auto-generated method stub - return false; - } - - public boolean isRepeatable() { - // TODO Auto-generated method stub - return true; - } - - public boolean isStreaming() { - // TODO Auto-generated method stub - return false; - } - - public void writeTo(OutputStream arg0) throws IOException { - // TODO Auto-generated method stub - - arg0.write(entry.getBytes()); - arg0.flush(); - Log.i("Tuscany", "Entry: "+item+" posted via atom/xml"); - } - - }); - - try { - HttpResponse response = client.execute(httpost); - Log.i("Tuscany", "Atom entry post status: "+response.getStatusLine().toString()); - return true; - } catch (ClientProtocolException e) { - // TODO Auto-generated catch block - Log.e("Tuscany",e.getMessage()); - } catch (IOException e) { - // TODO Auto-generated catch block - Log.e("Tuscany",e.getMessage()); - } - - return false; - } + + public static String postItem(String ServiceURI, final String content) + { + DefaultHttpClient client=new DefaultHttpClient(); + HttpPost httpost = new HttpPost(ServiceURI); + + httpost.setEntity(new HttpEntity(){ + + String entry=content; + + class mHeader implements Header + { + public HeaderElement[] getElements() throws ParseException { + // TODO Auto-generated method stub + return null; + } + + public String getName() { + // TODO Auto-generated method stub + return "Content-type"; + } + + public String getValue() { + // TODO Auto-generated method stub + return "application/atom+xml;type=entry"; + } + } + + public void consumeContent() throws IOException { + // TODO Auto-generated method stub + + } + + public InputStream getContent() throws IOException, + IllegalStateException { + // TODO Auto-generated method stub + return new InputStream(){ + + public int read() throws IOException { + // TODO Auto-generated method stub + return this.available(); + } + + }; + } + + public Header getContentEncoding() { + // TODO Auto-generated method stub + return new mHeader(); + } + + public long getContentLength() { + // TODO Auto-generated method stub + return entry.length(); + } + + public Header getContentType() { + // TODO Auto-generated method stub + return new mHeader(); + } + + public boolean isChunked() { + // TODO Auto-generated method stub + return false; + } + + public boolean isRepeatable() { + // TODO Auto-generated method stub + return true; + } + + public boolean isStreaming() { + // TODO Auto-generated method stub + return false; + } + + public void writeTo(OutputStream arg0) throws IOException { + // TODO Auto-generated method stub + + arg0.write(entry.getBytes()); + arg0.flush(); + //Log.i("Tuscany", "Entry posted via atom/xml"); + } + + }); + + try { + HttpResponse response = client.execute(httpost); + InputStream is =response.getEntity().getContent(); + + //Human readable atom response from servlet + int read; + StringBuffer sb=new StringBuffer(); + while((read=is.read())>0) + { + sb.append((char)read); + } + Log.i("Tuscany", "Atom entry post status: "+response.getStatusLine().toString()); + //Log.i("Tuscany", "Response: "+sb.toString()); + //Try now to parse the consumed data + try { + SAXParserFactory spf = SAXParserFactory.newInstance(); + SAXParser sp; + sp = spf.newSAXParser(); + XMLReader xr = sp.getXMLReader(); + CartItemHandler cih=new CartItemHandler(); + xr.setContentHandler(cih); + + xr.parse(new InputSource(new ByteArrayInputStream(sb.toString().getBytes()))); + is.close(); + + return cih.getCurrentKey(); + + } catch (ParserConfigurationException e) { + // TODO Auto-generated catch block + Log.e(Commons.TAG,e.getMessage()); + } catch (SAXException e) { + // TODO Auto-generated catch block + Log.e(Commons.TAG,e.getLocalizedMessage()); + } + + } catch (ClientProtocolException e) { + // TODO Auto-generated catch block + Log.e(Commons.TAG,e.getMessage()); + } catch (IOException e) { + // TODO Auto-generated catch block + Log.e(Commons.TAG,e.getMessage()); + } + + return null; + } + + public static boolean performdelete(String uri) + { + DefaultHttpClient client=new DefaultHttpClient(); + Log.i(Commons.TAG,Commons.DEL+uri); + HttpDelete del=new HttpDelete(uri); + + try { + client.execute(del); + return true; + } catch (ClientProtocolException e) { + // TODO Auto-generated catch block + Log.e(Commons.TAG,e.getMessage()); + } catch (IOException e) { + // TODO Auto-generated catch block + Log.e(Commons.TAG,e.getMessage()); + } + + return false; + + + } + + public static Item[] getItems(String uri) + { + DefaultHttpClient client=new DefaultHttpClient(); + HttpGet hg=new HttpGet(uri); + HttpResponse hr; + HttpEntity he; + try { + hr=client.execute(hg); + InputStream is =hr.getEntity().getContent(); + + //Human readable atom response from servlet + int read; + StringBuffer sb=new StringBuffer(); + while((read=is.read())>0) + { + sb.append((char)read); + } + Log.i("Tuscany", "Atom get content: "+sb.toString()); + + SAXParserFactory spf = SAXParserFactory.newInstance(); + SAXParser sp; + sp = spf.newSAXParser(); + XMLReader xr = sp.getXMLReader(); + CartItemHandler cih=new CartItemHandler(); + xr.setContentHandler(cih); + + xr.parse(new InputSource(new ByteArrayInputStream(sb.toString().getBytes()))); + is.close(); + Log.e(Commons.TAG,String.valueOf(cih.getItemsCollection().length)); + return cih.getItemsCollection(); + + + } catch (ClientProtocolException e) { + // TODO Auto-generated catch block + Log.e(Commons.TAG,e.getMessage()); + } catch (IOException e) { + // TODO Auto-generated catch block + Log.e(Commons.TAG,e.getMessage()); + } catch (ParserConfigurationException e) { + // TODO Auto-generated catch block + Log.e(Commons.TAG,e.getMessage()); + } catch (SAXException e) { + // TODO Auto-generated catch block + Log.e(Commons.TAG,e.getMessage()); + } + return null; + } + + + } diff --git a/branches/sca-java-1.x/samples/store-android/src/services/atom/xml/CartItemHandler.java b/branches/sca-java-1.x/samples/store-android/src/services/atom/xml/CartItemHandler.java new file mode 100644 index 0000000000..58ba872f87 --- /dev/null +++ b/branches/sca-java-1.x/samples/store-android/src/services/atom/xml/CartItemHandler.java @@ -0,0 +1,138 @@ +/** + * + */ +package services.atom.xml; + +import java.util.ArrayList; +import java.util.List; + +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +import android.util.Log; + +import services.Item; + + +/** + * @author Lookouster + * + */ +public class CartItemHandler extends DefaultHandler { + + + + private boolean in_entry = false; + private boolean in_id = false; + private boolean in_title = false; + private boolean in_content=false; + private boolean in_item=false; + private boolean in_link=false; + private boolean in_name=false; + private boolean in_price=false; + private String currentKey,currentName,currentPrice; + private List<Item> items=new ArrayList<Item>(); + + + + + /** + * @return the currentName + */ + public String getCurrentName() { + return currentName; + } + + + /** + * @return the currentPrice + */ + public String getCurrentPrice() { + return currentPrice; + } + + + public void startElement(String namespaceURI, String localName, + String qName, Attributes atts) throws SAXException { + if (localName.equalsIgnoreCase("entry")) { + this.in_entry = true; + }else if (localName.equalsIgnoreCase("id")) { + this.in_id = true; + }else if (localName.equalsIgnoreCase("title")) { + this.in_title = true; + }else if (localName.equalsIgnoreCase("content")) { + this.in_content = true; + }else if (localName.equalsIgnoreCase("item")) { + this.in_item = true; + }else if (localName.equals("link")) { + this.in_link=true; + } + else if (localName.equalsIgnoreCase("name")) { + this.in_name=true; + } + else if (localName.equalsIgnoreCase("price")) { + this.in_price=true; + } + } + + + public void endElement(String namespaceURI, String localName, String qName) + throws SAXException { + if (localName.equalsIgnoreCase("id")) + this.in_id = false; + if (localName.equalsIgnoreCase("entry")) { + this.in_entry = false; + }else if (localName.equalsIgnoreCase("id")) { + this.in_id = false; + }else if (localName.equalsIgnoreCase("title")) { + this.in_title = false; + }else if (localName.equalsIgnoreCase("content")) { + this.in_content = false; + }else if (localName.equalsIgnoreCase("item")) { + this.in_item = false; + items.add(new Item(currentName, currentPrice, currentKey)); + }else if (localName.equalsIgnoreCase("link")) { + this.in_link=false; + } + else if (localName.equalsIgnoreCase("name")) { + this.in_name=false; + } + else if (localName.equalsIgnoreCase("price")) { + this.in_price=false; + } + } + + + public void characters(char ch[], int start, int length) { + + if(this.in_id){ + if(this.in_entry) + { + currentKey=new String(ch,start, length); + Log.e("kjhkh", currentKey); + } + + } + if(this.in_name) + currentName=new String(ch,start, length); + if(this.in_price) + currentPrice=new String(ch,start, length); + + } + + /** + * @return the key + */ + public String getCurrentKey() { + return currentKey; + } + + public Item[] getItemsCollection() + { + return items.toArray(new Item[items.size()]); + } + + + +} |