updated to complete
This commit is contained in:
@@ -1,37 +1,140 @@
|
||||
/**
|
||||
* license: GPLv3
|
||||
edu.inventorym
|
||||
*/
|
||||
package edu.inventorym;
|
||||
|
||||
public class Api {
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
}
|
||||
import edu.inventorym.model.Customer;
|
||||
import edu.inventorym.model.CustomerManager;
|
||||
import edu.inventorym.model.Drawing;
|
||||
import edu.inventorym.model.InventoryList;
|
||||
import edu.inventorym.model.InventoryManager;
|
||||
import edu.inventorym.model.InventoryPiece;
|
||||
import edu.inventorym.model.Painting;
|
||||
import edu.inventorym.model.Print;
|
||||
import edu.inventorym.model.Sculpture;
|
||||
import edu.inventorym.model.Transaction;
|
||||
import edu.inventorym.model.TransactionList;
|
||||
import edu.inventorym.model.TransactionManager;
|
||||
|
||||
public interface Api {
|
||||
|
||||
void callerInterface(){
|
||||
//@Comment
|
||||
/*
|
||||
1. Add new art object to the inventory. Your manager must check that the art is not already in the inventory before adding
|
||||
2. Remove art object from the inventory
|
||||
3. Return a list of all art objects from inventory
|
||||
public static void main(String[] args) {
|
||||
|
||||
3. Add a new transaction object to the list manager is handling
|
||||
4. Calculate and return transaction price
|
||||
5. Complete transaction
|
||||
6. Remove transaction object
|
||||
callerInterface();
|
||||
|
||||
7. Format and return transaction data in print format
|
||||
|
||||
8. Retrieve and return transactions based on:
|
||||
• customer email
|
||||
• transaction date
|
||||
• transaction id
|
||||
• art id
|
||||
9. Update inventory file(s) on local system
|
||||
}
|
||||
|
||||
10. Update transaction file(s) on local system
|
||||
|
||||
11. Any other functionality needed to support the above requirements
|
||||
*/
|
||||
}
|
||||
static void callerInterface() {
|
||||
// @Comment
|
||||
/*
|
||||
* 1. Add new art object to the inventory. Your manager must check that the art
|
||||
* is not already in the inventory before adding
|
||||
*/
|
||||
|
||||
InventoryManager.getInstance().getArtPieceTypes().forEach(System.out::println);
|
||||
|
||||
/* Add Inventory */
|
||||
|
||||
InventoryManager.getInstance().add(make(new Drawing()));
|
||||
InventoryManager.getInstance().add(make(new Print()));
|
||||
InventoryManager.getInstance().add(make(new Painting()));
|
||||
InventoryManager.getInstance().add(make(new Sculpture()));
|
||||
InventoryManager.getInstance().add(make(new Sculpture()));
|
||||
InventoryManager.getInstance().add(make(new Sculpture()));
|
||||
|
||||
/*
|
||||
* 2. Remove art object from the inventory
|
||||
*/
|
||||
InventoryManager imgr = InventoryManager.getInstance();
|
||||
InventoryPiece art = imgr.find("####");
|
||||
imgr.Remove(art);
|
||||
/*
|
||||
* 3. Return a list of all art objects from inventory
|
||||
*/
|
||||
CustomerManager cmgr = CustomerManager.getInstance();
|
||||
Customer customer = cmgr.findByEmail("kate@it.com");
|
||||
InventoryList customerCart = new InventoryList();
|
||||
|
||||
TransactionManager tmgr = TransactionManager.getInstance();
|
||||
|
||||
/*
|
||||
* 3. Add a new transaction object to the list manager is handling
|
||||
*/
|
||||
Transaction tran = tmgr.TransactRequest(customer, customerCart, new Transaction());
|
||||
/*
|
||||
* 4. Calculate and return transaction price
|
||||
* 5. Complete transaction
|
||||
* 6. Remove transaction object
|
||||
*/
|
||||
tmgr.compute(tran);
|
||||
tmgr.complete(tran);
|
||||
tmgr.remove(tran);
|
||||
/*
|
||||
* 7. Format and return transaction data in print format
|
||||
*/
|
||||
System.out.println( tran );
|
||||
/*
|
||||
* 8. Retrieve and return transactions based on:
|
||||
* customer email
|
||||
*/
|
||||
TransactionList foundTrans = tmgr.findByCustomerEmail(customer.getEmail());
|
||||
/*
|
||||
* transaction date
|
||||
*/
|
||||
foundTrans = tmgr.findByTransactionDate(tran.getCompleted());
|
||||
/*
|
||||
* transaction id
|
||||
*/
|
||||
foundTrans = tmgr.findByTransactionId(tran.getId());
|
||||
/*
|
||||
* art id
|
||||
*/
|
||||
foundTrans = tmgr.findByTransactionId(tran.getId());
|
||||
|
||||
/*
|
||||
* 9. Update inventory file(s) on local system
|
||||
*/
|
||||
InventoryManager.getInstance().save();
|
||||
/*
|
||||
* 10. Update transaction file(s) on local system
|
||||
*/
|
||||
TransactionManager.getInstance().save();
|
||||
}
|
||||
|
||||
static Drawing make(Drawing o) {
|
||||
o.setTitle("Windy Rowing");
|
||||
o.setDescription("East Market Square find. Local Author.");
|
||||
o.setAuthor("Dave Janson");
|
||||
o.setCreated(ZonedDateTime.now());
|
||||
return o;
|
||||
}
|
||||
|
||||
static Painting make(Painting o) {
|
||||
o.setTitle("Windy Rowing");
|
||||
o.setDescription("East Market Square find. Local Author.");
|
||||
o.setAuthor("Dave Janson");
|
||||
o.setCreated(ZonedDateTime.now());
|
||||
return o;
|
||||
}
|
||||
|
||||
static Print make(Print o) {
|
||||
o.setTitle("Windy Rowing");
|
||||
o.setDescription("East Market Square find. Local Author.");
|
||||
o.setAuthor("Dave Janson");
|
||||
|
||||
o.setCreated(ZonedDateTime.now());
|
||||
return o;
|
||||
}
|
||||
|
||||
static Sculpture make(Sculpture o) {
|
||||
o.setTitle("Windy Rowing");
|
||||
o.setDescription("East Market Square find. Local Author.");
|
||||
o.setAuthor("Dave Janson");
|
||||
|
||||
o.setCreated(ZonedDateTime.now());
|
||||
return o;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class Customer {
|
||||
|
||||
String nameFirst;
|
||||
String nameLast;
|
||||
String mailing;
|
||||
String phone;
|
||||
String email;
|
||||
|
||||
public Customer(){}
|
||||
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class CustomerList {
|
||||
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class CustomerManager {
|
||||
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class Drawing extends InventoryPiece {
|
||||
|
||||
public String style;
|
||||
public String technique;
|
||||
public String category;
|
||||
|
||||
public Drawing() {
|
||||
super(InventoryType.DRAWING);
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class InvalidArtOperationException extends RuntimeException {
|
||||
public InvalidArtOperationException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public InvalidArtOperationException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public InvalidArtOperationException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class InvalidTransOperationException extends RuntimeException {
|
||||
public InvalidTransOperationException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public InvalidTransOperationException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public InvalidTransOperationException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class InvalidTransactionException extends RuntimeException {
|
||||
public InvalidTransactionException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public InvalidTransactionException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public InvalidTransactionException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class InventoryList extends ArrayList<InventoryPiece> {
|
||||
public InventoryList() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class InventoryManager {
|
||||
|
||||
final static InventoryManager INSTANCE = new InventoryManager();
|
||||
|
||||
public static InventoryManager getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
public InventoryList INVENTORY = new InventoryList();
|
||||
public CustomerList CUSTOMERS = new CustomerList();
|
||||
public TransactionList TRANSACTIONS = new TransactionList();
|
||||
|
||||
private InventoryManager() {
|
||||
}
|
||||
|
||||
public Set<InventoryType> getArtPieceTypes(){
|
||||
return EnumSet.allOf(InventoryType.class);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
public abstract class InventoryPiece {
|
||||
public String Id;
|
||||
public float price;
|
||||
public ZonedDateTime created;
|
||||
public String title;
|
||||
|
||||
/**
|
||||
* max 500 characters
|
||||
*/
|
||||
public String description;
|
||||
|
||||
public String Author;
|
||||
|
||||
InventoryType iventoryType;
|
||||
|
||||
public InventoryPiece(InventoryType iventoryType) {
|
||||
this.iventoryType = iventoryType;
|
||||
this.created = ZonedDateTime.now();
|
||||
this.Id = TransactionManager.generateTransactionRandomID(10);
|
||||
}
|
||||
|
||||
public InventoryPiece() {
|
||||
}
|
||||
|
||||
public Boolean isArt(InventoryPiece piece) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return this.iventoryType.toString();
|
||||
};
|
||||
|
||||
public String getId() {
|
||||
return Id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
Id = id;
|
||||
}
|
||||
|
||||
public float getPrice() {
|
||||
return price;
|
||||
}
|
||||
|
||||
public void setPrice(float price) {
|
||||
this.price = price;
|
||||
}
|
||||
|
||||
public ZonedDateTime getCreated() {
|
||||
return created;
|
||||
}
|
||||
|
||||
public void setCreated(ZonedDateTime created) {
|
||||
this.created = created;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getAuthor() {
|
||||
return Author;
|
||||
}
|
||||
|
||||
public void setAuthor(String author) {
|
||||
Author = author;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public enum InventoryType {
|
||||
PAINTING, DRAWING, PRINT, SCULPTURE
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class Painting extends InventoryPiece {
|
||||
int height;
|
||||
int width;
|
||||
String style;
|
||||
String technique;
|
||||
String category;
|
||||
|
||||
public Painting (){
|
||||
super(InventoryType.PAINTING);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class Print extends InventoryPiece {
|
||||
|
||||
String openEditionType;
|
||||
String category;
|
||||
|
||||
public Print(){
|
||||
super(InventoryType.PRINT);
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class Sculpture extends InventoryPiece {
|
||||
|
||||
String material;
|
||||
float weight;
|
||||
|
||||
public Sculpture (){
|
||||
super(InventoryType.SCULPTURE);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
public class Transaction {
|
||||
ZonedDateTime created = ZonedDateTime.now();
|
||||
ZonedDateTime completed = null;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class TransactionList {
|
||||
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
import java.security.SecureRandom;
|
||||
import java.util.Base64;
|
||||
|
||||
public class TransactionManager {
|
||||
|
||||
final public static String generateTransactionRandomID(int byteLength) {
|
||||
SecureRandom secureRandom = new SecureRandom();
|
||||
byte[] bytes = new byte[byteLength];
|
||||
secureRandom.nextBytes(bytes);
|
||||
return Base64.getUrlEncoder().withoutPadding().encodeToString(bytes);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user