init
This commit is contained in:
435
src/org/cloudbus/cloudsim/FileAttribute.java
Normal file
435
src/org/cloudbus/cloudsim/FileAttribute.java
Normal file
@@ -0,0 +1,435 @@
|
||||
/*
|
||||
* Title: CloudSim Toolkit
|
||||
* Description: CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation of Clouds
|
||||
* Licence: GPL - http://www.gnu.org/copyleft/gpl.html
|
||||
*
|
||||
* Copyright (c) 2009-2012, The University of Melbourne, Australia
|
||||
*/
|
||||
|
||||
package org.cloudbus.cloudsim;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.cloudbus.cloudsim.core.CloudSim;
|
||||
|
||||
/**
|
||||
* A class for storing related information regarding to a {@link gridsim.datagrid.File} entity.
|
||||
*
|
||||
* @author Uros Cibej
|
||||
* @author Anthony Sulistio
|
||||
* @since CloudSim Toolkit 1.0
|
||||
*/
|
||||
public class FileAttribute {
|
||||
|
||||
private String name; // logical file name
|
||||
|
||||
private String ownerName; // owner name of this file
|
||||
|
||||
private int id; // file ID given by a Replica Catalogue
|
||||
|
||||
private int type; // file type, e.g. raw, reconstructed, etc
|
||||
|
||||
private int size; // file size in byte
|
||||
|
||||
private int checksum; // check sum
|
||||
|
||||
private double lastUpdateTime; // last updated time (sec) - relative
|
||||
|
||||
private long creationTime; // creation time (ms) - abosulte/relative
|
||||
|
||||
private double cost; // price of this file
|
||||
|
||||
private boolean masterCopy; // false if it is a replica
|
||||
|
||||
private boolean readOnly; // false if it can be rewritten
|
||||
|
||||
private int resourceId; // resource ID storing this file
|
||||
|
||||
/**
|
||||
* Allocates a new FileAttribute class.
|
||||
*
|
||||
* @param fileName file name
|
||||
* @param fileSize size of this file (in bytes)
|
||||
* @throws ParameterException This happens when one of the following scenarios occur:
|
||||
* <ul>
|
||||
* <li>the file name is empty or <tt>null</tt>
|
||||
* <li>the file size is zero or negative numbers
|
||||
* </ul>
|
||||
*/
|
||||
public FileAttribute(String fileName, int fileSize) throws ParameterException {
|
||||
// check for errors in the input
|
||||
if (fileName == null || fileName.length() == 0) {
|
||||
throw new ParameterException("FileAttribute(): Error - invalid file name.");
|
||||
}
|
||||
|
||||
if (fileSize <= 0) {
|
||||
throw new ParameterException("FileAttribute(): Error - size <= 0.");
|
||||
}
|
||||
|
||||
size = fileSize;
|
||||
name = fileName;
|
||||
|
||||
// set the file creation time. This is absolute time
|
||||
Date date = CloudSim.getSimulationCalendar().getTime();
|
||||
if (date == null) {
|
||||
creationTime = 0;
|
||||
} else {
|
||||
creationTime = date.getTime();
|
||||
}
|
||||
|
||||
ownerName = null;
|
||||
id = File.NOT_REGISTERED;
|
||||
checksum = 0;
|
||||
type = File.TYPE_UNKOWN;
|
||||
lastUpdateTime = 0;
|
||||
cost = 0;
|
||||
resourceId = -1;
|
||||
masterCopy = true;
|
||||
readOnly = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy the values of this object into another FileAttribute class
|
||||
*
|
||||
* @param attr a FileAttribute object (the destination)
|
||||
* @return <tt>true</tt> if the copy operation is successful, <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean copyValue(FileAttribute attr) {
|
||||
if (attr == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
attr.setFileSize(size);
|
||||
attr.setResourceID(resourceId);
|
||||
attr.setOwnerName(ownerName);
|
||||
attr.setUpdateTime(lastUpdateTime);
|
||||
attr.setRegistrationId(id);
|
||||
attr.setType(type);
|
||||
attr.setChecksum(checksum);
|
||||
attr.setCost(cost);
|
||||
attr.setMasterCopy(masterCopy);
|
||||
attr.setReadOnly(readOnly);
|
||||
attr.setName(name);
|
||||
attr.setCreationTime(creationTime);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the file creation time (in millisecond)
|
||||
*
|
||||
* @param creationTime the file creation time (in millisecond)
|
||||
* @return <tt>true</tt> if successful, <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean setCreationTime(long creationTime) {
|
||||
if (creationTime <= 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.creationTime = creationTime;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the file creation time (in millisecond)
|
||||
*
|
||||
* @return the file creation time (in millisecond)
|
||||
*/
|
||||
public long getCreationTime() {
|
||||
return creationTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the resource ID that stores this file
|
||||
*
|
||||
* @param resourceID a resource ID
|
||||
* @return <tt>true</tt> if successful, <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean setResourceID(int resourceID) {
|
||||
if (resourceID == -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
resourceId = resourceID;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the resource ID that stores this file
|
||||
*
|
||||
* @return the resource ID
|
||||
*/
|
||||
public int getResourceID() {
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the owner name of this file
|
||||
*
|
||||
* @param name the owner name
|
||||
* @return <tt>true</tt> if successful, <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean setOwnerName(String name) {
|
||||
if (name == null || name.length() == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ownerName = name;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the owner name of this file
|
||||
*
|
||||
* @return the owner name or <tt>null</tt> if empty
|
||||
*/
|
||||
public String getOwnerName() {
|
||||
return ownerName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the size of this object (in byte).<br>
|
||||
* NOTE: This object size is NOT the actual file size. Moreover, this size is used for
|
||||
* transferring this object over a network.
|
||||
*
|
||||
* @return the object size (in byte)
|
||||
*/
|
||||
public int getAttributeSize() {
|
||||
int length = DataCloudTags.PKT_SIZE;
|
||||
if (ownerName != null) {
|
||||
length += ownerName.length();
|
||||
}
|
||||
|
||||
if (name != null) {
|
||||
length += name.length();
|
||||
}
|
||||
|
||||
return length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the file size (in MBytes)
|
||||
*
|
||||
* @param fileSize the file size (in MBytes)
|
||||
* @return <tt>true</tt> if successful, <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean setFileSize(int fileSize) {
|
||||
if (fileSize < 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
size = fileSize;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the file size (in MBytes)
|
||||
*
|
||||
* @return the file size (in MBytes)
|
||||
*/
|
||||
public int getFileSize() {
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the file size (in bytes)
|
||||
*
|
||||
* @return the file size (in bytes)
|
||||
*/
|
||||
public int getFileSizeInByte() {
|
||||
return size * Consts.MILLION; // 1e6
|
||||
// return size * 1048576; // 1e6 - more accurate
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the last update time of this file (in seconds)<br>
|
||||
* NOTE: This time is relative to the start time. Preferably use
|
||||
* {@link gridsim.CloudSim#clock()} method.
|
||||
*
|
||||
* @param time the last update time (in seconds)
|
||||
* @return <tt>true</tt> if successful, <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean setUpdateTime(double time) {
|
||||
if (time <= 0 || time < lastUpdateTime) {
|
||||
return false;
|
||||
}
|
||||
|
||||
lastUpdateTime = time;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the last update time (in seconds)
|
||||
*
|
||||
* @return the last update time (in seconds)
|
||||
*/
|
||||
public double getLastUpdateTime() {
|
||||
return lastUpdateTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the file registration ID (published by a Replica Catalogue entity)
|
||||
*
|
||||
* @param id registration ID
|
||||
* @return <tt>true</tt> if successful, <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean setRegistrationId(int id) {
|
||||
if (id < 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.id = id;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the file registration ID
|
||||
*
|
||||
* @return registration ID
|
||||
*/
|
||||
public int getRegistrationID() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the file type (e.g. raw, tag, etc)
|
||||
*
|
||||
* @param type a file type
|
||||
* @return <tt>true</tt> if successful, <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean setType(int type) {
|
||||
if (type < 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.type = type;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets this file type
|
||||
*
|
||||
* @return file type
|
||||
*/
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the checksum of this file
|
||||
*
|
||||
* @param checksum the checksum of this file
|
||||
* @return <tt>true</tt> if successful, <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean setChecksum(int checksum) {
|
||||
if (checksum < 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.checksum = checksum;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the file checksum
|
||||
*
|
||||
* @return file checksum
|
||||
*/
|
||||
public int getChecksum() {
|
||||
return checksum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the cost associated with this file
|
||||
*
|
||||
* @param cost cost of this file
|
||||
* @return <tt>true</tt> if successful, <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean setCost(double cost) {
|
||||
if (cost < 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.cost = cost;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the cost associated with this file
|
||||
*
|
||||
* @return the cost of this file
|
||||
*/
|
||||
public double getCost() {
|
||||
return cost;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if this file already registered to a Replica Catalogue
|
||||
*
|
||||
* @return <tt>true</tt> if it is registered, <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean isRegistered() {
|
||||
boolean result = true;
|
||||
if (id == File.NOT_REGISTERED) {
|
||||
result = false;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Marks this file as a master copy or replica
|
||||
*
|
||||
* @param masterCopy a flag denotes <tt>true</tt> for master copy or <tt>false</tt> for a
|
||||
* replica
|
||||
*/
|
||||
public void setMasterCopy(boolean masterCopy) {
|
||||
this.masterCopy = masterCopy;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether this file is a master copy or replica
|
||||
*
|
||||
* @return <tt>true</tt> if it is a master copy or <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean isMasterCopy() {
|
||||
return masterCopy;
|
||||
}
|
||||
|
||||
/**
|
||||
* Marks this file as a read only or not
|
||||
*
|
||||
* @param readOnly a flag denotes <tt>true</tt> for read only or <tt>false</tt> for re-writeable
|
||||
*/
|
||||
public void setReadOnly(boolean readOnly) {
|
||||
this.readOnly = readOnly;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether this file is a read only or not
|
||||
*
|
||||
* @return <tt>true</tt> if it is a read only or <tt>false</tt> otherwise
|
||||
*/
|
||||
public boolean isReadOnly() {
|
||||
return readOnly;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the file name
|
||||
*
|
||||
* @param name the file name
|
||||
*/
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the file name
|
||||
*
|
||||
* @return the file name
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user