// Path: src/main/java/io/openio/sds/models/ChunkInfo.java
// public class ChunkInfo {
// 
//     public ChunkInfo() {
//     }
// 
//     private String url;
//     private String real_url;
//     private Long size;
//     private String hash;
//     private Position pos;
// 
//     public String url() {
//         return url;
//     }
// 
//     public String hash() {
//         return hash;
//     }
// 
//     public Position pos() {
//         return pos;
//     }
// 
//     public Long size() {
//         return size;
//     }
// 
//     public ChunkInfo url(String url) {
//         this.url = url;
//         return this;
//     }
// 
//     public ChunkInfo real_url(String real_url) {
//         this.real_url = real_url;
//         return this;
//     }
// 
//     public ChunkInfo size(Long size) {
//         this.size = size;
//         return this;
//     }
// 
//     public ChunkInfo hash(String hash) {
//         this.hash = hash;
//         return this;
//     }
// 
//     public ChunkInfo pos(Position pos) {
//         this.pos = pos;
//         return this;
//     }
// 
//     public String id(){
//         return url.substring(url.lastIndexOf("/") + 1);
//     }
// 
//     public String finalUrl() {
//         if (real_url != null && real_url.length() > 0) {
//             return real_url;
//         }
//         return url;
//     }
// 
//     @Override
//     public String toString() {
//         return MoreObjects.toStringHelper(this)
//                 .omitNullValues()
//                 .add("url", url)
//                 .add("real_url", real_url)
//                 .add("size", size)
//                 .add("hash", hash)
//                 .add("pos", pos)
//                 .toString();
//     }
// }
// 
// Path: src/main/java/io/openio/sds/models/Range.java
// public class Range {
// 
//     private static final Pattern RANGE_PATTERN = Pattern
//             .compile("^([\\d]+)?-([\\d]+)?$");
// 
//     private long from = 0;
//     private long to = -1;
// 
//     private Range(long from, long to) {
//         this.from = from;
//         this.to = to;
//     }
// 
//     public static Range upTo(long to) {
//         checkArgument(0 < to);
//         return new Range(0, to);
//     }
// 
//     public static Range from(long from) {
//         checkArgument(0 <= from);
//         return new Range(from, -1);
//     }
// 
//     public static Range between(long from, long to) {
//         checkArgument(from >= 0 && to > 0 && to >= from,
//                 "Invalid range");
//         return new Range(from, to);
//     }
// 
//     public static Range parse(String str) {
//         Matcher m = RANGE_PATTERN.matcher(str);
//         checkArgument(m.matches());
//         if (null == m.group(1)) {
//             checkArgument(null != m.group(2), "useless range");
//             return upTo(parseInt(m.group(2)));
//         }
//         return (null == m.group(2)) ? from(parseInt(m.group(1)))
//                 : between(parseInt(m.group(1)), parseInt(m.group(2)));
//     }
// 
//     public long from() {
//         return from;
//     }
// 
//     public long to() {
//         return to;
//     }
// 
//     public String headerValue() {
//         return to < 0
//                 ? format("bytes=%d-", from)
//                 : format("bytes=%d-%d", from, to);
//     }
// 
//     public String rangeValue() {
//         return to < 0
//                 ? format("%d-", from)
//                 : format("%d-%d", from, to);
//     }
// 
//     @Override
//     public String toString() {
//         return MoreObjects.toStringHelper(this)
//                 .add("from", from)
//                 .add("to", to)
//                 .toString();
//     }
// }


import java.util.List;
import io.openio.sds.models.ChunkInfo;
import io.openio.sds.models.Range;
package io.openio.sds.storage;



/**
 * 
 * @author Christopher Dedeurwaerder
 *
 */
public class Target {

	private List<ChunkInfo> ci;
	private Range range;
	
	public Target() {
	}

// Path: src/main/java/io/openio/sds/models/ChunkInfo.java
// public class ChunkInfo {
// 
//     public ChunkInfo() {
//     }
// 
//     private String url;
//     private String real_url;
//     private Long size;
//     private String hash;
//     private Position pos;
// 
//     public String url() {
//         return url;
//     }
// 
//     public String hash() {
//         return hash;
//     }
// 
//     public Position pos() {
//         return pos;
//     }
// 
//     public Long size() {
//         return size;
//     }
// 
//     public ChunkInfo url(String url) {
//         this.url = url;
//         return this;
//     }
// 
//     public ChunkInfo real_url(String real_url) {
//         this.real_url = real_url;
//         return this;
//     }
// 
//     public ChunkInfo size(Long size) {
//         this.size = size;
//         return this;
//     }
// 
//     public ChunkInfo hash(String hash) {
//         this.hash = hash;
//         return this;
//     }
// 
//     public ChunkInfo pos(Position pos) {
//         this.pos = pos;
//         return this;
//     }
// 
//     public String id(){
//         return url.substring(url.lastIndexOf("/") + 1);
//     }
// 
//     public String finalUrl() {
//         if (real_url != null && real_url.length() > 0) {
//             return real_url;
//         }
//         return url;
//     }
// 
//     @Override
//     public String toString() {
//         return MoreObjects.toStringHelper(this)
//                 .omitNullValues()
//                 .add("url", url)
//                 .add("real_url", real_url)
//                 .add("size", size)
//                 .add("hash", hash)
//                 .add("pos", pos)
//                 .toString();
//     }
// }
// 
// Path: src/main/java/io/openio/sds/models/Range.java
// public class Range {
// 
//     private static final Pattern RANGE_PATTERN = Pattern
//             .compile("^([\\d]+)?-([\\d]+)?$");
// 
//     private long from = 0;
//     private long to = -1;
// 
//     private Range(long from, long to) {
//         this.from = from;
//         this.to = to;
//     }
// 
//     public static Range upTo(long to) {
//         checkArgument(0 < to);
//         return new Range(0, to);
//     }
// 
//     public static Range from(long from) {
//         checkArgument(0 <= from);
//         return new Range(from, -1);
//     }
// 
//     public static Range between(long from, long to) {
//         checkArgument(from >= 0 && to > 0 && to >= from,
//                 "Invalid range");
//         return new Range(from, to);
//     }
// 
//     public static Range parse(String str) {
//         Matcher m = RANGE_PATTERN.matcher(str);
//         checkArgument(m.matches());
//         if (null == m.group(1)) {
//             checkArgument(null != m.group(2), "useless range");
//             return upTo(parseInt(m.group(2)));
//         }
//         return (null == m.group(2)) ? from(parseInt(m.group(1)))
//                 : between(parseInt(m.group(1)), parseInt(m.group(2)));
//     }
// 
//     public long from() {
//         return from;
//     }
// 
//     public long to() {
//         return to;
//     }
// 
//     public String headerValue() {
//         return to < 0
//                 ? format("bytes=%d-", from)
//                 : format("bytes=%d-%d", from, to);
//     }
// 
//     public String rangeValue() {
//         return to < 0
//                 ? format("%d-", from)
//                 : format("%d-%d", from, to);
//     }
// 
//     @Override
//     public String toString() {
//         return MoreObjects.toStringHelper(this)
//                 .add("from", from)
//                 .add("to", to)
//                 .toString();
//     }
// }


// Path: src/main/java/io/openio/sds/storage/Target.java
import java.util.List;
import io.openio.sds.models.ChunkInfo;
import io.openio.sds.models.Range;

package io.openio.sds.storage;



/**
 * 
 * @author Christopher Dedeurwaerder
 *
 */
public class Target {

	private List<ChunkInfo> ci;
	private Range range;
	
	public Target() {
	}

	public List<ChunkInfo> getChunk() {