Compare commits

..

No commits in common. "9dd7da73c22f04675c16d2c2179c29b718b366c7" and "8de1e20a2aed64ffe9f4dd296f6286be8b745cb7" have entirely different histories.

10 changed files with 19 additions and 97 deletions

View File

@ -70,19 +70,3 @@ so you must use an existing copy of a ``recipes.db`` file.
## Note on JavaServer Faces
The Spring Boot version supersedes a previous port based on the Apache Tobago JSF tag library. It uses the PrimeFaces JSF tag library, as presently that platform has better Spring Boot support. Plus Tobago is quite different from most of the
extension tag libraries to the point where it almost isn't JSF.
## New in Version 2.0
### Database change
The backing database as defined in the project is now MySQL
instead of SQLite. The SQLite JDBC driver may have been a bit
casual about a few things compared to MySQL. The JPA should work
for either database now, although it should be noted that SQLite
isn't really intended for multi-user webapps and should only be
employed when you run this app on your local desktop.
### Improved graphics support
A lot of recipe websites publish images in webp form. Support
for webp has now been added.

View File

@ -1,6 +1,4 @@
# THIS is the application properties used when testing in the IDE
# The application.yml (production) is ignored.
#joinfaces.jsf.project-stage=development
# They lied. This doesn't work:
joinfaces.primefaces.theme=cupertino
@ -8,20 +6,16 @@ joinfaces.jsf.webapp-resources-directory=/resources
# This works. Note that ONLY THE FIRST theme set will work unless
# you delete the old primefaces.THEME from ServletContext
server.servlet.context-parameters.primefaces.THEME=omega
server.servlet.session.timeout=30m
spring.thymeleaf.enabled=false
server.error.whitelabel.enabled=false
spring.datasource.url=jdbc:mysql://dbase/recipes
#jdbc:sqlite:${home}/recipes.db
spring.datasource.username=recipes
pring.datasource.password=yumyumyum
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
#org.sqlite.JDBC
spring.datasource.url=jdbc:sqlite:${home}/recipes.db
#spring.datasource.username=dbuser
#pring.datasource.password=dbpass
spring.datasource.driverClassName=org.sqlite.JDBC
#spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
#org.sqlite.hibernate.dialect.SQLiteDialect
spring.jpa.database-platform=org.sqlite.hibernate.dialect.SQLiteDialect
#spring.jpa.show-sql: true
# My special properties

34
pom.xml
View File

@ -108,40 +108,6 @@
<artifactId>javax.el</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.twelvemonkeys.imageio/imageio-core -->
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-core</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.twelvemonkeys.imageio/imageio-webp -->
<!-- In Core??? -->
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-webp</artifactId>
<version>3.8.1</version>
<scope>compile</scope>
</dependency>
<!-- Needed only if you deploy ImageIO plugins as part of a web app.
Make sure you add the IIOProviderContextListener to your web.xml.
-->
<dependency>
<groupId>com.twelvemonkeys.servlet</groupId>
<artifactId>servlet</artifactId>
<version>3.8.1</version>
<scope>compile</scope>
</dependency>
<!-- MySQL DB -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!-- SQLite DB -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>

View File

@ -21,8 +21,6 @@ import org.springframework.http.HttpStatus;
"com.mousetech.gourmetj.persistence.model" })
public class SpringPrimeFacesApplication {
private static final String IMAGE_IIO_PROVIDER_CONTEXT_LISTENER =
"com.twelvemonkeys.servlet.image.IIOProviderContextListener";
final String errorPage = "/error/error.html";
final String error404Page = "/error/error404.html";
final String expiredPage = "/error/viewExpired.xhtml";
@ -51,8 +49,6 @@ public class SpringPrimeFacesApplication {
"com.sun.el.ExpressionFactoryImpl");
servletContext.setInitParameter(
"primefaces.UPLOADER", "native");
servletContext.addListener(IMAGE_IIO_PROVIDER_CONTEXT_LISTENER);
}
};
}

View File

@ -73,7 +73,7 @@ public class Recipe implements Serializable {
private Integer rating;
@Column(name = "recipe_hash")
private String recipeHash;
private Long recipeHash;
@Column(name = "servings")
private Double servings;
@ -88,7 +88,7 @@ public class Recipe implements Serializable {
private String title;
@Column(name = "yield_unit")
private String yieldUnit;
private Integer yieldUnit;
@Column(name = "yields")
private Double yields;
@ -211,11 +211,11 @@ public class Recipe implements Serializable {
this.rating = rating;
}
public String getRecipeHash() {
public Long getRecipeHash() {
return this.recipeHash;
}
public void setRecipeHash(String recipeHash) {
public void setRecipeHash(Long recipeHash) {
this.recipeHash = recipeHash;
}
@ -251,11 +251,11 @@ public class Recipe implements Serializable {
this.title = title;
}
public String getYieldUnit() {
public Integer getYieldUnit() {
return this.yieldUnit;
}
public void String(String yieldUnit) {
public void setYieldUnit(Integer yieldUnit) {
this.yieldUnit = yieldUnit;
}

View File

@ -21,11 +21,11 @@
<navigation-rule>
<description>Global Navigation</description>
<display-name>Navigation</display-name>
<from-view-id>*</from-view-id>
<from-view-id>/*</from-view-id>
<navigation-case>
<description>Go Home</description>
<from-outcome>home</from-outcome>
<to-view-id>/main</to-view-id>
<to-view-id>/main.xhtml</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>

View File

@ -154,7 +154,7 @@
update=":messages picPanel"
auto="true"
sizeLimit="1000000"
allowTypes="/(\.|\/)(gif|jpe?g|png|webp)$/"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
/>
<p:commandButton id="ctlDelImg"
value="Delete Image"

View File

@ -11,7 +11,7 @@
<h2>View Expired.</h2>
<h:form>
The user session has timed out. Return to main page.
<h:commandButton value="OK" action="home"></h:commandButton>
<h:commandButton value="OK" action="/main.jsf"></h:commandButton>
</h:form>
</h:body>
</html>

View File

@ -44,11 +44,10 @@
<p:panelGrid id="pnlDetails"
columns="2"
>
<!-- TODO: ask if we should save -->
<p:commandButton value="Back"
ajax="false"
icon="ui-icon-arrowthick-1-w"
action="home"
action="main.jsf"
immediate="true"
/>
<p:commandButton ajax="false"

View File

@ -1,31 +1,14 @@
#
# Application YML is used in production, filed under /BOOT-INF/classes.
# application.properties in the project root (working dir)
# Application YML is used in production. /application.properties
# is used in test.
#
# application config in execution current directory or ./config
# have higher precedence, and the command line is ultimate:
#
# https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-external-config.html
#
spring:
datasource:
#url: jdbc:sqlite:${home}/recipes.db
url: jdbc:mysql:dbase/recipes
# options: ${env} values
driverClassName: org.mysql.jdbc.Driver
username: recipes
password: yumyumyum
url: jdbc:sqlite:${home}/recipes.db
jpa:
hibernate:
ddl-auto: none
#database-platform: org.sqlite.hibernate.dialect.SQLiteDialect
database-platform: org.hibernate.dialect.MySQLDialect
server:
servlet:
session:
timeout: '30m'
database-platform: org.sqlite.hibernate.dialect.SQLiteDialect
gourmet:
password: