Revision: 6580
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6580&view=rev
Author: manningr
Date: 2012-02-16 03:24:25 +0000 (Thu, 16 Feb 2012)
Log Message:
-----------
Completed initial functionality to find cycles between independent maven source trees.
Modified Paths:
--------------
trunk/maven-plugin-workspace/maven-utils/pom.xml
trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/Main.java
trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/MavenMultiTreeDependencyAnalyzer.java
trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/MavenMultiTreeDependencyAnalyzerImpl.java
trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/PomDependencyDao.java
trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/PomDependencyDaoImpl.java
trunk/maven-plugin-workspace/maven-utils/src/main/resources/dao.xml
trunk/maven-plugin-workspace/maven-utils/src/main/resources/logback.xml
trunk/maven-plugin-workspace/maven-utils/src/main/resources/select.sql
Added Paths:
-----------
trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependency.java
trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyFactory.java
trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyFactoryImpl.java
trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyImpl.java
Modified: trunk/maven-plugin-workspace/maven-utils/pom.xml
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/pom.xml 2012-02-15 21:23:22 UTC (rev 6579)
+++ trunk/maven-plugin-workspace/maven-utils/pom.xml 2012-02-16 03:24:25 UTC (rev 6580)
@@ -157,6 +157,11 @@
<version>1.0.0</version>
<type>pom</type>
</dependency>
+ <dependency>
+ <groupId>org.jgrapht</groupId>
+ <artifactId>jgrapht-jdk1.5</artifactId>
+ <version>0.7.3</version>
+ </dependency>
</dependencies>
</project>
Modified: trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/Main.java
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/Main.java 2012-02-15 21:23:22 UTC (rev 6579)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/Main.java 2012-02-16 03:24:25 UTC (rev 6580)
@@ -1,10 +1,8 @@
package net.sf.squirrel_sql;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -34,8 +32,9 @@
try
{
analyzer.analyzePaths();
+ analyzer.detectCycles();
}
- catch (IOException e)
+ catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
Modified: trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/MavenMultiTreeDependencyAnalyzer.java
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/MavenMultiTreeDependencyAnalyzer.java 2012-02-15 21:23:22 UTC (rev 6579)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/MavenMultiTreeDependencyAnalyzer.java 2012-02-16 03:24:25 UTC (rev 6580)
@@ -6,8 +6,9 @@
public interface MavenMultiTreeDependencyAnalyzer
{
- public abstract void analyzePaths() throws IOException;
+ void analyzePaths() throws IOException;
- public abstract void setSourceTreePaths(List<String> sourceTreePaths);
+ void setSourceTreePaths(List<String> sourceTreePaths);
+ void detectCycles() throws Exception;
}
\ No newline at end of file
Modified: trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/MavenMultiTreeDependencyAnalyzerImpl.java
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/MavenMultiTreeDependencyAnalyzerImpl.java 2012-02-15 21:23:22 UTC (rev 6579)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/MavenMultiTreeDependencyAnalyzerImpl.java 2012-02-16 03:24:25 UTC (rev 6580)
@@ -6,12 +6,14 @@
import java.util.Iterator;
import java.util.List;
+import net.sf.squirrel_sql.persistence.CrossSourceTreeDependency;
import net.sf.squirrel_sql.persistence.PomDependency;
import net.sf.squirrel_sql.persistence.PomDependencyDao;
import net.sf.squirrel_sql.persistence.PomDependencyFactory;
import net.sf.squirrel_sql.persistence.PomFile;
import net.sf.squirrel_sql.persistence.PomFileDao;
import net.sf.squirrel_sql.persistence.PomFileFactory;
+import net.sf.squirrel_sql.persistence.PomFileImpl;
import net.sf.squirrel_sql.util.PomFileUtils;
import net.sf.squirrel_sql.util.PomFileUtilsFactory;
@@ -19,8 +21,11 @@
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.NameFileFilter;
import org.apache.commons.io.filefilter.TrueFileFilter;
-import org.apache.maven.artifact.Artifact;
import org.apache.maven.model.Dependency;
+import org.jgrapht.DirectedGraph;
+import org.jgrapht.alg.CycleDetector;
+import org.jgrapht.graph.DefaultDirectedGraph;
+import org.jgrapht.graph.DefaultEdge;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Required;
@@ -29,7 +34,7 @@
public class MavenMultiTreeDependencyAnalyzerImpl implements MavenMultiTreeDependencyAnalyzer
{
private static final Logger log = LoggerFactory.getLogger(MavenMultiTreeDependencyAnalyzerImpl.class);
-
+
private final IOFileFilter pomFileFilter = new NameFileFilter("pom.xml");
private List<String> sourceTreePaths;
@@ -43,7 +48,7 @@
private PomFileFactory pomFileFactory = null;
private PomFileUtilsFactory pomFileUtilsFactory = null;
-
+
private List<PomFileUtils> pomFileUtilsList = null;
/**
@@ -56,17 +61,52 @@
for (String sourceTreePath : sourceTreePaths)
{
File pathFile = new File(sourceTreePath);
- analyzePath(pathFile);
+ findPoms(pathFile);
}
+ for (String sourceTreePath : sourceTreePaths)
+ {
+ File pathFile = new File(sourceTreePath);
+ findDependencies(pathFile);
+ }
}
- private void analyzePath(File sourceTreePathFile) throws IOException
+ public void detectCycles() throws Exception {
+ if (log.isInfoEnabled()) {
+ log.info("Attempting to detect cycles.");
+ }
+ DirectedGraph<String, DefaultEdge> g =
+ new DefaultDirectedGraph<String, DefaultEdge>(DefaultEdge.class);
+ for (String sourceTreePath : sourceTreePaths) {
+ g.addVertex(sourceTreePath);
+ }
+ for (CrossSourceTreeDependency dep : pomDependencyDao.findCrossTreeDependencies()) {
+ g.addEdge(dep.getTreeRootDir(), dep.getDependUponTreeRootDir());
+ }
+ CycleDetector<String, DefaultEdge> cycleDetector = new CycleDetector<String, DefaultEdge>(g);
+ if (cycleDetector.detectCycles()) {
+ log.info("A cycle was detected between the following source trees:");
+ for (String sourceTreePath : cycleDetector.findCycles()) {
+ log.info("\t"+sourceTreePath);
+ }
+ log.info("The following pom dependencies create the cycle:");
+ for (String sourceTreePath : cycleDetector.findCycles()) {
+ for (PomDependency dep : pomDependencyDao.findDependenciesBySourceTreePath(sourceTreePath)) {
+ PomFile pomFile = dep.getPomFile();
+ PomFile dependsUponPomFile = dep.getDependsUponPomFile();
+ log.info("\t"+pomFile.getProjectGroupId()+":"+pomFile.getProjectArtifactId()+" => "+
+ dependsUponPomFile.getProjectGroupId()+":"+dependsUponPomFile.getProjectArtifactId());
+ }
+ }
+ }
+ }
+
+ private void findPoms(File sourceTreePathFile) throws IOException
{
Iterator<File> pomFiles =
FileUtils.iterateFiles(sourceTreePathFile, pomFileFilter, TrueFileFilter.INSTANCE);
pomFileUtilsList = new ArrayList<PomFileUtils>();
-
- // First pass will create a PomFileUtils object for each pom file and insert all pom file records, in
+
+ // First pass will create a PomFileUtils object for each pom file and insert all pom file records, in
// preparation for the second pass.
while (pomFiles.hasNext())
{
@@ -75,41 +115,67 @@
{
continue;
}
- if (log.isDebugEnabled()) {
+ if (log.isDebugEnabled())
+ {
log.debug("Processing file: " + file);
}
PomFileUtils pomFileUtils = pomFileUtilsFactory.create(file);
pomFileUtilsList.add(pomFileUtils);
-
+
PomFile pomFile =
pomFileFactory.createPomFile(sourceTreePathFile.getAbsolutePath(), file.getAbsolutePath(),
pomFileUtils.getGroupId(), pomFileUtils.getArtifactId(), pomFileUtils.getProjectName());
pomFileDao.insertPom(pomFile);
}
- // Second pass gets dependencies and if a dependency is on a pom from the first pass,
- // it gets stored as a dependency.
- for (PomFileUtils pomFileUtils : pomFileUtilsList)
+ }
+
+ private void findDependencies(File sourceTreePathFile) throws IOException
+ {
+ Iterator<File> pomFiles =
+ FileUtils.iterateFiles(sourceTreePathFile, pomFileFilter, TrueFileFilter.INSTANCE);
+ pomFileUtilsList = new ArrayList<PomFileUtils>();
+
+ // First pass will create a PomFileUtils object for each pom file and insert all pom file records, in
+ // preparation for the second pass.
+ while (pomFiles.hasNext())
{
- PomFile pomFile =
+ File file = pomFiles.next();
+ if (file.getAbsolutePath().contains("/target/"))
+ {
+ continue;
+ }
+ if (log.isDebugEnabled())
+ {
+ log.debug("Processing file: " + file);
+ }
+ PomFileUtils pomFileUtils = pomFileUtilsFactory.create(file);
+
+ // Second pass gets dependencies and if a dependency is on a pom from the first pass,
+ // it gets stored as a dependency.
+ PomFile pomFile =
pomFileDao.findByGroupIdAndArtifactId(pomFileUtils.getGroupId(), pomFileUtils.getArtifactId());
- if (log.isDebugEnabled()) {
+ if (log.isDebugEnabled())
+ {
log.debug("Processing artifact: " + pomFileUtils.getArtifactId());
}
-
- for (Dependency dependency: pomFileUtils.getDependencies()) {
- if (log.isDebugEnabled()) {
- log.debug("Processing artifact dependency: "+dependency);
+
+ for (Dependency dependency : pomFileUtils.getDependencies())
+ {
+ if (log.isDebugEnabled())
+ {
+ log.debug("Processing artifact dependency: " + dependency);
}
- PomFile dependsUponPomFile =
+ PomFile dependsUponPomFile =
pomFileDao.findByGroupIdAndArtifactId(dependency.getGroupId(), dependency.getArtifactId());
- if (dependsUponPomFile != null) {
- PomDependency pomDependency =
+ if (dependsUponPomFile != null)
+ {
+ PomDependency pomDependency =
pomDependencyFactory.createDependency(pomFile, dependsUponPomFile, dependency.getType());
pomDependencyDao.insertDependency(pomDependency);
}
}
-
+
}
}
@@ -137,7 +203,8 @@
@Required
public void setDependencyFactory(PomDependencyFactory pomDependencyFactory)
{
- if (pomDependencyFactory == null) { throw new IllegalArgumentException("pomDependencyFactory cannot be null"); }
+ if (pomDependencyFactory == null) { throw new IllegalArgumentException(
+ "pomDependencyFactory cannot be null"); }
this.pomDependencyFactory = pomDependencyFactory;
}
Added: trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependency.java
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependency.java (rev 0)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependency.java 2012-02-16 03:24:25 UTC (rev 6580)
@@ -0,0 +1,16 @@
+package net.sf.squirrel_sql.persistence;
+
+public interface CrossSourceTreeDependency
+{
+
+ /**
+ * @return
+ */
+ public abstract String getTreeRootDir();
+
+ /**
+ * @return
+ */
+ public abstract String getDependUponTreeRootDir();
+
+}
\ No newline at end of file
Added: trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyFactory.java
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyFactory.java (rev 0)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyFactory.java 2012-02-16 03:24:25 UTC (rev 6580)
@@ -0,0 +1,8 @@
+package net.sf.squirrel_sql.persistence;
+
+public interface CrossSourceTreeDependencyFactory
+{
+
+ public abstract CrossSourceTreeDependency create(String treeRootDir, String dependUponTreeRootDir);
+
+}
\ No newline at end of file
Added: trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyFactoryImpl.java
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyFactoryImpl.java (rev 0)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyFactoryImpl.java 2012-02-16 03:24:25 UTC (rev 6580)
@@ -0,0 +1,12 @@
+package net.sf.squirrel_sql.persistence;
+
+public class CrossSourceTreeDependencyFactoryImpl implements CrossSourceTreeDependencyFactory
+{
+ /**
+ * @see net.sf.squirrel_sql.persistence.CrossSourceTreeDependencyFactory#create(java.lang.String, java.lang.String)
+ */
+ @Override
+ public CrossSourceTreeDependency create(String treeRootDir, String dependUponTreeRootDir) {
+ return new CrossSourceTreeDependencyImpl(treeRootDir, dependUponTreeRootDir);
+ }
+}
Added: trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyImpl.java
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyImpl.java (rev 0)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/CrossSourceTreeDependencyImpl.java 2012-02-16 03:24:25 UTC (rev 6580)
@@ -0,0 +1,32 @@
+package net.sf.squirrel_sql.persistence;
+
+public class CrossSourceTreeDependencyImpl implements CrossSourceTreeDependency
+{
+ private final String treeRootDir;
+ private final String dependUponTreeRootDir;
+
+ public CrossSourceTreeDependencyImpl(String treeRootDir, String dependUponTreeRootDir) {
+ this.treeRootDir = treeRootDir;
+ this.dependUponTreeRootDir = dependUponTreeRootDir;
+ }
+
+ /**
+ * @see net.sf.squirrel_sql.persistence.CrossSourceTreeDependency#getTreeRootDir()
+ */
+ @Override
+ public String getTreeRootDir()
+ {
+ return treeRootDir;
+ }
+
+ /**
+ * @see net.sf.squirrel_sql.persistence.CrossSourceTreeDependency#getDependUponTreeRootDir()
+ */
+ @Override
+ public String getDependUponTreeRootDir()
+ {
+ return dependUponTreeRootDir;
+ }
+
+
+}
Modified: trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/PomDependencyDao.java
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/PomDependencyDao.java 2012-02-15 21:23:22 UTC (rev 6579)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/PomDependencyDao.java 2012-02-16 03:24:25 UTC (rev 6580)
@@ -1,8 +1,14 @@
package net.sf.squirrel_sql.persistence;
+import java.util.List;
+
public interface PomDependencyDao
{
- public abstract void insertDependency(PomDependency d);
+ void insertDependency(PomDependency d);
+ List<CrossSourceTreeDependency> findCrossTreeDependencies();
+
+ public abstract List<PomDependency> findDependenciesBySourceTreePath(String treeRootDir);
+
}
\ No newline at end of file
Modified: trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/PomDependencyDaoImpl.java
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/PomDependencyDaoImpl.java 2012-02-15 21:23:22 UTC (rev 6579)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/java/net/sf/squirrel_sql/persistence/PomDependencyDaoImpl.java 2012-02-16 03:24:25 UTC (rev 6580)
@@ -1,19 +1,53 @@
package net.sf.squirrel_sql.persistence;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Required;
+
public class PomDependencyDaoImpl implements PomDependencyDao
{
private static final Logger log = LoggerFactory.getLogger(PomDependencyDaoImpl.class);
+ private static final String CROSS_TREE_DEPENDENCY_QUERY =
+ "select " +
+ "p1.TREEROOTDIR, " +
+ "p2.TREEROOTDIR as dependuponrootdir " +
+ "from DEPENDENCY d, POMFILE p1, POMFILE p2 " +
+ "where d.POMFILEID = p1.ID " +
+ "and d.DEPENDSUPONPOMFILEID = p2.ID " +
+ "and p1.TREEROOTDIR != p2.TREEROOTDIR " +
+ "group by p1.TREEROOTDIR, " +
+ "p2.TREEROOTDIR ";
+
+ private static final String FIND_DEPENDENCY_BY_TREE_ROOT_DIR =
+ "SELECT d " +
+ "FROM PomDependencyImpl d " +
+ "WHERE d.pomFile.treeRootDir = :treeRootDir ";
+
@PersistenceContext
private EntityManager em;
+ private CrossSourceTreeDependencyFactory crossTreeDependencyFactory;
+
/**
+ * @param crossTreeDependencyFactory the crossTreeDependencyFactory to set
+ */
+ @Required
+ public void setCrossTreeDependencyFactory(CrossSourceTreeDependencyFactory crossTreeDependencyFactory)
+ {
+ this.crossTreeDependencyFactory = crossTreeDependencyFactory;
+ }
+
+ /**
* @see net.sf.squirrel_sql.persistence.PomDependencyDao#insertDependency(net.sf.squirrel_sql.DependencyImpl)
*/
@Override
@@ -23,4 +57,50 @@
}
em.persist(d);
}
+
+ public List<CrossSourceTreeDependency> findCrossTreeDependencies() {
+ if (log.isDebugEnabled()) {
+ log.debug("Finding cross-tree dependencies");
+ }
+ List<CrossSourceTreeDependency> result = new ArrayList<CrossSourceTreeDependency>();
+ Query query = em.createNativeQuery(CROSS_TREE_DEPENDENCY_QUERY);
+ Iterator sourceTreeRoots = query.getResultList().iterator();
+ while (sourceTreeRoots.hasNext()) {
+ Object[] tuple = (Object[]) sourceTreeRoots.next();
+ result.add(crossTreeDependencyFactory.create((String)tuple[0], (String)tuple[1]));
+ }
+ return result;
+ }
+
+ /**
+ * @see net.sf.squirrel_sql.persistence.PomDependencyDao#findDependenciesBySourceTreePath(java.lang.String)
+ */
+ @Override
+ public List<PomDependency> findDependenciesBySourceTreePath(String treeRootDir) {
+ if (log.isTraceEnabled())
+ {
+ log.trace("Searching for dependencies using treeRootDir=" + treeRootDir);
+ }
+ Query query = em.createQuery(FIND_DEPENDENCY_BY_TREE_ROOT_DIR);
+ query.setParameter("treeRootDir", treeRootDir);
+ List<PomDependency> result = null;
+ try
+ {
+ result = query.getResultList();
+ }
+ catch (Exception e)
+ {
+ if (log.isTraceEnabled()) {
+ log.error("Couldn't locate dependencies using treeRootDir=" + treeRootDir
+ + " : " + e.getMessage(), e);
+ }
+ else if (log.isDebugEnabled())
+ {
+ log.error("Couldn't locate dependencies using treeRootDir=" + treeRootDir
+ + " : " + e.getMessage());
+ }
+ }
+ return result;
+
+ }
}
Modified: trunk/maven-plugin-workspace/maven-utils/src/main/resources/dao.xml
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/resources/dao.xml 2012-02-15 21:23:22 UTC (rev 6579)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/resources/dao.xml 2012-02-16 03:24:25 UTC (rev 6580)
@@ -17,7 +17,9 @@
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
+
<property name="persistenceUnitName" value="analyzer" />
+
</bean>
<!-- post-processors for all standard config annotations -->
@@ -27,9 +29,17 @@
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
- <bean id="net.sf.squirrel_sql.persistence.PomFileDao" class="net.sf.squirrel_sql.persistence.PomFileDaoImpl">
- </bean>
+ <bean id="net.sf.squirrel_sql.persistence.CrossSourceTreeDependency"
+ class="net.sf.squirrel_sql.persistence.CrossSourceTreeDependencyFactoryImpl" />
- <bean id="net.sf.squirrel_sql.persistence.PomDependencyDao" class="net.sf.squirrel_sql.persistence.PomDependencyDaoImpl">
+ <bean id="net.sf.squirrel_sql.persistence.PomFileDao"
+ class="net.sf.squirrel_sql.persistence.PomFileDaoImpl" />
+
+ <bean id="net.sf.squirrel_sql.persistence.PomDependencyDao"
+ class="net.sf.squirrel_sql.persistence.PomDependencyDaoImpl">
+
+ <property name="crossTreeDependencyFactory"
+ ref="net.sf.squirrel_sql.persistence.CrossSourceTreeDependency" />
+
</bean>
</beans>
Modified: trunk/maven-plugin-workspace/maven-utils/src/main/resources/logback.xml
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/resources/logback.xml 2012-02-15 21:23:22 UTC (rev 6579)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/resources/logback.xml 2012-02-16 03:24:25 UTC (rev 6580)
@@ -9,10 +9,10 @@
</encoder>
</appender>
- <logger name="org.hibernate" level="INFO" />
- <logger name="org.springframework" level="INFO" />
+ <logger name="org.hibernate" level="WARN" />
+ <logger name="org.springframework" level="WARN" />
- <root level="DEBUG">
+ <root level="INFO">
<appender-ref ref="STDOUT" />
</root>
Modified: trunk/maven-plugin-workspace/maven-utils/src/main/resources/select.sql
===================================================================
--- trunk/maven-plugin-workspace/maven-utils/src/main/resources/select.sql 2012-02-15 21:23:22 UTC (rev 6579)
+++ trunk/maven-plugin-workspace/maven-utils/src/main/resources/select.sql 2012-02-16 03:24:25 UTC (rev 6580)
@@ -11,11 +11,38 @@
from DEPENDENCY d, POMFILE p1, POMFILE p2
where d.POMFILEID = p1.ID
and d.DEPENDSUPONPOMFILEID = p2.ID
---and p2.PROJECTARTIFACTID = 'squirrel-sql'
group by p1.TREEROOTDIR,
p1.projectgroupId,
p1.projectartifactId,
p2.TREEROOTDIR,
p2.PROJECTGROUPID,
p2.PROJECTARTIFACTID
---and p1.TREEROOTDIR = p2.TREEROOTDIR
+and p1.TREEROOTDIR = p2.TREEROOTDIR
+
+select
+p1.TREEROOTDIR,
+p1.projectgroupId||':'||p1.projectartifactId,
+p2.TREEROOTDIR as dependuponrootdir,
+p2.PROJECTGROUPID||':'||p2.PROJECTARTIFACTID as dependuponcoordinates
+from DEPENDENCY d, POMFILE p1, POMFILE p2
+where d.POMFILEID = p1.ID
+and d.DEPENDSUPONPOMFILEID = p2.ID
+and p1.TREEROOTDIR != p2.TREEROOTDIR
+group by p1.TREEROOTDIR,
+p1.projectgroupId||':'||p1.projectartifactId,
+p2.TREEROOTDIR,
+p2.PROJECTGROUPID||':'||p2.PROJECTARTIFACTID
+
+"select " +
+"p1.TREEROOTDIR, " +
+"p2.TREEROOTDIR as dependuponrootdir " +
+"from DEPENDENCY d, POMFILE p1, POMFILE p2 " +
+"where d.POMFILEID = p1.ID " +
+"and d.DEPENDSUPONPOMFILEID = p2.ID " +
+"and p1.TREEROOTDIR != p2.TREEROOTDIR " +
+"group by p1.TREEROOTDIR, " +
+"p2.TREEROOTDIR ";
+
+
+
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|