@@ -0,0 +1,1280 @@
+/**%0A * %0A */%0Apackage normalization;%0A%0Aimport datastructures.AttributeJoint;%0Aimport datastructures.DFJoint;%0Aimport dependency.ADependency;%0Aimport dependency.FunctionalDependency;%0A%0A/**%0A * @author Pavel Nichita%0A *%0A */%0Apublic final class Normalization %7B%0A    %0A    /**%0A     * Calculates all attributes that are being implied by %7B@code attrJoint%7D in%0A     * %7B@code dfJoint%7D.%0A     * %0A     * The algorithm used is Ullman.%0A     * %0A     * @param attrJoint Attribute joint to who'm calculate ullman.%0A     * @param dfJoint Where to calculate.%0A     * @return an attribute joint with all the attributes implied.%0A     */%0A    public static AttributeJoint simpleUllman(AttributeJoint attrJoint, DFJoint dfJoint)%7B%0A        AttributeJoint result = new AttributeJoint(attrJoint);%0A        boolean isChanged;%0A        %0A        do %7B%0A            isChanged = false;%0A            for (ADependency df:dfJoint) %7B%0A                if (df.getClass() == new FunctionalDependency().getClass())%0A                    if (df.getAntecedent().isContained(result) && !(df.getConsequent().isContained(result))) %7B%0A                        result.addAttributes(df.getConsequent());%0A                        isChanged = true;%0A                    %7D%0A            %7D%0A        %7D while (isChanged);%0A        %0A        return result;%0A    %7D%0A%0A%0A%7D%0A

Add Normalization class