Package org.hive2hive.core.processes.implementations.files.add

Source Code of org.hive2hive.core.processes.implementations.files.add.CreateMetaFileStep

package org.hive2hive.core.processes.implementations.files.add;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.hive2hive.core.file.FileUtil;
import org.hive2hive.core.model.FileVersion;
import org.hive2hive.core.model.MetaFile;
import org.hive2hive.core.model.MetaFileLarge;
import org.hive2hive.core.model.MetaFileSmall;
import org.hive2hive.core.processes.framework.RollbackReason;
import org.hive2hive.core.processes.framework.abstracts.ProcessStep;
import org.hive2hive.core.processes.framework.exceptions.InvalidProcessStateException;
import org.hive2hive.core.processes.implementations.context.AddFileProcessContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Create a new {@link MetaFileSmall}.
*
* @author Nico, Chris, Seppi
*/
public class CreateMetaFileStep extends ProcessStep {

  private static final Logger logger = LoggerFactory.getLogger(CreateMetaFileStep.class);
  private final AddFileProcessContext context;

  public CreateMetaFileStep(AddFileProcessContext context) {
    this.context = context;
  }

  @Override
  protected void doExecute() throws InvalidProcessStateException {
    File file = context.getFile();

    logger.trace("Creating new meta file for file '{}'.", file.getName());

    MetaFile metaFile = null;
    if (context.isLargeFile()) {
      metaFile = new MetaFileLarge(context.generateOrGetMetaKeys().getPublic(), context.getMetaChunks());
    } else {
      // create new meta file with new version
      FileVersion version = new FileVersion(0, FileUtil.getFileSize(file), System.currentTimeMillis(),
          context.getMetaChunks());
      List<FileVersion> versions = new ArrayList<FileVersion>(1);
      versions.add(version);
      metaFile = new MetaFileSmall(context.generateOrGetMetaKeys().getPublic(), versions,
          context.consumeChunkKeys());

    }
    context.provideMetaFile(metaFile);
  }

  @Override
  protected void doRollback(RollbackReason reason) throws InvalidProcessStateException {
    // remove provided meta file
    context.provideMetaFile(null);
  }
}
TOP

Related Classes of org.hive2hive.core.processes.implementations.files.add.CreateMetaFileStep

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.