Added Dependency Cov.
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@113724 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
875ea2ac43
commit
fd1b2ea01b
@ -0,0 +1,159 @@
|
||||
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 apache@apache.org.
|
||||
*
|
||||
* 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:michal.maczka@dimatics.com">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();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,151 @@
|
||||
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 apache@apache.org.
|
||||
*
|
||||
* 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>Preferences>Java>Code Generation>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();
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user