Skip to content

Commit

Permalink
Merge pull request #76 from jGauravGupta/FISH-10043
Browse files Browse the repository at this point in the history
FISH-10043 Payara Starter - Errors in the generated app
  • Loading branch information
jGauravGupta authored Oct 28, 2024
2 parents 662c948 + aed9494 commit bc860eb
Show file tree
Hide file tree
Showing 18 changed files with 161 additions and 121 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -142,11 +142,14 @@ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
<defaultValue>false</defaultValue>
<validationRegex>^(false|true)$</validationRegex>
</requiredProperty>
<requiredProperty key="erDiagramName">
<defaultValue>HelloWorld</defaultValue>
</requiredProperty>
<requiredProperty key="restSubpackage">
<defaultValue>resource</defaultValue>
</requiredProperty>
</requiredProperties>

<fileSets>
<fileSet filtered="true" encoding="UTF-8">
<directory>src/main/webapp</directory>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public class ERModel {

private List<Entity> entities = new ArrayList<>();
private Set<Relationship> relationships = new LinkedHashSet<>();

private String importPrefix = "jakarta";
private String icon;
private String title;
private String longTitle;
Expand All @@ -45,6 +45,14 @@ public class ERModel {
public ERModel() {
}

public String getImportPrefix() {
return importPrefix;
}

public void setImportPrefix(String importPrefix) {
this.importPrefix = importPrefix;
}

public void addEntity(Entity entity) {
entities.add(entity);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,13 @@ public String getTitleCasePluralizeName() {
public List<Attribute> getAttributes() {
return attributes;
}

public Attribute findAttributeByName(String name) {
return attributes.stream()
.filter(attribute -> attribute.getName().equals(name))
.findFirst()
.orElse(null);
}

public void setAttributes(List<Attribute> attributes) {
this.attributes = attributes;
Expand All @@ -108,10 +115,17 @@ public String getPrimaryKeyFirstUpperName() {

@JsonbTransient
public String getDisplayName() {
String displayName = attributes.stream().filter(a -> a.isDisplay() != null && a.isDisplay()).map(a -> a.getName()).findFirst().orElse(null);
String displayName = attributes.stream()
.filter(a -> a.isDisplay() != null && a.isDisplay())
.map(a -> a.getName()).findFirst().orElse(null);
if(displayName == null) {
displayName = attributes.stream().filter(a -> !a.isPrimaryKey()).map(a -> a.getName()).findFirst().orElse(null);

displayName = attributes.stream()
.filter(a -> !a.isPrimaryKey())
.map(a -> a.getName()).findFirst().orElse(null);
}
if(displayName == null) {
displayName = attributes.stream()
.map(a -> a.getName()).findFirst().orElse(null);
}
return displayName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

Expand Down Expand Up @@ -71,7 +70,7 @@ public CRUDAppGenerator(ERModel model, String _package, String domainLayer, Stri

public static void main(String[] args) {
String mermaidCode = """
erDiagram
erDiagram
STUDENT ||--o{ ENROLLMENT : enrolls
STUDENT {
string studentID PK
Expand Down Expand Up @@ -170,6 +169,7 @@ public void generate(File projectDir, boolean generateJPA, boolean generateRepos
generateJPAClass(_package, model, entity, java);
}
Map<String, Object> dataModel = new HashMap<>();
dataModel.put("model", model);
dataModel.put("appPU", model.getTitle("app") + "PU");
generate("template/descriptor", "persistence.xml.ftl", "persistence.xml", dataModel, metainf);

Expand All @@ -186,7 +186,7 @@ public void generate(File projectDir, boolean generateJPA, boolean generateRepos
generateRestBase(dataModel, _package, java);
if (generateWeb) {
for (Entity entity : model.getEntities()) {
generateFrontend(entity, webapp);
generateFrontend(model, entity, webapp);
}
generateFrontendBase(model, webapp);
}
Expand All @@ -203,8 +203,9 @@ private void generateFrontendBase(ERModel model, File outputDir) {
generate("template/html", "about-us.html.ftl", "about-us.html", dataModel, outputDir);
}

private void generateFrontend(Entity entity, File outputDir) {
private void generateFrontend(ERModel model, Entity entity, File outputDir) {
Map<String, Object> dataModel = new HashMap<>();
dataModel.put("model", model);
dataModel.put("entity", entity);
dataModel.put("entityNameLowerCase", entity.getClassName().toLowerCase());
dataModel.put("entityNameTitleCase", titleCase(entity.getClassName()));
Expand Down Expand Up @@ -240,6 +241,7 @@ private void generateEntityController(String _package, Entity entity, File outpu
String entityInstance = firstLower(entity.getClassName());
String entityNameSpinalCased = kebabCase(entityInstance);
Map<String, Object> dataModel = new HashMap<>();
dataModel.put("model", model);
dataModel.put("package", controllerPackage);
dataModel.put("entity", entity);
dataModel.put("EntityClass", entity.getClassName());
Expand Down Expand Up @@ -322,6 +324,7 @@ private void generateEntityRepository(String _package, Entity entity, File outpu
// Create the data model
String repositoryPackage = _package + "." + repositoryLayer;
Map<String, Object> dataModel = new HashMap<>();
dataModel.put("model", model);
dataModel.put("package", repositoryPackage);
dataModel.put("cdi", true);
dataModel.put("named", false);
Expand Down Expand Up @@ -422,7 +425,7 @@ private void generateJPAClass(String _package, ERModel model, Entity entity, Fil
StringBuilder sbfunc = new StringBuilder();
String entityPackage = _package + "." + domainLayer;
sbHeader.append("package ").append(entityPackage).append(";\n\n");
sbHeader.append("import jakarta.persistence.*;\n");
sbHeader.append("import ").append(model.getImportPrefix()).append(".persistence.*;\n");

StringBuilder sbBody = new StringBuilder();
// Generate named queries
Expand Down Expand Up @@ -464,9 +467,9 @@ private void generateJPAClass(String _package, ERModel model, Entity entity, Fil
}

for (Relationship relationship : relationships) {
if (relationship.getFirstEntity().equals(className)) {
if (relationship.getFirstEntityClass().equals(className)) {
appendRelationship(sbBody, sbfunc, _imports, model, entity, relationship, true);
} else if (relationship.getSecondEntity().equals(className)) {
} else if (relationship.getSecondEntityClass().equals(className)) {
appendRelationship(sbBody, sbfunc, _imports, model, entity, relationship, false);
}
}
Expand Down Expand Up @@ -536,7 +539,7 @@ private void appendRelationship(StringBuilder sb, StringBuilder sbfunc, Set<Stri
sbfunc.append(" public void set").append(pluralize(secondEntity)).append("(List<").append(secondEntity).append("> ").append(pluralize(secondEntity.toLowerCase())).append(") {\n");
sbfunc.append(" this.").append(pluralize(secondEntity.toLowerCase())).append(" = ").append(pluralize(secondEntity.toLowerCase())).append(";\n");
sbfunc.append(" }\n\n");
_imports.add("jakarta.json.bind.annotation.JsonbTransient");
_imports.add(model.getImportPrefix() + ".json.bind.annotation.JsonbTransient");
_imports.add("java.util.List");
sb.append(" @JsonbTransient\n");
sb.append(" @OneToMany(mappedBy = \"").append(firstEntity.toLowerCase()).append("\")\n");
Expand Down Expand Up @@ -565,7 +568,7 @@ private void appendRelationship(StringBuilder sb, StringBuilder sbfunc, Set<Stri
sbfunc.append(" public void set").append(pluralize(secondEntity)).append("(List<").append(secondEntity).append("> ").append(pluralize(secondEntity.toLowerCase())).append(") {\n");
sbfunc.append(" this.").append(pluralize(secondEntity.toLowerCase())).append(" = ").append(pluralize(secondEntity.toLowerCase())).append(";\n");
sbfunc.append(" }\n\n");
_imports.add("jakarta.json.bind.annotation.JsonbTransient");
_imports.add(model.getImportPrefix() + ".json.bind.annotation.JsonbTransient");
_imports.add("java.util.List");
sb.append(" @JsonbTransient\n");
sb.append(" @ManyToMany(mappedBy = \"").append(firstEntity.toLowerCase()).append("\")\n");
Expand All @@ -584,7 +587,7 @@ private void appendRelationship(StringBuilder sb, StringBuilder sbfunc, Set<Stri
sbfunc.append(" public void set").append(firstEntity).append("(").append(firstEntity).append(" ").append(firstEntity.toLowerCase()).append(") {\n");
sbfunc.append(" this.").append(firstEntity.toLowerCase()).append(" = ").append(firstEntity.toLowerCase()).append(";\n");
sbfunc.append(" }\n\n");
_imports.add("jakarta.json.bind.annotation.JsonbTransient");
_imports.add(model.getImportPrefix() + ".json.bind.annotation.JsonbTransient");
sb.append(" @JsonbTransient\n");
sb.append(" @OneToOne\n");
sb.append(" @JoinColumn(name = \"").append(firstEntity.toLowerCase()).append("_id\")\n");
Expand Down Expand Up @@ -620,7 +623,7 @@ private void appendRelationship(StringBuilder sb, StringBuilder sbfunc, Set<Stri
sbfunc.append(" public void set").append(pluralize(firstEntity)).append("(List<").append(firstEntity).append("> ").append(pluralize(firstEntity.toLowerCase())).append(") {\n");
sbfunc.append(" this.").append(pluralize(firstEntity.toLowerCase())).append(" = ").append(pluralize(firstEntity.toLowerCase())).append(";\n");
sbfunc.append(" }\n\n");
_imports.add("jakarta.json.bind.annotation.JsonbTransient");
_imports.add(model.getImportPrefix() + ".json.bind.annotation.JsonbTransient");
_imports.add("java.util.List");
sb.append(" @JsonbTransient\n");
sb.append(" @ManyToMany\n");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,7 @@ public ERModel parse(String mermaidCode) {
String keyType = attrMatcher.group(3);
boolean isPrimaryKey = "PK".equals(keyType);
boolean isForeignKey = "FK".equals(keyType);
// String attrMetadata = attrMatcher.group(4);
if (!isForeignKey) {
if (!isForeignKey && entity.findAttributeByName(name) == null) {
type = getWrapperType(mapToJavaType(type));
Attribute attribute = new Attribute(name, type, isPrimaryKey);
entity.addAttribute(attribute);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,14 @@ public class Constants {
public static final String WEB_INF = "WEB-INF";
public static final String META_INF = "META-INF";
public static final String LOGGER = "java.util.logging.Logger";
public static final String POST_CONSTRUCT = "jakarta.annotation.PostConstruct";

public static final String NAMED = "jakarta.inject.Named";
public static final String RESOURCE_SUFFIX = "Resource";

public static final String XML_TRANSIENT_ANNOTATION = "XmlTransient";
public static final String XML_ROOT_ELEMENT_ANNOTATION = "XmlRootElement";
public static final String XML_ELEMENT_ANNOTATION = "XmlElement";
public static final String XML_ATTRIBUTE_ANNOTATION = "XmlAttribute";
public static final String URI_TYPE = "java.net.URI";
public static final String XML_ANNOTATION_PACKAGE = "jakarta.xml.bind.annotation.";
public static final String XML_ROOT_ELEMENT = XML_ANNOTATION_PACKAGE + XML_ROOT_ELEMENT_ANNOTATION;
public static final String XML_ELEMENT = XML_ANNOTATION_PACKAGE + XML_ELEMENT_ANNOTATION;
public static final String XML_ATTRIBUTE = XML_ANNOTATION_PACKAGE + XML_ATTRIBUTE_ANNOTATION;
public static final String XML_TRANSIENT = XML_ANNOTATION_PACKAGE + XML_TRANSIENT_ANNOTATION;

public static final String VOID = "void";

public static final String COLLECTION = "Collection";
Expand All @@ -48,8 +40,6 @@ public class Constants {
public static final String ARRAY_LIST_TYPE = "java.util.ArrayList";
public static final String HASH_SET_TYPE = "java.util.HashSet";

public static final String REQUEST_SCOPE = "jakarta.enterprise.context.RequestScoped";

public static final Modifier[] PUBLIC = new Modifier[]{Modifier.PUBLIC};
public static final Modifier[] PRIVATE = new Modifier[]{Modifier.PRIVATE};
public static final Modifier[] PUBLIC_STATIC_FINAL = new Modifier[]{Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,19 @@
the License.
-->
<?xml version="1.0" encoding="UTF-8"?>
<#if model.importPrefix == "jakarta">
<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_4_0.xsd"
bean-discovery-mode="all"
version="4.0">
</beans>
<#else>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all"
version="1.1">
</beans>
</#if>

Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,22 @@
the License.
-->
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<#if model.importPrefix == "jakarta">
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://jakarta.ee/xml/ns/persistence"
xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"
version="3.0">
<#else>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
</#if>
<persistence-unit name="${appPU}" transaction-type="JTA">
<jta-data-source>java:comp/DefaultDataSource</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="jakarta.persistence.schema-generation.database.action" value="create"/>
<property name="${model.importPrefix}.persistence.schema-generation.database.action" value="create"/>
</properties>
</persistence-unit>
</persistence>
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
<li class="nav-item">
<a class="nav-link" href="#" id="${entity.getLowerCaseName()}Link">
<i class="bi bi-${entity.getIcon()}"></i>
${entity.getTitleCasePluralizeName()}
${entity.getTitleCaseName()}
</a>
</li>
</#list>
Expand Down
Loading

0 comments on commit bc860eb

Please sign in to comment.