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

com.backendless.transaction.UnitOfWorkUpsertImpl Maven / Gradle / Ivy

package com.backendless.transaction;

import com.backendless.exceptions.ExceptionMessage;
import com.backendless.persistence.BackendlessSerializer;

import java.util.List;
import java.util.Map;

public class UnitOfWorkUpsertImpl implements UnitOfWorkUpsert
{
  private final List operations;
  private final OpResultIdGenerator opResultIdGenerator;
  private final Map clazzes;

  UnitOfWorkUpsertImpl( List operations, OpResultIdGenerator opResultIdGenerator,
                        Map clazzes )
  {
    this.operations = operations;
    this.opResultIdGenerator = opResultIdGenerator;
    this.clazzes = clazzes;
  }

  @Override
  public  OpResult upsert( E instance )
  {
    Map entityMap = SerializationHelper.serializeEntityToMap( instance );
    String tableName = BackendlessSerializer.getSimpleName( instance.getClass() );

    clazzes.put( tableName, instance.getClass() );

    return upsert( tableName, entityMap );
  }

  @Override
  public OpResult upsert( String tableName, Map objectMap )
  {
    if( objectMap == null )
      throw new IllegalArgumentException( ExceptionMessage.NULL_MAP );

    TransactionHelper.makeReferenceToValueFromOpResult( objectMap );

    String operationResultId = opResultIdGenerator.generateOpResultId( OperationType.UPSERT, tableName );
    OperationUpsert OperationUpsert = new OperationUpsert( OperationType.UPSERT, tableName, operationResultId, objectMap );

    operations.add( OperationUpsert );

    return TransactionHelper.makeOpResult( tableName, operationResultId, OperationType.UPSERT );
  }

  @Override
  public  OpResult bulkUpsert( List instances )
  {
    List> serializedEntities = TransactionHelper.convertInstancesToMaps( instances );

    String tableName = BackendlessSerializer.getSimpleName( instances.get( 0 ).getClass() );

    return bulkUpsert( tableName, serializedEntities );
  }

  @Override
  public OpResult bulkUpsert( String tableName, List> arrayOfObjectMaps )
  {
    if( arrayOfObjectMaps == null || arrayOfObjectMaps.isEmpty() )
      throw new IllegalArgumentException( ExceptionMessage.NULL_EMPTY_BULK );

    for( Map mapObject : arrayOfObjectMaps )
      if( mapObject != null )
        TransactionHelper.makeReferenceToValueFromOpResult( mapObject );
      else
        throw new IllegalArgumentException( ExceptionMessage.NULL_MAP );

    String operationResultId = opResultIdGenerator.generateOpResultId( OperationType.UPSERT_BULK, tableName );
    OperationUpsertBulk OperationUpsertBulk = new OperationUpsertBulk( OperationType.UPSERT_BULK, tableName,
                                                                       operationResultId, arrayOfObjectMaps );

    operations.add( OperationUpsertBulk );

    return TransactionHelper.makeOpResult( tableName, operationResultId, OperationType.UPSERT_BULK );
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy