001    /*
002     * CDDL HEADER START
003     *
004     * The contents of this file are subject to the terms of the
005     * Common Development and Distribution License, Version 1.0 only
006     * (the "License").  You may not use this file except in compliance
007     * with the License.
008     *
009     * You can obtain a copy of the license at
010     * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011     * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012     * See the License for the specific language governing permissions
013     * and limitations under the License.
014     *
015     * When distributing Covered Code, include this CDDL HEADER in each
016     * file and include the License file at
017     * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
018     * add the following below this CDDL HEADER, with the fields enclosed
019     * by brackets "[]" replaced with your own identifying information:
020     *      Portions Copyright [yyyy] [name of copyright owner]
021     *
022     * CDDL HEADER END
023     *
024     *
025     *      Copyright 2006-2008 Sun Microsystems, Inc.
026     */
027    package org.opends.server.types;
028    
029    
030    /**
031     * This class defines a data structure for holding configuration
032     * information to use when restoring a backup of a Directory Server
033     * backend.  It is assumed that the only information necessary to
034     * restore a backup is the path to the directory containing the backup
035     * file(s) and the backup ID of the backup to restore.  Any other
036     * information that may be needed to restore a given backup must be
037     * saved in some way by the backup mechanism.  Note that if the
038     * associated backend supports taking incremental backups, it must be
039     * possible to restore the original full backup or any individual
040     * incremental backup taken since that full backup (i.e., an
041     * incremental backup must not prevent restoring an earlier
042     * incremental backup or the original full backup with which the
043     * incremental backups are associated).
044     */
045    @org.opends.server.types.PublicAPI(
046         stability=org.opends.server.types.StabilityLevel.VOLATILE,
047         mayInstantiate=true,
048         mayExtend=false,
049         mayInvoke=true)
050    public final class RestoreConfig extends OperationConfig
051    {
052      // The reference to the directory containing the backup file(s) to
053      // restore.
054      private BackupDirectory backupDirectory;
055    
056      // Indicates whether the "restore" should be verify-only but not
057      // actually move or restore any files.
058      private boolean verifyOnly;
059    
060      // The unique ID assigned to the backup that is to be restored.
061      private String backupID;
062    
063    
064    
065      /**
066       * Creates a new restore configuration with the provided
067       * information.
068       *
069       * @param  backupDirectory  The reference to the directory
070       *                          containing the backup file(s) to
071       *                          restore.
072       * @param  backupID         The unique ID assigned to the backup
073       *                          that is to be restored.
074       * @param  verifyOnly       Indicates whether the specified backup
075       *                          should be verified only and not actually
076       *                          restored.
077       */
078      public RestoreConfig(BackupDirectory backupDirectory,
079                           String backupID, boolean verifyOnly)
080      {
081        this.backupDirectory = backupDirectory;
082        this.backupID        = backupID;
083        this.verifyOnly      = verifyOnly;
084      }
085    
086    
087    
088      /**
089       * Retrieves a reference to the directory containing the backup
090       * file(s) to restore.
091       *
092       * @return  A reference to the directory containing the backup
093       *          file(s) to restore.
094       */
095      public BackupDirectory getBackupDirectory()
096      {
097        return backupDirectory;
098      }
099    
100    
101    
102      /**
103       * Retrieves the identifier of the backup to be restored.  This ID
104       * must be unique among all backups (both full and incremental) at
105       * least within the specified backup directory.
106       *
107       * @return  The identifier of the backup to be restored.
108       */
109      public String getBackupID()
110      {
111        return backupID;
112      }
113    
114    
115    
116      /**
117       * Indicates whether the restore process should only attempt to
118       * verify the validity and/or integrity of the backup files to the
119       * best of its ability rather than actually trying to restore.  Note
120       * that in some cases, the ability to verify a backup files will not
121       * be able to guarantee that they may be used, but will it must at
122       * least verify that the appropriate file(s) exist, that any hashes
123       * or signatures are valid, and that any encryption can be
124       * decrypted.
125       *
126       * @return  <CODE>true</CODE> if this restore process should only
127       *          attempt to verify the validity and/or integrity of the
128       *          backup files, or <CODE>false</CODE> if it should
129       *          actually attempt to restore the backup.
130       */
131      public boolean verifyOnly()
132      {
133        return verifyOnly;
134      }
135    }
136