Author: lresende
Date: Wed Dec 17 11:31:01 2008
New Revision: 727484

URL: http://svn.apache.org/viewvc?rev=727484&view=rev
Log:
[Work in progress] An Android store app consuming SCA services

Added:
    tuscany/branches/sca-java-1.x/samples/store-android/
    tuscany/branches/sca-java-1.x/samples/store-android/.classpath
    tuscany/branches/sca-java-1.x/samples/store-android/.project
    tuscany/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml
    tuscany/branches/sca-java-1.x/samples/store-android/res/
    tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/
    tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png
    tuscany/branches/sca-java-1.x/samples/store-android/res/layout/
    tuscany/branches/sca-java-1.x/samples/store-android/res/layout/main.xml
    tuscany/branches/sca-java-1.x/samples/store-android/res/values/
    tuscany/branches/sca-java-1.x/samples/store-android/res/values/strings.xml
    tuscany/branches/sca-java-1.x/samples/store-android/src/
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/
    
tuscany/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java
    
tuscany/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/Item.java
    
tuscany/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/
    
tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java
    tuscany/branches/sca-java-1.x/samples/store-android/src/store/
    tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/
    tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/R.java
    
tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java

Added: tuscany/branches/sca-java-1.x/samples/store-android/.classpath
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/.classpath?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/.classpath (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/.classpath Wed Dec 17 
11:31:01 2008
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="src" path="src"/>
+       <classpathentry kind="con" 
path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+       <classpathentry kind="output" path="bin"/>
+</classpath>

Added: tuscany/branches/sca-java-1.x/samples/store-android/.project
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/.project?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/.project (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/.project Wed Dec 17 
11:31:01 2008
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>store-android</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>com.android.ide.eclipse.adt.ApkBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>

Added: tuscany/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml 
(added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml Wed 
Dec 17 11:31:01 2008
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android";
+      package="store.android"
+      android:versionCode="1"
+      android:versionName="1.0.0">
+    <application android:icon="@drawable/icon" 
android:label="@string/app_name">
+        <activity android:name=".catalog"
+                  android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+<uses-permission android:name="android.permission.INTERNET"></uses-permission>
+
+</manifest> 
\ No newline at end of file

Added: tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png?rev=727484&view=auto
==============================================================================
Files tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png 
(added) and 
tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png Wed 
Dec 17 11:31:01 2008 differ

Added: tuscany/branches/sca-java-1.x/samples/store-android/res/layout/main.xml
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/res/layout/main.xml?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/res/layout/main.xml 
(added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/res/layout/main.xml Wed 
Dec 17 11:31:01 2008
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    >
+<TextView  
+    android:layout_width="fill_parent" 
+    android:layout_height="wrap_content" 
+    android:text="@string/hello"
+    />
+</LinearLayout>

Added: 
tuscany/branches/sca-java-1.x/samples/store-android/res/values/strings.xml
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/res/values/strings.xml?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/res/values/strings.xml 
(added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/res/values/strings.xml 
Wed Dec 17 11:31:01 2008
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="hello">Hello World, catalog</string>
+    <string name="app_name">store</string>
+</resources>

Added: 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java?rev=727484&view=auto
==============================================================================
--- 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java 
(added)
+++ 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java 
Wed Dec 17 11:31:01 2008
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package services;
+
+public interface Catalog {
+    Item[] get();
+}

Added: 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java?rev=727484&view=auto
==============================================================================
--- 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java
 (added)
+++ 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java
 Wed Dec 17 11:31:01 2008
@@ -0,0 +1,52 @@
+package services;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import services.json.rpc.JSONRpc;
+
+public class CatalogProxy implements Catalog {
+       private static final String jsonRPCServiceURI = 
"http://192.168.1.104:8080/Catalog";;
+    private static final String jsonRPCRequest = "{\"id\": 3, \"method\": 
\"Service.get\", \"params\": []}";
+       
+    private List<Item> catalog = new ArrayList<Item>();
+    
+    public CatalogProxy() {
+       initialize();
+    }
+   
+       public void initialize() {
+               JSONObject json = null; 
+                       
+               try {
+                       json = JSONRpc.invoke(jsonRPCServiceURI, 
jsonRPCRequest);
+                       
+                       if(json == null) {
+                               return; 
+                       }
+                       
+                       JSONArray result = json.getJSONArray("result");
+                       for(int i = 0; i < result.length(); i++) {
+                               Item item = new Item();
+                               
item.setName(result.getJSONObject(i).getString("name"));
+                               
item.setPrice(result.getJSONObject(i).getString("price"));
+                               
+                               catalog.add(item);
+                       }
+                       
+               } catch (JSONException e) {
+                       e.printStackTrace();
+               }
+       }
+
+       public Item[] get() {
+               Item[] catalogArray = new Item[catalog.size()];
+               catalog.toArray(catalogArray);
+               return catalogArray;
+       }
+       
+}

Added: 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/Item.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/services/Item.java?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/src/services/Item.java 
(added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/src/services/Item.java 
Wed Dec 17 11:31:01 2008
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package services;
+
+
+public class Item {
+    private String name;
+    private String price;
+    
+    public Item() {
+    }
+    
+    public Item(String name, String price) {
+        this.name = name;
+        this.price = price;
+    }
+    
+    public String getName() {
+        return name;
+    }
+    
+    public void setName(String name) {
+        this.name = name;
+    }
+    
+    public String getPrice() {
+        return price;
+    }
+    
+    public void setPrice(String price) {
+        this.price = price;
+    }
+
+}

Added: 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java?rev=727484&view=auto
==============================================================================
--- 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java
 (added)
+++ 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java
 Wed Dec 17 11:31:01 2008
@@ -0,0 +1,44 @@
+package services;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import services.json.rpc.JSONRpc;
+
+public class ShoppingCartProxy {
+       private static final String jsonRPCTotalServiceURI = 
"http://192.168.1.104:8080/ShoppingCart/Total";;
+    private static final String jsonRPCTotalRequest = "{\"id\": 4, \"method\": 
\"Service.getTotal\", \"params\": []}";
+
+       public Item[] getItems() {
+               return null;
+       }
+       
+       public void addItem(Item item) {
+               
+       }
+       
+       public void removeItem(Item item) {
+               
+       }
+       
+       public void checkOut() {
+               
+       }
+       
+       public String getTotal() {
+               String total = "";
+               JSONObject json = null; 
+               
+               try {
+                       json = JSONRpc.invoke(jsonRPCTotalServiceURI, 
jsonRPCTotalRequest);
+                       
+                       if(json != null) {
+                               total = json.getString("result");               
+                       }
+               } catch (JSONException e) {
+                       e.printStackTrace();
+               }
+               
+               return total;
+       }
+}

Added: 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java?rev=727484&view=auto
==============================================================================
--- 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java
 (added)
+++ 
tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java
 Wed Dec 17 11:31:01 2008
@@ -0,0 +1,44 @@
+package services.json.rpc;
+
+import java.io.IOException;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class JSONRpc {
+
+       protected JSONRpc() {
+
+       }
+
+       public static JSONObject invoke(String serviceURI, String rpcRequest) 
throws JSONException{
+               HttpClient httpClient = new DefaultHttpClient();
+               HttpPost httpPost = new HttpPost(serviceURI);
+
+               JSONObject result = null;
+               try {
+                       httpPost.setHeader("Content-Type", "text/xml");
+                       httpPost.setEntity(new StringEntity(rpcRequest));
+
+                       HttpResponse httpResponse = 
httpClient.execute(httpPost);
+                       if (httpResponse.getStatusLine().getStatusCode() == 
200) {
+                               String jsonResult = 
EntityUtils.toString(httpResponse.getEntity());
+                               result = new JSONObject(jsonResult);
+                       } else {
+                               String errorMessage = 
httpResponse.getStatusLine()
+                                               .getReasonPhrase();
+                               System.out.println(errorMessage);
+                       }
+               } catch (IOException e) {
+                       e.printStackTrace();
+               }
+
+               return result;
+       }
+}

Added: 
tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/R.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/R.java?rev=727484&view=auto
==============================================================================
--- 
tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/R.java 
(added)
+++ 
tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/R.java 
Wed Dec 17 11:31:01 2008
@@ -0,0 +1,23 @@
+/* AUTO-GENERATED FILE.  DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found.  It
+ * should not be modified by hand.
+ */
+
+package store.android;
+
+public final class R {
+    public static final class attr {
+    }
+    public static final class drawable {
+        public static final int icon=0x7f020000;
+    }
+    public static final class layout {
+        public static final int main=0x7f030000;
+    }
+    public static final class string {
+        public static final int app_name=0x7f040001;
+        public static final int hello=0x7f040000;
+    }
+}

Added: 
tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java?rev=727484&view=auto
==============================================================================
--- 
tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java
 (added)
+++ 
tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java
 Wed Dec 17 11:31:01 2008
@@ -0,0 +1,82 @@
+package store.android;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import services.Catalog;
+import services.CatalogProxy;
+import services.Item;
+import services.ShoppingCartProxy;
+import android.app.ListActivity;
+import android.os.Bundle;
+import android.util.SparseBooleanArray;
+import android.view.View;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ListView;
+
+public class catalog  extends ListActivity {
+       private Catalog catalogProxy = new CatalogProxy();
+       private ShoppingCartProxy shoppingCartProxy = new ShoppingCartProxy(); 
+               
+       private String[] getCatalogItems() {
+               List<String> catalog = new ArrayList<String>();
+               
+        for(Item item : catalogProxy.get()) {
+               catalog.add(item.getName() + " - " + item.getPrice());
+        }      
+        
+        String[] catalogArray = new String[catalog.size()];
+        catalog.toArray(catalogArray);
+        
+        return catalogArray;
+       }
+       
+    /** Called when the activity is first created. */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        
+        setListAdapter(new ArrayAdapter<String>(this,
+                android.R.layout.simple_list_item_multiple_choice, 
this.getCatalogItems()));
+
+        Button addToCart = (Button) findViewById(1);
+        /*
+        addToCart.setOnClickListener(new View.OnClickListener() {
+               public void onCLick(View v) {
+                       this.
+               }
+        });
+        */
+        
+        
+        final ListView listView = getListView();
+
+        listView.setItemsCanFocus(false);
+        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
+    }
+
+       @Override
+       protected void onListItemClick(ListView l, View v, int position, long 
id) {
+               super.onListItemClick(l, v, position, id);
+               
+               String item = this.getCatalogItems()[position];
+               System.out.println("Item clicked : " + item);
+               
+               System.out.println("Selected items:");
+               SparseBooleanArray checkedItems = l.getCheckedItemPositions();
+               for(int i = 0; i < checkedItems.size(); i++) {
+                       if(checkedItems.valueAt(i) == true) {
+                               System.out.println(">>>" + 
this.getCatalogItems()[checkedItems.keyAt(i)]);
+                       }
+               }
+               System.out.println("Total: "  + shoppingCartProxy.getTotal());
+
+               //l.getCheckedItemPosition();
+               //Intent webIntent = new Intent("android.intent.action.VIEW", 
Uri.parse("http://192.168.1.104:8080/ShoppingCart/Cart";));
+               //startActivity(webIntent);
+       } 
+    
+    
+}
\ No newline at end of file


Reply via email to