code: private ItemData itemData(QPath parentPath, ResultSet item, int itemClass, AccessControlList parentACL)
        throws RepositoryException, SQLException, IOException
     {
        String cid = item.getString(COLUMN_ID);
        String cname = item.getString(COLUMN_NAME);
        int cversion = item.getInt(COLUMN_VERSION);
  
        String cpid = item.getString(COLUMN_PARENTID);
        // if parent ID is empty string - it's a root node
        // cpid = cpid.equals(Constants.ROOT_PARENT_UUID) ? null : cpid;
  
        try
        {
           if (itemClass == I_CLASS_NODE)
           {
              int cindex = item.getInt(COLUMN_INDEX);
              int cnordernumb = item.getInt(COLUMN_NORDERNUM);
              return loadNodeRecord(parentPath, cname, cid, cpid, cindex, cversion, cnordernumb, parentACL);
           }
  
           int cptype = item.getInt(COLUMN_PTYPE);
           boolean cpmultivalued = item.getBoolean(COLUMN_PMULTIVALUED);
           return loadPropertyRecord(parentPath, cname, cid, cpid, cversion, cptype, cpmultivalued);
        }
        catch (InvalidItemStateException e)
        {
           throw new InvalidItemStateException("FATAL: Can't build item path for name " + cname + " id: "
              + getIdentifier(cid) + ". " + e);
        }
     }
docs: Build ItemData.
  
  @param parentPath
  - parent path
  @param item
  database - ResultSet with Item record(s)
  @param itemClass
  - Item type (Node or Property)
  @param parentACL
  - parent ACL
  @return ItemData instance
  @throws RepositoryException
  Repository error
  @throws SQLException
  database error
  @throws IOException
  I/O error