Skip to content

Commit

Permalink
FORGE-867 Save JPA entities only on modifications.
Browse files Browse the repository at this point in the history
A dirty bit is used to track whether the JPA entity is modified or not.
  • Loading branch information
VineetReynolds committed Apr 24, 2013
1 parent 22ff006 commit c922cea
Showing 1 changed file with 12 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
*/
package org.jboss.forge.scaffold.faces;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
Expand Down Expand Up @@ -36,6 +37,7 @@
import org.jboss.forge.project.dependencies.DependencyBuilder;
import org.jboss.forge.project.facets.BaseFacet;
import org.jboss.forge.project.facets.DependencyFacet;
import org.jboss.forge.project.facets.FacetNotFoundException;
import org.jboss.forge.project.facets.JavaSourceFacet;
import org.jboss.forge.project.facets.WebResourceFacet;
import org.jboss.forge.project.facets.events.InstallFacets;
Expand Down Expand Up @@ -329,8 +331,6 @@ public List<Resource<?>> generateFromEntity(String targetDir, final Resource<?>
this.taglibTemplate.render(context), true));

createInitializers(entity);
this.project.getFacet(JavaSourceFacet.class).saveJavaSource(entity);

}
catch (Exception e)
{
Expand Down Expand Up @@ -584,8 +584,9 @@ protected <W extends StaticWidget, M extends W> CompositeWidgetBuilder<W, M> ins
new CompositeWidgetBuilderConfig<W, M>().setWidgetBuilders(newWidgetBuilders));
}

protected void createInitializers(final JavaClass entity)
protected void createInitializers(final JavaClass entity) throws FacetNotFoundException, FileNotFoundException
{
boolean dirtyBit = false;
for (Field<JavaClass> field : entity.getFields())
{
if (field.hasAnnotation(OneToOne.class))
Expand All @@ -594,12 +595,14 @@ protected void createInitializers(final JavaClass entity)
if (oneToOne.getStringValue("mappedBy") == null && oneToOne.getStringValue("cascade") == null)
{
oneToOne.setEnumValue("cascade", CascadeType.ALL);
dirtyBit = true;
}
String methodName = "new" + field.getTypeInspector().getName();
if (!entity.hasMethodSignature(methodName))
{
entity.addMethod().setName(methodName).setReturnTypeVoid().setPublic()
.setBody("this." + field.getName() + " = new " + field.getType() + "();");
dirtyBit = true;
}
}
}
Expand All @@ -611,15 +614,21 @@ protected void createInitializers(final JavaClass entity)
if (oneToOne.getStringValue("mappedBy") == null && oneToOne.getStringValue("cascade") == null)
{
oneToOne.setEnumValue("cascade", CascadeType.ALL);
dirtyBit = true;
}
String methodName = "new" + method.getReturnTypeInspector().getName();
if (!entity.hasMethodSignature(methodName))
{
entity.addMethod().setName(methodName).setReturnTypeVoid().setPublic()
.setBody("this." + method.getName() + " = new " + method.getReturnType() + "();");
dirtyBit = true;
}
}
}
if(dirtyBit)
{
this.project.getFacet(JavaSourceFacet.class).saveJavaSource(entity);
}
}

protected HashMap<Object, Object> getTemplateContext(String targetDir, final Resource<?> template)
Expand Down

0 comments on commit c922cea

Please sign in to comment.