/**
 */
package de.hftstuttgart.energycomponents;

import de.hftstuttgart.units.NullableQuantity;
import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Cost</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * </p>
 * <ul>
 *   <li>{@link de.hftstuttgart.energycomponents.Cost#getComponentName <em>Component Name</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.Cost#getDescription <em>Description</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.Cost#getHeatSource <em>Heat Source</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.Cost#getDatasource <em>Datasource</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.Cost#getInvestmentCost <em>Investment Cost</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.Cost#getOtherInvestmentCost <em>Other Investment Cost</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.Cost#getPersonnelHours <em>Personnel Hours</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.Cost#getPersonnelCostShare <em>Personnel Cost Share</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.Cost#getAdministrationAndOtherCostShare <em>Administration And Other Cost Share</em>}</li>
 *   <li>{@link de.hftstuttgart.energycomponents.Cost#getMaintenanceCostShare <em>Maintenance Cost Share</em>}</li>
 * </ul>
 *
 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost()
 * @model
 * @generated
 */
public interface Cost extends EObject {
	/**
	 * Returns the value of the '<em><b>Datasource</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Datasource</em>' attribute.
	 * @see #setDatasource(String)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_Datasource()
	 * @model
	 * @generated
	 */
	String getDatasource();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getDatasource <em>Datasource</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Datasource</em>' attribute.
	 * @see #getDatasource()
	 * @generated
	 */
	void setDatasource(String value);

	/**
	 * Returns the value of the '<em><b>Investment Cost</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Investment Cost</em>' containment reference.
	 * @see #setInvestmentCost(Characteristic)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_InvestmentCost()
	 * @model containment="true" required="true"
	 * @generated
	 */
	Characteristic getInvestmentCost();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getInvestmentCost <em>Investment Cost</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Investment Cost</em>' containment reference.
	 * @see #getInvestmentCost()
	 * @generated
	 */
	void setInvestmentCost(Characteristic value);

	/**
	 * Returns the value of the '<em><b>Other Investment Cost</b></em>' attribute.
	 * The default value is <code>"0"</code>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Other Investment Cost</em>' attribute.
	 * @see #setOtherInvestmentCost(double)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_OtherInvestmentCost()
	 * @model default="0"
	 * @generated
	 */
	double getOtherInvestmentCost();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getOtherInvestmentCost <em>Other Investment Cost</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Other Investment Cost</em>' attribute.
	 * @see #getOtherInvestmentCost()
	 * @generated
	 */
	void setOtherInvestmentCost(double value);

	/**
	 * Returns the value of the '<em><b>Personnel Hours</b></em>' attribute.
	 * The default value is <code>"10 h"</code>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Personnel Hours</em>' attribute.
	 * @see #setPersonnelHours(NullableQuantity)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_PersonnelHours()
	 * @model default="10 h" dataType="de.hftstuttgart.energycomponents.QuantityDouble"
	 * @generated
	 */
	NullableQuantity getPersonnelHours();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getPersonnelHours <em>Personnel Hours</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Personnel Hours</em>' attribute.
	 * @see #getPersonnelHours()
	 * @generated
	 */
	void setPersonnelHours(NullableQuantity value);

	/**
	 * Returns the value of the '<em><b>Personnel Cost Share</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Personnel Cost Share</em>' attribute.
	 * @see #setPersonnelCostShare(double)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_PersonnelCostShare()
	 * @model
	 * @generated
	 */
	double getPersonnelCostShare();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getPersonnelCostShare <em>Personnel Cost Share</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Personnel Cost Share</em>' attribute.
	 * @see #getPersonnelCostShare()
	 * @generated
	 */
	void setPersonnelCostShare(double value);

	/**
	 * Returns the value of the '<em><b>Administration And Other Cost Share</b></em>' attribute.
	 * The default value is <code>"0.015"</code>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * share of investment cost
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Administration And Other Cost Share</em>' attribute.
	 * @see #setAdministrationAndOtherCostShare(double)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_AdministrationAndOtherCostShare()
	 * @model default="0.015"
	 * @generated
	 */
	double getAdministrationAndOtherCostShare();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getAdministrationAndOtherCostShare <em>Administration And Other Cost Share</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Administration And Other Cost Share</em>' attribute.
	 * @see #getAdministrationAndOtherCostShare()
	 * @generated
	 */
	void setAdministrationAndOtherCostShare(double value);

	/**
	 * Returns the value of the '<em><b>Maintenance Cost Share</b></em>' attribute.
	 * The default value is <code>"0.015"</code>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * share of investment cost
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Maintenance Cost Share</em>' attribute.
	 * @see #setMaintenanceCostShare(double)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_MaintenanceCostShare()
	 * @model default="0.015"
	 * @generated
	 */
	double getMaintenanceCostShare();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getMaintenanceCostShare <em>Maintenance Cost Share</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Maintenance Cost Share</em>' attribute.
	 * @see #getMaintenanceCostShare()
	 * @generated
	 */
	void setMaintenanceCostShare(double value);

	/**
	 * Returns the value of the '<em><b>Component Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Component Name</em>' attribute.
	 * @see #setComponentName(String)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_ComponentName()
	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
	 * @generated
	 */
	String getComponentName();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getComponentName <em>Component Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Component Name</em>' attribute.
	 * @see #getComponentName()
	 * @generated
	 */
	void setComponentName(String value);

	/**
	 * Returns the value of the '<em><b>Description</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * i.e. what is included in which cost category
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Description</em>' attribute.
	 * @see #setDescription(String)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_Description()
	 * @model
	 * @generated
	 */
	String getDescription();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getDescription <em>Description</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Description</em>' attribute.
	 * @see #getDescription()
	 * @generated
	 */
	void setDescription(String value);

	/**
	 * Returns the value of the '<em><b>Heat Source</b></em>' attribute.
	 * The literals are from the enumeration {@link de.hftstuttgart.energycomponents.TypeOfHeatSource}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Heat Source</em>' attribute.
	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
	 * @see #setHeatSource(TypeOfHeatSource)
	 * @see de.hftstuttgart.energycomponents.EnCompPackage#getCost_HeatSource()
	 * @model
	 * @generated
	 */
	TypeOfHeatSource getHeatSource();

	/**
	 * Sets the value of the '{@link de.hftstuttgart.energycomponents.Cost#getHeatSource <em>Heat Source</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Heat Source</em>' attribute.
	 * @see de.hftstuttgart.energycomponents.TypeOfHeatSource
	 * @see #getHeatSource()
	 * @generated
	 */
	void setHeatSource(TypeOfHeatSource value);

} // Cost