diff --git a/dotCMS/src/main/java/com/dotcms/rendering/velocity/directive/DotDirective.java b/dotCMS/src/main/java/com/dotcms/rendering/velocity/directive/DotDirective.java index ff8af22012c2..86ec87dace8e 100644 --- a/dotCMS/src/main/java/com/dotcms/rendering/velocity/directive/DotDirective.java +++ b/dotCMS/src/main/java/com/dotcms/rendering/velocity/directive/DotDirective.java @@ -90,6 +90,9 @@ final public boolean render(InternalContextAdapter context, Writer writer, Node try{ String templatePath = this.resolveTemplatePath(context, writer, params, arguments); + if(null ==templatePath) { + throw new ResourceNotFoundException("null template"); + } Template t = loadTemplate(context, templatePath); return this.renderTemplate(context, writer, t, templatePath); } diff --git a/dotCMS/src/main/java/com/dotcms/util/transform/TransformerLocator.java b/dotCMS/src/main/java/com/dotcms/util/transform/TransformerLocator.java index 57867976ff77..eac66b05ead8 100644 --- a/dotCMS/src/main/java/com/dotcms/util/transform/TransformerLocator.java +++ b/dotCMS/src/main/java/com/dotcms/util/transform/TransformerLocator.java @@ -3,7 +3,9 @@ import com.dotmarketing.beans.Identifier; import com.dotmarketing.beans.Tree; import com.dotmarketing.beans.transform.IdentifierTransformer; +import com.dotmarketing.beans.transform.OracleTreeTransformer; import com.dotmarketing.beans.transform.TreeTransformer; +import com.dotmarketing.db.DbConnectionFactory; import com.dotmarketing.portlets.containers.model.Container; import com.dotmarketing.portlets.containers.transform.ContainerTransformer; import com.dotmarketing.portlets.contentlet.model.Contentlet; @@ -147,6 +149,6 @@ public static IdentifierTransformer createIdentifierTransformer( public static TreeTransformer createTreeTransformer( List> initList) { - return new TreeTransformer(initList); + return DbConnectionFactory.isOracle()?new OracleTreeTransformer(initList):new TreeTransformer(initList); } } diff --git a/dotCMS/src/main/java/com/dotmarketing/beans/transform/OracleTreeTransformer.java b/dotCMS/src/main/java/com/dotmarketing/beans/transform/OracleTreeTransformer.java new file mode 100644 index 000000000000..0891eeb98375 --- /dev/null +++ b/dotCMS/src/main/java/com/dotmarketing/beans/transform/OracleTreeTransformer.java @@ -0,0 +1,25 @@ +package com.dotmarketing.beans.transform; + +import com.dotmarketing.beans.Tree; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +public class OracleTreeTransformer extends TreeTransformer { + + public OracleTreeTransformer(List> list) { + super(list); + } + + @Override + Tree toTree(Map map) { + Tree tree=new Tree(); + tree.setParent((String)map.getOrDefault("parent", null)); + tree.setChild((String)map.getOrDefault("child", null)); + tree.setRelationType((String)map.getOrDefault("relation_type", null)); + tree.setTreeOrder(((BigDecimal)map.getOrDefault("tree_order", 0)).intValue()); + + return tree; + } +} diff --git a/dotCMS/src/main/java/com/dotmarketing/beans/transform/TreeTransformer.java b/dotCMS/src/main/java/com/dotmarketing/beans/transform/TreeTransformer.java index 14cee0bdb3ae..a4b286ad5900 100644 --- a/dotCMS/src/main/java/com/dotmarketing/beans/transform/TreeTransformer.java +++ b/dotCMS/src/main/java/com/dotmarketing/beans/transform/TreeTransformer.java @@ -29,7 +29,7 @@ public Tree findFirst() { return this.asList().stream().findFirst().orElse(new Tree()); } - private Tree toTree (Map map){ + Tree toTree (Map map){ Tree tree=new Tree(); tree.setParent((String)map.getOrDefault("parent", null)); diff --git a/dotCMS/src/main/java/com/dotmarketing/portlets/templates/business/TemplateFactoryImpl.java b/dotCMS/src/main/java/com/dotmarketing/portlets/templates/business/TemplateFactoryImpl.java index 4de06a754594..4a6cd39b6b40 100644 --- a/dotCMS/src/main/java/com/dotmarketing/portlets/templates/business/TemplateFactoryImpl.java +++ b/dotCMS/src/main/java/com/dotmarketing/portlets/templates/business/TemplateFactoryImpl.java @@ -25,6 +25,7 @@ import com.dotmarketing.util.Logger; import com.dotmarketing.util.PaginatedArrayList; import com.dotmarketing.util.RegEX; +import com.dotmarketing.util.UUIDGenerator; import com.dotmarketing.util.UtilMethods; import java.io.IOException; @@ -107,12 +108,11 @@ public void delete(Template template) throws DotDataException { } public void save(Template template) throws DotDataException { - if(!UtilMethods.isSet(template.getIdentifier())){ - throw new DotStateException("Cannot save a template without an Identifier"); - } - HibernateUtil.save(template); + + + + save(template, UUIDGenerator.generateUuid()); - new TemplateLoader().invalidate(template); } @@ -120,6 +120,18 @@ public void save(Template template, String existingId) throws DotDataException { if(!UtilMethods.isSet(template.getIdentifier())){ throw new DotStateException("Cannot save a tempalte without an Identifier"); } + + if(UtilMethods.isSet(template.getDrawedBody())) { + template.setDrawed(true); + }else { + template.setDrawedBody((String)null); + template.setDrawed(false); + } + + + + + HibernateUtil.saveWithPrimaryKey(template, existingId); templateCache.add(template.getInode(), template); new TemplateLoader().invalidate(template); diff --git a/dotCMS/src/main/java/com/dotmarketing/portlets/templates/model/Template.java b/dotCMS/src/main/java/com/dotmarketing/portlets/templates/model/Template.java index 4b3e92ce1289..2ae9cecdd095 100644 --- a/dotCMS/src/main/java/com/dotmarketing/portlets/templates/model/Template.java +++ b/dotCMS/src/main/java/com/dotmarketing/portlets/templates/model/Template.java @@ -41,7 +41,7 @@ public class Template extends WebAsset implements Serializable, Comparable { private String image; // *********************** BEGIN GRAZIANO issue-12-dnd-template - private Boolean drawed; + private Boolean drawed=false; private String drawedBody; @@ -195,7 +195,7 @@ public void setHeader(String header) { * @return */ public Boolean isDrawed() { - return this.drawed; + return (this.drawed==null) ? UtilMethods.isSet(drawedBody) : this.drawed; } /** @@ -203,10 +203,7 @@ public Boolean isDrawed() { * @param drawed */ public void setDrawed(Boolean drawed) { - if(null!=drawed) - this.drawed = drawed; - else - this.drawed = false; + this.drawed = (null!=drawed) ? drawed : false; } public String getDrawedBody() {