krysalis-version/src/java/org/apache/depot/version/impl/data VersionDataIncrementor.java,NONE,1.1

Nick Chalko <[email protected]> Tue, 09 Nov 2004 07:14:02 +0000
Newsgroups gmane.comp.krysalis.cvs
Message-ID <[email protected]>
Update of /cvsroot/krysalis/krysalis-version/src/java/org/apache/depot/version/impl/data
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27011/src/java/org/apache/depot/version/impl/data

Added Files:
	VersionDataIncrementor.java 
Log Message:
Almost compiles!

--- NEW FILE: VersionDataIncrementor.java ---
/*
 * Copyright  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.
 */

package org.apache.depot.version.impl.data;
import java.util.Date;
import java.util.Iterator;


/**
 * @author [email protected]
 */
public class VersionDataIncrementor {

    private VersionDataElement m_element = null;

    public static final VersionDataIncrementor BUILD_NUMBER =
        new VersionDataIncrementor(VersionDataElement.BUILD_NUMBER);
    public static final VersionDataIncrementor RELEASE_LEVEL =
        new VersionDataIncrementor(VersionDataElement.RELEASE_LEVEL);
    public static final VersionDataIncrementor POINT =
        new VersionDataIncrementor(VersionDataElement.POINT);
    public static final VersionDataIncrementor MINOR =
        new VersionDataIncrementor(VersionDataElement.MINOR);
    public static final VersionDataIncrementor MAJOR =
        new VersionDataIncrementor(VersionDataElement.MAJOR);

    public VersionDataIncrementor(VersionDataElement element) {

        m_element = element;
    }

    // :TODO: public VersionDataIncrementor getForElement(VersionDataElement element) 

    public VersionData increment(final VersionData initial) {
        VersionData inc = null;

        //
        // Current settings
        //
        int buildNumber = initial.getBuildNumber();
        int releaseQualifier = initial.getReleaseQualifier();
        ReleaseLevel releaseLevel = initial.getReleaseLevel();
        int point = initial.getPoint();
        int minor = initial.getMinor();
        int major = initial.getMajor();

        if (m_element == VersionDataElement.BUILD_NUMBER)
            buildNumber++;

        if (buildNumber > VersionDataElement.MAX_BUILD_NUMBER) {
            buildNumber = VersionDataElement.MIN_BUILD_NUMBER;
            releaseQualifier++;
        }

        if (m_element == VersionDataElement.RELEASE_QUALIFIER)
            releaseQualifier++;

        ReleaseLevel incLevel = releaseLevel;
        if (releaseQualifier > VersionDataElement.MAX_RELEASE_QUALIFIER) {
            releaseQualifier = VersionDataElement.MIN_RELEASE_QUALIFIER;
            incLevel = releaseLevel.nextLevel();
        }

        //:TODO: Increment?
        Date buildDate = initial.getBuildDate();
        
        if (m_element == VersionDataElement.RELEASE_LEVEL)
            incLevel = releaseLevel.nextLevel();

        if (null == incLevel) {
            releaseLevel = VersionDataElement.MIN_RELEASE_LEVEL;
            point++;
        }

        if (m_element == VersionDataElement.POINT)
            point++;

        if (point > VersionDataElement.MAX_POINT) {
            point = VersionDataElement.MIN_POINT;

            minor++;
        }

        if (m_element == VersionDataElement.MINOR)
            minor++;

        if (minor > VersionDataElement.MAX_MINOR) {
            minor = VersionDataElement.MIN_MINOR;
            major++;
        }

        if (m_element == VersionDataElement.MAJOR)
            major++;

        if (major <= VersionDataElement.MAX_MAJOR)
            inc =
                new VersionData(
                    major,
                    minor,
                    releaseLevel,
                    releaseQualifier,
                    point,
                    buildNumber,
					buildDate);

        return inc;
    }

    /**
     * @see java.lang.Object#toString()
     */
    public String toString() {
        return super.toString() + m_element;
    }

    public static void main(String args[]) {
        for (Iterator elements = VersionDataElement.ELEMENTS.iterator();
            elements.hasNext();
            ) {
            VersionDataElement element = (VersionDataElement) elements.next();

            System.out.println("Incrementing Element:" + element);

            VersionData data1 = new VersionData();

            VersionData data2 =
                new VersionDataIncrementor(element).increment(data1);

            System.out.println("Version Data1: " + data1);
            System.out.println("Version Data2: " + data2);
        }
    }
}



-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click