michal      2003/07/25 06:50:46

  Added:       
src/plugins-build/multiproject/src/main/org/apache/maven/multiproject/harmonizer
                        MultiDependency.java DependencyHarmonizer.java
  Log:
  Added Dependency Cov.
  
  Revision  Changes    Path
  1.1                  
maven/src/plugins-build/multiproject/src/main/org/apache/maven/multiproject/harmonizer/MultiDependency.java
  
  Index: MultiDependency.java
  ===================================================================
  package org.apache.maven.multiproject.harmonizer;
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Maven" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Maven", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
  
  import org.apache.maven.project.Project;
  
  /**
   * @author mmaczka
   *
   * To change the template for this generated type comment go to
   * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
   */
  public class MultiDependency implements Comparable
  {
      private Map versions = new HashMap();
      private String id = null;
     
      /**
       * 
       */
      public int compareTo(Object obj)
      {
          MultiDependency other = (MultiDependency) obj;
          if (this.isClean() && !other.isClean())
          {
              return 1;
          }
          if (!this.isClean() && other.isClean())
          {
              return -1;
          }
          return this.id.compareTo(other.id);
      }
      /**
       * @return
       */
      public String getId()
      {
          return id;
      }
      /**
       * @param id
       */
      public void setId(String id)
      {
          this.id = id;
      }
      public boolean isClean()
      {
          return versions.size() == 1;
      }
      /**
       * 
       * @param project the name of the project which has this dependecy
       * @param version the version of the dependecy used in the project
       */
      public void add(Project project, String version)
      {
          List projectList = null;
          if (versions.containsKey(version))
          {
              projectList = (List) versions.get(version);
          }
          else
          {
              projectList = new ArrayList();
              versions.put(version, projectList);
          }
          projectList.add(project);
      }
      public Iterator getProjects(String version)
      {
          List projects = (List) versions.get(version);
          return projects.iterator();
      }
      public Iterator getVersions()
      {
          return versions.keySet().iterator();
      }
      public String toString()
      {
          return id;
      }
      /**
       * @return
       */
      public int getNumberOfVersions()
      {
          
          return versions.size();
      }
  }
  
  
  
  1.1                  
maven/src/plugins-build/multiproject/src/main/org/apache/maven/multiproject/harmonizer/DependencyHarmonizer.java
  
  Index: DependencyHarmonizer.java
  ===================================================================
  package org.apache.maven.multiproject.harmonizer;
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Maven" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Maven", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  
  import java.util.ArrayList;
  import java.util.Collections;
  import java.util.HashMap;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
  import org.apache.maven.project.Dependency;
  import org.apache.maven.project.Project;
  
  /**
   * Helper Bean which helps to generate a dependency report for given  list of 
projects
   * @author <a href="mailto:[EMAIL PROTECTED]">Michal Maczka</a>
   * @version $Id: DependencyHarmonizer.java,v 1.1 2003/07/25 13:50:46 michal Exp $
   */
  public class DependencyHarmonizer
  {
      private Map deps = new HashMap();
      private int numberOfProjects;
      private final static int NOT_SET = -1;
      private int numOfArtifacts = NOT_SET;
      
      
      /**
       * @return
       */
      public Iterator getDependencies()
      {
          // convert map values to list 
          List list = new ArrayList();
          list.addAll(deps.values());
          Collections.sort(list);
          return list.iterator();
      }
      public void build(List projects)
      {
          numberOfProjects = projects.size();
          for (Iterator projectIter = projects.iterator();
              projectIter.hasNext();
              )
          {
              Project project = (Project) projectIter.next();
              for (Iterator depIter = project.getDependencies().iterator();
                  depIter.hasNext();
                  )
              {
                  Dependency dep = (Dependency) depIter.next();
                  String id = dep.getId();
                  MultiDependency multiDep = null;
                  if (deps.containsKey(id))
                  {
                      multiDep = (MultiDependency) deps.get(id);
                  }
                  else
                  {
                      multiDep = new MultiDependency();
                      multiDep.setId(id);
                      deps.put(id, multiDep);
                  }
                  multiDep.add(project, dep.getVersion());
              }
          }
      }
      /**
       * 
       * @return
       */
      public int getNumberOfProjects()
      {
          return numberOfProjects;
      }
      /**
       * 
       * @return
       */
      public int getNumberOfDependencies()
      {
          return deps.size();
      }
      /**
       * 
       * @return
       */
      public int getNumberOfArtifacts()
      {
          if (numOfArtifacts != NOT_SET)
          {
             return numOfArtifacts;
          }
                numOfArtifacts = 0;
          for (Iterator iter = deps.keySet().iterator(); iter.hasNext();)
          {
              String key = (String)iter.next();
              MultiDependency dep = (MultiDependency) deps.get(key) ;
              numOfArtifacts += dep.getNumberOfVersions();
          }
          return numOfArtifacts;
      }
      public double getConvergence()
      {
          return (double)getNumberOfDependencies()/getNumberOfArtifacts();
      }
  }
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to