} /* FilterListFirImageFiles */

        private void  ImportImagesFromDirectoryStructure(PicesDataBase threadConn,
                                                         String dirName
                                                         )
        {
            runLog.Writeln("Dir[" + dirName + "]" + "\n");

            String[] fileNames = null;
            try  { fileNames = Directory.GetFiles(dirName); }
            catch (Exception e)
            {
                runLog.Writeln("\n" + "Error retrieving file info for Directory[" + dirName + "]" + "\n");
                runLog.Writeln("Exception[" + e.ToString() + "]" + "\n\n");
                fileNames = null;
            }

            if (fileNames != null)
            {
                fileNames = FilterListForImageFiles(fileNames);
            }

            if (fileNames != null)
            {
                String sipperFileName = cruiseName + stationName + deploymentNum + "-" + OSservices.GetRootName(dirName);

                sipperFile               = new PicesSipperFile(sipperFileName);
                sipperFile.CruiseName    = cruiseName;
                sipperFile.StationName   = stationName;
                sipperFile.DeploymentNum = deploymentNum;
                threadConn.SipperFileInsert(sipperFile);

                int numThisDir       = 0;
                int numFailedThisDir = 0;
                foreach (String fn in fileNames)
                {
                    String ext = OSservices.GetFileExtension(fn).ToLower();
                    if ((ext == "bmp") || (ext == "jpg"))
                    {
                        numThisDir++;
                        bool successful = false;
                        ImportImage(threadConn, sipperFileName, fn, ref successful);
                        if (!successful)
                        {
                            ++numFailedThisDir;
                        }

                        if ((numThisDir % 100) == 0)
                        {
                            runLog.Writeln("Dir[" + dirName + "]  Files Updated[" + numThisDir.ToString("###,##0") + "]" + "\n");
                        }
                    }
                    if (cancelImporting)
                    {
                        break;
                    }
                }

                runLog.Writeln("Dir[" + dirName + "]  Files Updated[" + numThisDir.ToString("###,##0") + "]" + "\n");
                totalImagesUpdated += numThisDir;
            }

            if (!cancelImporting)
            {
                String[] directories = null;
                try { directories = Directory.GetDirectories(dirName); }
                catch (Exception) { directories = null; }

                if (directories != null)
                {
                    foreach (String subDir in directories)
                    {
                        if ((subDir == ".") || (subDir == ".."))
                        {
                            continue;
                        }
                        ImportImagesFromDirectoryStructure(threadConn, subDir);
                        if (cancelImporting)
                        {
                            break;
                        }
                    }
                }
            }
        } /* ImportImagesFromDirectoryStructure */