From c56db8ae782167c645223b385516933728a32705 Mon Sep 17 00:00:00 2001 From: tosmers Date: Mon, 13 Jul 2015 11:58:04 +0000 Subject: [PATCH] =?UTF-8?q?[UPDATE]=20Unload=20einsatzf=C3=A4hig.=20Alle?= =?UTF-8?q?=20bekannten=20Fehler=20behoben.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@3523 8810af33-2d31-482b-a856-94f89814c4df --- .../ui/ExternalLinkPropertyForm.java | 6 ++-- .../AbstractContentTypeUnloader.java | 31 +++++++++++++------ .../contenttypes/XMLContentTypeHandler.java | 16 +++------- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/ccm-cms-types-externallink/src/com/arsdigita/cms/contenttypes/ui/ExternalLinkPropertyForm.java b/ccm-cms-types-externallink/src/com/arsdigita/cms/contenttypes/ui/ExternalLinkPropertyForm.java index b55cf8e28..1d5711493 100644 --- a/ccm-cms-types-externallink/src/com/arsdigita/cms/contenttypes/ui/ExternalLinkPropertyForm.java +++ b/ccm-cms-types-externallink/src/com/arsdigita/cms/contenttypes/ui/ExternalLinkPropertyForm.java @@ -130,14 +130,16 @@ public class ExternalLinkPropertyForm extends BasicPageForm description.setValue(state, extLink.getDescription()); url.setValue(state, extLink.getURL()); comment.setValue(state, extLink.getComment()); - if (extLink.getShowComment()) { + if (extLink.getShowComment() != null + && extLink.getShowComment()) { showCommentCheckBox.setValue( state, new String[]{ExternalLink.SHOW_COMMENT}); } else { showCommentCheckBox.setValue(state, null); } - if (extLink.getTargetNewWindow()) { + if (extLink.getTargetNewWindow() != null + && extLink.getTargetNewWindow()) { targetWindowCheckBox.setValue( state, new String[]{ExternalLink.TARGET_WINDOW}); } else { diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/AbstractContentTypeUnloader.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/AbstractContentTypeUnloader.java index 28a4c8adc..329df142b 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/AbstractContentTypeUnloader.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/AbstractContentTypeUnloader.java @@ -29,6 +29,7 @@ import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.Session; import com.arsdigita.runtime.ScriptContext; import com.arsdigita.xml.XML; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.log4j.Logger; @@ -37,7 +38,7 @@ import org.apache.log4j.Logger; * * * @author Tobias Osmers - * @version $Revision: #1 $ $Date: 2015/05/18 $ + * @version $Revision: #2 $ $Date: 2015/07/13 $ */ public abstract class AbstractContentTypeUnloader extends PackageLoader { /** @@ -84,13 +85,16 @@ public abstract class AbstractContentTypeUnloader extends PackageLoader { */ private void sweepTypes(ScriptContext ctx) { XMLContentTypeHandler handler = new XMLContentTypeHandler(false); - // Retrieve the content type definition file(s) + ArrayList deletableCTs = new ArrayList(); + // Retrieve the content type definition file(s) and store all + // content-type-helper to delete all content types later String[] contentTypes = getTypes(); for (String contentType : contentTypes) { XML.parseResource(contentType, handler); + deletableCTs.add(handler.getContentTypeHelper()); } - - List types = handler.getContentTypes(); + + List types = handler.getContentTypes(); Session ssn = ctx.getSession(); // Removes all contentitems/instances of the specified @@ -105,13 +109,17 @@ public abstract class AbstractContentTypeUnloader extends PackageLoader { } catch (Exception ex) { continue; } - if (contentItem == null || !contentItem.isPublished()) { + if (contentItem == null) { continue; } - for (Iterator it = types.iterator(); it.hasNext(); ) { - final ContentType type = (ContentType) it.next(); - if (contentItem.getContentType().equals(type)) { - contentItem.unpublish(); + //for (Iterator it = types.iterator(); it.hasNext(); ) { + //final ContentType type = (ContentType) it.next(); + for (ContentType type : types) { + ContentType ctype = contentItem.getContentType(); + if (ctype != null && ctype.equals(type)) { + if (contentItem.isPublished()) { + contentItem.unpublish(); + } contentItem.delete(); } } @@ -132,6 +140,11 @@ public abstract class AbstractContentTypeUnloader extends PackageLoader { section.removeContentType(type); } } + + // Delete content types + for (ContentTypeHelper deletableCT : deletableCTs) { + deletableCT.deleteType(); + } } /** diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/XMLContentTypeHandler.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/XMLContentTypeHandler.java index e1856e4da..3c260de3c 100755 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/XMLContentTypeHandler.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/XMLContentTypeHandler.java @@ -60,11 +60,14 @@ public class XMLContentTypeHandler extends DefaultHandler { public List getContentTypes() { return m_types; } + + public ContentTypeHelper getContentTypeHelper() { + return m_type; + } @Override public void startElement(String uri, String name, String qName, Attributes atts) { - boolean deletableType = false; if (name.equals("content-types")) { s_log.debug("matched content-types"); } else if (name.equals("content-type")) { @@ -103,9 +106,6 @@ public class XMLContentTypeHandler extends DefaultHandler { m_contentType = m_type.createType(); m_types.add(m_contentType); - - // m_type has been initialized - deletableType = true; } else if (name.equals("authoring-kit")) { if (!m_including) { s_log.debug("matched authoring-kit"); @@ -114,9 +114,6 @@ public class XMLContentTypeHandler extends DefaultHandler { } m_authoringKit = m_type.createAuthoringKit(); m_nextOrder = 1; - - // only true if it has been initialized - deletableType &= true; } } else if (name.equals("authoring-step")) { String label = atts.getValue("label"); @@ -144,10 +141,5 @@ public class XMLContentTypeHandler extends DefaultHandler { s_log.error("None of the elements match! name: " + name + " qName: " + qName + " URI: " + uri); } - - if (!create && deletableType) { - m_type.deleteType(); - } } - }