예제 #1
0
  public static void write(Writer w, Patch patch) throws IOException {
    StringBuilder sb = new StringBuilder();
    List<RevFeatureType> featureTypes = patch.getFeatureTypes();
    for (RevFeatureType featureType : featureTypes) {
      ByteArrayOutputStream output = new ByteArrayOutputStream();
      serializer.write(featureType, output);
      sb.append(output.toString());
      sb.append('\n');
    }

    for (FeatureInfo feature : patch.getAddedFeatures()) {
      String path = feature.getPath();
      sb.append("A\t" + path + "\t" + feature.getFeatureType().getId() + "\n");
      ByteArrayOutputStream output = new ByteArrayOutputStream();
      RevFeature revFeature = RevFeatureBuilder.build(feature.getFeature());
      try {
        serializer.write(revFeature, output);
      } catch (IOException e) {
      }
      sb.append(output.toString());
      sb.append('\n');
    }
    for (FeatureInfo feature : patch.getRemovedFeatures()) {
      String path = feature.getPath();
      sb.append("R\t" + path + "\t" + feature.getFeatureType().getId() + "\n");
      ByteArrayOutputStream output = new ByteArrayOutputStream();
      RevFeature revFeature = RevFeatureBuilder.build(feature.getFeature());
      try {
        serializer.write(revFeature, output);
      } catch (IOException e) {
      }
      sb.append(output.toString());
      sb.append('\n');
    }
    for (FeatureDiff diff : patch.getModifiedFeatures()) {
      sb.append(
          "M\t"
              + diff.getPath()
              + "\t"
              + diff.getOldFeatureType().getId().toString()
              + "\t"
              + diff.getNewFeatureType().getId().toString()
              + "\n");
      sb.append(diff.asText() + "\n");
    }
    for (FeatureTypeDiff diff : patch.getAlteredTrees()) {
      sb.append(diff.toString() + "\n");
    }

    w.write(sb.toString());
    w.flush();
  }