package com.kryptnostic.storage.v1;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
import com.google.common.collect.Lists;
/**
* Utility methods for working with object storage ID's.
* @author rbuckheit
*/
public final class ObjectIds {
private ObjectIds() { /* not to be instantiated */ }
public static final String CHILD_OBJECT_SEPARATOR = "~";
public static String getChildObjectId(String objectId, int childIndex) {
Validate.isTrue(StringUtils.isNotBlank(objectId));
Validate.isTrue(childIndex >= 0);
return String.format("%s%s%d", objectId, CHILD_OBJECT_SEPARATOR, childIndex);
}
public static boolean isChildObjectId(String objectId) {
return objectId.split(CHILD_OBJECT_SEPARATOR).length > 1;
}
public static String getParentObjectId(String childId) {
Validate.isTrue(isChildObjectId(childId), "objectId must represent a child object");
return childId.split(CHILD_OBJECT_SEPARATOR)[0];
}
public static int getChildIndex(String childId) {
Validate.isTrue(isChildObjectId(childId), "objectId must represent a child object");
return Integer.parseInt(childId.split(CHILD_OBJECT_SEPARATOR)[1]);
}
public static List<String> getChildIds(String parentId, int childObjectCount) {
List<String> childIds = Lists.newArrayList();
for (int i = 0; i < childObjectCount; i++) {
childIds.add( getChildObjectId(parentId, i) );
}
return childIds;
}
}