Skip to content

Commit aefff96

Browse files
committed
Refactoring - WIP
Returned to strategy pattern for the two methods of encapsulation supported by the refactoring. More files...but clearer code.
1 parent 30afa7e commit aefff96

14 files changed

+404
-354
lines changed

Rubberduck.Refactorings/EncapsulateField/EncapsulateFieldElementFactory.cs

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,42 +13,42 @@ namespace Rubberduck.Refactorings.EncapsulateField
1313
public class EncapsulateFieldElementFactory
1414
{
1515
private readonly IDeclarationFinderProvider _declarationFinderProvider;
16-
private readonly IEncapsulateFieldValidator _validator;
17-
private readonly IValidateEncapsulateFieldNames _namesValidator;
16+
//private readonly IEncapsulateFieldValidator _validator;
17+
//private readonly IValidateEncapsulateFieldNames _namesValidator;
1818
private QualifiedModuleName _targetQMN;
1919

20-
public EncapsulateFieldElementFactory(IDeclarationFinderProvider declarationFinderProvider, QualifiedModuleName targetQMN, IEncapsulateFieldValidator validator )
20+
public EncapsulateFieldElementFactory(IDeclarationFinderProvider declarationFinderProvider, QualifiedModuleName targetQMN)//, IEncapsulateFieldValidator validator )
2121
{
2222
_declarationFinderProvider = declarationFinderProvider;
23-
_validator = validator;
24-
_namesValidator = validator as IValidateEncapsulateFieldNames;
23+
//_validator = validator;
24+
//_namesValidator = validator as IValidateEncapsulateFieldNames;
2525
_targetQMN = targetQMN;
2626
}
2727

28-
public IObjectStateUDT CreateStateUDTField()
28+
public IObjectStateUDT CreateStateUDTField(IEncapsulateFieldValidator validator)
2929
{
3030
var stateUDT = new ObjectStateUDT(_targetQMN) as IObjectStateUDT;
3131

32-
stateUDT = SetNonConflictIdentifier(stateUDT, c => { return _validator.IsConflictingStateUDTFieldIdentifier(stateUDT); }, (s) => { stateUDT.FieldIdentifier = s; }, () => stateUDT.FieldIdentifier, _namesValidator);
32+
stateUDT = SetNonConflictIdentifier(stateUDT, c => { return validator.IsConflictingStateUDTFieldIdentifier(stateUDT); }, (s) => { stateUDT.FieldIdentifier = s; }, () => stateUDT.FieldIdentifier, validator as IValidateEncapsulateFieldNames); // _namesValidator);
3333

34-
stateUDT = SetNonConflictIdentifier(stateUDT, c => { return _validator.IsConflictingStateUDTTypeIdentifier(stateUDT); }, (s) => { stateUDT.TypeIdentifier = s; }, () => stateUDT.TypeIdentifier, _namesValidator);
34+
stateUDT = SetNonConflictIdentifier(stateUDT, c => { return validator.IsConflictingStateUDTTypeIdentifier(stateUDT); }, (s) => { stateUDT.TypeIdentifier = s; }, () => stateUDT.TypeIdentifier, validator as IValidateEncapsulateFieldNames); // _namesValidator);
3535

3636
return stateUDT;
3737
}
3838

39-
private IEncapsulateFieldCandidate CreateCandidate(Declaration target)
39+
private IEncapsulateFieldCandidate CreateCandidate(Declaration target, IValidateEncapsulateFieldNames validator)
4040
{
4141
if (target.IsUserDefinedTypeField())
4242
{
43-
var udtField = new UserDefinedTypeCandidate(target, _namesValidator) as IUserDefinedTypeCandidate;
43+
var udtField = new UserDefinedTypeCandidate(target, validator) as IUserDefinedTypeCandidate;
4444

4545
(Declaration udtDeclaration, IEnumerable<Declaration> udtMembers) = GetUDTAndMembersForField(udtField);
4646

4747
udtField.TypeDeclarationIsPrivate = udtDeclaration.HasPrivateAccessibility();
4848

4949
foreach (var udtMemberDeclaration in udtMembers)
5050
{
51-
var candidateUDTMember = new UserDefinedTypeMemberCandidate(CreateCandidate(udtMemberDeclaration), udtField, _namesValidator) as IUserDefinedTypeMemberCandidate;
51+
var candidateUDTMember = new UserDefinedTypeMemberCandidate(CreateCandidate(udtMemberDeclaration, validator), udtField, validator) as IUserDefinedTypeMemberCandidate;
5252

5353
udtField.AddMember(candidateUDTMember);
5454
}
@@ -62,12 +62,12 @@ private IEncapsulateFieldCandidate CreateCandidate(Declaration target)
6262
}
6363
else if (target.IsArray)
6464
{
65-
return new ArrayCandidate(target, _namesValidator);
65+
return new ArrayCandidate(target, validator);
6666
}
67-
return new EncapsulateFieldCandidate(target, _namesValidator);
67+
return new EncapsulateFieldCandidate(target, validator);
6868
}
6969

70-
public IEnumerable<IEncapsulateFieldCandidate> CreateEncapsulationCandidates()
70+
public IEnumerable<IEncapsulateFieldCandidate> CreateEncapsulationCandidates(IValidateEncapsulateFieldNames validator)
7171
{
7272
var fieldDeclarations = _declarationFinderProvider.DeclarationFinder
7373
.Members(_targetQMN)
@@ -78,10 +78,12 @@ public IEnumerable<IEncapsulateFieldCandidate> CreateEncapsulationCandidates()
7878
{
7979
Debug.Assert(!fieldDeclaration.DeclarationType.Equals(DeclarationType.UserDefinedTypeMember));
8080

81-
var fieldEncapsulationCandidate = CreateCandidate(fieldDeclaration);
81+
var fieldEncapsulationCandidate = CreateCandidate(fieldDeclaration, validator);
8282

83-
_validator.RegisterFieldCandidate(fieldEncapsulationCandidate);
83+
//_namesValidator.AssignNoConflictIdentifier(fieldEncapsulationCandidate, DeclarationType.Property);
84+
//_namesValidator.AssignNoConflictIdentifier(fieldEncapsulationCandidate, DeclarationType.Variable);
8485

86+
//_validator.RegisterFieldCandidate(fieldEncapsulationCandidate);
8587

8688
candidates.Add(fieldEncapsulationCandidate);
8789
}

Rubberduck.Refactorings/EncapsulateField/EncapsulateFieldModel.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,24 @@ public class EncapsulateFieldModel : IRefactoringModel
1111
{
1212
private readonly Func<EncapsulateFieldModel, string> _previewDelegate;
1313
private QualifiedModuleName _targetQMN;
14-
private IValidateEncapsulateFieldNames _validator;
14+
//private IValidateEncapsulateFieldNames _validator;
1515
private IObjectStateUDT _newObjectStateUDT;
1616

1717
private IDictionary<Declaration, (Declaration, IEnumerable<Declaration>)> _udtFieldToUdtDeclarationMap = new Dictionary<Declaration, (Declaration, IEnumerable<Declaration>)>();
1818

19-
public EncapsulateFieldModel(Declaration target, IEnumerable<IEncapsulateFieldCandidate> candidates, IObjectStateUDT stateUDTField, Func<EncapsulateFieldModel, string> previewDelegate, IValidateEncapsulateFieldNames validator)
19+
public EncapsulateFieldModel(Declaration target, IEnumerable<IEncapsulateFieldCandidate> candidates, IObjectStateUDT stateUDTField, Func<EncapsulateFieldModel, string> previewDelegate, IEncapsulateFieldValidator validator)
2020
{
2121
_previewDelegate = previewDelegate;
2222
_targetQMN = target.QualifiedModuleName;
23-
_validator = validator;
2423
_newObjectStateUDT = stateUDTField;
2524

25+
Validator = validator;
2626
EncapsulationCandidates = candidates.ToList();
2727
ConvertFieldsToUDTMembers = false;
2828
}
2929

30+
public IEncapsulateFieldValidator Validator {set; get;}
31+
3032
public List<IEncapsulateFieldCandidate> EncapsulationCandidates { set; get; } = new List<IEncapsulateFieldCandidate>();
3133

3234
public IEnumerable<IEncapsulateFieldCandidate> SelectedFieldCandidates

0 commit comments

Comments
 (0)