/** * Copyright 2011 Intuit Inc. All Rights Reserved */ package com.intuit.tank.util; import java.io.IOException; import org.apache.commons.io.IOUtils; import org.apache.commons.io.LineIterator; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.intuit.tank.project.DataFile; import com.intuit.tank.storage.FileData; import com.intuit.tank.storage.FileStorage; import com.intuit.tank.storage.FileStorageFactory; import com.intuit.tank.vm.settings.TankConfig; /** * DataFileUtil * * @author dangleton * */ public final class DataFileUtil { private static final Logger LOG = LogManager.getLogger(DataFileUtil.class); protected static final long MAX_AGE = 1000 * 60 * 60 * 24; // one day /** * */ private DataFileUtil() { } /** * @param id * @param version * @param numLines * @param offSet * @return */ public static String getDataFileServiceUrl(int id, int version, int offSet, int numLines) { String baseUrl = new TankConfig().getControllerBase(); return baseUrl + "/rest/v1/datafile-service/datafile/" + Integer.toString(id) + "/version/" + Integer.toString(version) + "?offset=" + offSet + "&num-lines=" + numLines; } /** * finds out how many lines are in the specified file. * * @param dataFile * the file to read * @return the number of lines. */ public static int getNumLines(DataFile dataFile) { FileStorage fileStorage = FileStorageFactory.getFileStorage(new TankConfig().getDataFileStorageDir(), false); FileData fd = DataFileUtil.getFileData(dataFile); int ret = 0; if (fileStorage.exists(fd)) { try { for (LineIterator iterator = IOUtils.lineIterator(fileStorage.readFileData(fd), "utf-8"); iterator.hasNext(); iterator.nextLine()) { ret++; } } catch (IOException e) { LOG.error("Error reading file: " + e, e); } } return ret; } public static FileData getFileData(DataFile df) { return new FileData(Integer.toString(df.getId()), df.getFileName()); } }