001    package org.apache.maven.scm.provider.tfs.command;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one
005     * or more contributor license agreements.  See the NOTICE file
006     * distributed with this work for additional information
007     * regarding copyright ownership.  The ASF licenses this file
008     * to you under the Apache License, Version 2.0 (the
009     * "License"); you may not use this file except in compliance
010     * with the License.  You may obtain a copy of the License at
011     *
012     * http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing,
015     * software distributed under the License is distributed on an
016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017     * KIND, either express or implied.  See the License for the
018     * specific language governing permissions and limitations
019     * under the License.
020     */
021    
022    import org.apache.maven.scm.ScmException;
023    import org.apache.maven.scm.ScmFileSet;
024    import org.apache.maven.scm.ScmVersion;
025    import org.apache.maven.scm.command.changelog.ChangeLogCommand;
026    import org.apache.maven.scm.command.update.AbstractUpdateCommand;
027    import org.apache.maven.scm.command.update.UpdateScmResult;
028    import org.apache.maven.scm.provider.ScmProviderRepository;
029    import org.apache.maven.scm.provider.tfs.TfsScmProviderRepository;
030    import org.apache.maven.scm.provider.tfs.command.consumer.ErrorStreamConsumer;
031    import org.apache.maven.scm.provider.tfs.command.consumer.FileListConsumer;
032    
033    public class TfsUpdateCommand
034        extends AbstractUpdateCommand
035    {
036    
037        protected UpdateScmResult executeUpdateCommand( ScmProviderRepository r, ScmFileSet f, ScmVersion v )
038            throws ScmException
039        {
040            FileListConsumer fileConsumer = new FileListConsumer();
041            ErrorStreamConsumer err = new ErrorStreamConsumer();
042            
043            TfsCommand command = createCommand( r, f, v );
044            int status = command.execute( fileConsumer, err );
045            if ( status != 0 || err.hasBeenFed() )
046            {
047                return new UpdateScmResult( command.getCommandString(), "Error code for TFS update command - " + status,
048                                            err.getOutput(), false );
049            }
050            return new UpdateScmResult( command.getCommandString(), fileConsumer.getFiles() );
051        }
052    
053        public TfsCommand createCommand( ScmProviderRepository r, ScmFileSet f, ScmVersion v )
054        {
055            String serverPath = ( (TfsScmProviderRepository) r ).getServerPath();
056            TfsCommand command = new TfsCommand( "get", r, f, getLogger() );
057            command.addArgument( serverPath );
058            if ( v != null && !v.equals( "" ) )
059            {
060                String vType = "";
061                if ( v.getType().equals( "Tag" ) )
062                {
063                    vType = "L";
064                }
065                if ( v.getType().equals( "Revision" ) )
066                {
067                    vType = "C";
068                }
069                command.addArgument( "-version:" + vType + v.getName() );
070            }
071            return command;
072        }
073    
074        protected ChangeLogCommand getChangeLogCommand()
075        {
076            TfsChangeLogCommand changeLogCommand = new TfsChangeLogCommand();
077            changeLogCommand.setLogger( getLogger() );
078            return changeLogCommand;
079        }
080    
081    }