Program: 69590
Project: 69590
Buggy source:
/** 
 * Render a single file or folder.
 * @param f			The file or folder to render
 * @param sb		StringOutput to append generated html code
 */
private void appendRenderedFile(FolderComponent fc,VFSItem child,String currentContainerPath,StringOutput sb,URLBuilder ubu,Translator translator,boolean iframePostEnabled,boolean canContainerVersion,int pos){
  boolean canWrite=child.getParentContainer().canWrite() == VFSConstants.YES;
  boolean canDelete=child.getParentContainer().canDelete() == VFSConstants.YES;
  boolean canMail=fc.isCanMail();
  boolean isAbstract=(child instanceof AbstractVirtualContainer);
  Versions versions=null;
  if (canContainerVersion && child instanceof Versionable) {
    Versionable versionable=(Versionable)child;
    if (versionable.getVersions().isVersioned()) {
      versions=versionable.getVersions();
    }
  }
  boolean canVersion=versions != null && !versions.getRevisions().isEmpty();
  boolean canAddToEPortfolio=FolderConfig.isEPortfolioAddEnabled();
  VFSLeaf leaf=null;
  if (child instanceof VFSLeaf) {
    leaf=(VFSLeaf)child;
  }
  boolean isContainer=(leaf == null);
  MetaInfo metaInfo=null;
  if (child instanceof MetaTagged) {
    metaInfo=((MetaTagged)child).getMetaInfo();
  }
  boolean lockedForUser=lockManager.isLockedForMe(child,fc.getIdentityEnvironnement().getIdentity(),fc.getIdentityEnvironnement().getRoles());
  String name=child.getName();
  String pathAndName=currentContainerPath;
  if (pathAndName.length() > 0 && !pathAndName.endsWith("String_Node_Str"))   pathAndName=pathAndName + "String_Node_Str";
  pathAndName=pathAndName + name;
  sb.append("String_Node_Str");
  if (canWrite || canDelete || canMail) {
    sb.append("String_Node_Str");
    sb.append(FileSelection.FORM_ID);
    sb.append("String_Node_Str");
    sb.append(StringHelper.escapeHtml(name));
    sb.append("String_Node_Str");
  }
  sb.append("String_Node_Str").append(pos).append("String_Node_Str");
  if (isContainer) {
    ubu.buildURI(sb,null,null,pathAndName,iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
    sb.append("String_Node_Str");
    if (iframePostEnabled) {
      StringOutput so=new StringOutput();
      ubu.appendTarget(so);
      sb.append(so.toString());
    }
  }
 else {
    ubu.buildURI(sb,new String[]{PARAM_SERV},new String[]{"String_Node_Str"},pathAndName,AJAXFlags.MODE_NORMAL);
    sb.append("String_Node_Str");
  }
  sb.append("String_Node_Str");
  sb.append("String_Node_Str");
  if (isContainer)   sb.append(CSSHelper.CSS_CLASS_FILETYPE_FOLDER);
 else   sb.append(CSSHelper.createFiletypeIconCssClassFor(name));
  sb.append("String_Node_Str");
  if (isAbstract)   sb.append("String_Node_Str");
  sb.append(name);
  if (isAbstract)   sb.append("String_Node_Str");
  sb.append("String_Node_Str");
  if (metaInfo != null) {
    boolean hasMeta=false;
    sb.append("String_Node_Str").append(pos).append("String_Node_Str");
    if (StringHelper.containsNonWhitespace(metaInfo.getTitle())) {
      String title=StringHelper.escapeHtml(metaInfo.getTitle());
      sb.append("String_Node_Str").append(Formatter.escapeDoubleQuotes(title)).append("String_Node_Str");
      hasMeta=true;
    }
    if (StringHelper.containsNonWhitespace(metaInfo.getComment())) {
      sb.append("String_Node_Str");
      String comment=StringHelper.escapeHtml(metaInfo.getComment());
      sb.append(Formatter.escapeDoubleQuotes(comment));
      sb.append("String_Node_Str");
      hasMeta=true;
    }
    if (metaInfo.isThumbnailAvailable()) {
      sb.append("String_Node_Str");
      ubu.buildURI(sb,new String[]{PARAM_SERV_THUMBNAIL},new String[]{"String_Node_Str"},pathAndName,AJAXFlags.MODE_NORMAL);
      sb.append("String_Node_Str");
      hasMeta=true;
    }
    String author=metaInfo.getCreator();
    if (StringHelper.containsNonWhitespace(author)) {
    }
 else {
      author=metaInfo.getAuthor();
      if (!"String_Node_Str".equals(author)) {
        author=UserManager.getInstance().getUserDisplayName(author);
      }
 else {
        author=null;
      }
    }
    author=StringHelper.escapeHtml(author);
    if (StringHelper.containsNonWhitespace(author)) {
      sb.append("String_Node_Str").append(Formatter.escapeDoubleQuotes(translator.translate("String_Node_Str")));
      sb.append("String_Node_Str").append(Formatter.escapeDoubleQuotes(author)).append("String_Node_Str");
      hasMeta=true;
    }
    sb.append("String_Node_Str");
    if (hasMeta) {
      sb.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append(pos).append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append(pos).append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append(pos).append("String_Node_Str").append("String_Node_Str").append(pos).append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
    }
  }
  sb.append("String_Node_Str");
  if (!isContainer) {
    sb.append("String_Node_Str");
    sb.append(Formatter.formatBytes(leaf.getSize()));
    sb.append("String_Node_Str");
  }
  sb.append("String_Node_Str");
  long lastModified=child.getLastModified();
  sb.append("String_Node_Str");
  if (lastModified != VFSConstants.UNDEFINED)   sb.append(DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT,translator.getLocale()).format(new Date(lastModified)));
 else   sb.append("String_Node_Str");
  sb.append("String_Node_Str");
  if (canContainerVersion) {
    if (canVersion)     if (versions != null) {
      sb.append("String_Node_Str");
      sb.append(versions.getRevisionNr());
      sb.append("String_Node_Str");
    }
    sb.append("String_Node_Str");
  }
  boolean locked=lockManager.isLocked(child);
  if (locked) {
    LockInfo lock=lockManager.getLock(child);
    sb.append("String_Node_Str");
    if (lock != null && lock.getLockedBy() != null) {
      String fullname=userManager.getUserDisplayName(lock.getLockedBy());
      String date="String_Node_Str";
      if (lock.getCreationDate() != null) {
        date=fc.getDateTimeFormat().format(lock.getCreationDate());
      }
      String msg=translator.translate("String_Node_Str",new String[]{fullname,date});
      if (lock.isWebDAVLock()) {
        msg+="String_Node_Str";
      }
      sb.append(msg);
    }
    sb.append("String_Node_Str");
  }
  sb.append("String_Node_Str");
  if (canWrite) {
    int actionCount=0;
    if (canVersion)     actionCount++;
    String nameLowerCase=name.toLowerCase();
    boolean isLeaf=(child instanceof VFSLeaf);
    boolean isEditable=(isLeaf && !lockedForUser && (nameLowerCase.endsWith("String_Node_Str") || nameLowerCase.endsWith("String_Node_Str") || nameLowerCase.endsWith("String_Node_Str")|| nameLowerCase.endsWith("String_Node_Str")|| nameLowerCase.endsWith("String_Node_Str")));
    if (isEditable)     actionCount++;
    boolean canEP=canAddToEPortfolio && !isContainer;
    if (canEP)     actionCount++;
    boolean canMetaData=canMetaInfo(child);
    if (canMetaData)     actionCount++;
    if (actionCount == 1 && canMetaData) {
      sb.append("String_Node_Str");
      ubu.buildURI(sb,new String[]{PARAM_EDTID},new String[]{Integer.toString(pos)},iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
      sb.append("String_Node_Str");
      if (iframePostEnabled) {
        StringOutput so=new StringOutput();
        ubu.appendTarget(so);
        sb.append(so.toString());
      }
      sb.append("String_Node_Str").append(StringHelper.escapeHtml(translator.translate("String_Node_Str"))).append("String_Node_Str");
    }
 else     if (actionCount > 1) {
      sb.append("String_Node_Str");
      sb.append("String_Node_Str");
      if (canMetaData) {
        sb.append("String_Node_Str");
        ubu.buildURI(sb,new String[]{PARAM_EDTID},new String[]{Integer.toString(pos)},iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
        sb.append("String_Node_Str");
        if (iframePostEnabled) {
          StringOutput so=new StringOutput();
          ubu.appendTarget(so);
          sb.append(so.toString());
        }
        sb.append("String_Node_Str").append(StringHelper.escapeHtml(translator.translate("String_Node_Str"))).append("String_Node_Str");
      }
      if (isEditable) {
        sb.append("String_Node_Str");
        ubu.buildURI(sb,new String[]{PARAM_CONTENTEDITID},new String[]{Integer.toString(pos)},iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
        sb.append("String_Node_Str");
        if (iframePostEnabled) {
          StringOutput so=new StringOutput();
          ubu.appendTarget(so);
          sb.append(so.toString());
        }
        sb.append("String_Node_Str").append(StringHelper.escapeHtml(translator.translate("String_Node_Str"))).append("String_Node_Str");
      }
      if (canVersion) {
        sb.append("String_Node_Str");
        ubu.buildURI(sb,new String[]{PARAM_VERID},new String[]{Integer.toString(pos)},iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
        sb.append("String_Node_Str");
        if (iframePostEnabled) {
          StringOutput so=new StringOutput();
          ubu.appendTarget(so);
          sb.append(so.toString());
        }
        sb.append("String_Node_Str").append(StringHelper.escapeHtml(translator.translate("String_Node_Str"))).append("String_Node_Str");
      }
      if (canEP) {
        if (metaInfo != null) {
          Identity author=metaInfo.getAuthorIdentity();
          if (author != null && fc.getIdentityEnvironnement().getIdentity().getKey().equals(author.getKey())) {
            sb.append("String_Node_Str");
            ubu.buildURI(sb,new String[]{PARAM_EPORT},new String[]{Integer.toString(pos)},iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
            sb.append("String_Node_Str");
            if (iframePostEnabled) {
              StringOutput so=new StringOutput();
              ubu.appendTarget(so);
              sb.append(so.toString());
            }
            sb.append("String_Node_Str").append(StringHelper.escapeHtml(translator.translate("String_Node_Str"))).append("String_Node_Str");
          }
        }
      }
      sb.append("String_Node_Str");
    }
  }
  sb.append("String_Node_Str");
}

Fixed version (ground truth):
/** 
 * Render a single file or folder.
 * @param f			The file or folder to render
 * @param sb		StringOutput to append generated html code
 */
private void appendRenderedFile(FolderComponent fc,VFSItem child,String currentContainerPath,StringOutput sb,URLBuilder ubu,Translator translator,boolean iframePostEnabled,boolean canContainerVersion,int pos){
  boolean canWrite=child.getParentContainer().canWrite() == VFSConstants.YES;
  boolean canDelete=child.getParentContainer().canDelete() == VFSConstants.YES;
  boolean canMail=fc.isCanMail();
  boolean isAbstract=(child instanceof AbstractVirtualContainer);
  Versions versions=null;
  if (canContainerVersion && child instanceof Versionable) {
    Versionable versionable=(Versionable)child;
    if (versionable.getVersions().isVersioned()) {
      versions=versionable.getVersions();
    }
  }
  boolean canVersion=versions != null && !versions.getRevisions().isEmpty();
  boolean canAddToEPortfolio=FolderConfig.isEPortfolioAddEnabled();
  VFSLeaf leaf=null;
  if (child instanceof VFSLeaf) {
    leaf=(VFSLeaf)child;
  }
  boolean isContainer=(leaf == null);
  MetaInfo metaInfo=null;
  if (child instanceof MetaTagged) {
    metaInfo=((MetaTagged)child).getMetaInfo();
  }
  boolean lockedForUser=lockManager.isLockedForMe(child,fc.getIdentityEnvironnement().getIdentity(),fc.getIdentityEnvironnement().getRoles());
  String name=child.getName();
  String pathAndName=currentContainerPath;
  if (pathAndName.length() > 0 && !pathAndName.endsWith("String_Node_Str"))   pathAndName=pathAndName + "String_Node_Str";
  pathAndName=pathAndName + name;
  sb.append("String_Node_Str");
  if (canWrite || canDelete || canMail) {
    sb.append("String_Node_Str");
    sb.append(FileSelection.FORM_ID);
    sb.append("String_Node_Str");
    sb.append(StringHelper.escapeHtml(name));
    sb.append("String_Node_Str");
  }
  sb.append("String_Node_Str").append(pos).append("String_Node_Str");
  if (isContainer) {
    ubu.buildURI(sb,null,null,pathAndName,iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
    sb.append("String_Node_Str");
    if (iframePostEnabled) {
      StringOutput so=new StringOutput();
      ubu.appendTarget(so);
      sb.append(so.toString());
    }
  }
 else {
    ubu.buildURI(sb,new String[]{PARAM_SERV},new String[]{"String_Node_Str"},pathAndName,AJAXFlags.MODE_NORMAL);
    sb.append("String_Node_Str");
  }
  sb.append("String_Node_Str");
  sb.append("String_Node_Str");
  if (isContainer)   sb.append(CSSHelper.CSS_CLASS_FILETYPE_FOLDER);
 else   sb.append(CSSHelper.createFiletypeIconCssClassFor(name));
  sb.append("String_Node_Str");
  if (isAbstract)   sb.append("String_Node_Str");
  sb.append(name);
  if (isAbstract)   sb.append("String_Node_Str");
  sb.append("String_Node_Str");
  if (metaInfo != null) {
    boolean hasMeta=false;
    sb.append("String_Node_Str").append(pos).append("String_Node_Str");
    if (StringHelper.containsNonWhitespace(metaInfo.getTitle())) {
      String title=StringHelper.escapeHtml(metaInfo.getTitle());
      sb.append("String_Node_Str").append(Formatter.escapeDoubleQuotes(title)).append("String_Node_Str");
      hasMeta=true;
    }
    if (StringHelper.containsNonWhitespace(metaInfo.getComment())) {
      sb.append("String_Node_Str");
      String comment=StringHelper.escapeHtml(metaInfo.getComment());
      sb.append(Formatter.escapeDoubleQuotes(comment));
      sb.append("String_Node_Str");
      hasMeta=true;
    }
    if (metaInfo.isThumbnailAvailable()) {
      sb.append("String_Node_Str");
      ubu.buildURI(sb,new String[]{PARAM_SERV_THUMBNAIL},new String[]{"String_Node_Str"},pathAndName,AJAXFlags.MODE_NORMAL);
      sb.append("String_Node_Str");
      hasMeta=true;
    }
    String author=metaInfo.getCreator();
    if (StringHelper.containsNonWhitespace(author)) {
    }
 else {
      author=metaInfo.getAuthor();
      if (!"String_Node_Str".equals(author)) {
        author=UserManager.getInstance().getUserDisplayName(author);
      }
 else {
        author=null;
      }
    }
    author=StringHelper.escapeHtml(author);
    if (StringHelper.containsNonWhitespace(author)) {
      sb.append("String_Node_Str").append(Formatter.escapeDoubleQuotes(translator.translate("String_Node_Str")));
      sb.append("String_Node_Str").append(Formatter.escapeDoubleQuotes(author)).append("String_Node_Str");
      hasMeta=true;
    }
    sb.append("String_Node_Str");
    if (hasMeta) {
      sb.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append(pos).append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append(pos).append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append(pos).append("String_Node_Str").append("String_Node_Str").append(pos).append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
    }
  }
  sb.append("String_Node_Str");
  if (!isContainer) {
    sb.append("String_Node_Str");
    sb.append(Formatter.formatBytes(leaf.getSize()));
    sb.append("String_Node_Str");
  }
  sb.append("String_Node_Str");
  long lastModified=child.getLastModified();
  sb.append("String_Node_Str");
  if (lastModified != VFSConstants.UNDEFINED)   sb.append(DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT,translator.getLocale()).format(new Date(lastModified)));
 else   sb.append("String_Node_Str");
  sb.append("String_Node_Str");
  if (canContainerVersion) {
    if (canVersion)     if (versions != null) {
      sb.append("String_Node_Str");
      sb.append(versions.getRevisionNr());
      sb.append("String_Node_Str");
    }
    sb.append("String_Node_Str");
  }
  boolean locked=lockManager.isLocked(child);
  if (locked) {
    LockInfo lock=lockManager.getLock(child);
    sb.append("String_Node_Str");
    if (lock != null && lock.getLockedBy() != null) {
      String fullname=userManager.getUserDisplayName(lock.getLockedBy());
      String date="String_Node_Str";
      if (lock.getCreationDate() != null) {
        date=fc.getDateTimeFormat().format(lock.getCreationDate());
      }
      String msg=translator.translate("String_Node_Str",new String[]{fullname,date});
      if (lock.isWebDAVLock()) {
        msg+="String_Node_Str";
      }
      sb.append(msg);
    }
    sb.append("String_Node_Str");
  }
  sb.append("String_Node_Str");
  if (canWrite) {
    int actionCount=0;
    if (canVersion)     actionCount++;
    String nameLowerCase=name.toLowerCase();
    boolean isLeaf=(child instanceof VFSLeaf);
    boolean isEditable=(isLeaf && !lockedForUser && (nameLowerCase.endsWith("String_Node_Str") || nameLowerCase.endsWith("String_Node_Str") || nameLowerCase.endsWith("String_Node_Str")|| nameLowerCase.endsWith("String_Node_Str")|| nameLowerCase.endsWith("String_Node_Str")));
    if (isEditable)     actionCount++;
    boolean canEP=canAddToEPortfolio && !isContainer;
    if (canEP)     actionCount++;
    boolean canMetaData=canMetaInfo(child);
    if (canMetaData)     actionCount++;
    if (actionCount == 1 && canMetaData) {
      sb.append("String_Node_Str");
      ubu.buildURI(sb,new String[]{PARAM_EDTID},new String[]{Integer.toString(pos)},iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
      sb.append("String_Node_Str");
      if (iframePostEnabled) {
        StringOutput so=new StringOutput();
        ubu.appendTarget(so);
        sb.append(so.toString());
      }
      sb.append("String_Node_Str").append(StringHelper.escapeHtml(translator.translate("String_Node_Str"))).append("String_Node_Str");
    }
 else     if (actionCount > 1) {
      sb.append("String_Node_Str").append(pos).append("String_Node_Str").append("String_Node_Str").append(pos).append("String_Node_Str");
      if (canMetaData) {
        sb.append("String_Node_Str");
        ubu.buildURI(sb,new String[]{PARAM_EDTID},new String[]{Integer.toString(pos)},iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
        sb.append("String_Node_Str");
        if (iframePostEnabled) {
          StringOutput so=new StringOutput();
          ubu.appendTarget(so);
          sb.append(so.toString());
        }
        sb.append("String_Node_Str").append(StringHelper.escapeHtml(translator.translate("String_Node_Str"))).append("String_Node_Str");
      }
      if (isEditable) {
        sb.append("String_Node_Str");
        ubu.buildURI(sb,new String[]{PARAM_CONTENTEDITID},new String[]{Integer.toString(pos)},iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
        sb.append("String_Node_Str");
        if (iframePostEnabled) {
          StringOutput so=new StringOutput();
          ubu.appendTarget(so);
          sb.append(so.toString());
        }
        sb.append("String_Node_Str").append(StringHelper.escapeHtml(translator.translate("String_Node_Str"))).append("String_Node_Str");
      }
      if (canVersion) {
        sb.append("String_Node_Str");
        ubu.buildURI(sb,new String[]{PARAM_VERID},new String[]{Integer.toString(pos)},iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
        sb.append("String_Node_Str");
        if (iframePostEnabled) {
          StringOutput so=new StringOutput();
          ubu.appendTarget(so);
          sb.append(so.toString());
        }
        sb.append("String_Node_Str").append(StringHelper.escapeHtml(translator.translate("String_Node_Str"))).append("String_Node_Str");
      }
      if (canEP) {
        if (metaInfo != null) {
          Identity author=metaInfo.getAuthorIdentity();
          if (author != null && fc.getIdentityEnvironnement().getIdentity().getKey().equals(author.getKey())) {
            sb.append("String_Node_Str");
            ubu.buildURI(sb,new String[]{PARAM_EPORT},new String[]{Integer.toString(pos)},iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL);
            sb.append("String_Node_Str");
            if (iframePostEnabled) {
              StringOutput so=new StringOutput();
              ubu.appendTarget(so);
              sb.append(so.toString());
            }
            sb.append("String_Node_Str").append(StringHelper.escapeHtml(translator.translate("String_Node_Str"))).append("String_Node_Str");
          }
        }
      }
      sb.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append(pos).append("String_Node_Str").append(pos).append("String_Node_Str").append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
    }
  }
  sb.append("String_Node_Str");
}