E.4 The com.mediamania.store package

This package contains classes that model information that is specific to an individual store. It includes objects representing the media to be sold or rented, and information about the customers and the media items they have bought or rented.

E.4.1 com.mediamania.store.Address

 1    package com.mediamania.store;  2      3      4    public class Address {  5        private String      street;  6        private String      city;  7        private String      state;  8        private String      zipcode;  9         10        private Address(  ) 11        { } 12         13        public Address(String street, String city, String state, String zipcode) { 14            this.street = street; 15            this.city = city; 16            this.state = state; 17            this.zipcode = zipcode; 18        }     19        public String getStreet(  ) { 20            return street; 21        } 22        public String getCity(  ) { 23            return city; 24        } 25        public String getState(  ) { 26            return state; 27        } 28        public String getZipcode(  ) { 29            return zipcode; 30        } 31    } 

E.4.2 com.mediamania.store.Customer

 1    package com.mediamania.store;  2      3    import java.util.Set;  4    import java.util.HashSet;  5    import java.util.List;  6    import java.util.ArrayList;  7    import java.util.Collections;  8      9    public class Customer { 10        private String  firstName; 11        private String  lastName; 12        private Address address; 13        private String  phone; 14        private String  email; 15        private Set     currentRentals; // Rental 16        private List    transactionHistory; // Transaction 17         18        private Customer(  ) 19        { } 20        public Customer(String firstName, String lastName, Address addr, 21                        String phone, String email) { 22            this.firstName = firstName; 23            this.lastName = lastName; 24            address = addr; 25            this.phone = phone; 26            this.email = email; 27            currentRentals = new HashSet(  ); 28            transactionHistory = new ArrayList(  ); 29        } 30        public String getFirstName(  ) { 31            return firstName; 32        } 33        public String getLastName(  ) { 34            return lastName; 35        } 36        public Address getAddress(  ) { 37            return address; 38        } 39        public String getPhone(  ) { 40            return phone; 41        } 42        public String getEmail(  ) { 43            return email; 44        } 45        public void addRental(Rental rental){ 46            currentRentals.add(rental); 47        } 48        public Set getRentals(  ) { 49            return Collections.unmodifiableSet(currentRentals); 50        } 51        public void addTransaction(Transaction trans) { 52            transactionHistory.add(trans); 53        } 54        public List getTransactionHistory(  ) { 55            return Collections.unmodifiableList(transactionHistory); 56        } 57    } 

E.4.3 com.mediamania.store.MediaItem

 1    package com.mediamania.store;  2      3    import java.util.Set;  4    import java.util.HashSet;  5    import java.util.Collections;  6    import java.math.BigDecimal;  7    import com.mediamania.content.MediaContent;  8      9    public class MediaItem { 10        private MediaContent    content; 11        private String          format; 12        private BigDecimal      purchasePrice; 13        private RentalCode      rentalCode; 14        private Set             rentalItems; // RentalItem 15        private int             quantityInStockForPurchase; 16        private int             soldYTD; 17        private int             rentedYTD; 18         19        private MediaItem(  ) 20        { } 21         22        public MediaItem(MediaContent content, String format, BigDecimal price, 23                         RentalCode rentalCode, int number4sale) { 24            this.content = content; 25            content.addMediaItem(this); 26            this.format = format; 27            purchasePrice = price; 28            this.rentalCode = rentalCode; 29            rentalItems = new HashSet(  ); 30            quantityInStockForPurchase = number4sale; 31            soldYTD = 0; 32            rentedYTD = 0; 33        } 34        public MediaContent getMediaContent(  ) { 35            return content; 36        } 37        public BigDecimal getPurchasePrice(  ) { 38            return purchasePrice; 39        } 40        public String getFormat(  ) { 41            return format; 42        } 43        public RentalCode getRentalCode(  ) { 44            return rentalCode; 45        } 46        public void setRentalCode(RentalCode code) { 47            rentalCode = code; 48        } 49        public void addRentalItem(RentalItem rentalItem) { 50            rentalItems.add(rentalItem); 51        } 52        public Set getRentalItems(  ) { 53            return Collections.unmodifiableSet(rentalItems); 54        } 55        public void sold(int qty) { 56            if (qty > quantityInStockForPurchase) { 57                // report error 58            } 59            quantityInStockForPurchase -= qty; 60            soldYTD += qty; 61        } 62    } 

E.4.4 com.mediamania.store.Purchase

 1    package com.mediamania.store;  2      3    import java.math.BigDecimal;  4    import java.util.Date;  5      6    public class Purchase extends Transaction {  7        private MediaItem   mediaItem;  8          9        private Purchase(  ) 10        { }     11        public Purchase(Customer cust, Date date, BigDecimal price, MediaItem item){ 12            super(cust, date); 13            setPrice(price); 14            mediaItem = item; 15            price = item.getPurchasePrice(  ); 16        }    17        public MediaItem getMediaItem(  ) { 18            return mediaItem; 19        }    20    } 

E.4.5 com.mediamania.store.Rental

 1    package com.mediamania.store;  2      3    import java.util.Date;  4    import java.util.Calendar;  5    import java.util.GregorianCalendar;  6      7    public class Rental extends Transaction {  8        private RentalItem      rentalItem;  9        private RentalCode      rentalCode; 10        private Date            returnDate; 11        private Date            actualReturnDate; 12         13        private Rental(  ) 14        { } 15         16        public Rental(Customer cust, Date date, RentalItem item) { 17            super(cust, date); 18            rentalItem = item; 19            item.setCurrentRental(this); 20            rentalCode = item.getMediaItem().getRentalCode(  ); 21            setPrice(rentalCode.getCost(  )); 22            GregorianCalendar cal = new GregorianCalendar(  ); 23            cal.setTime(date); 24            cal.add(Calendar.DATE, rentalCode.getNumberOfDays(  )); 25            returnDate = cal.getTime(  ); 26            actualReturnDate = null; 27        } 28        public RentalItem getRentalItem(  ) { 29            return rentalItem; 30        } 31        public MediaItem getMediaItem(  ) { 32            return rentalItem.getMediaItem(  ); 33        }     34        public void setDateReturned(Date d) { 35            actualReturnDate = d; 36        } 37    } 

E.4.6 com.mediamania.store.RentalCode

 1    package com.mediamania.store;  2      3    import java.math.BigDecimal;  4      5    public class RentalCode  6    {  7        private String      code;  8        private int         numberOfDays;  9        private BigDecimal  cost; 10        private BigDecimal  lateFeePerDay; 11         12        private RentalCode(  ) 13        { } 14         15        public RentalCode(String code, int days, 16                          BigDecimal cost, BigDecimal lateFee) { 17            this.code = code; 18            numberOfDays = days; 19            this.cost = cost; 20            lateFeePerDay = lateFee; 21        } 22        public String getCode(  ) { 23            return code; 24        } 25        public int getNumberOfDays(  ) { 26            return numberOfDays; 27        } 28        public BigDecimal getCost(  ) { 29            return cost; 30        } 31        public BigDecimal getLateFeePerDay(  ) { 32            return lateFeePerDay; 33        } 34    } 

E.4.7 com.mediamania.store.RentalItem

 1    package com.mediamania.store;  2      3    public class RentalItem  4    {  5        private MediaItem       mediaItem;  6        private String          serialNumber;  7        private Rental          currentRental;  8          9        private RentalItem(  ) 10        { } 11        public RentalItem(MediaItem item, String serialNum) { 12            mediaItem = item; 13            item.addRentalItem(this); 14            serialNumber = serialNum; 15            currentRental = null; 16        } 17        public MediaItem getMediaItem(  ) { 18            return mediaItem; 19        } 20        public Rental getCurrentRental(  ) { 21            return currentRental; 22        } 23        public void setCurrentRental(Rental rental) { 24            currentRental = rental; 25        } 26    } 

E.4.8 com.mediamania.store.StoreQueries

 1    package com.mediamania.store;  2      3    import java.util.Iterator;  4    import java.util.Collection;  5    import java.util.HashMap;  6    import java.util.Date;  7    import java.util.Properties;  8    import java.io.InputStream;  9    import java.io.IOException; 10    import java.math.BigDecimal; 11    import javax.jdo.*; 12    import com.mediamania.content.*; 13    import com.mediamania.store.*; 14     15    public class StoreQueries { 16         17        public static RentalCode getRentalCode(PersistenceManager pm, 18                                               String codeName) { 19            Extent codeExtent = pm.getExtent(RentalCode.class, false); 20            Query query = pm.newQuery(codeExtent, "code == codeName"); 21            query.declareParameters("String codeName"); 22            Collection result = (Collection) query.execute(codeName); 23            Iterator iter = result.iterator(  ); 24            RentalCode rentalCode =  25                (RentalCode) (iter.hasNext() ? iter.next(  ) : null); 26            query.close(result); 27            return rentalCode; 28        } 29         30        public static Movie getMovieByTitle(PersistenceManager pm, 31                                            String movieTitle) { 32            Extent movieExtent = pm.getExtent(Movie.class, true); 33            Query query = pm.newQuery(movieExtent, "title == movieTitle"); 34            query.declareParameters("String movieTitle"); 35            Collection result = (Collection) query.execute(movieTitle); 36            Iterator iter = result.iterator(  ); 37            Movie movie = (Movie) (iter.hasNext() ? iter.next(  ) : null); 38            query.close(result); 39            return movie; 40        } 41         42        public static Customer getCustomer(PersistenceManager pm, 43                                        String fname, String lname) { 44            Extent customerExtent = pm.getExtent(Customer.class, true); 45            String filter = "fname == firstName && lname == lastName"; 46            Query query = pm.newQuery(customerExtent, filter); 47            query.declareParameters("String fname, String lname"); 48            Collection result = (Collection) query.execute(fname, lname); 49            Iterator iter = result.iterator(  ); 50            Customer customer = (Customer) (iter.hasNext() ? iter.next(  ) : null); 51            query.close(result); 52            return customer; 53        } 54         55        public static void queryCustomers(PersistenceManager pm, 56                                        String city, String state) { 57            Extent customerExtent = pm.getExtent(Customer.class, true); 58            String filter = "address.city == city && address.state == state"; 59            Query query = pm.newQuery(customerExtent, filter); 60            query.declareParameters("String city, String state"); 61            query.setOrdering( 62            "address.zipcode ascending, lastName ascending, firstName ascending"); 63            Collection result = (Collection) query.execute(city, state); 64            Iterator iter = result.iterator(  ); 65            while (iter.hasNext(  )) { 66                Customer customer = (Customer) iter.next(  ); 67                Address address = customer.getAddress(  ); 68                System.out.print(address.getZipcode(  ));     System.out.print(" "); 69                System.out.print(customer.getFirstName(  ));  System.out.print(" "); 70                System.out.print(customer.getLastName(  ));   System.out.print(" "); 71                System.out.println(address.getStreet(  )); 72            } 73            query.close(result);    74        } 75     76        public static void queryMovie1(PersistenceManager pm, 77                                   String rating, int runtime, MediaPerson dir) { 78            Extent movieExtent = pm.getExtent(Movie.class, true); 79            String filter = 80            "rating == movieRating && runningTime <= runTime && director == dir"; 81            Query query = pm.newQuery(movieExtent, filter); 82            query.declareParameters( 83                        "String movieRating, int runTime, MediaPerson dir"); 84            Collection result = (Collection) 85                                query.execute(rating, new Integer(runtime), dir); 86            Iterator iter = result.iterator(  ); 87            while (iter.hasNext(  )) { 88                Movie movie = (Movie) iter.next(  ); 89                System.out.println(movie.getTitle(  )); 90            } 91            query.close(result); 92        } 93     94        public static void queryMovie2(PersistenceManager pm, 95                                   String rating, int runtime, MediaPerson dir, 96                                   Date date) { 97            Extent movieExtent = pm.getExtent(Movie.class, true); 98            String filter = "rating == movieRating && runningTime <= runTime && " + 99                            "director == dir && releaseDate >= date"; 100            Query query = pm.newQuery(movieExtent, filter); 101            query.declareImports("import java.util.Date"); 102            query.declareParameters( 103                    "String movieRating, int runTime, MediaPerson dir, Date date"); 104            HashMap parameters = new HashMap(  ); 105            parameters.put("movieRating", rating); 106            parameters.put("runTime", new Integer(runtime)); 107            parameters.put("dir", dir); 108            parameters.put("date", date); 109            Collection result = (Collection) query.executeWithMap(parameters); 110            Iterator iter = result.iterator(  ); 111            while (iter.hasNext(  )) { 112                Movie movie = (Movie) iter.next(  ); 113                System.out.println(movie.getTitle(  )); 114            } 115            query.close(result); 116        } 117     118        public static void queryMovie3(PersistenceManager pm, 119                                        String rating, int runtime, MediaPerson dir, 120                                        Date date) { 121            Extent movieExtent = pm.getExtent(Movie.class, true); 122            String filter = "rating == movieRating && runningTime <= runTime && " + 123                            "director == dir && releaseDate >= date"; 124            Query query = pm.newQuery(movieExtent, filter); 125            query.declareImports("import java.util.Date"); 126            query.declareParameters( 127                    "String movieRating, int runTime, MediaPerson dir, Date date"); 128            Object[] parameters = { rating, new Integer(runtime), dir, date }; 129            Collection result = (Collection) query.executeWithArray(parameters); 130            Iterator iter = result.iterator(  ); 131            while (iter.hasNext(  )) { 132                Movie movie = (Movie) iter.next(  ); 133                System.out.println(movie.getTitle(  )); 134            } 135            query.close(result); 136        } 137         138        public static void queryMovie4(PersistenceManager pm) { 139            Extent movieExtent = pm.getExtent(Movie.class, true); 140            String filter = "!(rating == \"G\"  rating == \"PG\") && " + 141                            "(runningTime >= 60 && runningTime <= 105)"; 142            Query query = pm.newQuery(movieExtent, filter); 143            Collection result = (Collection) query.execute(  ); 144            Iterator iter = result.iterator(  ); 145            while (iter.hasNext(  )) { 146                Movie movie = (Movie) iter.next(  ); 147                System.out.println(movie.getTitle(  )); 148            } 149            query.close(result); 150        } 151     152        public static void getDirectorAlsoActor(PersistenceManager pm) { 153            Extent movieExtent = pm.getExtent(Movie.class, true); 154            String filter = "cast.contains(role) && role.actor == director"; 155            Query query = pm.newQuery(movieExtent, filter); 156            query.declareVariables("Role role"); 157            Collection result = (Collection) query.execute(  ); 158            Iterator iter = result.iterator(  ); 159            while (iter.hasNext(  )) { 160                Movie movie = (Movie) iter.next(  ); 161                System.out.print(movie.getTitle(  )); 162                System.out.print(", "); 163                System.out.println(movie.getDirector().getName(  )); 164            } 165        } 166     167        public static void queryTransactions(PersistenceManager pm, Customer cust) { 168            Query query = pm.newQuery(com.mediamania.store.Transaction.class, 169                                      cust.getTransactionHistory(  )); 170            String filter = 171                "((Movie)(((Rental)this).rentalItem.mediaItem.content)).director." + 172                "mediaName == \"James Cameron\""; 173            query.declareImports("import com.mediamania.content.Movie"); 174            query.setFilter(filter); 175            Collection result = (Collection) query.execute(  ); 176            Iterator iter = result.iterator(  ); 177            while (iter.hasNext(  ) ){ 178                Rental rental = (Rental) iter.next(  ); 179                MediaContent content = 180                        rental.getRentalItem().getMediaItem().getMediaContent(  ); 181                System.out.println(content.getTitle(  )); 182            } 183            query.close(result); 184        } 185     186        public static void queryMoviesSeenInCity(PersistenceManager pm, 187                                                 String city) { 188            String filter = "mediaItems.contains(item) &&" + 189                        "(item.rentalItems.contains(rentItem) && " + 190                        "(rentItem.currentRental.customer.address.city == city))"; 191            Extent movieExtent = pm.getExtent(Movie.class, true); 192            Query query = pm.newQuery(movieExtent, filter); 193            query.declareImports("import com.mediamania.store.MediaItem; " + 194                             "import com.mediamania.store.RentalItem"); 195            query.declareVariables("MediaItem item; RentalItem rentItem"); 196            query.declareParameters("String city"); 197            Collection result = (Collection) query.execute(city); 198            Iterator iter = result.iterator(  ); 199            while (iter.hasNext(  )) { 200                Movie movie = (Movie) iter.next(  ); 201                System.out.println(movie.getTitle(  )); 202            } 203            query.close(result); 204        } 205     206        public static void queryTransactionsInCity(PersistenceManager pm, 207                                   String city, String state, Date acquired) { 208            Extent transactionExtent = 209                        pm.getExtent(com.mediamania.store.Transaction.class, true); 210            Query query = pm.newQuery(transactionExtent); 211            query.declareParameters("String thecity, String thestate, Date date"); 212            query.declareImports("import java.util.Date"); 213            String filter = "customer.address.city == thecity && " + 214                    "customer.address.state == thestate && acquisitionDate >= date"; 215            query.setFilter(filter); 216            String order =  "customer.address.zipcode descending, " + 217                          "customer.lastName ascending, " + 218                          "customer.firstName ascending, acquisitionDate ascending"; 219            query.setOrdering(order); 220            Collection result = (Collection) query.execute(city, state, acquired); 221            Iterator iter = result.iterator(  ); 222            while (iter.hasNext(  )) { 223                com.mediamania.store.Transaction tx = 224                                    (com.mediamania.store.Transaction) iter.next(  );         225                Customer cust = tx.getCustomer(  ); 226                Address addr = cust.getAddress(  ); 227                System.out.print(addr.getZipcode(  )); 228                System.out.print(cust.getLastName(  ));  System.out.print(" "); 229                System.out.print(cust.getFirstName(  )); System.out.print(" "); 230                System.out.println(tx.getAcquisitionDate(  ));         231            } 232            query.close(result); 233        } 234     235        public static void queryProfits(PersistenceManager pm, BigDecimal value, 236                                        BigDecimal sellCost, BigDecimal rentCost) { 237            Query query = pm.newQuery(MediaItem.class); 238            query.declareImports("import java.math.BigDecimal"); 239            query.declareParameters( 240                    "BigDecimal value, BigDecimal sellCost, BigDecimal rentCost"); 241            query.setFilter("soldYTD * (purchasePrice - sellCost) + " + 242                            "rentedYTD * (rentalCode.cost - rentCost) > value"); 243            Collection result = (Collection)query.execute(value, sellCost,rentCost); 244            Iterator iter = result.iterator(  ); 245            while (iter.hasNext(  )) { 246                MediaItem item = (MediaItem) iter.next(  ); 247                // process MediaItem 248            } 249            query.close(result); 250        } 251     252        public static RentalItem getRentalItem( 253                                    PersistenceManager pm, String serialNumber) { 254            Query query = pm.newQuery(RentalItem.class); 255            query.declareParameters("String serialNumber"); 256            query.setFilter("this.serialNumber == serialNumber"); 257            Collection result = (Collection)query.execute(serialNumber); 258            Iterator iter = result.iterator(  ); 259            RentalItem item = (RentalItem) (iter.hasNext() ? iter.next(  ) : null); 260            query.close(result); 261            return item; 262        } 263         264        public static MediaItem getMediaItem( 265                            PersistenceManager pm, String title, String format) { 266            Query query = pm.newQuery(MediaItem.class); 267            query.declareParameters("String title, String format"); 268            query.setFilter("this.format == format && content.title == title"); 269            Collection result = (Collection)query.execute(title, format); 270            Iterator iter = result.iterator(  ); 271            MediaItem item = (MediaItem) (iter.hasNext() ? iter.next(  ) : null); 272            query.close(result); 273            return item; 274        } 275     276        public static Query newQuery(PersistenceManager pm, Class cl,InputStream is)  277                                    throws IOException { 278            Properties props = new Properties(  ); 279            props.load(is); 280            Query q = pm.newQuery(cl); 281            q.setFilter((String)props.get("filter")); 282            q.declareParameters((String)props.get("parameters")); 283            q.declareVariables((String)props.get("variables")); 284            q.setOrdering((String)props.get("ordering")); 285            q.declareImports((String)props.get("imports")); 286            q.setIgnoreCache(Boolean.getBoolean((String)props.get("ignoreCache"))); 287            return q; 288        } 289    } 

E.4.9 com.mediamania.store.Transaction

 1    package com.mediamania.store;  2      3    import java.util.Date;  4    import java.math.BigDecimal;  5      6    public abstract class Transaction  7    {  8        protected   Customer    customer;  9        protected   Date        acquisitionDate; 10        protected   BigDecimal  price; 11         12        protected Transaction(  ) 13        { } 14        protected Transaction(Customer cust, Date date) { 15            customer = cust; 16            acquisitionDate = date; 17        } 18        public abstract MediaItem getMediaItem(  ); 19         20        public Customer getCustomer(  ) { 21            return customer; 22        } 23        public Date getAcquisitionDate(  ) { 24            return acquisitionDate; 25        } 26        public BigDecimal getPrice(  ) { 27            return price; 28        } 29        public void setPrice(BigDecimal price) { 30            this.price = price; 31        } 32    } 


Java Data Objects
ADO.NET Programming with CDR (Wordware programming library)
ISBN: 596002769
EAN: 2147483647
Year: 2005
Pages: 159

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net