All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.codehaus.mojo.nbm.AdaptNbVersion Maven / Gradle / Ivy

Go to download

Maven plugin for creating NetBeans modules. It defines a custom lifecycle called "nbm". During packaging, the module JAR is enhanced with NetBeans-specific manifest entries and, along with other required files, packed into a *.nbm file, ready for distribution. Additionally the plugin provides aggregator goals to create an update site or cluster for your module projects.

The newest version!
/* ==========================================================================
 * Copyright 2003-2004 Mevenide Team
 *
 * 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.codehaus.mojo.nbm;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.TimeZone;

/**
 *  will try to convert the maven version number to a NetBeans friendly version number.
 * @author Milos Kleint
 *
 */
public class AdaptNbVersion
{

    public static final String TYPE_SPECIFICATION = "spec"; //NOI18N
    public static final String TYPE_IMPLEMENTATION = "impl"; //NOI18N
    private static final String SNAPSHOT = "SNAPSHOT"; //NOI18N

    public static String adaptVersion( String version, Object type, Date date )
    {
        StringTokenizer tok = new StringTokenizer( version, "." );
        if ( SNAPSHOT.equals( version ) && TYPE_IMPLEMENTATION.equals( type ) )
        {
            return "0.0.0." + generateSnapshotValue( date );
        }
        StringBuffer toReturn = new StringBuffer();
        while ( tok.hasMoreTokens() )
        {
            String token = tok.nextToken();
            if ( TYPE_IMPLEMENTATION.equals( type ) )
            {
                int snapshotIndex = token.indexOf( SNAPSHOT );
                if ( snapshotIndex > 0 )
                {
                    String repl = token.substring( 0, snapshotIndex ) + generateSnapshotValue( date );
                    if ( token.length() > snapshotIndex + SNAPSHOT.length() )
                    {
                        repl = token.substring(
                                snapshotIndex + SNAPSHOT.length() );
                    }
                    token = repl;
                }
            }
            if ( TYPE_SPECIFICATION.equals( type ) )
            {
                // strip the trailing -RC1, -BETA5, -SNAPSHOT
                if ( token.indexOf( '-' ) > 0 )
                {
                    token = token.substring( 0, token.indexOf( '-' ) );
                } else if ( token.indexOf( '_' ) > 0 )
                {
                    token = token.substring( 0, token.indexOf( '_' ) );
                }
                try
                {
                    Integer intValue = Integer.valueOf( token );
                    token = intValue.toString();
                }
                catch ( NumberFormatException exc )
                {
                    // ignore, will just not be added to the
                    token = "";
                }
            }
            if ( token.length() > 0 )
            {
                if ( toReturn.length() != 0 )
                {
                    toReturn.append( "." );
                }
                toReturn.append( token );
            }

        }
        if ( toReturn.length() == 0 )
        {
            toReturn.append( "0.0.0" );
        }
        return toReturn.toString();
    }

    private static String generateSnapshotValue( Date date )
    {
        SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyyMMdd" );
        dateFormat.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
        return dateFormat.format( date );
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy