commit 4ebbebb3cc7958cba10de442b618807f63fd18eb Author: minhtrannhat Date: Sun Jul 7 22:46:19 2024 -0400 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c4cc698 --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/* +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/assignment1_uml.png b/assignment1_uml.png new file mode 100644 index 0000000..efe9f2c Binary files /dev/null and b/assignment1_uml.png differ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..9289c63 --- /dev/null +++ b/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + org.example + comp353_assignment1 + 1.0-SNAPSHOT + + + 21 + 21 + UTF-8 + + + \ No newline at end of file diff --git a/src/main/java/org/example/Main.java b/src/main/java/org/example/Main.java new file mode 100644 index 0000000..e8f2b39 --- /dev/null +++ b/src/main/java/org/example/Main.java @@ -0,0 +1,7 @@ +package org.example; + +public class Main { + public static void main(String[] args) { + System.out.printf("Hello and welcome!"); + } +} \ No newline at end of file diff --git a/src/main/sql/migrate0.sql b/src/main/sql/migrate0.sql new file mode 100644 index 0000000..202bb68 --- /dev/null +++ b/src/main/sql/migrate0.sql @@ -0,0 +1,87 @@ +CREATE DATABASE "assignment1"; + +CREATE SCHEMA IF NOT EXISTS "assignment 1"; + +CREATE DOMAIN canada_postal_code AS VARCHAR(7) + CHECK (VALUE ~ '^[A-Z]\d[A-Z]\s?\d[A-Z]\d$'); + +CREATE TYPE canadian_province AS ENUM ( + 'AB', -- Alberta + 'BC', -- British Columbia + 'MB', -- Manitoba + 'NB', -- New Brunswick + 'NL', -- Newfoundland and Labrador + 'NS', -- Nova Scotia + 'NT', -- Northwest Territories + 'NU', -- Nunavut + 'ON', -- Ontario + 'PE', -- Prince Edward Island + 'QC', -- Quebec + 'SK', -- Saskatchewan + 'YT' -- Yukon + ); + +CREATE TABLE "assignment 1".Donors +( + donorID INT NOT NULL, + firstName VARCHAR(50) NOT NULL, + lastName VARCHAR(50) NOT NULL, + middleInitial CHAR(1), + dateOfBirth DATE, + address VARCHAR(100), + city VARCHAR(50), + postalCode canada_postal_code, + province canadian_province, + gender CHAR(1), + SSN VARCHAR(11), + hobby VARCHAR(100), + phone VARCHAR(15), + email VARCHAR(100), + CONSTRAINT donors_pk PRIMARY KEY (donorID), + CONSTRAINT valid_canada_postal_code CHECK (postalCode ~ '^[A-Z]\d[A-Z]\s?\d[A-Z]\d$'), + CONSTRAINT valid_gender CHECK (gender IN ('M', 'F', 'O')), + CONSTRAINT valid_ssn CHECK (SSN ~ '^\d{3}-\d{3}-\d{3}$'), + CONSTRAINT valid_email CHECK (email ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$') +); + +CREATE TABLE "assignment 1".Donations +( + dID INT NOT NULL, + donorID INT NOT NULL, + date DATE NOT NULL, + type VARCHAR(7) NOT NULL, + amount DECIMAL(10, 2) NOT NULL, + CONSTRAINT donations_pk PRIMARY KEY (dID), + CONSTRAINT donations_donorID_fk FOREIGN KEY (donorID) REFERENCES "assignment 1".Donors (donorID), + CONSTRAINT valid_donation_type CHECK (type IN ('money', 'product')) +); + +create table "assignment 1".Products +( + pID INT NOT NULL, + description varchar(100), + date DATE NOT NULL, + price DECIMAL(10, 2) NOT NULL, + weight DECIMAL(5, 2) NOT NULL, + CONSTRAINT products_pk PRIMARY KEY (pID) +); + +CREATE TABLE "assignment 1".Sales +( + sID INT NOT NULL, + date DATE NOT NULL, + amount DECIMAL(10, 2) NOT NULL, + totalWeight DECIMAL(10, 2) NOT NULL, + deliveryFee DECIMAL(10, 2) DEFAULT 0 NOT NULL, + CONSTRAINT sales_pk primary key (sID), + CONSTRAINT valid_delivery_fee CHECK (deliveryFee >= 0) +); + +CREATE TABLE "assignment 1".SalesItems +( + sID INT NOT NULL, + pID INT NOT NULL, + PRIMARY KEY (sID, pID), + FOREIGN KEY (sID) REFERENCES "assignment 1".Sales (sID), + FOREIGN KEY (pID) REFERENCES "assignment 1".Products (pID) +); \ No newline at end of file