summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/samples/store-android/src/services/atom/xml
diff options
context:
space:
mode:
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.java321
-rw-r--r--branches/sca-java-1.x/samples/store-android/src/services/atom/xml/CartItemHandler.java138
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()]);
+ }
+
+
+
+}