Scarab commit: svn commit: r10547 - trunk: . src/conf/classes/org/tigris/scarab/util/xmlissues/xsls src/java/org/tigris/scarab/screens/admin src/java/org/tigris/scarab/util/xmlissues

[email protected]
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: hair
Date: 2008-05-01 05:18:39-0700
New Revision: 10547

Modified:
   trunk/   (props changed)
   trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/bugzilla.xsl
   trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/jira.xsl
   trunk/src/java/org/tigris/scarab/screens/admin/XMLImportIssuesResults.java
   trunk/src/java/org/tigris/scarab/util/xmlissues/ImportIssues.java
   trunk/src/java/org/tigris/scarab/util/xmlissues/ScarabIssues.java

Log:
SCB1584 - Import issues from Jira
 importing attachments implemented


Modified: trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/bugzilla.xsl
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/bugzilla.xsl?view=diff&rev=10547&p1=trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/bugzilla.xsl&p2=trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/bugzilla.xsl&r1=10546&r2=10547
==============================================================================
--- trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/bugzilla.xsl	(original)
+++ trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/bugzilla.xsl	2008-05-01 05:18:39-0700
@@ -24,7 +24,8 @@
 
 <!-- Path to our resources. We look in $resources_path/attachments for
      attachment files. The server instance must be able to see this
-     path during the import. -->
+     path during the import.
+         Default is ${catalina.home}/../extensions/bugzilla -->
 <xsl:param name="resources_path" as="xs:string"/>
 
 <!-- The Scarab module code -->

Modified: trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/jira.xsl
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/jira.xsl?view=diff&rev=10547&p1=trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/jira.xsl&p2=trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/jira.xsl&r1=10546&r2=10547
==============================================================================
--- trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/jira.xsl	(original)
+++ trunk/src/conf/classes/org/tigris/scarab/util/xmlissues/xsls/jira.xsl	2008-05-01 05:18:39-0700
@@ -5,10 +5,18 @@
     Author     : hair
     Description: Transform a jira xml into scarab xml. The transformed xml can then be imported into scarab.
 -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
+                xmlns:xs="http://www.w3.org/2001/XMLSchema">
+                    
     <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
 <!--    doctype-system="http://scarab.tigris.org/dtd/scarab-0.21.0.dtd"/-->
 
+    <!-- Path to our resources. We look in $resources_path/attachments for
+         attachment files. The server instance must be able to see this
+         path during the import. 
+         Default is WEB-INF/attachments -->
+    <xsl:param name="resources_path" as="xs:string"/>
+
     <xsl:template match="rss/channel">
 
         <scarab-issues>
@@ -145,18 +153,23 @@
                                         <format>EEE, d MMM yyyy HH:mm:ss Z (z)</format>
                                         <timestamp><xsl:value-of select="../../updated"/></timestamp>
                                     </created-date>
-                                    <attachment>
-                                        <name>comment</name>
-                                        <type>COMMENT</type>
-                                        <data><xsl:call-template name="tidy-html"><xsl:with-param name="input" select="."/></xsl:call-template></data>
-                                        <mimetype>text/plain</mimetype>
-                                        <created-date>
-                                            <format>EEE, d MMM yyyy HH:mm:ss Z (z)</format>
-                                            <timestamp><xsl:value-of select="@created"/></timestamp>
-                                        </created-date>
-                                        <created-by><xsl:value-of select="@author"/></created-by>
-                                        <deleted>false</deleted>
-                                    </attachment>
+                                    <activities>
+                                        <activity>
+                                            <attribute>NullAttribute</attribute>
+                                            <attachment>
+                                                <name>comment</name>
+                                                <type>COMMENT</type>
+                                                <data><xsl:call-template name="tidy-html"><xsl:with-param name="input" select="."/></xsl:call-template></data>
+                                                <mimetype>text/plain</mimetype>
+                                                <created-date>
+                                                    <format>EEE, d MMM yyyy HH:mm:ss Z (z)</format>
+                                                    <timestamp><xsl:value-of select="@created"/></timestamp>
+                                                </created-date>
+                                                <created-by><xsl:value-of select="@author"/></created-by>
+                                                <deleted>false</deleted>
+                                            </attachment>
+                                        </activity>
+                                    </activities>
                                 </activity-set>
                             </xsl:for-each>
 
@@ -216,7 +229,37 @@
 
                                 </activity-set>
                             </xsl:for-each>
-
+                            
+                            <xsl:for-each select="attachments/attachment">
+                                <activity-set>
+                                    <type>Edit Issue</type>
+                                    <created-date>
+                                        <format>EEE, d MMM yyyy HH:mm:ss Z (z)</format>
+                                        <timestamp><xsl:value-of select="@created"/></timestamp>
+                                    </created-date>
+                                    <activities>
+                                        <activity>
+                                            <attribute>NullAttribute</attribute>
+                                            <attachment>
+                                                <name>attachment</name>
+                                                <type>ATTACHMENT</type>
+                                                <!-- the following path presumes all attachments have been copied into WEB-INF/attachments/ -->
+                                                <filename><xsl:value-of select="$resources_path"/><xsl:value-of select="@id"/>_<xsl:value-of select="@name"/></filename>
+                                                <!-- and this will copy it to the correct subdirectory in WEB-INF/attachments (or what scarab.attachents.repository is) -->
+                                                <reconcile-path>true</reconcile-path>
+                                                <created-date>
+                                                    <format>EEE, d MMM yyyy HH:mm:ss Z (z)</format>
+                                                    <timestamp><xsl:value-of select="@created"/></timestamp>
+                                                </created-date>
+                                                <created-by><xsl:value-of select="@author"/></created-by>
+                                                <deleted>false</deleted>
+                                                <description>Added file attachment '<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>'</description>
+                                            </attachment>
+                                        </activity>
+                                    </activities>
+                                </activity-set>
+                            </xsl:for-each>
+                            
                         </activity-sets>
                     </issue>
 

Modified: trunk/src/java/org/tigris/scarab/screens/admin/XMLImportIssuesResults.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/screens/admin/XMLImportIssuesResults.java?view=diff&rev=10547&p1=trunk/src/java/org/tigris/scarab/screens/admin/XMLImportIssuesResults.java&p2=trunk/src/java/org/tigris/scarab/screens/admin/XMLImportIssuesResults.java&r1=10546&r2=10547
==============================================================================
--- trunk/src/java/org/tigris/scarab/screens/admin/XMLImportIssuesResults.java	(original)
+++ trunk/src/java/org/tigris/scarab/screens/admin/XMLImportIssuesResults.java	2008-05-01 05:18:39-0700
@@ -115,8 +115,9 @@
                 {
                     final ScarabUser user = (ScarabUser)data.getUser();
                     final ImportIssues importIssues = new ImportIssues(
-                            false, 
-                            user.hasPermission(ScarabSecurity.DOMAIN__ADMIN, (Module)null));
+                            user.hasPermission(ScarabSecurity.DOMAIN__ADMIN, (Module)null),
+                            user.hasPermission(ScarabSecurity.DOMAIN__ADMIN, (Module)null),
+                            data.getServletConfig().getServletContext().getRealPath("/") + "/WEB-INF/attachments/");
                     final ScarabRequestTool scarabR = getScarabRequestTool(context);
                     final String type = data.getParameters().getString("xmlFormat");
                     

Modified: trunk/src/java/org/tigris/scarab/util/xmlissues/ImportIssues.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/util/xmlissues/ImportIssues.java?view=diff&rev=10547&p1=trunk/src/java/org/tigris/scarab/util/xmlissues/ImportIssues.java&p2=trunk/src/java/org/tigris/scarab/util/xmlissues/ImportIssues.java&r1=10546&r2=10547
==============================================================================
--- trunk/src/java/org/tigris/scarab/util/xmlissues/ImportIssues.java	(original)
+++ trunk/src/java/org/tigris/scarab/util/xmlissues/ImportIssues.java	2008-05-01 05:18:39-0700
@@ -184,6 +184,7 @@
     private boolean sendEmail = false;
     private File xmlFile = null;
     private boolean allowGlobalImports;
+    private String resourceDirectory;
 
     /**
      * Current file attachment handling code contains a security hole
@@ -210,13 +211,17 @@
 
     public ImportIssues()
     {
-        this(false, false);
+        this(true, false, null);
     }
 
-    public ImportIssues(final boolean allowFileAttachments, final boolean allowGlobalImports) 
+    public ImportIssues(
+            final boolean allowFileAttachments, 
+            final boolean allowGlobalImports,
+            final String resourceDirectory) 
     {
         this.allowFileAttachments = allowFileAttachments;
         this.allowGlobalImports = allowGlobalImports;
+        this.resourceDirectory = resourceDirectory;
         this.importErrors = new ImportErrors();
     }
 
@@ -822,7 +827,8 @@
         {
             // Location of the extensions directory for Bugzilla
             // Transform configuration, mappings and attachments are here
-            String extensions = System.getProperty("catalina.home") + "/../extensions/bugzilla";
+            // TODO move onto resourceDirectory derivative
+            final String extensions = System.getProperty("catalina.home") + "/../extensions/bugzilla";
             
             // Locate the Bugzilla to Scarab XSL transform
             final InputStream xsl = getClass().getResourceAsStream(BUGZILLA_XSL);
@@ -837,10 +843,11 @@
         }
         else if( JIRA == type )
         {
+                    
             // transform xml to scarab format
             final InputStream xsl = getClass().getResourceAsStream(JIRA_XSL);
             final Reader result = transformXML(
-                    new StreamSource(readerFor(input)), xsl, currModule, null);
+                    new StreamSource(readerFor(input)), xsl, currModule, resourceDirectory);
             // insert missing information (module)
             returnValue = insertModuleNode(result, currModule);
         }

Modified: trunk/src/java/org/tigris/scarab/util/xmlissues/ScarabIssues.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/util/xmlissues/ScarabIssues.java?view=diff&rev=10547&p1=trunk/src/java/org/tigris/scarab/util/xmlissues/ScarabIssues.java&p2=trunk/src/java/org/tigris/scarab/util/xmlissues/ScarabIssues.java&r1=10546&r2=10547
==============================================================================
--- trunk/src/java/org/tigris/scarab/util/xmlissues/ScarabIssues.java	(original)
+++ trunk/src/java/org/tigris/scarab/util/xmlissues/ScarabIssues.java	2008-05-01 05:18:39-0700
@@ -94,6 +94,7 @@
 import org.tigris.scarab.om.ScarabUserManager;
 import org.tigris.scarab.tools.localization.L10NKey;
 import org.tigris.scarab.tools.localization.L10NKeySet;
+import org.tigris.scarab.util.ComponentLocator;
 import org.tigris.scarab.util.ScarabConstants;
 import org.tigris.scarab.util.ScarabException;
 
@@ -1157,15 +1158,12 @@
                     // same so there is no reason to re-create the attachment
                     // again.
                     final String previousXmlId = activityAttachment.getId();
-                    final String previousId = (String)attachmentIdMap
-                        .get(previousXmlId);
+                    final String previousId = (String)attachmentIdMap.get(previousXmlId);
                     if (previousId == null) 
                     {
-                        activityAttachmentOM = createAttachment(
-                            issueOM, activityAttachment);
+                        activityAttachmentOM = createAttachment(issueOM, activityAttachment);
                         activityAttachmentOM.save();
-                        attachmentIdMap.put(previousXmlId, 
-                            activityAttachmentOM.getPrimaryKey().toString());
+                        attachmentIdMap.put(previousXmlId, activityAttachmentOM.getPrimaryKey().toString());
                         
                         // Special case. After the Attachment object has been 
                         // saved, if the ReconcilePath == true, then assume 
@@ -1460,7 +1458,9 @@
         {
             attachmentOM.setName(attachment.getName());
             attachmentOM.setAttachmentType(type);
-            attachmentOM.setMimeType(attachment.getMimetype());
+            attachmentOM.setMimeType(null != attachment.getMimetype()
+                    ? attachment.getMimetype()
+                    : ComponentLocator.getMimeTypeService().getContentType(attachment.getFilename(), null));
             attachmentOM.setFileName(attachment.getFilename());        
             attachmentOM.setData(attachment.getData());
         }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.