/**
* Copyright 2007-2008 University Of Southern California
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package edu.isi.pegasus.planner.catalog.transformation.classes;
/**
* This class keeps the system information associated with a
* resource or transformation.
*
* @author Gaurang Mehta gmehta@isi.edu
* @version $Revision$
*/
public class VDSSysInfo{
/**
* Architecture of the system.
*/
private Arch arch;
/**
* Os of the system.
*/
private Os os;
/**
* Os version of the system.
*/
private String osversion;
/**
* Glibc version of the system
*/
private String glibc;
/**
* The secondary convenience constructor.
* @param arch Arch The architecture of the system.
* @param os Os The os of the system.
* @param osversion String The os version of the system.
* @param glibc String The glibc version of the system.
* @see Arch
* @see Os
*/
public VDSSysInfo(Arch arch, Os os, String osversion, String glibc) {
this.arch = (arch == null) ? Arch.INTEL32 : arch;
this.os = (os == null) ? Os.LINUX : os;
this.osversion = (osversion == null || osversion.equals("") ) ?
null:
osversion;
this.glibc = (glibc == null || glibc.equals(""))?
null:
glibc;
}
/**
* Another convenience constructor that uses all entries as strings.
* @param arch String
* @param os String
* @param glibc String
*/
public VDSSysInfo(String arch, String os, String glibc) {
this( arch, os, null, glibc );
}
/**
* Another convenience constructor that uses all entries as strings.
* @param arch String
* @param os String
* @param osversion String
* @param glibc String
*/
public VDSSysInfo(String arch, String os, String osversion, String glibc) {
this.arch = (arch == null) ? Arch.INTEL32 : Arch.fromString(arch);
this.os = (os == null) ? Os.LINUX : Os.fromString(os);
this.osversion = (osversion == null || osversion.equals("") ) ?
null:
osversion;
this.glibc = (glibc == null || glibc.equals(""))?
null:
glibc;
}
public VDSSysInfo(String system) {
if (system != null) {
String s1[] = system.split("::", 2);
if (s1.length == 2) {
arch = Arch.fromString(s1[0]);
String s2[] = s1[1].split(":", 3);
os = Os.fromString(s2[0]);
for (int i = 1; i < s2.length; i++) {
if (i == 1) {
osversion = s2[i];
}
if (i == 2) {
glibc = s2[i];
}
}
} else {
throw new IllegalStateException(
"Error : Please check your system info string");
}
} else {
this.arch = Arch.INTEL32;
this.os = Os.LINUX;
}
}
/**
* The default constructor.
* Sets the sysinfo to INTEL32::LINUX
*/
public VDSSysInfo() {
this.arch=Arch.INTEL32;
this.os=Os.LINUX;
}
/**
* Sets the architecture of the system.
* @param arch Arch
* @see Arch
*/
public void setArch(Arch arch) {
this.arch = (arch == null) ? Arch.INTEL32 : arch;
}
/**
* Sets the Os of the sytem.
* @param os Os
* @see Os
*/
public void setOs(Os os) {
this.os = (os == null) ? Os.LINUX : os;
}
/**
* Sets the Os version of the system.
* @param osversion String
*/
public void setOsversion(String osversion) {
this.osversion = osversion;
}
/**
* Sets the glibc version of the system
* @param glibc String
*/
public void setGlibc(String glibc) {
this.glibc = glibc;
}
/**
* Returns the architecture of the sytem.
* @return Arch
* @see Arch
*/
public Arch getArch() {
return arch;
}
/**
* Returns the os type of the system.
* @return Os
* @see Os
*/
public Os getOs() {
return os;
}
/**
* Returns the os version of the system.
* @return String
*/
public String getOsversion() {
return osversion;
}
/**
* Retuns the glibc version of the system.
* @return String
*/
public String getGlibc() {
return glibc;
}
/**
* Return a copy of this Sysinfo object
* @return Object
*/
public Object clone() {
return new VDSSysInfo(arch, os, osversion, glibc);
}
/**
* Check if the system information matches.
* @param obj to be compared.
* @return boolean
*/
public boolean equals(Object obj) {
boolean result = false;
if(obj instanceof VDSSysInfo){
VDSSysInfo sysinfo = (VDSSysInfo)obj;
result = (arch.equals(sysinfo.getArch())
&& os.equals(sysinfo.getOs()));
}
return result;
}
/**
* Returns the output of the data class as string.
* @return String
*/
public String toString() {
StringBuffer s = new StringBuffer();
s.append(arch + "::" + os);
if (osversion != null && !osversion.isEmpty()) {
s.append(":" + osversion);
}
if (glibc != null && !glibc.isEmpty()) {
s.append(":" + glibc);
}
return s.toString();
}
}