public InputStream getFileSteam(FileHelper fh) {
    try {
      Database ndbCurrent =
          ExtLibUtil.getCurrentSession().getDatabase(fh.getServer(), fh.getPath());
      if (ndbCurrent == null) return null;
      Document docCurrent = ndbCurrent.getDocumentByUNID(fh.getDocID());
      if (docCurrent == null) {
        ndbCurrent.recycle();
        return null;
      }

      EmbeddedObject entity = docCurrent.getAttachment(fh.getName());
      if (entity == null) {
        ndbCurrent.recycle();
        docCurrent.recycle();
        return null;
      }
      InputStream is = entity.getInputStream();

      entity.recycle();
      docCurrent.recycle();
      ndbCurrent.recycle();

      return is; // entity.getInputStream();

    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }
  public FileHelper addFile(FileHelper fh, UploadedFile file, String strNewId) {
    try {
      Database ndbCurrent =
          ExtLibUtil.getCurrentSession().getDatabase(fh.getServer(), fh.getPath());
      if (ndbCurrent == null) return null;
      Document docCurrent = ndbCurrent.getDocumentByUNID(fh.getDocID());
      if (docCurrent == null) {
        ndbCurrent.recycle();
        return null;
      }
      IUploadedFile FTemp = file.getUploadedFile();
      File SrFile = FTemp.getServerFile();

      File FNew =
          new File(
              SrFile.getParentFile().getAbsolutePath()
                  + File.separator
                  + FTemp.getClientFileName());
      SrFile.renameTo(FNew);
      RichTextItem rt = null;
      rt = (RichTextItem) docCurrent.getFirstItem(fh.getFieldName());
      if (rt == null) {
        rt = docCurrent.createRichTextItem(fh.getFieldName());
      }

      EmbeddedObject em =
          rt.embedObject(EmbeddedObject.EMBED_ATTACHMENT, "", FNew.getAbsolutePath(), null);

      docCurrent.save(true, false, true);
      FileHelper fhNew = new FileHelper();
      fhNew.setFieldName(fh.getFieldName());
      fhNew.setServer(fh.getServer());
      fhNew.setPath(fh.getPath());
      fhNew.setFileSize(em.getFileSize());
      fhNew.setName(em.getName());
      fhNew.setDisplayName(FTemp.getClientFileName());
      fhNew.setId(strNewId);
      fhNew.setDocID(fh.getDocID());
      fhNew.setFileType(ComponentSessionFacade.get().getMimeTypes().getContentType(FNew));
      fhNew.setNewFile(false);

      rt.recycle();
      docCurrent.recycle();
      ndbCurrent.recycle();

      return fhNew;
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }
  @SuppressWarnings("unchecked")
  public void removeFile(FileHelper fh) {
    try {
      Database ndbCurrent =
          ExtLibUtil.getCurrentSession().getDatabase(fh.getServer(), fh.getPath());
      if (ndbCurrent == null) return;
      Document docCurrent = ndbCurrent.getDocumentByUNID(fh.getDocID());
      if (docCurrent == null) {
        ndbCurrent.recycle();
        return;
      }
      // RESULTS IN NOTE ITEM NOT FOUND ERROR AFTERWARDS
      // EmbeddedObject entity = docCurrent.getAttachment(fh.getName());
      // if (entity == null)
      // return;
      // entity.remove();

      RichTextItem rti = (RichTextItem) docCurrent.getFirstItem(fh.getFieldName());
      Vector<EmbeddedObject> entitys = rti.getEmbeddedObjects();

      for (EmbeddedObject entity : entitys) {
        if (entity.getType() == EmbeddedObject.EMBED_ATTACHMENT) {
          if (entity.getName().equals(fh.getName())) {
            entity.remove();
            break;
          }
        }
      }
      docCurrent.save(true, false, true);

      rti.recycle();
      docCurrent.recycle();
      ndbCurrent.recycle();

    } catch (Exception e) {
      e.printStackTrace();
    }
  }