package org.openstack.atlas.logs.hadoop.util;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import org.joda.time.DateTime;
import org.openstack.atlas.util.staticutils.StaticDateTimeUtils;
import org.openstack.atlas.util.staticutils.StaticFileUtils;
public class StaticLogUtils {
public static final Pattern zipLogPattern = Pattern.compile("^(.*)access_log_([0-9]+)_([0-9]{10}).zip$");
/**
* /var/log/zxtm/hadoop/cache/2012021005/1/access_log_10_2012021005.zip => 1
*/
public static String getAccountId(String absoluteFileName) {
String accountDirectory = absoluteFileName.substring(0, absoluteFileName.lastIndexOf("/"));
String accountId = accountDirectory.substring(accountDirectory.lastIndexOf("/") + 1, accountDirectory.length());
return accountId;
}
/**
* /var/log/zxtm/hadoop/cache/2012021005/1/access_log_10_2012021005.zip => 10
*/
public static String getLoadBalancerId(String absoluteFileName) {
return absoluteFileName.split("_")[2];
}
public static boolean isSymLink(String filePath) throws IOException {
File file = new File(StaticFileUtils.expandUser(filePath));
return org.apache.commons.io.FileUtils.isSymlink(file);
}
public static String getZipFileName(int loadbalancerId, int fileHour) {
return "access_log_" + loadbalancerId + "_" + fileHour + ".zip";
}
public static String getZipContentsName(int loadbalancerId, int fileHour) {
return "access_log_" + loadbalancerId + "_" + fileHour;
}
public static List<Long> getHourKeysInRange(long beg, long end) {
List<Long> hoursKeysL = new ArrayList<Long>();
DateTime currDt = StaticDateTimeUtils.hourKeyToDateTime(beg, true);
DateTime endDt = StaticDateTimeUtils.hourKeyToDateTime(end, true);
while (true) {
if (currDt.isAfter(endDt)) {
break;
}
Long currHour = StaticDateTimeUtils.dateTimeToHourLong(currDt);
hoursKeysL.add(currHour);
currDt = currDt.plusHours(1);
}
return hoursKeysL;
}
}