flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cd...@apache.org
Subject [1/2] git commit: [flex-utilities] [refs/heads/master] - NO JIRA: - Made the SDKGenerator process all found air and flex sdks in the right order by sorting the conversions according to the version information found in the sdks themselves.
Date Sun, 03 Nov 2013 15:03:46 GMT
Updated Branches:
  refs/heads/master f57d54194 -> 4d387c682


NO JIRA:
- Made the SDKGenerator process all found air and flex sdks in the right order by sorting
the conversions according to the version information found in the sdks themselves.


Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/1845ac53
Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/1845ac53
Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/1845ac53

Branch: refs/heads/master
Commit: 1845ac53b6dcc3e5cf37975b1a283b2550f965bb
Parents: f57d541
Author: Christofer Dutz <christofer.dutz@c-ware.de>
Authored: Sun Nov 3 15:37:42 2013 +0100
Committer: Christofer Dutz <christofer.dutz@c-ware.de>
Committed: Sun Nov 3 15:37:42 2013 +0100

----------------------------------------------------------------------
 mavenizer/src/main/java/SDKGenerator.java       | 91 +++++++++++---------
 .../src/main/java/common/ConversionPlan.java    | 57 ++++++++++++
 2 files changed, 107 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/1845ac53/mavenizer/src/main/java/SDKGenerator.java
----------------------------------------------------------------------
diff --git a/mavenizer/src/main/java/SDKGenerator.java b/mavenizer/src/main/java/SDKGenerator.java
index 401367c..c69eda6 100644
--- a/mavenizer/src/main/java/SDKGenerator.java
+++ b/mavenizer/src/main/java/SDKGenerator.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 import java.io.*;
-import java.util.ArrayList;
-import java.util.List;
 import javax.xml.parsers.*;
 
 import air.AirCompilerGenerator;
+import common.ConversionPlan;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
@@ -37,7 +36,21 @@ import flex.FlexRuntimeGenerator;
  */
 public class SDKGenerator {
 
-    protected List<String> generatedAirVersions = new ArrayList<String>();
+    protected void buildAirConversionPlan(ConversionPlan plan, File sdkSourceDirectory) {
+        final File sdkDirectories[] = sdkSourceDirectory.listFiles(new FileFilter() {
+            public boolean accept(File pathname) {
+                return pathname.isDirectory();
+            }
+        });
+        if (sdkDirectories != null) {
+            for (final File sdkDirectory : sdkDirectories) {
+                final String sdkVersion = getAirSdkVersion(sdkDirectory);
+                if(sdkVersion != null) {
+                    plan.addVersion(sdkVersion, sdkDirectory, false);
+                }
+            }
+        }
+    }
 
     /**
      * All this little helper does is list up all directories in the given base directory
and
@@ -45,34 +58,19 @@ public class SDKGenerator {
      * is identical to that of an ordinary air sdk. Therefore the import works if a flex
sdk or
      * an air sdk directory is passed to this method.
      *
-     * @param sdkSourceDirectory source directory containing the air content
+     * @param plan conversion plan for converting the air sdks containing the air content
      * @param sdkTargetDirectory directory where to copy the content
      * @throws Exception
      */
-    public void generateAllAir(File sdkSourceDirectory, File sdkTargetDirectory) throws Exception
{
-        final File sdkDirectories[] = sdkSourceDirectory.listFiles(new FileFilter() {
-            public boolean accept(File pathname) {
-                return pathname.isDirectory();
-            }
-        });
-        if (sdkDirectories != null) {
-            System.out.println("---------------------------------------------");
-            for (final File sdkDirectory : sdkDirectories) {
-                String sdkVersion = getAirSdkVersion(sdkDirectory);
-
-                // As we are eventually generating the air sdks first, a flex sdk processed
-                // later could contain the same version of air, in this case we skip that.
-                if((sdkVersion != null) && !generatedAirVersions.contains(sdkVersion))
{
-                    System.out.println("-- Generating Air SDK version: " + sdkVersion);
-                    System.out.println("---------------------------------------------");
-
-                    generateAir(sdkDirectory, sdkTargetDirectory, sdkVersion);
+    public void generateAllAir(ConversionPlan plan, File sdkTargetDirectory) throws Exception
{
+        for(final String airVersion : plan.getVersionIterator()) {
+            final File airDirectory = plan.getDirectory(airVersion);
 
-                    System.out.println("---------------------------------------------");
+            System.out.println("---------------------------------------------");
+            System.out.println("-- Generating Air SDK version: " + airVersion);
+            System.out.println("---------------------------------------------");
 
-                    generatedAirVersions.add(sdkVersion);
-                }
-            }
+            generateAir(airDirectory, sdkTargetDirectory, airVersion);
         }
     }
 
@@ -87,31 +85,38 @@ public class SDKGenerator {
         new AirRuntimeGenerator().process(sdkSourceDirectory, false, sdkTargetDirectory,
sdkVersion, false);
     }
 
-    public void generateAllFlex(File sdkSourceDirectory, File sdkTargetDirectory, boolean
useApache) throws Exception {
+    protected void buildFlexConversionPlan(ConversionPlan plan, File sdkSourceDirectory)
{
         final File sdkDirectories[] = sdkSourceDirectory.listFiles(new FileFilter() {
             public boolean accept(File pathname) {
                 return pathname.isDirectory();
             }
         });
         if (sdkDirectories != null) {
-            System.out.println("---------------------------------------------");
+            // Build a sorted set of versions as well as maps for the additional information
+            // to allow sorted conversion of the Flex SDKs.
             for (final File sdkDirectory : sdkDirectories) {
-                String sdkVersion = getFlexSdkVersion(sdkDirectory);
-
-                // Apache FDKs (ok ... the only one available) have the version prefix "Apache-"
+                String fdkVersion = getFlexSdkVersion(sdkDirectory);
+                // Apache FDKs have the version prefix "Apache-"
                 // So this is what we use in order to determine what type of FDK it is.
-                final boolean isApache = sdkVersion.startsWith("Apache-");
+                final boolean isApache = fdkVersion.startsWith("Apache-");
                 if (isApache) {
-                    sdkVersion = sdkVersion.substring("Apache-".length());
+                    fdkVersion = fdkVersion.substring("Apache-".length());
                 }
+                plan.addVersion(fdkVersion, sdkDirectory, isApache);
+            }
+        }
+    }
 
-                System.out.println("-- Generating Flex SDK version: " + sdkVersion);
-                System.out.println("---------------------------------------------");
+    public void generateAllFlex(ConversionPlan plan, File sdkTargetDirectory, boolean useApache)
throws Exception {
+        for(final String fdkVersion : plan.getVersionIterator()) {
+            final File fdkDirectory = plan.getDirectory(fdkVersion);
+            final boolean isApache = plan.getApacheFlag(fdkVersion);
 
-                generateFlex(sdkDirectory, isApache, sdkTargetDirectory, sdkVersion, useApache);
+            System.out.println("---------------------------------------------");
+            System.out.println("-- Generating Flex SDK version: " + fdkVersion);
+            System.out.println("---------------------------------------------");
 
-                System.out.println("---------------------------------------------");
-            }
+            generateFlex(fdkDirectory, isApache, sdkTargetDirectory, fdkVersion, useApache);
         }
     }
 
@@ -146,11 +151,15 @@ public class SDKGenerator {
         // hashes has to be created first. Therefore the Generator generates air artifacts
by processing air
         // sdk directories and then by extracting the needed artifacts from the flex fdks.
         final SDKGenerator generator = new SDKGenerator();
-        generator.generateAllAir(new File(sdkSourceDirectory, "air"), sdkTargetDirectory);
-        generator.generateAllAir(new File(sdkSourceDirectory, "flex"), sdkTargetDirectory);
+        final ConversionPlan airPlan = new ConversionPlan();
+        generator.buildAirConversionPlan(airPlan, new File(sdkSourceDirectory, "air"));
+        generator.buildAirConversionPlan(airPlan, new File(sdkSourceDirectory, "flex"));
+        generator.generateAllAir(airPlan, sdkTargetDirectory);
 
         // After the air artifacts are generated and
-        generator.generateAllFlex(new File(sdkSourceDirectory, "flex"), sdkTargetDirectory,
useApache);
+        final ConversionPlan flexPlan = new ConversionPlan();
+        generator.buildFlexConversionPlan(flexPlan, new File(sdkSourceDirectory, "flex"));
+        generator.generateAllFlex(flexPlan, sdkTargetDirectory, useApache);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/1845ac53/mavenizer/src/main/java/common/ConversionPlan.java
----------------------------------------------------------------------
diff --git a/mavenizer/src/main/java/common/ConversionPlan.java b/mavenizer/src/main/java/common/ConversionPlan.java
new file mode 100644
index 0000000..ec83ecf
--- /dev/null
+++ b/mavenizer/src/main/java/common/ConversionPlan.java
@@ -0,0 +1,57 @@
+package common;
+
+import java.io.File;
+import java.util.*;
+
+/**
+ * Created by cdutz on 01.11.13.
+ */
+public class ConversionPlan {
+
+    private final Set<String> versions;
+    private final Map<String, File> directories;
+    private final Map<String, Boolean> apacheFlags;
+
+    public ConversionPlan() {
+        final Comparator<String> versionComparator = new Comparator<String>()
{
+            public int compare(String o1, String o2) {
+                final String[] versionSegments1 = o1.split("\\.");
+                final String[] versionSegments2 = o2.split("\\.");
+                final int length = Math.min(versionSegments1.length, versionSegments2.length);
+                // Compare each of the segments.
+                for(int i = 0; i < length; i++) {
+                    final int result = new Integer(versionSegments1[i]).compareTo(Integer.parseInt(versionSegments2[i]));
+                    if(result != 0) {
+                        return result;
+                    }
+                }
+                // If all segments were equal, the string that has more segments wins.
+                return Integer.compare(versionSegments1.length, versionSegments2.length);
+            }
+        };
+        versions = new TreeSet<String>(versionComparator);
+        directories = new HashMap<String, File>();
+        apacheFlags = new HashMap<String, Boolean>();
+    }
+
+    public void addVersion(String version, File directory, Boolean apacheFlag) {
+        if(!versions.contains(version)) {
+            versions.add(version);
+            directories.put(version, directory);
+            apacheFlags.put(version, apacheFlag);
+        }
+    }
+
+    public Set<String> getVersionIterator() {
+        return versions;
+    }
+
+    public File getDirectory(String version) {
+        return directories.get(version);
+    }
+
+    public Boolean getApacheFlag(String version) {
+        return apacheFlags.get(version);
+    }
+
+}


Mime
View raw message