/** * 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.invocation; /** * The uname element. * * @author Karan Vahi * @version $Revision$ */ public class Uname extends MachineInfo implements HasText{ /** * The element name */ public static final String ELEMENT_NAME = "uname"; /** * The system attribute for the uname */ public static final String SYSTEM_ATTRIBUTE_KEY = "system"; /** * The nodename attribute for the uname */ public static final String NODENAME_ATTRIBUTE_KEY = "nodename"; /** * The release attribute for the uname */ public static final String RELEASE_ATTRIBUTE_KEY = "release"; /** * The release attribute for the uname */ public static final String MACHINE_ATTRIBUTE_KEY = "machine"; /** * The archmode attribute for the uname */ public static final String ARCHMODE_ATTRIBUTE_KEY = "archmode"; /** * The undefined value for archmode attribute. */ public static final String UNDEFINED_ARCHMODE_VALUE = "UNDEFINED"; /** * An adapter method to convert the uname object to the architecture object. * * @param uname the object to be converted * * @return the converted <code>Architecture</code> object */ public static Architecture unameToArchitecture( Uname uname ){ Architecture arch = new Architecture(); arch.setMachine( uname.get( Uname.MACHINE_ATTRIBUTE_KEY ) ); arch.setNodeName( uname.get( Uname.NODENAME_ATTRIBUTE_KEY ) ); arch.setRelease( uname.get( Uname.RELEASE_ATTRIBUTE_KEY ) ); arch.setSystemName( uname.get( Uname.SYSTEM_ATTRIBUTE_KEY ) ); arch.setArchMode( uname.get( Uname.ARCHMODE_ATTRIBUTE_KEY) == null ? Uname.UNDEFINED_ARCHMODE_VALUE: uname.get( Uname.ARCHMODE_ATTRIBUTE_KEY ) ); arch.setValue( uname.getValue() ); return arch; } /** * The text value */ private StringBuffer mValue; /** * The default constructor */ public Uname(){ super(); mValue = null; } /** * Constructs a piece of data. * * @param value is the data to remember. The string may be empty, * but it must not be <code>null</code>. * @exception NullPointerException if the argument was null. */ public Uname( String value ) { this(); if ( value == null ) { throw new NullPointerException( "the value to the <data> tag constructor must not be null" ); } else { mValue = new StringBuffer( value ); } } /** * Returns the name of the xml element corresponding to the object. * * @return name */ public String getElementName() { return ELEMENT_NAME; } /** * Appends a piece of text to the existing text. * * @param fragment is a piece of text to append to existing text. * Appending <code>null</code> is a noop. */ public void appendValue(String fragment) { if (fragment != null) { if (this.mValue == null) { this.mValue = new StringBuffer(fragment); } else { this.mValue.append(fragment); } } } /** * Accessor * * @see #setValue(String) */ public String getValue() { return (mValue == null ? null : mValue.toString()); } /** * Accessor. * * @param value is the new value to set. * @see #getValue() */ public void setValue(String value) { this.mValue = (value == null ? null : new StringBuffer(value)); } /** * An adapter method to convert the uname object to the architecture object. * * * @return the converted <code>Architecture</code> object */ public Architecture toArchitecture() { return Uname.unameToArchitecture( this ); } }