From 3d2f59e7f9a73db8743019beff4d3b69849f1fbc Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Mon, 12 Mar 2012 14:38:08 +0000
Subject: [PATCH] Fix OPENDJ-446: setup - improve method of checking whether config has been modified

---
 opends/src/quicksetup/org/opends/quicksetup/CurrentInstallStatus.java |   37 +++++++-----------
 opends/src/quicksetup/org/opends/quicksetup/Installation.java         |   18 ++++++++-
 opends/src/quicksetup/org/opends/quicksetup/Status.java               |   17 --------
 3 files changed, 32 insertions(+), 40 deletions(-)

diff --git a/opends/src/quicksetup/org/opends/quicksetup/CurrentInstallStatus.java b/opends/src/quicksetup/org/opends/quicksetup/CurrentInstallStatus.java
index 2acbf1d..27f9060 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/CurrentInstallStatus.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/CurrentInstallStatus.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Portions copyright 2012 ForgeRock AS.
  */
 
 package org.opends.quicksetup;
@@ -87,10 +88,11 @@
         msgs.add(INFO_INSTALLSTATUS_DBFILEEXIST.get());
       }
 
-      if (isConfigFileModified())
+      if (archivedConfigsExist())
       {
         msgs.add(INFO_INSTALLSTATUS_CONFIGFILEMODIFIED.get());
       }
+
       canOverwriteCurrentInstall = (msgs.size() == 1) && dbFileExists;
       isInstalled = msgs.size() > 0;
       if (canOverwriteCurrentInstall)
@@ -182,43 +184,34 @@
     return port;
   }
 
+
+
   /**
    * Indicates whether there are database files under this installation.
    *
    * @return <CODE>true</CODE> if there are database files, or
-   * <CODE>false</CODE> if not.
+   *         <CODE>false</CODE> if not.
    */
   private boolean dbFilesExist()
   {
-    boolean dbFilesExist = false;
-
     File dbDir = Installation.getLocal().getDatabasesDirectory();
     File[] children = dbDir.listFiles();
-    if ((children != null) && (children.length > 0))
-    {
-      dbFilesExist = true;
-    }
-    return dbFilesExist;
+    return ((children != null) && (children.length > 0));
   }
 
+
+
   /**
-   * Indicates whether the config.ldif file has been modified (compared to what
-   * we had in the zip file). This is used to know if we have configured the
-   * current binaries or not.
+   * Indicates whether there are archived config files under this installation.
    *
-   * @return <CODE>true</CODE> if the config.ldif file has been modified, or
+   * @return <CODE>true</CODE> if there are archived config files, or
    *         <CODE>false</CODE> if not.
    */
-  private boolean isConfigFileModified()
+  private boolean archivedConfigsExist()
   {
-    boolean mod = false;
-    try {
-      mod = Installation.getLocal().getCurrentConfiguration()
-              .hasBeenModified();
-    } catch (IOException ioe) {
-      LOG.log(Level.INFO, "failed to determine if config modified", ioe);
-    }
-    return mod;
+    File archDir = Installation.getLocal().getArchivedConfigsDirectory();
+    File[] children = archDir.listFiles();
+    return ((children != null) && (children.length > 0));
   }
 
 }
diff --git a/opends/src/quicksetup/org/opends/quicksetup/Installation.java b/opends/src/quicksetup/org/opends/quicksetup/Installation.java
index 6286974..e1d1862 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/Installation.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/Installation.java
@@ -23,7 +23,7 @@
  *
  *
  *      Copyright 2006-2010 Sun Microsystems, Inc.
- *      Portions Copyright 2011 ForgeRock AS
+ *      Portions Copyright 2011-2012 ForgeRock AS
  */
 
 package org.opends.quicksetup;
@@ -114,6 +114,12 @@
   public static final String CONFIG_PATH_RELATIVE = "config";
 
   /**
+   * The relative path where the archived config files are.
+   */
+  public static final String ARCHIVED_CONFIG_PATH_RELATIVE =
+      CONFIG_PATH_RELATIVE + File.separator + "archived-configs";
+
+  /**
    * The relative path where the config files are.
    */
   public static final String HISTORY_PATH_RELATIVE = "history";
@@ -467,7 +473,6 @@
 
   /**
    * Indicates if the install and instance are in the same directory.
-   * @return true if the install and instance are in the same directory.
    */
   private boolean instanceAndInstallInSameDir;
 
@@ -884,6 +889,15 @@
   }
 
   /**
+   * Returns the path to the archived config files under the install path.
+   *
+   * @return the path to the archived config files under the install path.
+   */
+  public File getArchivedConfigsDirectory() {
+    return new File(getInstanceDirectory(), ARCHIVED_CONFIG_PATH_RELATIVE);
+  }
+
+  /**
    * Returns the path to the config files under the install path.
    *
    * @return the path to the config files under the install path.
diff --git a/opends/src/quicksetup/org/opends/quicksetup/Status.java b/opends/src/quicksetup/org/opends/quicksetup/Status.java
index 626a3f2..daa03a0 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/Status.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/Status.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Portions copyright 2012 ForgeRock AS.
  */
 
 package org.opends.quicksetup;
@@ -33,7 +34,6 @@
 import org.opends.quicksetup.util.Utils;
 
 import java.io.File;
-import java.io.IOException;
 
 /**
  * This class represents the current state of a particular installation.
@@ -64,21 +64,6 @@
   }
 
   /**
-   * Determines whether or not the configuration has been modified for this
-   * installation.
-   * @return boolean where true means the configuration has been modified
-   */
-  public boolean configurationHasBeenModified() {
-    boolean mod = false;
-    try {
-      mod = installation.getCurrentConfiguration().hasBeenModified();
-    } catch (IOException e) {
-      // do nothing for now;
-    }
-    return mod;
-  }
-
-  /**
    * Determines whether or not the schema has been modified for this
    * installation.
    * @return boolean where true means the schema has been modified

--
Gitblit v1.10.0