From c9bfccc35345ce58fb5774d4b0b6a9868b262c0a Mon Sep 17 00:00:00 2001 From: giorgio Date: Wed, 5 Sep 2012 08:31:30 +0000 Subject: git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1381061 13f79535-47bb-0310-9956-ffa450edef68 --- .../samples/store-java/store/ShoppingCartImpl.java | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 sca-cpp/branches/lightweight-sca/samples/store-java/store/ShoppingCartImpl.java (limited to 'sca-cpp/branches/lightweight-sca/samples/store-java/store/ShoppingCartImpl.java') diff --git a/sca-cpp/branches/lightweight-sca/samples/store-java/store/ShoppingCartImpl.java b/sca-cpp/branches/lightweight-sca/samples/store-java/store/ShoppingCartImpl.java new file mode 100644 index 0000000000..bd7678cce7 --- /dev/null +++ b/sca-cpp/branches/lightweight-sca/samples/store-java/store/ShoppingCartImpl.java @@ -0,0 +1,113 @@ +/* + * 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 store; + +import static org.apache.tuscany.IterableUtil.*; +import static org.apache.tuscany.UUIDUtil.*; + +import org.apache.tuscany.Service; + +/** + * Shopping cart component implementation. + */ +public class ShoppingCartImpl { + + static String cartId = "1234"; + + /** + * Get the shopping cart from the cache. Return an empty cart if not found. + */ + public Iterable getcart(final String id, final Service cache) { + final Iterable iid = list(id); + final Iterable cart = cache.get(iid); + if(cart == null) + return list(); + return cart; + } + + /** + * Post a new item to the cart. Create a new cart if necessary. + */ + public Iterable post(final Iterable collection, final Iterable item, final Service cache) { + final String id = uuid(); + final Iterable newItem = list("'entry", cadr(car(item)), list("'id", id), cadddr(car(item))); + final Iterable cart = cons(newItem, this.getcart(cartId, cache)); + final Iterable iid = list(cartId); + cache.put(iid, cart); + return list(id); + } + + /** + * Find an item in the cart. + */ + Iterable find(final String id, final Iterable cart) { + if(isNil(cart)) + return list(list("'entry", list("'title", "Item"), list("'id", "0"))); + if(id.equals(cadr(caddr(car(cart))))) + return list(car(cart)); + return this.find(id, cdr(cart)); + } + + /** + * Return items from the cart. + */ + public Iterable get(final Iterable id, final Service cache) { + if(isNil(id)) + return list(append(list("'feed", list("'title", "Your Cart"), list("'id", cartId)), this.getcart(cartId, cache))); + return this.find((String)car(id), this.getcart(cartId, cache)); + } + + /** + * Delete items from the cart. + */ + public Boolean delete(final Iterable id, final Service cache) { + if(isNil(id)) { + final Iterable iid = list(cartId); + return cache.delete(iid); + } + return true; + } + + /** + * Return the price of an item. + */ + Double price(final Iterable item) { + System.err.println("price!! " + cadr(cadddr(item))); + return Double.valueOf((String)cadr(assoc("'price", cdr(cadr(cadddr(item)))))); + } + + /** + * Sum the prices of a list of items. + */ + Double sum(final Iterable items) { + if(isNil(items)) + return 0.0; + return this.price((Iterable)car(items)) + this.sum(cdr(items)); + } + + /** + * Return the total price of the items in the cart. + */ + public Double total(final Service cache) { + final Iterable cart = this.getcart(cartId, cache); + return this.sum(cart); + } + +} -- cgit v1.2.3