001    package edu.nrao.sss.model.resource;
002    
003    import edu.nrao.sss.util.Identifiable;
004    
005    /**
006     * Hardware used on a telescope that is downstream of the receivers.
007     * Correlators and spectrometers are two types of backends.
008     * <p>
009     * <b>Version Info:</b>
010     * <table style="margin-left:2em">
011     *   <tr><td>$Revision: 1219 $</td></tr>
012     *   <tr><td>$Date: 2008-04-14 15:03:49 -0600 (Mon, 14 Apr 2008) $</td></tr>
013     *   <tr><td>$Author: dharland $</td></tr>
014     * </table></p>
015     *  
016     * @author David M. Harland
017     * @since 2006-09-08
018     */
019    public interface TelescopeBackend
020      extends Cloneable, Identifiable
021    {
022      /**
023       * Configures this hardware so that it comes as close as possible to
024       * satisfying the {@code scienceView}.
025       * 
026       * @param scienceView a specification for the science goals to be met
027       *                    by this hardware.
028       */
029      public void configureFrom(ResourceSpecification scienceView);
030    
031      /**
032       * Returns the general type of this backend.
033       * @return the general type of this backend.
034       */
035      public BackendType getType();
036      
037      /**
038       * Returns a more specific type for this backend.
039       * @return a more specific type for this backend.
040       */
041      public CorrelatorName getName();
042      
043      /**
044       * Returns a copy of this backend.
045       * @return a copy of this backend.
046       */
047      public TelescopeBackend clone();
048      
049      /**
050       * Sets the source of input signals for this backend.
051       * @param newSource
052       *   a new source of input signals for this backend.
053       */
054      public void setSignalSource(AntennaElectronics newSource);
055      
056      /**
057       * Returns the source of input signals for this backend.
058       * @return the source of input signals for this backed.
059       */
060      public AntennaElectronics getSignalSource();
061      
062      /**
063       * Sets the ID of this object; not recommended for most clients.
064       * This method is here primarily for the use of persistence mechanisms.
065       * @param id a new ID for this object.
066       */
067      public void setId(Long id);
068    
069      /**
070       * Resets this instance's ID, and the IDs of all its components,
071       * to a value that represents the unidentified state.
072       * <p>
073       * This method is useful for preparing an instance for storage in a database.
074       * The ID property (as of now, though this may change in the future) is
075       * used by our persistence mechanism to identify objects.  If you are
076       * persisting this instance for the first time, you may need to call
077       * this method before performing a save.  This is especially true if
078       * you have created this instance from XML, as the XML unmarshalling
079       * brings along the ID property.</p> 
080       */
081      public void clearId();
082    }