Merge pull request #14 from cheapy-issp/006-entidades

006 entidades
This commit is contained in:
javgranar 2021-03-22 20:34:35 +01:00 committed by GitHub
commit 817273d732
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 609 additions and 20 deletions

View file

@ -0,0 +1,24 @@
package org.springframework.cheapy.model;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "authorities")
public class Authorities {
@Id
String username;
String authority;
public String getAuthority() {
return authority;
}
public void setAuthority(String authority) {
this.authority = authority;
}
}

View file

@ -0,0 +1,94 @@
package org.springframework.cheapy.model;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.Digits;
import javax.validation.constraints.NotEmpty;
@Entity
@Table(name = "clients")
public class Client extends User {
@NotEmpty
private String address;
@NotEmpty
private String timetable;
@NotEmpty
@Digits(fraction = 0, integer = 10)
private String telephone;
@NotEmpty
private String description;
@NotEmpty
private String code;
@NotEmpty
private String food;
@OneToMany
private Set<FoodOffer> foodOffers;
@OneToMany
private Set<NuOffer> nuOffers;
@OneToMany
private Set<SpeedOffer> speedOffers;
@OneToMany
private Set<TimeOffer> timeOffers;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTimetable() {
return timetable;
}
public void setTimetable(String timetable) {
this.timetable = timetable;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getFood() {
return food;
}
public void setFood(String food) {
this.food = food;
}
}

View file

@ -0,0 +1,59 @@
/*
* Copyright 2012-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cheapy.model;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;
@Entity
@Table(name = "food_offers")
public class FoodOffer extends Offer {
@NotBlank
private String food;
@NotBlank
private String discount;
@NotBlank
private Integer units; // revisar
public String getFood() {
return food;
}
public void setFood(String food) {
this.food = food;
}
public String getDiscount() {
return discount;
}
public void setDiscount(String discount) {
this.discount = discount;
}
public Integer getUnits() {
return units;
}
public void setUnits(Integer units) {
this.units = units;
}
}

View file

@ -0,0 +1,96 @@
/*
* Copyright 2012-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cheapy.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;
@Entity
@Table(name = "nu_offers")
public class NuOffer extends Offer {
@NotBlank
private Integer gold;
@Column(name = "discount_gold")
@NotBlank
private String discountGold;
@NotBlank
private Integer silver;
@Column(name = "discount_silver")
@NotBlank
private String discountSilver;
@NotBlank
private Integer bronze;
@Column(name = "discount_bronze")
@NotBlank
private String discountBronze;
public Integer getGold() {
return gold;
}
public void setGold(Integer gold) {
this.gold = gold;
}
public String getDiscountGold() {
return discountGold;
}
public void setDiscountGold(String discountGold) {
this.discountGold = discountGold;
}
public Integer getSilver() {
return silver;
}
public void setSilver(Integer silver) {
this.silver = silver;
}
public String getDiscountSilver() {
return discountSilver;
}
public void setDiscountSilver(String discountSilver) {
this.discountSilver = discountSilver;
}
public Integer getBronze() {
return bronze;
}
public void setBronze(Integer bronze) {
this.bronze = bronze;
}
public String getDiscountBronze() {
return discountBronze;
}
public void setDiscountBronze(String discountBronze) {
this.discountBronze = discountBronze;
}
}

View file

@ -0,0 +1,87 @@
/*
* Copyright 2012-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cheapy.model;
import java.time.LocalDateTime;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
import javax.persistence.Table;
import javax.validation.constraints.Future;
import javax.validation.constraints.NotBlank;
import org.springframework.format.annotation.DateTimeFormat;
@MappedSuperclass
public class Offer extends BaseEntity {
@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
@NotBlank
@Future
private LocalDateTime start;
@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
@NotBlank
@Future
private LocalDateTime end;
@NotBlank
private String code;
@Enumerated(value = EnumType.STRING)
private StatusOffer type;
@ManyToOne
@JoinColumn(name="client_id")
private Client client;
public LocalDateTime getStart() {
return start;
}
public void setStart(LocalDateTime start) {
this.start = start;
}
public LocalDateTime getEnd() {
return end;
}
public void setEnd(LocalDateTime end) {
this.end = end;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public StatusOffer getType() {
return type;
}
public void setType(StatusOffer type) {
this.type = type;
}
}

View file

@ -0,0 +1,96 @@
/*
* Copyright 2012-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cheapy.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;
@Entity
@Table(name = "speed_offers")
public class SpeedOffer extends Offer {
@NotBlank
private Integer gold; // x minutos
@Column(name = "discount_gold")
@NotBlank
private String discountGold;
@NotBlank
private Integer silver;
@Column(name = "discount_silver")
@NotBlank
private String discountSilver;
@NotBlank
private Integer bronze;
@Column(name = "discount_bronze")
@NotBlank
private String discountBronze;
public Integer getGold() {
return gold;
}
public void setGold(Integer gold) {
this.gold = gold;
}
public String getDiscountGold() {
return discountGold;
}
public void setDiscountGold(String discountGold) {
this.discountGold = discountGold;
}
public Integer getSilver() {
return silver;
}
public void setSilver(Integer silver) {
this.silver = silver;
}
public String getDiscountSilver() {
return discountSilver;
}
public void setDiscountSilver(String discountSilver) {
this.discountSilver = discountSilver;
}
public Integer getBronze() {
return bronze;
}
public void setBronze(Integer bronze) {
this.bronze = bronze;
}
public String getDiscountBronze() {
return discountBronze;
}
public void setDiscountBronze(String discountBronze) {
this.discountBronze = discountBronze;
}
}

View file

@ -0,0 +1,5 @@
package org.springframework.cheapy.model;
public enum StatusOffer {
active, inactive, hidden
}

View file

@ -0,0 +1,53 @@
/*
* Copyright 2012-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cheapy.model;
import java.time.LocalDateTime;
import java.time.LocalTime;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.validation.constraints.Future;
import javax.validation.constraints.NotBlank;
import org.springframework.format.annotation.DateTimeFormat;
@Entity
@Table(name = "time_offers")
public class TimeOffer extends Offer {
@DateTimeFormat(pattern = "HH:mm")
@NotBlank
private LocalTime init;
@DateTimeFormat(pattern = "HH:mm")
@NotBlank
private LocalTime finish;
@NotBlank
private String discount;
public String getDiscount() {
return discount;
}
public void setDiscount(String discount) {
this.discount = discount;
}
}

View file

@ -0,0 +1,58 @@
package org.springframework.cheapy.model;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToOne;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
@MappedSuperclass
public class User extends BaseEntity {
@NotBlank
String username;
@NotBlank
String password;
@Email
@NotBlank
String email;
@OneToOne
Authorities authority;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Authorities getAuthority() {
return authority;
}
public void setAuthority(Authorities authority) {
this.authority = authority;
}
}

View file

@ -5,3 +5,10 @@ spring.datasource.username=${MYSQL_USER:cheapy}
spring.datasource.password=${MYSQL_PASS:cheapy} spring.datasource.password=${MYSQL_PASS:cheapy}
# SQL is written to be idempotent so this is safe # SQL is written to be idempotent so this is safe
spring.datasource.initialization-mode=always spring.datasource.initialization-mode=always
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.javax.persistence.schema-generation.drop-source=metadata
# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

View file

@ -1,23 +1,30 @@
# database init, supports mysql too # database init, supports mysql too
database=h2 database=mysql
spring.datasource.schema=classpath*:db/${database}/schema.sql #spring.datasource.schema=classpath*:db/${database}/schema.sql
spring.datasource.data=classpath*:db/${database}/data.sql spring.datasource.data=classpath*:db/${database}/data.sql
spring.h2.console.enabled=true
spring.profiles.active=mysql
# Web # Web
spring.thymeleaf.mode=HTML spring.thymeleaf.mode=HTML
# JPA # JPA
spring.jpa.hibernate.ddl-auto=none spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.open-in-view=false spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.javax.persistence.schema-generation.drop-source=script
spring.jpa.properties.javax.persistence.schema-generation.drop-script-source=drop-tables.sql
# Internationalization # Internationalization
spring.messages.basename=messages/messages spring.messages.basename=messages/messages
# Views # Views
spring.mvc.view.prefix: /WEB-INF/jsp/ spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp spring.mvc.view.suffix: .jsp
# Actuator
# Actuator / Management
management.endpoints.web.base-path=/manage
management.endpoints.web.exposure.include=* management.endpoints.web.exposure.include=*
# Logging # Logging
@ -26,6 +33,4 @@ logging.level.org.springframework=INFO
# logging.level.org.springframework.context.annotation=TRACE # logging.level.org.springframework.context.annotation=TRACE
# Maximum time static resources should be cached # Maximum time static resources should be cached
spring.resources.cache.cachecontrol.max-age=12h spring.resources.cache.cachecontrol.max-age=12h
spring.profiles.active=mysql

View file

@ -1,10 +1,15 @@
INSERT IGNORE INTO owners VALUES (1, 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023'); INSERT INTO owners VALUES (1, 'Javi', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023');
INSERT IGNORE INTO owners VALUES (2, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749'); INSERT INTO owners VALUES (2, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749');
INSERT IGNORE INTO owners VALUES (3, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763'); INSERT INTO owners VALUES (3, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763');
INSERT IGNORE INTO owners VALUES (4, 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198'); INSERT INTO owners VALUES (4, 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198');
INSERT IGNORE INTO owners VALUES (5, 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765'); INSERT INTO owners VALUES (5, 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765');
INSERT IGNORE INTO owners VALUES (6, 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654'); INSERT INTO owners VALUES (6, 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654');
INSERT IGNORE INTO owners VALUES (7, 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387'); INSERT INTO owners VALUES (7, 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387');
INSERT IGNORE INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683'); INSERT INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683');
INSERT IGNORE INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435'); INSERT INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435');
INSERT IGNORE INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487'); INSERT INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487');
INSERT INTO food_offers(start, end, code, type, client_id, food, discount, units) VALUES ('2021-06-15 12:00:00', '2021-06-16 12:00:00', 'jkhlljk', 'active', null, 'macarrones', '15%', 10);
INSERT INTO time_offers(start, end, code, type, client_id, init, finish, discount) VALUES ('2021-06-15 12:00:00', '2021-06-16 12:00:00', 'jkhlljk', 'active', null, '12:00:00', '13:00:00', '10%');