Skip to content

Commit a23ca8e

Browse files
committed
Added loadById Optional
to FacadeDefGenerator and FacadeImplDataGenerator #17
1 parent 6c8c9d4 commit a23ca8e

File tree

5 files changed

+27
-3
lines changed

5 files changed

+27
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2020
- Removed javax.ejb.Stateles annotation from default rest generator
2121
- Fixed typo on FactoryDefGenerator
2222
- Stream loadAll method added to FacadeDefGenerator and FacadeImplDataGenerator (#17)
23+
- Added loadById Optional to FacadeDefGenerator and FacadeImplDataGenerator (#17)
2324
- Sample stub for finder, facade and rest load classes regenerated.
2425

2526
### Removed

fj-daogen-base/src/main/java/org/fugerit/java/daogen/base/gen/DaogenBasicGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ public abstract class DaogenBasicGenerator extends SimpleJavaGenerator implement
3333

3434
protected static final String JD_THROWS = " * @throws ";
3535

36+
protected static final String CLOSE_AND_THROWS = " ) throws ";
37+
3638
protected static final String AT_OVERRIDE = "@Override";
3739

3840
protected static final String REAL_CLASS_COMMENT = TAB+"// [HELPER/IMPL MODEL] this class is a stub and can be modified as you see fit (it will not been overwritten)";

fj-daogen-base/src/main/java/org/fugerit/java/daogen/base/gen/FacadeDefGenerator.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.fugerit.java.daogen.base.gen;
22

33
import java.io.IOException;
4+
import java.util.Optional;
45
import java.util.stream.Stream;
56

67
import org.fugerit.java.core.cfg.ConfigException;
@@ -56,6 +57,9 @@ public void init( DaogenCatalogConfig daogenConfig, DaogenCatalogEntity entity )
5657
this.setClassBaseResult( DaogenClassConfigHelper.addImport( daogenConfig , DaogenClassConfigHelper.DAO_RESULT_BASE, this.getImportList() ) );
5758
this.getImportList().add( this.getDaogenConfig().getGeneralProp( DaogenCatalogConstants.GEN_PROP_PACKAGE_MODEL )+"."+this.getEntityModelName() );
5859
this.getImportList().add( Stream.class.getName() );
60+
if ( StringUtils.isNotEmpty( this.getCurrentEntity().getPrimaryKey() ) ) {
61+
this.getImportList().add( Optional.class.getName() );
62+
}
5963
}
6064
}
6165

@@ -120,7 +124,10 @@ public void generateDaogenBody() throws IOException {
120124
this.getWriter().println();
121125
if ( StringUtils.isNotEmpty( this.getCurrentEntity().getPrimaryKey() ) ) {
122126
GeneratorKeyHelper primaryKeyHelper = new GeneratorKeyHelper( this.getDaogenConfig() , this.getCurrentEntity(), this.getCurrentEntity().getPrimaryKey() );
127+
// load by id
123128
methodByKey( primaryKeyHelper.setForLoadInterface(), METHOD_LOAD_BY_PK, this.getEntityModelName(), "The found object or <code>null</code>", "Load method by "+PRIMARY_KEY+FOR_ENTITY_LIT+this.getEntityModelName() );
129+
// load by id optional
130+
methodByKey( primaryKeyHelper.setForLoadInterface(), METHOD_LOAD_BY_PK+Optional.class.getSimpleName(), Optional.class.getSimpleName()+"<"+this.getEntityModelName()+">", "The found object or <code>null</code>", "Load method by "+PRIMARY_KEY+FOR_ENTITY_LIT+this.getEntityModelName() );
124131
if ( FacadeGeneratorUtils.isFacadeModeInsert( this.getCurrentEntity() ) ) {
125132
DaogenCustomCode.addCommentFacadeDef( "facade.def.create" , DaogenCustomCode.INDENT_1, this.getWriter(), this.getEntityModelName() );
126133
this.getWriter().println( TAB+""+this.getClassBaseResult()+"<"+this.getEntityModelName()+"> create( "+this.getClassDaogenContext()+CONTEXT_LIT+this.getEntityModelName()+" model ) throws "+this.getClassDaoException()+";" );

fj-daogen-base/src/main/java/org/fugerit/java/daogen/base/gen/FacadeImplDataGenerator.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.fugerit.java.daogen.base.gen;
22

33
import java.io.IOException;
4+
import java.util.Optional;
45
import java.util.stream.Stream;
56

67
import org.fugerit.java.core.cfg.ConfigException;
@@ -58,6 +59,9 @@ private void initConfigHelperMode( DaogenCatalogConfig daogenConfig) {
5859
this.setImplementsInterface( DaogenHelperGenerator.toHelperClassName( this.getEntityFacadeDefName() ) );
5960
}
6061
this.getImportList().add( Stream.class.getName() );
62+
if ( StringUtils.isNotEmpty( this.getCurrentEntity().getPrimaryKey() ) ) {
63+
this.getImportList().add( Optional.class.getName() );
64+
}
6165
this.setExtendsClass( this.getClassDataFacade()+LT_LIT+this.getEntityModelName()+">" );
6266
}
6367

@@ -241,7 +245,7 @@ private void generateHelperClassInsert( DaogenCatalogField colData, DaogenCatalo
241245
private void generateHelperClassLoadPk( GeneratorKeyHelper primaryKeyHelper ) {
242246
// load by primary key
243247
this.getWriter().println( TAB+AT_OVERRIDE );
244-
this.getWriter().println( TAB+PUBLIC_LIT+this.getEntityModelName()+" "+FacadeDefGenerator.METHOD_LOAD_BY_PK+"( "+this.getClassDaogenContext()+CONTEXT_LIT+primaryKeyHelper.setForLoadInterface().getKeyParams()+" ) throws "+this.getClassDaoException()+" {" );
248+
this.getWriter().println( TAB+PUBLIC_LIT+this.getEntityModelName()+" "+FacadeDefGenerator.METHOD_LOAD_BY_PK+"( "+this.getClassDaogenContext()+CONTEXT_LIT+primaryKeyHelper.setForLoadInterface().getKeyParams()+CLOSE_AND_THROWS+this.getClassDaoException()+" {" );
245249
this.getWriter().println( TAB_2+this.getEntityModelName()+" result = null;" );
246250
this.getWriter().println( TAB_2+this.getClassDaoHelper()+LT_LIT+this.getEntityModelName()+GT_LIT+DAO_HELPER_LIT+this.getClassDaoHelper()+CONTEXT_GEN_LIT );
247251
this.getWriter().println( TAB_2+"SelectHelper query = daoHelper.newSelectHelper( this.getQueryView(), this.getTableName() );" );
@@ -268,13 +272,18 @@ private void generateHelperClassLoadPk( GeneratorKeyHelper primaryKeyHelper ) {
268272
this.getWriter().println( TAB_2+RETURN_RESULT_LIT );
269273
this.getWriter().println( TAB+"}" );
270274
this.getWriter().println();
275+
// load by primary key optional
276+
this.getWriter().println( TAB+AT_OVERRIDE );
277+
this.getWriter().println( TAB+PUBLIC_LIT+Optional.class.getSimpleName()+"<"+this.getEntityModelName()+"> "+FacadeDefGenerator.METHOD_LOAD_BY_PK+"Optional( "+this.getClassDaogenContext()+CONTEXT_LIT+primaryKeyHelper.setForLoadInterface().getKeyParams()+CLOSE_AND_THROWS+this.getClassDaoException()+" {" );
278+
this.getWriter().println( TAB_2+"return "+Optional.class.getSimpleName()+".ofNullable( "+FacadeDefGenerator.METHOD_LOAD_BY_PK+"("+CONTEXT_LIT+primaryKeyHelper.getFieldNames()+") );" );
279+
this.getWriter().println( TAB+"}" );
280+
this.getWriter().println();
271281
}
272282

273283
private void generateHelperClassDelete(GeneratorKeyHelper primaryKeyHelper) {
274284
if ( FacadeGeneratorUtils.isFacadeModeDelete( this.getCurrentEntity() ) ) {
275285
// delete by primary key
276-
this.getWriter().println( TAB+AT_OVERRIDE );
277-
this.getWriter().println( TAB+PUBLIC_LIT+this.getEntityBaseResult()+" "+FacadeDefGenerator.METHOD_DELETE_BY_PK+"( "+this.getClassDaogenContext()+CONTEXT_LIT+primaryKeyHelper.setForLoadInterface().getKeyParams()+" ) throws "+this.getClassDaoException()+" {" );
286+
this.getWriter().println( TAB+AT_OVERRIDE ); this.getWriter().println( TAB+PUBLIC_LIT+this.getEntityBaseResult()+" "+FacadeDefGenerator.METHOD_DELETE_BY_PK+"( "+this.getClassDaogenContext()+CONTEXT_LIT+primaryKeyHelper.setForLoadInterface().getKeyParams()+CLOSE_AND_THROWS+this.getClassDaoException()+" {" );
278287
this.getWriter().println( TAB_2+this.getEntityBaseResult()+" result = new "+this.getClassBaseResult()+GENERIC_LIT );
279288
this.getWriter().println( TAB_2+this.getClassDaoHelper()+LT_LIT+this.getEntityModelName()+GT_LIT+DAO_HELPER_LIT+this.getClassDaoHelper()+CONTEXT_GEN_LIT );
280289
this.getWriter().println( TAB_2+"DeleteHelper query = daoHelper.newDeleteHelper( this.getTableName() );" );

fj-daogen-base/src/main/java/org/fugerit/java/daogen/base/gen/GeneratorKeyHelper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.Serializable;
44
import java.util.Set;
55
import java.util.TreeSet;
6+
import java.util.stream.Collectors;
67

78
import org.fugerit.java.core.javagen.GeneratorNameHelper;
89
import org.fugerit.java.core.lang.helpers.StringUtils;
@@ -42,6 +43,10 @@ public class GeneratorKeyHelper implements Serializable {
4243

4344
private Set<String> keyFields;
4445

46+
public String getFieldNames() {
47+
return StringUtils.concat( "," , this.keyFields.stream().map( GeneratorNameHelper::toPropertyName ).collect( Collectors.toList() ) );
48+
}
49+
4550
public GeneratorKeyHelper( DaogenCatalogConfig config, DaogenCatalogEntity entity, String key ) {
4651
this.config = config;
4752
this.entity = entity;

0 commit comments

Comments
 (0)