package com.freetmp.mbg.merge.declaration;
import com.freetmp.mbg.merge.AbstractMerger;
import com.github.javaparser.ast.body.ConstructorDeclaration;
import org.apache.commons.lang3.StringUtils;
/**
* Created by pin on 2015/4/19.
*/
public class ConstructorDeclarationMerger extends AbstractMerger<ConstructorDeclaration> {
@Override
public ConstructorDeclaration doMerge(ConstructorDeclaration first, ConstructorDeclaration second) {
ConstructorDeclaration cd = new ConstructorDeclaration();
cd.setName(first.getName());
cd.setJavaDoc(mergeSingle(first.getJavaDoc(), second.getJavaDoc()));
cd.setModifiers(mergeModifiers(first.getModifiers(), second.getModifiers()));
cd.setAnnotations(mergeCollections(first.getAnnotations(), second.getAnnotations()));
cd.setParameters(mergeCollectionsInOrder(first.getParameters(), second.getParameters()));
cd.setTypeParameters(mergeCollectionsInOrder(first.getTypeParameters(), second.getTypeParameters()));
cd.setThrows(mergeListNoDuplicate(first.getThrows(), second.getThrows(), false));
cd.setBlock(mergeSingle(first.getBlock(), second.getBlock()));
return cd;
}
@Override
public boolean doIsEquals(ConstructorDeclaration first, ConstructorDeclaration second) {
if (!StringUtils.equals(first.getName(), second.getName())) return false;
if (!isParametersEquals(first.getParameters(), second.getParameters())) return false;
if (!isTypeParameterEquals(first.getTypeParameters(), second.getTypeParameters())) return false;
return true;
}
}