001    /*
002     * ----------------------------------------------------------------------
003     * Copyright (C) 2009 Enrique Lara (k957@68k.org)
004     *
005     * TinLizard is free software; you can redistribute it and/or
006     * modify it under the terms of the GNU Lesser General Public License
007     * as published by the Free Software Foundation; either version 3.0
008     * of the License, or (at your option) any later version.
009     *
010     * TinLizard is distributed in the hope that it will be useful,
011     * but WITHOUT ANY WARRANTY; without even the implied warranty of
012     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
013     * GNU Lesser General Public License for more details.
014     *
015     * You should have received a copy of the GNU Lesser General Public License
016     * along with TinLizard. If not, see http://www.gnu.org/licenses/.
017     * ----------------------------------------------------------------------
018     */
019    package tinlizard.dao;
020    
021    import tinlizard.model.Codeline;
022    
023    import java.util.Collection;
024    
025    import org.apache.maven.model.Model;
026    import org.apache.maven.scm.ScmResult;
027    import org.apache.maven.scm.command.status.StatusScmResult;
028    
029    /**
030     * Dao to provide access to SCM (version control) tools.
031     */
032    public interface ScmDao {
033        /** The Plexus role identifier. */
034        String ROLE = ScmDao.class.getName();
035    
036        Model getPOM(Codeline project);
037    
038        void releaseFiles(Codeline project);
039    
040        StatusScmResult getPOMStatus(Codeline pb);
041    
042        ScmResult update(Codeline pb);
043    
044        boolean isValidSmUrl(String scmUrl);
045    
046        void releaseFiles(Collection<Codeline> codelines);
047    }