commit:     c0c86c63b7847b9d10d53c51e182df3c53263e4f
Author:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
AuthorDate: Fri Nov  1 20:21:00 2019 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Fri Nov  1 20:21:00 2019 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=c0c86c63

enhanced maven cache so that it also contains main java eclass + added java 
eclass stats

Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org>

 .../org/gentoo/java/ebuilder/maven/MavenCache.java |  5 +-
 .../gentoo/java/ebuilder/portage/CacheItem.java    | 29 ++++++--
 .../java/ebuilder/portage/PortageParser.java       | 84 +++++++++++++++++-----
 3 files changed, 96 insertions(+), 22 deletions(-)

diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java 
b/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java
index 0aa33c5..4e8767e 100644
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java
@@ -102,7 +102,10 @@ public class MavenCache {
                 new FileReader(config.getCacheFile().toFile()))) {
             String line = reader.readLine();
 
-            if (!PortageParser.CACHE_VERSION.equals(line)) {
+            if ("1.0".equals(line)) {
+                config.getStdoutWriter().print("(warning: format is not "
+                        + "up-to-date, consider refreshing the cache)...");
+            } else if (!PortageParser.CACHE_VERSION.equals(line)) {
                 config.getErrorWriter().println("ERROR: Unsupported version of 
"
                         + "cache. Please refresh the cache using command line "
                         + "switch --refresh-cache.");

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java 
b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
index 17bce6b..feff43d 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
@@ -19,6 +19,10 @@ public class CacheItem {
      * Maven group id.
      */
     private final String groupId;
+    /**
+     * Main Java eclass inherited.
+     */
+    private final String javaEclass;
     /**
      * Maven version (of package jar).
      */
@@ -56,11 +60,12 @@ public class CacheItem {
      * @param groupId      {@link #groupId}
      * @param artifactId   {@link #artifactId}
      * @param mavenVersion {@link #mavenVersion}
+     * @param javaEclass   {@link #javaEclass}
      */
     public CacheItem(final String category, final String pkg,
             final String version, final String slot, final String useFlag,
             final String groupId, final String artifactId,
-            final String mavenVersion) {
+            final String mavenVersion, final String javaEclass) {
         this.category = category;
         this.pkg = pkg;
         this.version = version;
@@ -69,6 +74,7 @@ public class CacheItem {
         this.groupId = groupId;
         this.artifactId = artifactId;
         this.mavenVersion = mavenVersion;
+        this.javaEclass = javaEclass;
 
         parsedMavenVersion = mavenVersion == null
                 ? null : new MavenVersion(mavenVersion);
@@ -95,14 +101,20 @@ public class CacheItem {
             }
 
             if (parts.length > 5) {
-                groupId = parts[5];
-                artifactId = parts[6];
-                mavenVersion = parts[7];
+                groupId = parts[5].isEmpty() ? null : parts[5];
+                artifactId = parts[6].isEmpty() ? null : parts[6];
+                mavenVersion = parts[7].isEmpty() ? null : parts[7];
             } else {
                 groupId = null;
                 artifactId = null;
                 mavenVersion = null;
             }
+
+            if (parts.length > 8) {
+                javaEclass = parts[8].isEmpty() ? null : parts[8];
+            } else {
+                javaEclass = null;
+            }
         } catch (final ArrayIndexOutOfBoundsException ex) {
             throw new RuntimeException("Failed to parse cache line: " + line,
                     ex);
@@ -139,6 +151,15 @@ public class CacheItem {
         return groupId;
     }
 
+    /**
+     * Getter for {@link #javaEclass}.
+     *
+     * @return {@link #javaEclass}
+     */
+    public String getJavaEclass() {
+        return javaEclass;
+    }
+
     /**
      * Getter for {@link #mavenVersion}.
      *

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java 
b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
index a85fe6c..8d49411 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -28,7 +28,7 @@ public class PortageParser {
     /**
      * Cache version.
      */
-    public static final String CACHE_VERSION = "1.0";
+    public static final String CACHE_VERSION = "1.1";
     /**
      * Current ant utilities eclass name.
      */
@@ -116,6 +116,29 @@ public class PortageParser {
      * List of cache items. This list is populated during parsing the tree.
      */
     private final List<CacheItem> cacheItems = new ArrayList<>(40_000);
+    /**
+     * Count of ebuilds inheriting {@link #ECLASS_ANT_TASKS} as the main 
eclass.
+     */
+    private int eclassAntTasksCount;
+    /**
+     * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG} as the main eclass.
+     */
+    private int eclassJavaPkgCount;
+    /**
+     * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG_OPT} as the main
+     * eclass.
+     */
+    private int eclassJavaPkgOptCount;
+    /**
+     * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG_SIMPLE} as the main
+     * eclass.
+     */
+    private int eclassJavaPkgSimpleCount;
+    /**
+     * Count of ebuilds inheriting {@link #ECLASS_JAVA_UTILS} as the main
+     * eclass.
+     */
+    private int eclassJavaUtilsCount;
     /**
      * Number of processed categories. Updated during parsing the tree.
      */
@@ -141,6 +164,11 @@ public class PortageParser {
         processedCategories = 0;
         processedPackages = 0;
         processedEbuilds = 0;
+        eclassAntTasksCount = 0;
+        eclassJavaPkgCount = 0;
+        eclassJavaPkgOptCount = 0;
+        eclassJavaPkgSimpleCount = 0;
+        eclassJavaUtilsCount = 0;
 
         config.getStdoutWriter().println("Parsing portage tree @ "
                 + config.getPortageTree() + " ...");
@@ -150,9 +178,14 @@ public class PortageParser {
 
         config.getStdoutWriter().println(MessageFormat.format(
                 "Parsed {0} categories {1} packages {2} ebuilds in {3}ms and "
-                + "found {4} java ebuilds",
+                + "found {4} java ebuilds (main java eclass: {5} = {6}, "
+                + "{7} = {8}, {9} = {10}, {11} = {12}, {13} = {14})",
                 processedCategories, processedPackages, processedEbuilds,
-                endTimestamp - startTimestamp, cacheItems.size()));
+                endTimestamp - startTimestamp, cacheItems.size(),
+                ECLASS_ANT_TASKS, eclassAntTasksCount, ECLASS_JAVA_PKG,
+                eclassJavaPkgCount, ECLASS_JAVA_PKG_OPT, eclassJavaPkgOptCount,
+                ECLASS_JAVA_PKG_SIMPLE, eclassJavaPkgSimpleCount,
+                ECLASS_JAVA_UTILS, eclassJavaUtilsCount));
 
         config.getStdoutWriter().print("Writing cache file...");
         writeCacheFile(config);
@@ -325,7 +358,25 @@ public class PortageParser {
         }
 
         cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
-                groupId, artifactId, mavenVersion));
+                groupId, artifactId, mavenVersion, eclass));
+
+        switch (eclass) {
+            case ECLASS_ANT_TASKS:
+                eclassAntTasksCount++;
+                break;
+            case ECLASS_JAVA_PKG:
+                eclassJavaPkgCount++;
+                break;
+            case ECLASS_JAVA_PKG_OPT:
+                eclassJavaPkgOptCount++;
+                break;
+            case ECLASS_JAVA_PKG_SIMPLE:
+                eclassJavaPkgSimpleCount++;
+                break;
+            case ECLASS_JAVA_UTILS:
+                eclassJavaUtilsCount++;
+                break;
+        }
     }
 
     /**
@@ -437,7 +488,7 @@ public class PortageParser {
                 Charset.forName("UTF-8"))) {
             writer.write(CACHE_VERSION);
             writer.write("\n#category:pkg:version:slot:useFlag:groupId:"
-                    + "artifactId:mavenVersion\n");
+                    + "artifactId:mavenVersion:javaEclass\n");
 
             for (final CacheItem cacheItem : cacheItems) {
                 writer.write(cacheItem.getCategory());
@@ -450,18 +501,17 @@ public class PortageParser {
                 writer.write(':');
                 writer.write(cacheItem.getUseFlag() == null
                         ? "" : cacheItem.getUseFlag());
-
-                if (cacheItem.getGroupId() != null) {
-                    writer.write(':');
-                    writer.write(cacheItem.getGroupId());
-                    writer.write(':');
-                    writer.write(cacheItem.getArtifactId());
-
-                    if (cacheItem.getMavenVersion() != null) {
-                        writer.write(':');
-                        writer.write(cacheItem.getMavenVersion());
-                    }
-                }
+                writer.write(':');
+                writer.write(cacheItem.getGroupId() == null
+                        ? "" : cacheItem.getGroupId());
+                writer.write(':');
+                writer.write(cacheItem.getArtifactId() == null
+                        ? "" : cacheItem.getArtifactId());
+                writer.write(':');
+                writer.write(cacheItem.getMavenVersion() == null
+                        ? "" : cacheItem.getMavenVersion());
+                writer.write(':');
+                writer.write(cacheItem.getJavaEclass());
 
                 writer.write('\n');
             }

Reply via email to