new
This commit is contained in:
41
Api/build.gradle
Normal file
41
Api/build.gradle
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* This file was generated by the Gradle 'init' task.
|
||||
*
|
||||
*/
|
||||
|
||||
plugins {
|
||||
// Apply the application plugin to add support for building a CLI application in Java.
|
||||
id 'java'
|
||||
id 'application'
|
||||
}
|
||||
|
||||
// Apply a specific Java toolchain to ease working on different environments.
|
||||
java {
|
||||
toolchain {
|
||||
languageVersion = JavaLanguageVersion.of(24)
|
||||
}
|
||||
}
|
||||
|
||||
application {
|
||||
// Define the main class for the application.
|
||||
mainClass = 'edu.inventorym.Api'
|
||||
}
|
||||
|
||||
repositories {
|
||||
// Use Maven Central for resolving dependencies.
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
implementation 'io.helidon:helidon:4.3.1'
|
||||
implementation 'io.helidon.common:helidon-common:4.3.1'
|
||||
implementation 'io.helidon.media:helidon-media-jsonb:3.2.12'
|
||||
implementation 'io.helidon.media.jsonb:helidon-media-jsonb-common:1.4.16'
|
||||
implementation 'io.helidon.media.jsonb:helidon-media-jsonb-server:1.4.16'
|
||||
implementation 'jakarta.json.bind:jakarta.json.bind-api:3.0.1'
|
||||
|
||||
implementation 'io.helidon.webserver:helidon-webserver:4.3.1'
|
||||
|
||||
}
|
||||
|
||||
37
Api/src/main/java/edu/inventorym/Api.java
Normal file
37
Api/src/main/java/edu/inventorym/Api.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package edu.inventorym;
|
||||
|
||||
public class Api {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
*/
|
||||
}
|
||||
|
||||
}
|
||||
13
Api/src/main/java/edu/inventorym/model/Customer.java
Normal file
13
Api/src/main/java/edu/inventorym/model/Customer.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class Customer {
|
||||
|
||||
String nameFirst;
|
||||
String nameLast;
|
||||
String mailing;
|
||||
String phone;
|
||||
String email;
|
||||
|
||||
public Customer(){}
|
||||
|
||||
}
|
||||
5
Api/src/main/java/edu/inventorym/model/CustomerList.java
Normal file
5
Api/src/main/java/edu/inventorym/model/CustomerList.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class CustomerList {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class CustomerManager {
|
||||
|
||||
}
|
||||
12
Api/src/main/java/edu/inventorym/model/Drawing.java
Normal file
12
Api/src/main/java/edu/inventorym/model/Drawing.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class Drawing extends InventoryPiece {
|
||||
|
||||
public String style;
|
||||
public String technique;
|
||||
public String category;
|
||||
|
||||
public Drawing() {
|
||||
super(InventoryType.DRAWING);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class InventoryList extends ArrayList<InventoryPiece> {
|
||||
public InventoryList() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
25
Api/src/main/java/edu/inventorym/model/InventoryManager.java
Normal file
25
Api/src/main/java/edu/inventorym/model/InventoryManager.java
Normal file
@@ -0,0 +1,25 @@
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
84
Api/src/main/java/edu/inventorym/model/InventoryPiece.java
Normal file
84
Api/src/main/java/edu/inventorym/model/InventoryPiece.java
Normal file
@@ -0,0 +1,84 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public enum InventoryType {
|
||||
PAINTING, DRAWING, PRINT, SCULPTURE
|
||||
}
|
||||
14
Api/src/main/java/edu/inventorym/model/Painting.java
Normal file
14
Api/src/main/java/edu/inventorym/model/Painting.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class Painting extends InventoryPiece {
|
||||
int height;
|
||||
int width;
|
||||
String style;
|
||||
String technique;
|
||||
String category;
|
||||
|
||||
public Painting (){
|
||||
super(InventoryType.PAINTING);
|
||||
}
|
||||
|
||||
}
|
||||
11
Api/src/main/java/edu/inventorym/model/Print.java
Normal file
11
Api/src/main/java/edu/inventorym/model/Print.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class Print extends InventoryPiece {
|
||||
|
||||
String openEditionType;
|
||||
String category;
|
||||
|
||||
public Print(){
|
||||
super(InventoryType.PRINT);
|
||||
}
|
||||
}
|
||||
12
Api/src/main/java/edu/inventorym/model/Sculpture.java
Normal file
12
Api/src/main/java/edu/inventorym/model/Sculpture.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class Sculpture extends InventoryPiece {
|
||||
|
||||
String material;
|
||||
float weight;
|
||||
|
||||
public Sculpture (){
|
||||
super(InventoryType.SCULPTURE);
|
||||
}
|
||||
|
||||
}
|
||||
8
Api/src/main/java/edu/inventorym/model/Transaction.java
Normal file
8
Api/src/main/java/edu/inventorym/model/Transaction.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
public class Transaction {
|
||||
ZonedDateTime created = ZonedDateTime.now();
|
||||
ZonedDateTime completed = null;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package edu.inventorym.model;
|
||||
|
||||
public class TransactionList {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
79
Api/uml/classdiagram.dot
Normal file
79
Api/uml/classdiagram.dot
Normal file
@@ -0,0 +1,79 @@
|
||||
digraph ClassDiagram {
|
||||
// Graph attributes
|
||||
graph [
|
||||
rankdir="BT",
|
||||
splines=ortho,
|
||||
fontname="Arial"
|
||||
];
|
||||
node [
|
||||
fontname="Arial",
|
||||
fontsize=10,
|
||||
shape=record,
|
||||
style=filled,
|
||||
fillcolor=lightyellow
|
||||
];
|
||||
edge [
|
||||
fontname="Arial",
|
||||
fontsize=9
|
||||
];
|
||||
|
||||
// --- Clusters for Packages ---
|
||||
subgraph cluster_edu_inventorym {
|
||||
label="edu.inventorym";
|
||||
style=filled;
|
||||
color=lightgrey;
|
||||
node [style=filled, color=white];
|
||||
|
||||
Api [
|
||||
label="{class Api|+ main(String[]): void\l+ callerInterface(): void\l}"
|
||||
];
|
||||
|
||||
App [
|
||||
label="{class App|+ main(String[]): void\l- routing(HttpRouting.Builder): void\l}"
|
||||
];
|
||||
|
||||
RpcDeserializer [
|
||||
label="{class RpcDeserializer|+ main(String[]): void\l+ mapJsonToObjectList(String, Class<T>): List<T>\l}"
|
||||
];
|
||||
}
|
||||
|
||||
subgraph cluster_edu_inventorym_model {
|
||||
label="edu.inventorym.model";
|
||||
style=filled;
|
||||
color=lightgrey;
|
||||
node [style=filled, color=white];
|
||||
|
||||
InventoryPiece [
|
||||
// Inferred from RpcDeserializer.java
|
||||
label="{interface\n«InventoryPiece»|+ getId(): int\l}"
|
||||
];
|
||||
|
||||
Drawing [
|
||||
// Inferred from RpcDeserializer.java
|
||||
label="{class Drawing|+ getId(): int\l}"
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
// --- Relationships ---
|
||||
|
||||
// Inheritance (Drawing implements InventoryPiece)
|
||||
InventoryPiece -> Drawing [
|
||||
arrowhead=empty,
|
||||
style=dashed,
|
||||
label="implements"
|
||||
];
|
||||
|
||||
// Associations (Dependencies)
|
||||
RpcDeserializer -> Drawing [
|
||||
arrowhead=vee,
|
||||
style=dashed,
|
||||
label="uses"
|
||||
];
|
||||
|
||||
RpcDeserializer -> InventoryPiece [
|
||||
arrowhead=vee,
|
||||
style=dashed,
|
||||
label="uses"
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user