ALF-10771: schema validation and differences rules

Laying some groundwork for the main code.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31921 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Matt Ward
2011-11-14 10:16:59 +00:00
parent 60688d34b9
commit 4c863f5e0a
16 changed files with 165 additions and 84 deletions

View File

@@ -18,6 +18,9 @@
*/
package org.alfresco.util.schemacomp;
import java.util.ArrayList;
import java.util.List;
import org.alfresco.util.schemacomp.model.DbObject;
import org.alfresco.util.schemacomp.model.Index;
import org.alfresco.util.schemacomp.validator.DbValidator;
@@ -33,7 +36,8 @@ public class ValidatingVisitor implements DbObjectVisitor
{
private DiffContext ctx;
protected NameValidator indexNameValidator = new NameValidator();
protected NullValidator nullValidator = new NullValidator();
protected NullValidator defaultValidator = new NullValidator();
protected ComparisonUtils comparisonUtils = new DefaultComparisonUtils();
public ValidatingVisitor(DiffContext ctx)
{
@@ -49,14 +53,21 @@ public class ValidatingVisitor implements DbObjectVisitor
}
else
{
return nullValidator;
return defaultValidator;
}
}
@Override
public void visit(DbObject dbObject)
public void visit(DbObject referenceObj)
{
DbValidator validator = getValidatorFor(dbObject.getClass());
validator.validate(dbObject, ctx);
DbValidator validator = getValidatorFor(referenceObj.getClass());
List<DbObject> matches = comparisonUtils.findEquivalentObjects(ctx.getTargetSchema(), referenceObj);
// TODO: if matches.size() > 1 then warn of possible redundant database objects
for (DbObject target : matches)
{
validator.validate(referenceObj, target, ctx);
}
}
}