Esempio n. 1
0
  private FDifference comparePackageDescriptions(
      TypeDescription leftType, TypeDescription rightType, FDObject source) {

    FDifference nameDiff = null;
    FDifference descDiff = null;
    FDifference deleDiff = null;
    FDifference creaDiff = null;

    if (leftType.getPackage() != null) {
      if (rightType.getPackage() != null) {
        nameDiff =
            basis.compareNamedElements(
                "package description",
                leftType.getPackage(),
                rightType.getPackage(),
                leftType.getPackage());
        descDiff =
            basis.compareDescriptions(
                leftType.getPackage(), rightType.getPackage(), leftType.getPackage());
      } else {
        // Deleted package
        deleDiff = new FDifference(FDKind.DeletedElement, FDRating.Conflict);
        deleDiff.setSource(leftType.getPackage());
        deleDiff.setDescription(
            "The package '"
                + leftType.getPackage().getName()
                + "' of type '"
                + leftType.getFqtn()
                + "' was removed in version "
                + this.getRightVersion());
      }
    } else if (rightType.getPackage() != null) {
      // Created package
      creaDiff = new FDifference(FDKind.CreatedElement, FDRating.Conflict);
      creaDiff.setSource(rightType.getPackage());
      creaDiff.setDescription(
          "The package '"
              + rightType.getPackage().getName()
              + "' was added to the type '"
              + leftType.getFqtn()
              + "' in version "
              + this.getRightVersion());
    }

    FDifference diff = null;
    if (nameDiff != null || descDiff != null || deleDiff != null || creaDiff != null) {
      diff = new FDifference(FDKind.ChangedElement, FDRating.Conflict);
      diff.setSource(leftType.getPackage());
      diff.setDescription(
          "The package description has changed in version " + this.getRightVersion());
      diff.addDifference(nameDiff);
      diff.addDifference(descDiff);
      diff.addDifference(deleDiff);
      diff.addDifference(creaDiff);
    }
    return diff;
  }