use of es.bsc.compss.types.resources.jaxb.AdaptorsListType in project compss by bsc-wdc.
the class Validator method validateImage.
private void validateImage(ImageType image) throws InvalidElementException {
// Validate inner elements
List<Object> innerElements = image.getAdaptorsOrOperatingSystemOrSoftware();
if (innerElements != null) {
boolean adaptorsTagFound = false;
boolean OSTagFound = false;
boolean softwareTagFound = false;
boolean sdTagFound = false;
boolean priceTagFound = false;
boolean creationTimeTagFound = false;
for (Object obj : innerElements) {
if (obj instanceof AdaptorsListType) {
if (adaptorsTagFound) {
throw new InvalidElementException("Image", "Attribute Adaptors", "Appears more than once");
} else {
adaptorsTagFound = true;
validateAdaptors(((AdaptorsListType) obj));
}
} else if (obj instanceof OSType) {
if (OSTagFound) {
throw new InvalidElementException("Image", "Attribute OperatingSystem", "Appears more than once");
} else {
OSTagFound = true;
validateOS(((OSType) obj));
}
} else if (obj instanceof SoftwareListType) {
if (softwareTagFound) {
throw new InvalidElementException("Image", "Attribute Software", "Appears more than once");
} else {
softwareTagFound = true;
validateSoftwareList(((SoftwareListType) obj));
}
} else if (obj instanceof AttachedDisksListType) {
if (sdTagFound) {
throw new InvalidElementException("Image", "Attribute AttachedDisks", "Appears more than once");
} else {
sdTagFound = true;
this.validateAttachedDisksList(((AttachedDisksListType) obj));
}
} else if (obj instanceof PriceType) {
if (priceTagFound) {
throw new InvalidElementException("Image", "Attribute Price", "Appears more than once");
} else {
priceTagFound = true;
validatePrice(((PriceType) obj));
}
} else if (obj instanceof java.lang.Integer) {
// Creation time (int)
if (creationTimeTagFound) {
throw new InvalidElementException("Image", "Attribute CreationTime", "Appears more than once");
} else {
creationTimeTagFound = true;
// Nothing to validate since it is an integer
}
} else {
throw new InvalidElementException("Image", "Attribute " + obj.getClass(), "Incorrect attribute");
}
}
// Check minimum appearences
if (!adaptorsTagFound) {
throw new InvalidElementException("Image ", "Attribute Adaptors", "Doesn't appear");
}
} else {
// Empty inner elements
throw new InvalidElementException("Image", "", "Content is empty");
}
}
use of es.bsc.compss.types.resources.jaxb.AdaptorsListType in project compss by bsc-wdc.
the class Validator method validateDataNode.
/**
* Validates the given DataNodeType @dn with the current ResourcesFileType The content is correct if no exception is
* raised
*
* @param dn
* @throws InvalidElementException
*/
public void validateDataNode(DataNodeType dn) throws InvalidElementException {
// Check that name isn't used
int num = 0;
for (String d : rf.getDataNodes_names()) {
if (d.equals(dn.getName())) {
num = num + 1;
}
}
if (num > 1) {
// DataNode already exists
throw new InvalidElementException("DataNode", dn.getName(), "Name already in use");
}
// Check inner elements
List<JAXBElement<?>> innerElements = dn.getHostOrPathOrAdaptors();
if (innerElements != null) {
boolean hostTagFound = false;
boolean pathTagFound = false;
boolean adaptorsTagFound = false;
boolean storageTagFound = false;
boolean sharedDisksTagFound = false;
for (JAXBElement<?> obj : innerElements) {
if (obj.getName().equals(new QName("Host"))) {
if (hostTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("DataNode " + dn.getName(), "Attribute " + obj.getName(), "Appears more than once");
} else {
hostTagFound = true;
}
} else if (obj.getName().equals(new QName("Path"))) {
if (pathTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("DataNode " + dn.getName(), "Attribute " + obj.getName(), "Appears more than once");
} else {
pathTagFound = true;
}
} else if (obj.getName().equals(new QName("Adaptors"))) {
if (adaptorsTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("DataNode " + dn.getName(), "Attribute " + obj.getName(), "Appears more than once");
} else {
adaptorsTagFound = true;
validateAdaptors(((AdaptorsListType) obj.getValue()));
}
} else if (obj.getName().equals(new QName("Storage"))) {
if (storageTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("DataNode " + dn.getName(), "Attribute " + obj.getName(), "Appears more than once");
} else {
storageTagFound = true;
validateStorage(((StorageType) obj.getValue()));
}
} else if (obj.getName().equals(new QName("SharedDisks"))) {
if (sharedDisksTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("DataNode " + dn.getName(), "Attribute " + obj.getName(), "Appears more than once");
} else {
sharedDisksTagFound = true;
validateAttachedDisksList(((AttachedDisksListType) obj.getValue()));
}
} else {
throw new InvalidElementException("DataNode " + dn.getName(), "Attribute " + obj.getName(), "Incorrect attribute");
}
}
// Check minimum appearences
if (!hostTagFound) {
throw new InvalidElementException("DataNode " + dn.getName(), "Attribute Host", "Doesn't appear");
}
if (!pathTagFound) {
throw new InvalidElementException("DataNode " + dn.getName(), "Attribute Path", "Doesn't appear");
}
if (!adaptorsTagFound) {
throw new InvalidElementException("DataNode " + dn.getName(), "Attribute Adaptors", "Doesn't appear");
}
} else {
// Empty inner elements
throw new InvalidElementException("DataNode " + dn.getName(), "", "Content is empty");
}
}
use of es.bsc.compss.types.resources.jaxb.AdaptorsListType in project compss by bsc-wdc.
the class Validator method validateComputeNode.
/**
* Validates the given ComputeNodeType @cn with the current ResourcesFileType The content is correct if no exception
* is raised
*
* @param cn
* @throws InvalidElementException
*/
public void validateComputeNode(ComputeNodeType cn) throws InvalidElementException {
// Check that name isn't used
int num = 0;
for (String c : rf.getComputeNodes_names()) {
if (c.equals(cn.getName())) {
num = num + 1;
}
}
if (num > 1) {
// ComputeNode already exists
throw new InvalidElementException("ComputeNode", cn.getName(), "Name already in use");
}
// Check inner elements
List<Object> innerElements = cn.getProcessorOrAdaptorsOrMemory();
if (innerElements != null) {
List<String> processorNames = new ArrayList<String>();
boolean processorTagFound = false;
boolean adaptorsTagFound = false;
boolean memoryTagFound = false;
boolean storageTagFound = false;
boolean osTagFound = false;
boolean softwareTagFound = false;
boolean sharedDisksTagFound = false;
boolean priceTagFound = false;
for (Object obj : innerElements) {
if (obj instanceof ProcessorType) {
ProcessorType p = (ProcessorType) obj;
if (processorNames.contains(p.getName())) {
throw new InvalidElementException("ComputeNode " + cn.getName(), "Attribute Processor" + p.getName(), "Appears more than once");
} else {
processorTagFound = true;
processorNames.add(p.getName());
validateProcessor(p);
}
} else if (obj instanceof AdaptorsListType) {
if (adaptorsTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("ComputeNode " + cn.getName(), "Attribute " + obj.getClass(), "Appears more than once");
} else {
adaptorsTagFound = true;
validateAdaptors(((AdaptorsListType) obj));
}
} else if (obj instanceof MemoryType) {
if (memoryTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("ComputeNode " + cn.getName(), "Attribute " + obj.getClass(), "Appears more than once");
} else {
memoryTagFound = true;
validateMemory(((MemoryType) obj));
}
} else if (obj instanceof StorageType) {
if (storageTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("ComputeNode " + cn.getName(), "Attribute " + obj.getClass(), "Appears more than once");
} else {
storageTagFound = true;
validateStorage(((StorageType) obj));
}
} else if (obj instanceof OSType) {
if (osTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("ComputeNode " + cn.getName(), "Attribute " + obj.getClass(), "Appears more than once");
} else {
osTagFound = true;
validateOS(((OSType) obj));
}
} else if (obj instanceof SoftwareListType) {
if (softwareTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("ComputeNode " + cn.getName(), "Attribute " + obj.getClass(), "Appears more than once");
} else {
softwareTagFound = true;
validateSoftwareList(((SoftwareListType) obj));
}
} else if (obj instanceof AttachedDisksListType) {
if (sharedDisksTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("ComputeNode " + cn.getName(), "Attribute " + obj.getClass(), "Appears more than once");
} else {
sharedDisksTagFound = true;
validateAttachedDisksList(((AttachedDisksListType) obj));
}
} else if (obj instanceof PriceType) {
if (priceTagFound) {
// Second occurency, throw exception
throw new InvalidElementException("ComputeNode " + cn.getName(), "Attribute " + obj.getClass(), "Appears more than once");
} else {
priceTagFound = true;
validatePrice(((PriceType) obj));
}
} else {
throw new InvalidElementException("ComputeNode " + cn.getName(), "Attribute " + obj.getClass(), "Incorrect attribute");
}
}
// Check minimum appearences
if (!processorTagFound) {
throw new InvalidElementException("ComputeNode " + cn.getName(), "Attribute Processor", "Doesn't appear");
}
if (!adaptorsTagFound) {
throw new InvalidElementException("ComputeNode " + cn.getName(), "Attribute Adaptors", "Doesn't appear");
}
} else {
// Empty inner elements
throw new InvalidElementException("ComputeNode " + cn.getName(), "", "Content is empty");
}
}
Aggregations