docs: public boolean loadInitialData() throws DBException
      {
      	BaseTable table = this;
          Record record = table.getRecord();
          Task task = null;
          if (Record.findRecordOwner(record) != null)
              task = Record.findRecordOwner(record).getTask();
          if (task == null)
              return false;
          while (((record.getDatabaseType() & DBConstants.SHARED_TABLE) != 0) && ((record.getDatabaseType() & DBConstants.BASE_TABLE_CLASS) == 0))
          {
          	String tableName = record.getTableNames(false);
          	Class<?> className = record.getClass().getSuperclass();
          	record = Record.makeRecordFromClassName(className.getName(), record.getRecordOwner());
          	record.setTableNames(tableName);
          	table = record.getTable();
          }
          if (record.getTable() instanceof PassThruTable)
          	table = this.getPhysicalTable((PassThruTable)record.getTable(), record);
          int iOpenMode = record.getOpenMode();
          record.setOpenMode(DBConstants.OPEN_NORMAL);	// Possible read-only
          
          int iCount = record.getFieldCount();
          boolean[] brgCurrentSelection = new boolean[iCount];
          for (int i = 0; i < iCount; i++)
          {
              brgCurrentSelection[i] = record.getField(i).isSelected();
              record.getField(i).setSelected(true);
          }
          BaseBuffer buffer = new VectorBuffer(null);
          buffer.fieldsToBuffer(record);
  
          org.jbundle.base.db.xmlutil.XmlInOut xml = new org.jbundle.base.db.xmlutil.XmlInOut(null, null, null);
  
          String filename = record.getArchiveFilename(true);
          String defaultFilename = record.getArchiveFilename(false);
          InputStream inputStream = task.getInputStream(filename);
  
          boolean bSuccess = false;
          try {
          	bSuccess = xml.importXML(table, filename, inputStream);    // Data file read successfully
              if ((!bSuccess) && (!defaultFilename.equals(filename)))
              {
                  String prefix = this.getDatabase().getProperty(DBConstants.DB_USER_PREFIX);
                  if (prefix != null)
                  {
                      if (!prefix.endsWith(Character.toString(BaseDatabase.DB_NAME_SEPARATOR)))
                          prefix = prefix + BaseDatabase.DB_NAME_SEPARATOR;
                      String dbName = this.getDatabase().getDatabaseName(true);
                      int index = filename.indexOf(dbName);
                      if (index != -1) if (filename.indexOf(prefix, index) == index)
                      {
                          filename = filename.substring(0, index) + filename.substring(index + prefix.length());
                          inputStream = task.getInputStream(filename);
                          bSuccess = xml.importXML(table, filename, inputStream);
                      }
                  }
                  if ((!bSuccess) && (!defaultFilename.equals(filename)))
                  {
                      inputStream = task.getInputStream(defaultFilename);
                      bSuccess = xml.importXML(table, defaultFilename, inputStream);
                  }
              }
              if (!bSuccess)   
                  Utility.getLogger().info("No initial data for: "
                      + ((record.getRecordName().endsWith(TEMP_SUFFIX)) ? record.getRecordName().substring(0, record.getRecordName().length() - TEMP_SUFFIX.length()) : record.getRecordName())
                      + " from " + filename);
          } catch (Exception ex) {
              ex.printStackTrace();
          } finally {
          	xml.free();
          }
          XmlInOut.enableAllBehaviors(record, false, false);
          buffer.bufferToFields(record, DBConstants.DISPLAY, DBConstants.SCREEN_MOVE);
          XmlInOut.enableAllBehaviors(record, true, true);
          for (int i = 0; i < iCount; i++)
          {
              record.getField(i).setSelected(brgCurrentSelection[i]);
          }
          record.setOpenMode(iOpenMode);
          if (record != this.getRecord())
          	record.free();	// If this was a base record.
          return bSuccess;    // Success
      }