Package org.apache.archiva.metadata.repository.cassandra

Source Code of org.apache.archiva.metadata.repository.cassandra.CassandraUtils

package org.apache.archiva.metadata.repository.cassandra;

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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 me.prettyprint.cassandra.serializers.LongSerializer;
import me.prettyprint.cassandra.serializers.SerializerTypeInferer;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.cassandra.service.template.ColumnFamilyUpdater;
import me.prettyprint.hector.api.Serializer;
import me.prettyprint.hector.api.beans.ColumnSlice;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.mutation.Mutator;
import org.apache.commons.lang.StringUtils;

/**
* @author Olivier Lamy
* @since 2.0.0
*/
public class CassandraUtils
{

    private static final String EMPTY_VALUE = "";

    public static final String SEPARATOR = "->";

    public static String generateKey( final String... bases )
    {
        final StringBuilder builder = new StringBuilder();
        if ( bases == null || bases.length == 0 )
        {
            return builder.toString();
        }

        for ( final String s : bases )
        {
            if ( s != null )
            {
                builder.append( s );
            }
            else
            {
                builder.append( EMPTY_VALUE );
            }
            builder.append( SEPARATOR );
        }
        if ( builder.length() > 0 )
        {
            builder.setLength( builder.length() - SEPARATOR.length() );
        }
        return builder.toString();
    }

    public static <A, B> HColumn<A, B> column( final A name, final B value )
    {

        return HFactory.createColumn( name, //
                                      value, //
                                      (Serializer<A>) SerializerTypeInferer.getSerializer( name ), //
                                      (Serializer<B>) SerializerTypeInferer.getSerializer( value ) );
    }

    public static String getStringValue( ColumnSlice<String, String> columnSlice, String columnName )
    {
        if ( StringUtils.isEmpty( columnName ) )
        {
            return null;
        }

        HColumn<String, String> hColumn = columnSlice.getColumnByName( columnName );
        return hColumn == null ? null : hColumn.getValue();
    }

    public static Long getLongValue( ColumnSlice<String, Long> columnSlice, String columnName )
    {
        if ( StringUtils.isEmpty( columnName ) )
        {
            return null;
        }

        HColumn<String, Long> hColumn = columnSlice.getColumnByName( columnName );
        return hColumn == null ? null : hColumn.getValue();
    }

    public static String getAsStringValue( ColumnSlice<String, Long> columnSlice, String columnName )
    {
        StringSerializer ss = StringSerializer.get();
        if ( StringUtils.isEmpty( columnName ) )
        {
            return null;
        }

        HColumn<String, Long> hColumn = columnSlice.getColumnByName( columnName );
        return hColumn == null ? null : ss.fromByteBuffer( hColumn.getValueBytes() );
    }

    public static Long getAsLongValue( ColumnSlice<String, String> columnSlice, String columnName )
    {
        LongSerializer ls = LongSerializer.get();
        if ( StringUtils.isEmpty( columnName ) )
        {
            return null;
        }

        HColumn<String, String> hColumn = columnSlice.getColumnByName( columnName );
        return hColumn == null ? null : ls.fromByteBuffer( hColumn.getValueBytes() );
    }

    public static void addInsertion( Mutator<String> mutator, String key, String columnFamily, String columnName,
                                     String value )
    {
        if ( value != null )
        {
            mutator.addInsertion( key, columnFamily, column( columnName, value ) );
        }
    }

    /**
     * null check on the value to prevent {@link java.lang.IllegalArgumentException}
     * @param updater
     * @param columnName
     * @param value
     */
    public static void addUpdateStringValue(ColumnFamilyUpdater<String,String> updater, String columnName, String value )
    {
        if (value == null)
        {
            return;
        }
        updater.setString( columnName, value );

    }

    private CassandraUtils()
    {
        // no-op
    }

}
TOP

Related Classes of org.apache.archiva.metadata.repository.cassandra.CassandraUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.