package br.uff.ic.gems.peixeespadacliente.symptom; import br.uff.ic.gems.peixeespadacliente.conflicts.ConflictResolver; import br.uff.ic.gems.peixeespadacliente.exception.RefactoringException; import br.uff.ic.gems.peixeespadacliente.resolution.PullPushResolution; import br.uff.ic.gems.peixeespadacliente.tool.PullPushRefactoringTool; import java.util.List; import net.sf.refactorit.classmodel.BinCIType; import net.sf.refactorit.classmodel.BinMember; import br.uff.ic.gems.peixeespadacliente.model.agent.LocalManagerAgent; import br.uff.ic.gems.peixeespadacliente.tool.RefactoringTool; /** * * @author João Felipe */ public abstract class PullPushSymptom extends Symptom { private String targetQualifiedName; private String parentQualifiedName; private String memberName; private String targetName; public PullPushSymptom(BinMember member, BinCIType targetClass, PullPushRefactoringTool refactoringTool) { super(refactoringTool); targetQualifiedName = targetClass.getQualifiedName(); if (refactoringTool.getProject().getTypeRefForSourceName(targetQualifiedName) == null) { targetQualifiedName = targetClass.getParentType().getQualifiedName() + "." + targetClass.getName(); } parentQualifiedName = member.getParentType().getQualifiedName(); if (refactoringTool.getProject().getTypeRefForSourceName(parentQualifiedName) == null) { parentQualifiedName = member.getParentType().getParentType().getQualifiedName() + "." + member.getParentType().getName(); } targetName = targetClass.getName(); memberName = member.getName(); } @Override public RefactoringTool getRefactoringTool() { return this.refactoringTool; } public PullPushRefactoringTool getPullPushRefactoringTool() { return (PullPushRefactoringTool) this.refactoringTool; } @Override public List<PullPushResolution> generateResolutions(LocalManagerAgent agentPeixeEspada, boolean verify) throws RefactoringException { return ConflictResolver.generateResolutions(agentPeixeEspada, this, verify); } @Override public String toString() { return getMemberName() + " to " + getTargetName(); } public String getTargetQualifiedName() { return targetQualifiedName; } public String getMemberQualifiedName() { return parentQualifiedName + "." + memberName; } public String getParentQualifiedName() { return parentQualifiedName; } public String getMemberName() { return memberName; } public String getTargetName() { return targetName; } @Override public String getDescription() { return " Member: " + this.getMemberQualifiedName() + "\n" + " To: " + this.targetQualifiedName + "\n"; } }