Package

Source Code of Sample2


import java.io.Serializable;
import java.net.URL;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;

import wwutil.model.annotation.DbType;
import wwutil.model.annotation.Model;
import wwutil.model.annotation.Key;
import wwutil.model.annotation.ModifiedTime;
import wwutil.model.annotation.PrePersist;
import wwutil.jsoda.Jsoda;
import wwutil.jsoda.Dao;
import wwutil.jsoda.Query;

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;



/**
* Sample to illustrate additional annotation, storing compound fields, and querying.
*/
public class Sample2 {

    // Get AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY from environment variables.
    // You can hardcode them here for testing but should remove them afterward.
    private static final String key = System.getenv("AWS_ACCESS_KEY_ID");
    private static final String secret = System.getenv("AWS_SECRET_ACCESS_KEY");



    // A sample model class for illustrating saving and loading from the SimpleDB.
    // Implements Serializable for automatic caching support.
    @Model
    public static class SampleProduct implements Serializable {
        @Key
        public String   productId;
        public String   name;
        public String   desc;
        public Float    price;

        @ModifiedTime                       // Auto fill in the time at object saving.
        public Date     updateTime;

        public URL[]    urls = new URL[2]// for illustrating storing compound field


        public SampleProduct() {}

        public SampleProduct(String productId, String name, String desc, Float price) {
            this.productId = productId;
            this.name = name;
            this.desc = desc;
            this.price = price;
            try {
                urls[0] = new URL("http://foobar.com/" + productId);
                urls[1] = new URL("http://foobar.com/" + name);
            } catch(Exception ignored) {}
        }

        public String toString() {
            String  str =  "   Product [" + productId + ", " + name + ", " + desc + ", " + price + ", " + updateTime + "]";
            for (URL url : urls) {
                str += "\n" + url.toString();
            }
            return str;
        }

        // This method will be called when the object is being saved.
        @PrePersist
        public void myPrePersist() {
            System.out.println("myPrePersist called on " + toString());
            // Fill in the desc field if it's not set.
            if (desc == null)
                desc = "Product " + name;
        }

    }


    public static void main(String[] args)
        throws Exception
    {
        Jsoda       jsoda = new Jsoda(new BasicAWSCredentials(key, secret));

        // Create the table corresponding to the model class.  Only need to do this once.
        jsoda.createModelTable(SampleProduct.class);


        // Save some objects
        Dao<SampleProduct>      dao = jsoda.dao(SampleProduct.class);
        dao.put(new SampleProduct("item1", "Red Shirt", "Premium red shirt", 29.95f));
        dao.put(new SampleProduct("item2", "Tophat", "Tophat for the cat", 90f));
        dao.put(new SampleProduct("item3", "Socks", null, 2.95f));
        dao.put(new SampleProduct("item4", "Steak", "Sizzling steak", 12.95f));
        dao.put(new SampleProduct("item5", null, "product with null name", 0.0f));


        // Create a query object specific to the SampleProduct model class.
        // No additional filtering condition means to get all the items.
        Query<SampleProduct>    query = jsoda.query(SampleProduct.class);

        // Run the count query to get back the count of the query.
        System.out.println("Number of objects: " + query.count());

        // Run the query to get all the items.
        for (SampleProduct product : query.run()) {
            System.out.println(product);
        }

        // Run a query to get all products whose price > 10
        Query<SampleProduct>    query2 = jsoda.query(SampleProduct.class).gt("price", 10);
        for (SampleProduct product : query2.run()) {
            System.out.println(product);
        }

        // Run a query to get the null name product.  Chaining style method calls.
        for (SampleProduct product : jsoda.query(SampleProduct.class)
                 .is_null("name")
                 .run()) {
            System.out.println(product);
        }

        // Run a query to get all products with name not null and price >= 29.95
        for (SampleProduct product : jsoda.query(SampleProduct.class)
                 .is_not_null("name")
                 .ge("price", 29.95f)
                 .run()) {
            System.out.println(product);
        }

        // Run a query to get all products whose price > 10 and order by price descending.
        for (SampleProduct product : jsoda.query(SampleProduct.class)
                 .gt("price", 10)
                 .order_by_desc("price")
                 .run()) {
            System.out.println(product);
        }

    }

}
TOP

Related Classes of Sample2

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.