/**
 *  Generated with Tigerstripe(tm) Tigerstripe Workbench Feature 2.2.0.v20070419-1556-GFEkmUll2-0111E.
 *
 *  Tigerstripe(tm) is a registered trademark of Tigerstripe, Inc.
 *
 *  Plugin  : Sun Microsystems Inc./SunJavaSpecificationPlugin(1.0) (1.0)
 *
 *  DO NOT EDIT THIS CODE WAS AUTOMATICALLY GENERATED
 *
 *  Generated from source Tigerstipe Artifact :
 *        javax.oss.cbe.service.ServiceSpecification
 *
 *  Using template :
 *        templates/1.3/valueInterface.vm
 *
 * Copyright 2002-2007 The Members of the OSS through Java(TM) Initiative.
 * All rights reserved. Use is subject to license terms.
 */
package javax.oss.cbe.service;

import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.XmlType;

import ossj.common.cbe.service.ServiceSpecificationValueAdapter;

@XmlType
@XmlJavaTypeAdapter(value=ServiceSpecificationValueAdapter.class)

/**
 *  Public interface definition for ServiceSpecificationValue.
 *
 * A Common Business Entity interface defining a ServiceSpecification
 *
 */
public interface ServiceSpecificationValue 
	extends javax.oss.cbe.EntitySpecificationValue {

    /** VALUE_TYPE attribute name definition. */
    public static final String VALUE_TYPE = "javax.oss.cbe.service.ServiceSpecificationValue";
    
    /** attribute name definition for serviceSpecificationKey.*/
    public static final String SERVICE_SPECIFICATION_KEY = "serviceSpecificationKey";


    /** attribute name definition for name. */
    public static final String NAME = "name";
    /** attribute name definition for description. */
    public static final String DESCRIPTION = "description";
    /** attribute name definition for validFor. */
    public static final String VALID_FOR = "validFor";
    /** attribute name definition for serviceBusinessName. */
    public static final String SERVICE_BUSINESS_NAME = "serviceBusinessName";

    /**
     * Deep copy of this object.
     *
     * @return The cloned object
     */
    public Object clone();


    /**
     *
     * Attribute getter for name.
     *
     *
     * Set the name of the service specification.
     *
     * @return the value of the name field.
     * @throws java.lang.IllegalStateException - if the attribute is not populated.
     *
     */
    public java.lang.String getName( )
        throws 
        java.lang.IllegalStateException;


    /**
     * Attribute setter for name.
     *
     *
     * Set the name of the service specification.
     * @param value - the value to use to set the name attribute.
     * @throws java.lang.IllegalArgumentException
     *         Thrown to report that a bad argument was provided to the method.
     *
     */
    public void setName(java.lang.String value)
        throws
        java.lang.IllegalArgumentException;

    /**
     *
     * Attribute getter for description.
     *
     *
     * Set the product specification description.
     *
     * @return the value of the description field.
     * @throws java.lang.IllegalStateException - if the attribute is not populated.
     *
     */
    public java.lang.String getDescription( )
        throws 
        java.lang.IllegalStateException;


    /**
     * Attribute setter for description.
     *
     *
     * Set the product specification description.
     * @param value - the value to use to set the description attribute.
     * @throws java.lang.IllegalArgumentException
     *         Thrown to report that a bad argument was provided to the method.
     *
     */
    public void setDescription(java.lang.String value)
        throws
        java.lang.IllegalArgumentException;

    /**
     *
     * Attribute getter for validFor.
     *
     *
     * Sets the time period that the specification is valid for.
     *
     * @return the value of the validFor field.
     * @throws java.lang.IllegalStateException - if the attribute is not populated.
     *
     */
    public javax.oss.cbe.datatypes.TimePeriod getValidFor( )
        throws 
        java.lang.IllegalStateException;

    /**
     *
     * Attribute Type getter for validFor.
     *
     * 
     * @return the valid set of types for the validFor field.
     *
     */
    public String[] attributeTypeForValidFor();

    /**
     * Attribute setter for validFor.
     *
     *
     * Sets the time period that the specification is valid for.
     * @param value - the value to use to set the validFor attribute.
     * @throws java.lang.IllegalArgumentException
     *         Thrown to report that a bad argument was provided to the method.
     *
     */
    public void setValidFor(javax.oss.cbe.datatypes.TimePeriod value)
        throws
        java.lang.IllegalArgumentException;

    /**
     *
     * Attribute getter for serviceBusinessName.
     *
     *
     * Set the business name of the service type.
     *
     * @return the value of the serviceBusinessName field.
     * @throws java.lang.IllegalStateException - if the attribute is not populated.
     *
     */
    public java.lang.String getServiceBusinessName( )
        throws 
        java.lang.IllegalStateException;


    /**
     * Attribute setter for serviceBusinessName.
     *
     *
     * Set the business name of the service type.
     * @param value - the value to use to set the serviceBusinessName attribute.
     * @throws java.lang.IllegalArgumentException
     *         Thrown to report that a bad argument was provided to the method.
     *
     */
    public void setServiceBusinessName(java.lang.String value)
        throws
        java.lang.IllegalArgumentException;


    /**
     * Factory method for TimePeriod.
     *
     * @param typeToMake - name of the type to be made
     * @return a new instance of TimePeriod
     *
     * @throws java.lang.IllegalArgumentException - if the argument is invalid
     */
    public javax.oss.cbe.datatypes.TimePeriod makeTimePeriod(String typeToMake)
        throws 
        java.lang.IllegalArgumentException;


    /**
     * Gets the key for this value object.
     *
     * @return the key for this value object
     * @throws java.lang.IllegalStateException if no key was populated in this
     *    value object.
     */
    public javax.oss.cbe.service.ServiceSpecificationKey getServiceSpecificationKey()
        throws 
        java.lang.IllegalStateException;

    /**
     * Sets the key for this value object.
     *
     * @param key - the key to set on this value object.
     * @throws java.lang.IllegalArgumentException if the key is not a valid
     *    key for this value object.
     */
    public void setServiceSpecificationKey(javax.oss.cbe.service.ServiceSpecificationKey key)
        throws 
        java.lang.IllegalArgumentException;

    /**
     * Factory method for ServiceSpecificationKey.
     *
     * @return a new instance of a blank ServiceSpecificationKey
     */
    public javax.oss.cbe.service.ServiceSpecificationKey makeServiceSpecificationKey();


}