/**
  * Generates a serial attribute inside a file description.
  *
  * @param buffer - where to place the description
  */
 private static void generateSerialAttr(StringBuffer buffer) throws Exception {
   addIndent(buffer, FOLDER_INDENT + 2);
   buffer
       .append("<attr name=\"NetBeansAttrSerial\" serialvalue=\"")
       .append(SerialData.getSerialDataString())
       .append("\"/>");
   buffer.append('\n');
 }
 /**
  * Generates file start inside a folder description.
  *
  * @param buffer - where to place the description
  */
 private static void addFileHeader(StringBuffer buffer, ResourceComposer composer) {
   addIndent(buffer, FOLDER_INDENT + 1);
   buffer.append("<file name=\"");
   composer.assemblyResourceString(buffer);
   buffer.append("\" url=\"");
   composer.assemblyResourceString(buffer);
   buffer.append("\">").append('\n');
 }
 /**
  * Generates i-th String attribute inside a file description.
  *
  * @param buffer - where to place the description
  */
 private static void generateStringAttr(StringBuffer buffer, int i, int paddingSize) {
   addIndent(buffer, FOLDER_INDENT + 2);
   buffer.append("<attr name=\"key_");
   Utilities.appendNDigits(i, paddingSize, buffer);
   buffer.append("\" stringvalue=\"val_");
   Utilities.appendNDigits(i, paddingSize, buffer);
   buffer.append("\"/>");
   buffer.append('\n');
 }
  /**
   * Generates an XML file that describes a filesystem structure.
   *
   * @return a String that is an xml document describing a filesystem
   */
  public static String generate(ResourceComposer composer) throws Exception {
    StringBuffer buffer = new StringBuffer(50000);
    buffer.append(HEADER).append('\n');
    buffer.append("<filesystem>").append('\n');
    generateFolder(buffer, composer);
    buffer.append("</filesystem>").append('\n');

    return buffer.toString();
  }
 /**
  * Generates an XML description of a folder inside a filesystem structure.
  *
  * @param buffer - where to place the description
  */
 private static final void generateFolder(StringBuffer buffer, ResourceComposer composer)
     throws Exception {
   buffer.append(FOLDER_START1);
   int base = composer.getFileBase();
   if (base != 0) {
     buffer.append(base);
   }
   buffer.append(FOLDER_START2);
   generateFiles(buffer, composer);
   buffer.append(FOLDER_END);
 }
 /**
  * Generates an XML description of a file inside a folder structure.
  *
  * @param buffer - where to place the description
  */
 private static void generateOneFile(StringBuffer buffer, ResourceComposer composer)
     throws Exception {
   buffer.append('\n');
   addFileHeader(buffer, composer);
   generateAttributes(buffer, composer.getPaddingSize());
   addFileEnd(buffer);
 }
 /**
  * Assembly fileBase (e.g. 13) with name (e.g. JavaSrc) and ext (e.g. .java) into sbuffer. Do
  * not forget to take into account paddingSize. Result could be e.g. JavaSrc0675.java, with
  * paddingSize 4 and fileBase 675.
  */
 public void assemblyResourceString(StringBuffer sbuffer) {
   sbuffer.append(resName);
   Utilities.appendNDigits(getFileBase(), getPaddingSize(), sbuffer);
   sbuffer.append(resExt);
 }
 /**
  * Adds indent
  *
  * @param buffer - where to place the description
  */
 private static void addIndent(StringBuffer buffer, int howMuch) {
   for (int i = 0; i < howMuch; i++) {
     buffer.append(INDENT_STEP);
   }
 }
 /**
  * Generates file end inside a folder description.
  *
  * @param buffer - where to place the description
  */
 private static void addFileEnd(StringBuffer buffer) {
   addIndent(buffer, FOLDER_INDENT + 1);
   buffer.append("</file>");
   buffer.append('\n');
 }