package br.uff.ic.gems.peixeespadacliente.symptom;
import br.uff.ic.gems.peixeespadacliente.exception.RefactoringException;
import br.uff.ic.gems.peixeespadacliente.model.agent.LocalManagerAgent;
import br.uff.ic.gems.peixeespadacliente.resolution.EncapsulateResolution;
import br.uff.ic.gems.peixeespadacliente.tool.EncapsulateFields;
import br.uff.ic.gems.peixeespadacliente.tool.RefactoringTool;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.sf.refactorit.classmodel.BinField;
/**
*
* @author João Felipe
*/
public class EncapsulateSymptom extends Symptom{
private String parentQualifiedName;
private String memberName;
public EncapsulateSymptom(BinField field, EncapsulateFields refactoringTool) {
super(refactoringTool);
parentQualifiedName = field.getParentType().getQualifiedName();
if (refactoringTool.getProject().getTypeRefForSourceName(parentQualifiedName) == null) {
parentQualifiedName = field.getParentType().getParentType().getQualifiedName() + "." + field.getParentType().getName();
}
memberName = field.getName();
}
@Override
public RefactoringTool getRefactoringTool() {
return this.refactoringTool;
}
@Override
public List<EncapsulateResolution> generateResolutions(LocalManagerAgent agentPeixeEspada, boolean verify) throws RefactoringException {
List<EncapsulateResolution> result = new ArrayList(Arrays.asList(new EncapsulateResolution(this)));
if (verify && !result.get(0).applyWorking(null)){
return new ArrayList<EncapsulateResolution>();
}
return result;
}
@Override
public String toString() {
return "Encapsulate " + getMemberName();
}
public String getParentQualifiedName() {
return parentQualifiedName;
}
public String getMemberName() {
return memberName;
}
public String getMemberQualifiedName() {
return parentQualifiedName + "." + memberName;
}
public EncapsulateFields getEncapsulateRefactoringTool() {
return (EncapsulateFields) this.refactoringTool;
}
@Override
public String getDescription() {
return " Encapsulating Field: " + this.getMemberQualifiedName() + "\n";
}
}