Author: brett
Date: Fri Jun  3 21:55:07 2005
New Revision: 179946

URL: http://svn.apache.org/viewcvs?rev=179946&view=rev
Log:
PR: MPCHANGELOG-49

Visual Source Safe changelog (patch reviewed but untested due to unavailability 
of VSS installation)

Added:
    maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/
    
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogFactory.java
   (with props)
    
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogGenerator.java
   (with props)
    
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogParser.java
   (with props)
    
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssConnection.java
   (with props)

Added: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogFactory.java
URL: 
http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogFactory.java?rev=179946&view=auto
==============================================================================
--- 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogFactory.java
 (added)
+++ 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogFactory.java
 Fri Jun  3 21:55:07 2005
@@ -0,0 +1,56 @@
+package org.apache.maven.vsslib;
+
+/*
+ * ====================================================================
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * 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.changelog.ChangeLogGenerator;
+import org.apache.maven.changelog.ChangeLogParser;
+
+/**
+ * Provides VSS specific instances of the ChangeLogGenerator and 
ChangeLogParser
+ * interfaces.
+ * 
+ * @author Freddy Mallet
+ */
+public class VssChangeLogFactory implements
+        org.apache.maven.changelog.ChangeLogFactory {
+
+    /**
+     * Default no-arg constructor.
+     */
+    public VssChangeLogFactory() {
+    }
+
+    /**
+     * Create a VSS specific ChangeLogGenerator.
+     * 
+     * @return a VSS specific ChangeLogGenerator.
+     */
+    public ChangeLogGenerator createGenerator() {
+        return new VssChangeLogGenerator();
+    }
+
+    /**
+     * Create a VSS specific ChangeLogParser.
+     * 
+     * @return a VSS specific ChangeLogParser.
+     */
+    public ChangeLogParser createParser() {
+        return new VssChangeLogParser();
+    }
+}
\ No newline at end of file

Propchange: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogFactory.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogGenerator.java
URL: 
http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogGenerator.java?rev=179946&view=auto
==============================================================================
--- 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogGenerator.java
 (added)
+++ 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogGenerator.java
 Fri Jun  3 21:55:07 2005
@@ -0,0 +1,192 @@
+package org.apache.maven.vsslib;
+
+/*
+ * ====================================================================
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * 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 java.io.FileNotFoundException;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Locale;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.changelog.AbstractChangeLogGenerator;
+import org.apache.maven.changelog.ChangeLogEntry;
+import org.apache.maven.changelog.ChangeLogGenerator;
+import org.apache.maven.changelog.ChangeLogParser;
+import org.apache.tools.ant.taskdefs.Execute;
+import org.apache.tools.ant.types.Commandline;
+
+/*******************************************************************************
+ * A Visual Source Safe implementation of the
+ * [EMAIL PROTECTED] org.apache.maven.changelog.ChangeLogGenerator}interface 
realized
+ * extending the [EMAIL PROTECTED] 
org.apache.maven.changelog.AbstractChangeLogGenerator}.
+ * 
+ * The command line build by this class uses the <code>ss History</code> VSS
+ * command and formats the output in a way the VssChangeLogParser can
+ * understand. Due to this fact this implementations works only if used within 
a
+ * vss view.
+ * 
+ * The command looks like this:
+ * <p>
+ * set ssdir=vssRepositoryPath ss History vssProject 
-YvssUserId,vssUserPassword
+ * -R -Vd01/12/04~23/11/04 -I-Y
+ * 
+ * @author Freddy Mallet
+ */
+public class VssChangeLogGenerator extends AbstractChangeLogGenerator {
+
+    /**
+     * Log
+     */
+    private static final Log LOG = LogFactory
+            .getLog(VssChangeLogGenerator.class);
+
+    
/***************************************************************************
+     * Constructs the appropriate command line to execute the scm's log 
command.
+     * For Clearcase it's lshistory.
+     * 
+     * @see 
org.apache.maven.changelog.AbstractChangeLogGenerator#getScmLogCommand()
+     * @return The command line to be executed.
+     */
+    protected Commandline getScmLogCommand() {
+        VssConnection vssConnection = new VssConnection(getConnection());
+        Commandline command = new Commandline();
+        command.setExecutable("ss");
+        command.createArgument().setValue("History");
+        command.createArgument().setValue("$" + vssConnection.getVssProject());
+        //User identification to get access to vss repository 
+        if(vssConnection.getVssUserInf() != null){
+            command.createArgument().setValue("-Y" + 
vssConnection.getVssUserInf());
+        }
+        //Display the history of an entire project list
+        command.createArgument().setValue("-R");
+        //Ignore: Do not ask for input under any circumstances.
+        command.createArgument().setValue("-I-");
+        //Display only versions that fall within specified data range.
+        if (dateRange != null) {
+            command.createArgument().setValue("-Vd" + dateRange);
+        }
+        return command;
+    }
+
+    
/***************************************************************************
+     * Construct the command-line argument that is passed to the scm client to
+     * specify the appropriate date range.
+     * 
+     * @param before
+     *            The starting point.
+     * @param to
+     *            The ending point.
+     * @return A string that can be used to specify a date to a scm system.
+     * 
+     * @see 
org.apache.maven.changelog.AbstractChangeLogGenerator#getScmDateArgument(java.util.Date,
+     *      java.util.Date)
+     */
+    protected String getScmDateArgument(Date before, Date to) {
+        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy",
+                Locale.ENGLISH);
+        String result = sdf.format(to) + "~" + sdf.format(before);
+        return result;
+    }
+
+    protected String getScmTagArgument( String tagStart, String tagEnd )
+    {
+        throw new UnsupportedOperationException( "Cannot presently use tags 
for SCM operations on VSS" );
+    }
+
+    /**
+     * Convert date range from 'number of days' format to 'date to date' format
+     * 
+     * @param numDaysString
+     *            String
+     */
+    public void setDateRange(String numDaysString) {
+        int days = Integer.parseInt(numDaysString);
+
+        Date before = new Date(System.currentTimeMillis() - (long) days * 24
+                * 60 * 60 * 1000);
+        Date to = new Date(System.currentTimeMillis() + (long) 1 * 24 * 60 * 60
+                * 1000);
+    }
+
+    
/***************************************************************************
+     * Execute vss client driving the given parser. This method has been
+     * overwritten to be able to set 'SSDIR' environment variable. This 
variable
+     * set the vss repository
+     * 
+     * @param parser
+     *            A [EMAIL PROTECTED] ChangeLogParser parser}to process the 
vss output.
+     * @return A collection of [EMAIL PROTECTED] ChangeLogEntry entries}parsed 
from the
+     *         vss output.
+     * @throws IOException
+     *             When there are issues executing vss.
+     * @see ChangeLogGenerator#getEntries(ChangeLogParser)
+     */
+    public Collection getEntries(ChangeLogParser parser) throws IOException {
+        if (parser == null) {
+            throw new NullPointerException("parser cannot be null");
+        }
+
+        if (base == null) {
+            throw new NullPointerException("basedir must be set");
+        }
+
+        if (!base.exists()) {
+            throw new FileNotFoundException("Cannot find base dir "
+                    + base.getAbsolutePath());
+        }
+
+        clParser = parser;
+        try {
+            VssConnection vssConnection = new VssConnection(getConnection());
+
+            Execute exe = new Execute(this);
+
+            String[] env = exe.getEnvironment();
+            if (env == null) {
+                env = new String[0];
+            }
+            String[] newEnv = new String[env.length + 1];
+            for (int i = 0; i < env.length; i++) {
+                newEnv[i] = env[i];
+            }
+            newEnv[env.length] = "SSDIR=" + vssConnection.getVssDir();
+
+            exe.setEnvironment(newEnv);
+            exe.setCommandline(getScmLogCommand().getCommandline());
+            //exe.setVMLauncher(false);
+            exe.setWorkingDirectory(base);
+            logExecute(exe, base);
+
+            exe.execute();
+
+            // log messages from stderr
+            String errors = errorReader.toString().trim();
+            if (errors.length() > 0) {
+                LOG.error(errors);
+            }
+        } catch (IOException ioe) {
+            handleParserException(ioe);
+        }
+
+        return entries;
+    }
+}

Propchange: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogGenerator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogGenerator.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogParser.java
URL: 
http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogParser.java?rev=179946&view=auto
==============================================================================
--- 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogParser.java
 (added)
+++ 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogParser.java
 Fri Jun  3 21:55:07 2005
@@ -0,0 +1,398 @@
+package org.apache.maven.vsslib;
+
+/*
+ * ====================================================================
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * 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 java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.Vector;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.maven.changelog.ChangeLog;
+import org.apache.maven.changelog.ChangeLogEntry;
+import org.apache.maven.changelog.ChangeLogFile;
+import org.apache.maven.changelog.ChangeLogParser;
+
+/**
+ * Visual Source Safe specific implementation of ChangeLogParser interface.
+ * 
+ * @author Freddy Mallet
+ */
+public class VssChangeLogParser implements
+        org.apache.maven.changelog.ChangeLogParser {
+
+    /** * Log */
+    private static final Log LOG = LogFactory.getLog(VssChangeLogParser.class);
+
+    /**
+     * Custom date/time formatter. Rounds ChangeLogEntry times to the nearest
+     * minute.
+     */
+    private static final SimpleDateFormat ENTRY_KEY_TIMESTAMP_FORMAT = new 
SimpleDateFormat(
+            "yyyyMMddHHmm");
+
+    /**
+     * rcs entries, in reverse (date, time, author, comment) order
+     */
+    private Map entries = new TreeMap(Collections.reverseOrder());
+
+    // state machine constants for reading Starteam output
+    /** * expecting file information */
+    private static final int GET_FILE = 1;
+
+    /** * expecting file path information */
+    private static final int GET_FILE_PATH = 2;
+
+    /** * expecting date */
+    private static final int GET_AUTHOR = 3;
+
+    /** * expecting comments */
+    private static final int GET_COMMENT = 4;
+
+    /** * expecting revision */
+    private static final int GET_REVISION = 5;
+
+    /** * unknown vss history line status */
+    private static final int GET_UNKNOWN = 6;
+
+    /** * Marks start of file data */
+    private static final String START_FILE = "****";
+
+    /** * Marks start of file data */
+    private static String START_FILE_PATH = "$/";
+
+    /** * Marks start of revision */
+    private static final String START_REVISION = "Version";
+
+    /** * Marks author data */
+    private static final String START_AUTHOR = "User: ";
+
+    /** * Marks comment data */
+    private static final String START_COMMENT = "Comment: ";
+
+    /** * last status of the parser */
+    private int lastStatus = GET_FILE;
+
+    /** * the current log entry being processed by the parser */
+    private ChangeLogEntry currentLogEntry = null;
+
+    /** * the current file being processed by the parser */
+    private ChangeLogFile currentFile = null;
+
+    /** * the bean representation of the vss connection string */
+    private VssConnection vssConnection;
+
+    /**
+     * Create a new ChangeLogParser.
+     */
+    public VssChangeLogParser() {
+    }
+
+    /**
+     * initialize the parser from the change log
+     * 
+     * @param changeLog
+     *            the controlling task
+     * @see ChangeLogParser#init(ChangeLog)
+     */
+    public void init(ChangeLog changeLog) {
+        String connection = changeLog.getRepositoryConnection();
+        try {
+            vssConnection = new VssConnection(connection);
+        } catch (Exception e) {
+            String message = "Unable to parse vss connection string : "
+                    + connection;
+            throw new IllegalArgumentException(message);
+        }
+    }
+
+    /**
+     * Parse the input stream into a collection.
+     * 
+     * @param anInputStream
+     *            an input stream containing clearcase log output
+     * @return a collection of ChangeLogEntry's
+     * @throws IOException
+     *             when there are errors reading the provided stream
+     */
+    public Collection parse(InputStream inputStream) throws IOException {
+        BufferedReader stream = new BufferedReader(new InputStreamReader(
+                inputStream));
+
+        String line;
+
+        while ((line = stream.readLine()) != null) {
+            switch (getLineStatus(line)) {
+            case GET_FILE:
+                processGetFile(line);
+                break;
+            case GET_REVISION:
+                processGetRevision(line);
+                break;
+            case GET_AUTHOR:
+                processGetAuthor(line);
+                break;
+            case GET_FILE_PATH:
+                processGetFilePath(line);
+                break;
+            case GET_COMMENT:
+                processGetComment(line);
+                break;
+            default:
+                break;
+            }
+        }
+        return entries.values();
+    }
+
+    /**
+     * Process the current input line in the Get Comment state.
+     * 
+     * @param line
+     *            a line of text from the VSS log output
+     */
+    private void processGetComment(String line) {
+        String[] commentLine = line.split(":");
+        if (commentLine.length == 2) {
+            getCurrentLogEntry().setComment(commentLine[1]);
+        }
+        //Comment suite on a new line
+        else {
+            String comment = getCurrentLogEntry().getComment();
+            comment = comment + " " + line;
+            getCurrentLogEntry().setComment(comment);
+        }
+    }
+
+    /**
+     * Process the current input line in the Get Author state.
+     * 
+     * @param line
+     *            a line of text from the VSS log output
+     */
+    private void processGetAuthor(String line) {
+        String[] result = line.split("\\s");
+        Vector vector = new Vector();
+        for (int i = 0; i < result.length; i++) {
+            if (!result[i].equals("")) {
+                vector.add(result[i]);
+            }
+        }
+        ChangeLogEntry entry = getCurrentLogEntry();
+        entry.setAuthor((String) vector.get(1));
+        entry.setDate(parseDate((String) vector.get(3) + " "
+                + (String) vector.get(5)));
+    }
+
+    /**
+     * Process the current input line in the Get File state.
+     * 
+     * @param line
+     *            a line of text from the VSS log output
+     */
+    private void processGetFile(String line) {
+        setCurrentLogEntry(new ChangeLogEntry());
+        String[] fileLine = line.split(" ");
+        setCurrentFile(new ChangeLogFile(fileLine[2]));
+    }
+
+    /**
+     * Process the current input line in the Get File Path state.
+     * 
+     * @param line
+     *            a line of text from the VSS log output
+     */
+    private void processGetFilePath(String line) {
+        if (getCurrentFile() != null) {
+            String fileName = getCurrentFile().getName();
+
+            String path = line.substring(line.indexOf("$"), line.length());
+            String longPath = path.substring(vssConnection.getVssProject()
+                    .length() + 1, path.length())
+                    + "/" + fileName;
+            getCurrentFile().setName(longPath);
+            addEntry(getCurrentLogEntry(), getCurrentFile());
+        }
+    }
+
+    /**
+     * Process the current input line in the Get Revision state.
+     * 
+     * @param line
+     *            a line of text from the VSS log output
+     */
+    private void processGetRevision(String line) {
+        String[] revisionLine = line.split(" ");
+        getCurrentFile().setRevision(revisionLine[1]);
+    }
+
+    /**
+     * Identify the status of a vss history line
+     * 
+     * @param the
+     *            line to process
+     * @return status
+     */
+    private int getLineStatus(String line) {
+        int argument = GET_UNKNOWN;
+        if (line.startsWith(START_FILE)) {
+            argument = GET_FILE;
+        } else if (line.startsWith(START_REVISION)) {
+            argument = GET_REVISION;
+        } else if (line.startsWith(START_AUTHOR)) {
+            argument = GET_AUTHOR;
+        } else if (line.indexOf(START_FILE_PATH) != -1) {
+            argument = GET_FILE_PATH;
+        } else if (line.startsWith(START_COMMENT)) {
+            argument = GET_COMMENT;
+        } else if (getLastStatus() == GET_COMMENT) {
+            //Comment suite on a new line
+            argument = getLastStatus();
+        }
+        setLastStatus(argument);
+        return argument;
+    }
+
+    /**
+     * Add a change log entry to the list (if it's not already there) with the
+     * given file.
+     * 
+     * @param entry
+     *            a [EMAIL PROTECTED] ChangeLogEntry}to be added to the list 
if another
+     *            with the same key doesn't exist already. If the entry's 
author
+     *            is null, the entry wont be added
+     * @param file
+     *            a [EMAIL PROTECTED] ChangeLogFile}to be added to the entry
+     */
+    private void addEntry(ChangeLogEntry entry, ChangeLogFile file) {
+        // do not add if entry is not populated
+        if (entry.getAuthor() == null) {
+            return;
+        }
+
+        String key = ENTRY_KEY_TIMESTAMP_FORMAT.format(entry.getDate())
+                + entry.getAuthor() + entry.getComment();
+
+        if (!entries.containsKey(key)) {
+            entry.addFile(file);
+            entries.put(key, entry);
+        } else {
+            ChangeLogEntry existingEntry = (ChangeLogEntry) entries.get(key);
+            existingEntry.addFile(file);
+        }
+    }
+
+    /**
+     * Converts the date timestamp from the svn output into a date object.
+     * 
+     * @return A date representing the timestamp of the log entry.
+     */
+    private Date parseDate(String dateString) {
+        try {
+            SimpleDateFormat format = new SimpleDateFormat("dd.MM.yy HH:mm");
+            Date date = format.parse(dateString);
+            return date;
+        } catch (ParseException e) {
+            LOG.error("ParseException Caught", e);
+            return null;
+        }
+    }
+
+    /**
+     * Getter for property currentFile.
+     * 
+     * @return Value of property currentFile.
+     */
+    private ChangeLogFile getCurrentFile() {
+        return currentFile;
+    }
+
+    /**
+     * Setter for property currentFile.
+     * 
+     * @param currentFile
+     *            New value of property currentFile.
+     */
+    private void setCurrentFile(ChangeLogFile currentFile) {
+        this.currentFile = currentFile;
+    }
+
+    /**
+     * Getter for property currentLogEntry.
+     * 
+     * @return Value of property currentLogEntry.
+     */
+    private ChangeLogEntry getCurrentLogEntry() {
+        return currentLogEntry;
+    }
+
+    /**
+     * Setter for property currentLogEntry.
+     * 
+     * @param currentLogEntry
+     *            New value of property currentLogEntry.
+     */
+    private void setCurrentLogEntry(ChangeLogEntry currentLogEntry) {
+        this.currentLogEntry = currentLogEntry;
+    }
+
+    /**
+     * Getter for property status.
+     * 
+     * @return Value of property status.
+     */
+    private int getLastStatus() {
+        return lastStatus;
+    }
+
+    /**
+     * Setter for property status.
+     * 
+     * @param status
+     *            New value of property status.
+     */
+    private void setLastStatus(int status) {
+        this.lastStatus = status;
+    }
+
+    /**
+     * Clean up any parser resources
+     * 
+     * @see ChangeLogParser#cleanup()
+     */
+    public void cleanup() {
+    }
+
+    /**
+     * Defined in ChangeLogParser interface
+     * 
+     * @see ChangeLogParser
+     */
+    public void setDateFormatInFile(String s) {
+    }
+}
\ No newline at end of file

Propchange: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssChangeLogParser.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssConnection.java
URL: 
http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssConnection.java?rev=179946&view=auto
==============================================================================
--- 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssConnection.java
 (added)
+++ 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssConnection.java
 Fri Jun  3 21:55:07 2005
@@ -0,0 +1,105 @@
+package org.apache.maven.vsslib;
+
+/*
+ * ====================================================================
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * 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.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Bean representation of the vss connection string
+ * 
+ * @author Freddy Mallet
+ */
+public class VssConnection {
+
+    /** Log */
+    private static final Log LOG = LogFactory
+            .getLog(VssChangeLogGenerator.class);
+
+    /**
+     * VSS repository path
+     */
+    private String vssDir;
+
+    /**
+     * VSS user information
+     */
+    private String vssUserInf;
+
+    /**
+     * VSS project
+     */
+    private String vssProject;
+
+    /**
+     * Create a new VssConnection objet according to the provided vss 
connection
+     * string. Here is an example:
+     * 
scm:vss:\\lancelot\Vss_EApplications\:guest,password:/Security/LOSCProduction
+     * the password is not madatory
+     * 
+     * @param connection
+     *            the vss connection string
+     */
+    public VssConnection(String connection) {
+        if (!connection.startsWith("scm:vss")) {
+            throw new IllegalArgumentException(
+                    "repositoy connection string does not specify 'vss' as the 
scm");
+        }
+        try {
+            String[] splitedConnection = connection.split(":");
+            vssDir = splitedConnection[2];
+            if(!splitedConnection[3].equals("")){
+                vssUserInf = splitedConnection[3];
+            }
+            vssProject = splitedConnection[4];
+        } catch (Exception e) {
+            String message = "Unable to parse VSS connection string :"
+                    + connection;
+            LOG.error(message, e);
+            throw new IllegalArgumentException(message);
+        }
+    }
+
+    /**
+     * Get the vss directory
+     * 
+     * @return vss directory
+     */
+    public String getVssDir() {
+        return vssDir;
+    }
+
+    /**
+     * Get the vss project
+     * 
+     * @return vss project
+     */
+    public String getVssProject() {
+        return vssProject;
+    }
+
+    /**
+     * Get the vss user information
+     * 
+     * @return vss user information
+     */
+    public String getVssUserInf() {
+        return vssUserInf;
+    }
+}
\ No newline at end of file

Propchange: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssConnection.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/maven-1/plugins/trunk/changelog/src/main/org/apache/maven/vsslib/VssConnection.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to