You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ct...@apache.org on 2008/09/21 02:37:01 UTC
svn commit: r697436 -
/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
Author: ctan
Date: Sat Sep 20 17:37:00 2008
New Revision: 697436
URL: http://svn.apache.org/viewvc?rev=697436&view=rev
Log:
handle creation of projectscmroot for an existing db
Modified:
continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=697436&r1=697435&r2=697436&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Sat Sep 20 17:37:00 2008
@@ -30,7 +30,6 @@
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -2092,14 +2091,7 @@
if ( projectScmRoot == null )
{
- projectScmRoot = new ProjectScmRoot();
-
- projectScmRoot.setProjectGroup( projectGroup );
-
- projectScmRoot.setScmRootAddress( url );
-
- projectScmRoot = projectScmRootDao.addProjectScmRoot( projectScmRoot );
-
+ projectScmRoot = createProjectScmRoot( projectGroup, url );
}
/* add the project group loaded from database, which has more info, like id */
@@ -3010,6 +3002,18 @@
for ( Project project : projectDao.getAllProjectsByNameWithBuildDetails() )
{
+ if ( project.getScmRootAddress() == null || StringUtils.isEmpty( project.getScmRootAddress() ) )
+ {
+ try
+ {
+ setScmRootAddressForProject( project );
+ }
+ catch ( ContinuumException e )
+ {
+ throw new InitializationException( "Database is corrupted.", e );
+ }
+ }
+
for ( ProjectNotifier notifier : (List<ProjectNotifier>) project.getNotifiers() )
{
if ( StringUtils.isEmpty( notifier.getType() ) )
@@ -3753,4 +3757,78 @@
throw logAndCreateException( "Error while creating enqueuing object.", e );
}
}
+
+ private void setScmRootAddressForProject( Project project )
+ throws ContinuumException
+ {
+ boolean found = false;
+
+ ProjectGroup projectGroup = project.getProjectGroup();
+
+ List<ProjectScmRoot> scmRoots = projectScmRootDao.getProjectScmRootByProjectGroup( projectGroup.getId() );
+
+ for ( ProjectScmRoot scmRoot : scmRoots )
+ {
+ if ( project.getScmUrl().startsWith( scmRoot.getScmRootAddress() ) )
+ {
+ project.setScmRootAddress( scmRoot.getScmRootAddress() );
+ found = true;
+ break;
+ }
+ }
+
+ if ( !found )
+ {
+ createProjectScmRootForProjectGroup( projectGroup );
+ setScmRootAddressForProject( project );
+ }
+ }
+
+ private void createProjectScmRootForProjectGroup( ProjectGroup projectGroup )
+ throws ContinuumException
+ {
+ List<Project> projectsList;
+
+ try
+ {
+ projectsList = getProjectsInBuildOrder( projectDao.getProjectsWithDependenciesByGroupId( projectGroup.getId() ) );
+ }
+ catch ( CycleDetectedException e )
+ {
+ throw new ContinuumException( "Error while retrieving projects", e );
+ }
+
+ int counter = 0;
+ String url = "";
+
+ for ( Project project : projectsList )
+ {
+ if ( counter == 0 || !project.getScmUrl().startsWith( url ) )
+ {
+ // this is a root
+ url = project.getScmUrl();
+ createProjectScmRoot( projectGroup, url );
+ }
+ counter++;
+ }
+ }
+
+ private ProjectScmRoot createProjectScmRoot( ProjectGroup projectGroup, String url )
+ throws ContinuumException
+ {
+ ProjectScmRoot projectScmRoot = new ProjectScmRoot();
+
+ projectScmRoot.setProjectGroup( projectGroup );
+
+ projectScmRoot.setScmRootAddress( url );
+
+ try
+ {
+ return projectScmRootDao.addProjectScmRoot( projectScmRoot );
+ }
+ catch ( ContinuumStoreException e )
+ {
+ throw new ContinuumException( "Error while creating project scm root with scm root address:" + url );
+ }
+ }
}