summaryrefslogblamecommitdiffstats
path: root/src/main/java/org/openslx/thrifthelper/TransferStatusWrapper.java
blob: 2c0cd6618bb3f8bda6a6cbe267084413346cc409 (plain) (tree)
1
2
3
4
5
6
7
8
9





                                        
                                                                                   

         
                                                                                                                   




















                                                     
                                                       






































                                                              
package org.openslx.thrifthelper;

public class TransferStatusWrapper
{
	
	public static enum BlockStatus {
		COMPLETE, MISSING, UPLOADING, QUEUED_FOR_COPYING, COPYING, HASHING;
	}
	
	// 0 = complete, 1 = missing, 2 = uploading, 3 = queued for copying, 4 = copying, 5 = hashing (server side)
	private byte[] blocks = null;
	
	public TransferStatusWrapper(byte[] blocks) {
		this.blocks = blocks;
	}
	
	public void setBlocks(byte[] blocks) {
		this.blocks = blocks;
	}
	
	public boolean isComplete() {
		for (byte block : blocks) {
			if (block != 0)
				return false;
		}
		return true;
	}
	
	public float getComplete() {
		int done = 0;
		for (byte block : blocks) {
			if (block == 0 || block == 5) {
				done++;
			}
		}
		return ((float)done / (float)blocks.length);
	}
	
	public float getPercentComplete() {
		 return getComplete() * 100f;
	}
	
	public byte[] getBlocks() {
		return this.blocks;
	}
	
	public boolean isEmpty() {
		return blocks == null || blocks.length == 0;
	}
	
	public int getBlockCount() {
		return blocks.length;
	}
	
	public BlockStatus get(int index) {
		switch (blocks[index]) {
		case 0:
			return BlockStatus.COMPLETE;
		case 1:
			return BlockStatus.MISSING;
		case 2:
			return BlockStatus.UPLOADING;
		case 3:
			return BlockStatus.QUEUED_FOR_COPYING;
		case 4:
			return BlockStatus.COPYING;
		}
		return null;
	}

}