public void testUpdateExisting() throws Exception {
    long pk = nextLong();

    IGFolder newIGFolder = _persistence.create(pk);

    newIGFolder.setUuid(randomString());
    newIGFolder.setGroupId(nextLong());
    newIGFolder.setCompanyId(nextLong());
    newIGFolder.setUserId(nextLong());
    newIGFolder.setCreateDate(nextDate());
    newIGFolder.setModifiedDate(nextDate());
    newIGFolder.setParentFolderId(nextLong());
    newIGFolder.setName(randomString());
    newIGFolder.setDescription(randomString());

    _persistence.update(newIGFolder, false);

    IGFolder existingIGFolder = _persistence.findByPrimaryKey(newIGFolder.getPrimaryKey());

    assertEquals(existingIGFolder.getUuid(), newIGFolder.getUuid());
    assertEquals(existingIGFolder.getFolderId(), newIGFolder.getFolderId());
    assertEquals(existingIGFolder.getGroupId(), newIGFolder.getGroupId());
    assertEquals(existingIGFolder.getCompanyId(), newIGFolder.getCompanyId());
    assertEquals(existingIGFolder.getUserId(), newIGFolder.getUserId());
    assertEquals(
        Time.getShortTimestamp(existingIGFolder.getCreateDate()),
        Time.getShortTimestamp(newIGFolder.getCreateDate()));
    assertEquals(
        Time.getShortTimestamp(existingIGFolder.getModifiedDate()),
        Time.getShortTimestamp(newIGFolder.getModifiedDate()));
    assertEquals(existingIGFolder.getParentFolderId(), newIGFolder.getParentFolderId());
    assertEquals(existingIGFolder.getName(), newIGFolder.getName());
    assertEquals(existingIGFolder.getDescription(), newIGFolder.getDescription());
  }
  protected long getFolderId(long companyId, String[] pathArray, boolean parent) throws Exception {

    long folderId = IGFolderConstants.DEFAULT_PARENT_FOLDER_ID;

    if (pathArray.length <= 1) {
      return folderId;
    } else {
      long groupId = WebDAVUtil.getGroupId(companyId, pathArray);

      int x = pathArray.length;

      if (parent) {
        x--;
      }

      for (int i = 2; i < x; i++) {
        String name = pathArray[i];

        IGFolder folder = IGFolderServiceUtil.getFolder(groupId, folderId, name);

        if (groupId == folder.getGroupId()) {
          folderId = folder.getFolderId();
        }
      }
    }

    return folderId;
  }
  public Resource getResource(WebDAVRequest webDavRequest) throws WebDAVException {

    try {
      String[] pathArray = webDavRequest.getPathArray();

      long companyId = webDavRequest.getCompanyId();
      long parentFolderId = getParentFolderId(companyId, pathArray);
      String name = WebDAVUtil.getResourceName(pathArray);

      if (Validator.isNull(name)) {
        String path = getRootPath() + webDavRequest.getPath();

        return new BaseResourceImpl(path, StringPool.BLANK, getToken());
      }

      try {
        IGFolder folder =
            IGFolderServiceUtil.getFolder(webDavRequest.getGroupId(), parentFolderId, name);

        if ((folder.getParentFolderId() != parentFolderId)
            || (webDavRequest.getGroupId() != folder.getGroupId())) {

          throw new NoSuchFolderException();
        }

        return toResource(webDavRequest, folder, false);
      } catch (NoSuchFolderException nsfe) {
        try {
          long groupId = webDavRequest.getGroupId();

          IGImage image =
              IGImageServiceUtil.getImageByFolderIdAndNameWithExtension(
                  groupId, parentFolderId, name);

          return toResource(webDavRequest, image, false);
        } catch (NoSuchImageException nsie) {
          return null;
        }
      }
    } catch (Exception e) {
      throw new WebDAVException(e);
    }
  }