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

com.googlecode.sarasvati.env.LongArrayAttributeConverter Maven / Gradle / Ivy

The newest version!
/*
    This file is part of Sarasvati.

    Sarasvati is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.

    Sarasvati is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with Sarasvati.  If not, see .

    Copyright 2009 Paul Lorenz
*/
package com.googlecode.sarasvati.env;

import java.nio.ByteBuffer;

/**
 * Attribute converter for String <--> Integer
 *
 * @author Paul Lorenz
 */
public final class LongArrayAttributeConverter implements AttributeConverter
{
  @Override
  public String objectToString (final Object object)
  {
    if (object == null)
    {
      return null;
    }

    final long[] array = (long[]) object;

    final ByteBuffer byteBuffer = ByteBuffer.allocate(4 + (8 * array.length));
    byteBuffer.putInt(array.length);
    for (final long value : array)
    {
      byteBuffer.putLong(value);
    }

    return Base64.encode(byteBuffer.array());
  }

  /**
   * Converts the given string to an Integer
   *
   * @see com.googlecode.sarasvati.env.AttributeConverter#stringToObject(java.lang.String, java.lang.Class)
   */
  @Override
  public Object stringToObject (final String string, final Class object)
  {
    if (string == null)
    {
      return null;
    }

    final byte[] bytes = Base64.decode(string);
    final ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
    final int length = byteBuffer.getInt();

    final long[] array = new long[length];

    for (int i = 0; i < array.length; i++)
    {
      array[i] = byteBuffer.getLong();
    }

    return array;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy