/*

 * Delivered to the U.S. Government in Accordance with Contract FA8650-10-C-7080.

 *

 * EXPORT CONTROLLED

 * ECCN#   EAR99

 * Warning: This document contains technical data which is controlled under the

 * Bureau of Industry & Security's Export Administration Regulations and may not be

 * exported or re-exported without authorization by the Bureau of Industry & Security.

 * Diversion contrary to US law is prohibited.

 *

 * (c) 2011 United Technologies Corp.

 * Developed with the sponsorship of the Defense Advanced Research Projects Agency (DARPA).

 *

 * Permission is hereby granted, free of charge, to any person obtaining a copy of this data,

 * including any software or models in source or binary form, as well as any drawings, 

 * specifications, and documentation (collectively "the Data"), to deal in the Data without 

 * restriction, including without limitation the rights to use, copy, modify, merge, publish,

 * distribute, sublicense, and/or sell copies of the Data, and to permit persons to whom the Data

 * is furnished to do so, subject to the following conditions:

 * 

 * The above copyright notice and this permission notice shall be included in all copies or

 * substantial portions of the Data.

 *

 * THE DATA IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING

 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS, SPONSORS, DEVELOPERS, CONTRIBUTORS, OR

 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE DATA OR THE

 * USE OR OTHER DEALINGS IN THE DATA.

*/



package aee.engine;



import org.jdom.Attribute;

import org.jdom.Element;



import aee.exception.AeeException;



/**

 * An object with a name (and an id, desc, and block)

 */

public class NamedObject extends IDedObject {

	private String name;

	private String desc;

	private String block;



	/**

	 * Constructor builds a named object from XML 

	 * @param root The root element

	 * @param expectedName  Expected name for the root element

	 * @throws AeeException if any unexpected XML errors detected

	 */

	public NamedObject(Element root, String expectedName) throws AeeException {

		super(root, expectedName);

		name  = "";

		desc  = "";

		block = "";



		// All attributes are optional

		Attribute attr = root.getAttribute("name");

		if (attr != null)

			name = getAttrValue(attr);



		attr = root.getAttribute("desc");

		if (attr != null)

			desc = getAttrValue(attr);



		attr = root.getAttribute("block");

		if (attr != null)

			block = getAttrValue(attr);

	}

	

	/**

	 * Report the object's name

	 * @return The name or "" if none

	 */

	public String getName() {

		return name;

	}

	

	/**

	 * Report the object's description

	 * @return The description or "" if none

	 */

	public String getDesc() {

		return desc;

	}

	

	/**

	 * Report the object's block

	 * @return The block or "" if none

	 */

	public String getBlock() {

		return block;

	}



	/**

	 * Report an Integer as a String

	 * @param val The integer. May be null

	 * @return "" if val is missing else the value

	 */

	protected static String intToString(Integer val) {

		return (val == null)? "" : val.toString();

	}



	/**

	 * Report a Long as a String

	 * @param val The long. May be null

	 * @return "" if val is missing else the value

	 */

	protected static String longToString(Long val) {

		return (val == null)? "" : val.toString();

	}

}

