blob: fad52d92cf329be66a019f36a0b27b1139f8903f [file] [log] [blame]
package org.apache.maven.scm.provider.accurev.commands.add;
/*
* Copyright 2008 AccuRev Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.apache.maven.scm.command.add.AbstractAddCommand;
import org.apache.maven.scm.command.add.AddScmResult;
import org.apache.maven.scm.ScmResult;
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.repository.ScmRepositoryException;
import org.apache.maven.scm.provider.ScmProviderRepository;
import org.apache.maven.scm.provider.accurev.AccuRevScmProviderRepository;
import org.apache.maven.scm.provider.accurev.AccuRevScmProvider;
import org.codehaus.plexus.util.cli.Commandline;
import org.codehaus.plexus.util.cli.CommandLineUtils;
import org.codehaus.plexus.util.cli.CommandLineException;
import java.util.ArrayList;
import java.util.List;
import java.io.File;
public class AccuRevAddCommand extends AbstractAddCommand
{
private final String _accurevExecutable;
public AccuRevAddCommand( String accurevExecutable )
{
_accurevExecutable = accurevExecutable;
}
protected ScmResult executeAddCommand( ScmProviderRepository repository, ScmFileSet fileSet,
String message, boolean binary ) throws ScmException
{
Commandline cl = new Commandline();
cl.setExecutable( _accurevExecutable );
cl.setWorkingDirectory( fileSet.getBasedir().getPath() );
cl.addArguments( new String[]{"add"} );
ArrayList params = new ArrayList();
AccuRevScmProvider.appendHostToParamsIfNeeded( (AccuRevScmProviderRepository) repository, params );
cl.addArguments( (String[]) params.toArray( new String[params.size()] ) );
cl.addArguments( makeFileArgs( fileSet.getFileList() ) );
final List filesAdded = new ArrayList();
final CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer();
try
{
if ( 0 != CommandLineUtils.executeCommandLine( cl, new AddCommandStreamConsumer( stdout, filesAdded ),
stdout ) )
{
return new AddScmResult( cl.toString(), null, stdout.getOutput(), false );
}
}
catch ( CommandLineException e )
{
throw new ScmRepositoryException( "Cannot exeucute add command", e );
}
return new AddScmResult( cl.toString(), filesAdded );
}
private String[] makeFileArgs( List/*File*/ fileList )
{
ArrayList res = new ArrayList();
for ( int i = 0; i < fileList.size(); i++ )
{
File file = (File) fileList.get( i );
res.add( file.getAbsolutePath() );
}
return (String[]) res.toArray( new String[res.size()] );
}
}