} /* ImportImage */

        private void  ImportValidatedClassAssignmentsDir(PicesDataBase threadConn,
                                                         String dirName
                                                         )
        {
            RunLogAddMsg("Dir[" + dirName + "]" + "\n");

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

            if (fileNames != null)
            {
                String     className = PicesClass.GetClassNameFromDirName(dirName);
                PicesClass mlClass   = null;

                int numThisDir       = 0;
                int numFailedThisDir = 0;
                foreach (String fn in fileNames)
                {
                    String ext = OSservices.GetFileExtension(fn).ToLower();
                    if ((ext == "bmp") || (ext == "jpg"))
                    {
                        String rn = OSservices.GetRootName(fn);
                        if (mlClass == null)
                        {
                            mlClass = GetClassFromName(threadConn, className);
                        }

                        if (importImages)
                        {
                            numThisDir++;
                            ImportImage(threadConn, fn);
                        }
                        else
                        {
                            //rn = "TRAIN_" + rn;
                            threadConn.ImagesUpdateValidatedAndPredictClass(rn, mlClass, 1.0f);
                            if (threadConn.Successful())
                            {
                                numThisDir++;
                            }
                            else
                            {
                                numFailedThisDir++;
                                RunLogAddMsg("Dir[" + dirName + "]  RootName[" + rn + "]  Failed" + "\n");
                                RunLogAddMsg(threadConn.LastErrorDesc() + "\n");
                            }
                        }

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

                RunLogAddMsg("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;
                        }
                        ImportValidatedClassAssignmentsDir(threadConn, subDir);
                        if (cancelImporting)
                        {
                            break;
                        }
                    }
                }
            }
        } /* ImportValidatedClassAssignmentsDir */