docs: public String getArchiveFilename(boolean bPhysicalName)
      {
          String strFileSeparator = System.getProperty("file.separator");
          char chFileSeparator = '/';
          if ((strFileSeparator != null) && (strFileSeparator.length() == 1))
              chFileSeparator = strFileSeparator.charAt(0);
          String strArchiveFolder = null;
          if (this.getTable().getDatabase() != null)
          {
          	if ((this.getDatabaseType() & DBConstants.USER_DATA) != 0)
      			strArchiveFolder = this.getTable().getDatabase().getProperty(DBConstants.USER_ARCHIVE_FOLDER);
          	else
      			strArchiveFolder = this.getTable().getDatabase().getProperty(DBConstants.SHARED_ARCHIVE_FOLDER);
      		if (strArchiveFolder == null)
      			strArchiveFolder = this.getTable().getDatabase().getProperty(DBConstants.ARCHIVE_FOLDER);
          }
          if ((strArchiveFolder == null) || (strArchiveFolder.length() == 0))
              if (this.getRecordOwner() != null)
          {
              if ((this.getDatabaseType() & DBConstants.USER_DATA) != 0)
                  strArchiveFolder = this.getRecordOwner().getProperty(DBConstants.USER_ARCHIVE_FOLDER);
              else
                  strArchiveFolder = this.getRecordOwner().getProperty(DBConstants.SHARED_ARCHIVE_FOLDER);
              if (strArchiveFolder == null)
                  strArchiveFolder = this.getRecordOwner().getProperty(DBConstants.ARCHIVE_FOLDER);
          }
          if ((strArchiveFolder == null) || (strArchiveFolder.length() == 0))
              strArchiveFolder = DBConstants.DEFAULT_ARCHIVE_FOLDER;
          String tableDomain = this.getClass().getName();
          if ((tableDomain.indexOf('.') != -1)
          	&& (tableDomain.substring(tableDomain.indexOf('.') + 1).indexOf('.') != -1))
          		tableDomain = tableDomain.substring(0, tableDomain.indexOf('.') + tableDomain.substring(tableDomain.indexOf('.') + 1).indexOf('.') + 2);	// Include trailing .
      		else
      			tableDomain = DBConstants.BLANK;
          strArchiveFolder = Utility.replace(strArchiveFolder, "{domain}", tableDomain.replace('.', chFileSeparator));
          String strPackage = this.getClass().getName();
          if (strPackage.endsWith(DatabaseInfo.DATABASE_INFO_FILE))
              strPackage = DatabaseInfo.DATABASE_INFO_FILE;
          String strDBName = this.getTable().getDatabase().getDatabaseName(bPhysicalName);
          if (bPhysicalName == false)
          {
              if ((this.getDatabaseType() & DBConstants.TABLE_DATA_TYPE_MASK) == DBConstants.USER_DATA)
                  strDBName = strDBName + BaseDatabase.USER_SUFFIX;
              else if ((this.getDatabaseType() & DBConstants.TABLE_DATA_TYPE_MASK) == DBConstants.SHARED_DATA)
                  strDBName = strDBName + BaseDatabase.SHARED_SUFFIX;            
          }
          String strFilename = Utility.addToPath(Utility.addToPath(strArchiveFolder, strDBName), strPackage.replace('.', chFileSeparator) + ".xml");
          return strFilename;
      }