From ed0197e820cd4c8d59a223c11ac136572b5da40c Mon Sep 17 00:00:00 2001 From: pb Date: Sun, 15 Mar 2009 14:41:32 +0000 Subject: [PATCH] Incorporate TUV r1852 (code cleanup) git-svn-id: https://svn.libreccm.org/ccm/trunk@94 8810af33-2d31-482b-a856-94f89814c4df --- .../london/exporter/CategoryExportTool.java | 24 +++++------ .../london/exporter/CategoryExporter.java | 40 +++++++++---------- .../london/exporter/ContentExporter.java | 15 +++++-- .../london/exporter/ExporterConfig.java | 15 +++---- .../london/exporter/Initializer.java | 9 ++--- .../london/exporter/ItemExportTool.java | 36 ++++++++++++----- 6 files changed, 76 insertions(+), 63 deletions(-) diff --git a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/CategoryExportTool.java b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/CategoryExportTool.java index df87862c7..b96630c2a 100755 --- a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/CategoryExportTool.java +++ b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/CategoryExportTool.java @@ -19,20 +19,19 @@ package com.arsdigita.london.exporter; +import java.io.File; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Date; + import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.OptionBuilder; import com.arsdigita.categorization.Category; +import com.arsdigita.london.util.Transaction; +import com.arsdigita.packaging.Program; import com.arsdigita.util.UncheckedWrapperException; import com.arsdigita.web.Application; -import com.arsdigita.london.util.Program; -import com.arsdigita.london.util.Transaction; - -import java.net.URL; -import java.net.MalformedURLException; - -import java.util.Date; -import java.io.File; public class CategoryExportTool extends Program { @@ -64,8 +63,9 @@ public class CategoryExportTool extends Program { } final File catDir = new File(args[2]); - if (!catDir.exists()) { - catDir.mkdir(); + if (!catDir.exists() && !catDir.mkdir()) { + System.err.println("Could not mkdir " + catDir); + return; } final String app = args[0]; @@ -89,13 +89,13 @@ public class CategoryExportTool extends Program { try { catExporter.export(root, key, - new URL(url), + new URI(url), title, null, version, new Date(), exportItems); - } catch (MalformedURLException ex) { + } catch (URISyntaxException ex) { throw new UncheckedWrapperException("Cannot parse url " + url, ex); } } diff --git a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/CategoryExporter.java b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/CategoryExporter.java index 11945dfd2..368eb9ea8 100755 --- a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/CategoryExporter.java +++ b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/CategoryExporter.java @@ -18,32 +18,28 @@ package com.arsdigita.london.exporter; -import com.arsdigita.categorization.Category; -import com.arsdigita.domain.DomainCollection; -import com.arsdigita.cms.ContentItem; -import com.arsdigita.cms.ContentPage; -import com.arsdigita.xml.Element; -import com.arsdigita.xml.Document; - -import com.arsdigita.util.UncheckedWrapperException; - import java.io.File; -import java.io.IOException; import java.io.FileOutputStream; - -import java.net.URL; - +import java.io.IOException; +import java.net.URI; import java.text.DateFormat; import java.text.SimpleDateFormat; - import java.util.Date; -import java.util.Map; import java.util.HashMap; +import java.util.Map; import javax.xml.parsers.ParserConfigurationException; import org.apache.log4j.Logger; +import com.arsdigita.categorization.Category; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ContentPage; +import com.arsdigita.domain.DomainCollection; +import com.arsdigita.util.UncheckedWrapperException; +import com.arsdigita.xml.Document; +import com.arsdigita.xml.Element; + public class CategoryExporter { private static final Logger s_log = Logger.getLogger(CategoryExporter.class); @@ -62,7 +58,7 @@ public class CategoryExporter { public void export(Category root, String key, - URL url, + URI url, String title, String description, String version, @@ -80,7 +76,7 @@ public class CategoryExporter { public void export(Category root, String key, - URL url, + URI url, String title, String description, String version, @@ -96,7 +92,7 @@ public class CategoryExporter { private void exportDomain(Category root, String key, - URL url, + URI url, String title, String description, String version, @@ -125,7 +121,7 @@ public class CategoryExporter { if (!cat.equals(root)) { Element term = domain.newChildElement("terms:term", TERMS_XML_NS); - term.addAttribute("id", new Integer(id).toString()); + term.addAttribute("id", Integer.valueOf(id).toString()); term.addAttribute("name", cat.getName()); term.addAttribute("inAtoZ", "false"); } @@ -137,7 +133,7 @@ public class CategoryExporter { private void exportHierarchy(Category root, String key, - URL url) { + URI url) { Map idMap = getIDMap(url); Element hier = new Element("terms:hierarchy", @@ -210,7 +206,7 @@ public class CategoryExporter { private void exportItems(Category root, String key, - URL url) { + URI url) { Map idMap = getIDMap(url); Element items = new Element("terms:itemMapping", @@ -246,7 +242,7 @@ public class CategoryExporter { save(items, key + "-items.xml"); } - private Map getIDMap(URL url) { + private Map getIDMap(URI url) { if (!m_idMaps.containsKey(url)) { m_idMaps.put(url, new HashMap()); } diff --git a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ContentExporter.java b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ContentExporter.java index b3fc56987..b77001236 100755 --- a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ContentExporter.java +++ b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ContentExporter.java @@ -65,6 +65,10 @@ public class ContentExporter { String systemID) { Session session = SessionManager.getSession(); + if (!m_itemDir.exists() && !m_itemDir.mkdirs()) { + throw new UncheckedWrapperException(new IOException("mkdirs " + m_itemDir + " failed")); + } + DataCollection folders = session.retrieve(Folder.BASE_DATA_OBJECT_TYPE); Filter f = folders.addInSubqueryFilter(ACSObject.ID, "com.arsdigita.london.exporter.itemIDsInSection"); @@ -104,7 +108,10 @@ public class ContentExporter { String path = (parent == null ? "" : m_paths.get(parent) + "/" + folder.getName()); m_paths.put(folder, path); File dir = new File(m_itemDir, path); - dir.mkdir(); + + if (!dir.exists() && !dir.mkdir()) { + throw new UncheckedWrapperException(new IOException("mkdir " + dir + " failed")); + } if (pel != null) { s_log.debug("Adding " + el + " to " + pel); @@ -172,7 +179,7 @@ public class ContentExporter { try { File dst = new File(m_itemDir, "index.xml"); - FileOutputStream os = new FileOutputStream(dst); + FileOutputStream os = new FileOutputStream(dst, false); os.write(doc.toString(true).getBytes("UTF-8")); os.flush(); @@ -191,7 +198,7 @@ public class ContentExporter { OID oid = (OID)oids.next(); - if (s_log.isDebugEnabled()) { + if (s_log.isInfoEnabled()) { s_log.info("Exporting item " + oid); } @@ -262,7 +269,7 @@ public class ContentExporter { Folder parent = (Folder)m_folders.get(base); if (s_log.isDebugEnabled()) { - s_log.warn("Item " + item.getOID() + " with " + ancestors + " parent " + base + " obj " + parent); + s_log.debug("Item " + item.getOID() + " with " + ancestors + " parent " + base + " obj " + parent); } return parent; diff --git a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ExporterConfig.java b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ExporterConfig.java index 1ee72fbef..565079a39 100755 --- a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ExporterConfig.java +++ b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ExporterConfig.java @@ -18,22 +18,17 @@ package com.arsdigita.london.exporter; -import com.arsdigita.runtime.AbstractConfig; - -import com.arsdigita.util.parameter.Parameter; -import com.arsdigita.util.parameter.URLParameter; -import com.arsdigita.util.UncheckedWrapperException; - -import java.io.InputStream; import java.io.IOException; +import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; -import org.apache.log4j.Logger; +import com.arsdigita.runtime.AbstractConfig; +import com.arsdigita.util.UncheckedWrapperException; +import com.arsdigita.util.parameter.Parameter; +import com.arsdigita.util.parameter.URLParameter; public class ExporterConfig extends AbstractConfig { - private static final Logger s_log = - Logger.getLogger(ExporterConfig.class); private Parameter m_adapters; diff --git a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/Initializer.java b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/Initializer.java index 2d6854147..844d3b2e7 100755 --- a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/Initializer.java +++ b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/Initializer.java @@ -19,17 +19,14 @@ package com.arsdigita.london.exporter; import com.arsdigita.db.DbHelper; - +import com.arsdigita.domain.xml.TraversalHandler; import com.arsdigita.persistence.pdl.ManifestSource; import com.arsdigita.persistence.pdl.NameFilter; - -import com.arsdigita.runtime.RuntimeConfig; -import com.arsdigita.runtime.PDLInitializer; import com.arsdigita.runtime.CompoundInitializer; - import com.arsdigita.runtime.LegacyInitEvent; +import com.arsdigita.runtime.PDLInitializer; +import com.arsdigita.runtime.RuntimeConfig; import com.arsdigita.xml.XML; -import com.arsdigita.domain.xml.TraversalHandler; /** * Initializes the Exporter app diff --git a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ItemExportTool.java b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ItemExportTool.java index 7e18c608f..049ee1c15 100755 --- a/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ItemExportTool.java +++ b/ccm-ldn-exporter/src/com/arsdigita/london/exporter/ItemExportTool.java @@ -20,14 +20,15 @@ package com.arsdigita.london.exporter; import java.io.File; +import org.apache.commons.cli.CommandLine; + import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentSection; +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.london.util.Transaction; +import com.arsdigita.packaging.Program; import com.arsdigita.web.Application; import com.arsdigita.web.Web; -import com.arsdigita.london.util.Program; -import com.arsdigita.london.util.Transaction; - -import org.apache.commons.cli.CommandLine; public class ItemExportTool extends Program { @@ -46,21 +47,38 @@ public class ItemExportTool extends Program { } File itemDir = new File(args[0]); - if (!itemDir.exists()) { - itemDir.mkdir(); + if (!itemDir.exists() && !itemDir.mkdir()) { + System.err.println("mkdir " + itemDir + "failed"); + return; } File assetDir = new File(args[1]); - if (!assetDir.exists()) { - assetDir.mkdir(); + if (!assetDir.exists() && !assetDir.mkdir()) { + System.err.println("mkdir " + assetDir + "failed"); + return; } final ContentExporter exporter = new ContentExporter(itemDir, assetDir); + + // Construct the path to the content section, assuming the user + // may or may not have enter the preceding and trailing slashes + final StringBuilder path = new StringBuilder(); + if (!args[2].startsWith("/")) { + path.append("/"); + } + path.append(args[2]); + if (!args[2].endsWith("/")) { + path.append("/"); + } Transaction txn = new Transaction() { public void doRun() { ContentSection section = (ContentSection)Application - .retrieveApplicationForPath(args[2]); + .retrieveApplicationForPath(path.toString()); + + if (section == null) { + throw new DataObjectNotFoundException("No content section has a path of '" + path + "'"); + } exporter.exportManifest(section, ContentItem.DRAFT,