/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.schema.tools.processing;
import org.teiid.designer.schema.tools.model.schema.SchemaModel;
/**
*Determines the relationships between SchemaObjects based upon an instance
*of the RelationshipRules Interface and performs the folding of the children
*into parents as needed.
*
* @since 8.0
*/
public interface RelationshipProcessor {
/**
* Performs the folding operation on the provided SchemaModel.
* @param model - the SchemModel to perform the folding operation on.
*/
public abstract void calculateRelationshipTypes(SchemaModel model);
/**
* Adds a relationship between SchemaObjects to the set of relationships
* maintained by the processor.
* @param key - the name of the child table in the relationship.
* @param value - the value of the Relationship
*/
public abstract void addRelationship(String key, Integer value);
/**
* Returns the value of the Child Limit value for this RelationshipProcessor
* @return Returns the value of the Child Limit value
*/
public int C_threshold();
/**
* Returns the value of the Parent Limit value for this RelationshipProcessor
* @return Returns the value of the Parent Limit value
*/
public int P_threshold();
/**
* Returns the value of the Field Limit value for this RelationshipProcessor
* @return Returns the value of the Field Limit value
*/
public int F_threshold();
/**
* Accessor to provide the RelationshipRules that the processor will use
* to perform the forlding operations.
* @param rules - the RelationshipRules
*/
public abstract void setRelationshipRules(RelationshipRules rules);
}