/// <summary>Creates a new entity collection</summary>
        /// <param name="typeToUse">The entity type to create the collection for.</param>
        /// <returns>A new entity collection object.</returns>
        public static IEntityCollection Create(policyDB.EntityType typeToUse)
        {
            switch (typeToUse)
            {
            case policyDB.EntityType.AttributeEntity:
                return(new AttributeCollection());

            case policyDB.EntityType.AttributeTypeEntity:
                return(new AttributeTypeCollection());

            case policyDB.EntityType.AttributeValueEntity:
                return(new AttributeValueCollection());

            case policyDB.EntityType.CombineModeEntity:
                return(new CombineModeCollection());

            case policyDB.EntityType.ContextEntity:
                return(new ContextCollection());

            case policyDB.EntityType.DecisionNodeEntity:
                return(new DecisionNodeCollection());

            case policyDB.EntityType.EffectEntity:
                return(new EffectCollection());

            case policyDB.EntityType.LibraryEntity:
                return(new LibraryCollection());

            case policyDB.EntityType.PolicyEntity:
                return(new PolicyCollection());

            case policyDB.EntityType.PolicyDocumentEntity:
                return(new PolicyDocumentCollection());

            case policyDB.EntityType.PolicyLinkEntity:
                return(new PolicyLinkCollection());

            case policyDB.EntityType.QueryEntity:
                return(new QueryCollection());

            case policyDB.EntityType.QueryValueEntity:
                return(new QueryValueCollection());

            case policyDB.EntityType.RuleEntity:
                return(new RuleCollection());

            case policyDB.EntityType.TargetEntity:
                return(new TargetCollection());

            case policyDB.EntityType.TargetConditionEntity:
                return(new TargetConditionCollection());

            case policyDB.EntityType.UriComponentEntity:
                return(new UriComponentCollection());

            default:
                return(null);
            }
        }
 /// <summary>Gets the factory of the entity with the policyDB.EntityType specified</summary>
 /// <param name="typeOfEntity">The type of entity.</param>
 /// <returns>factory to use or null if not found</returns>
 public static IEntityFactory GetFactory(policyDB.EntityType typeOfEntity)
 {
     return(GetFactory(GeneralEntityFactory.Create(typeOfEntity).GetType()));
 }
        /// <summary>Creates a new, empty Entity object of the type specified</summary>
        /// <param name="entityTypeToCreate">The entity type to create.</param>
        /// <returns>A new, empty Entity object.</returns>
        public static IEntity Create(policyDB.EntityType entityTypeToCreate)
        {
            IEntityFactory factoryToUse = null;

            switch (entityTypeToCreate)
            {
            case policyDB.EntityType.AttributeEntity:
                factoryToUse = new AttributeEntityFactory();
                break;

            case policyDB.EntityType.AttributeTypeEntity:
                factoryToUse = new AttributeTypeEntityFactory();
                break;

            case policyDB.EntityType.AttributeValueEntity:
                factoryToUse = new AttributeValueEntityFactory();
                break;

            case policyDB.EntityType.CombineModeEntity:
                factoryToUse = new CombineModeEntityFactory();
                break;

            case policyDB.EntityType.ContextEntity:
                factoryToUse = new ContextEntityFactory();
                break;

            case policyDB.EntityType.DecisionNodeEntity:
                factoryToUse = new DecisionNodeEntityFactory();
                break;

            case policyDB.EntityType.EffectEntity:
                factoryToUse = new EffectEntityFactory();
                break;

            case policyDB.EntityType.LibraryEntity:
                factoryToUse = new LibraryEntityFactory();
                break;

            case policyDB.EntityType.PolicyEntity:
                factoryToUse = new PolicyEntityFactory();
                break;

            case policyDB.EntityType.PolicyDocumentEntity:
                factoryToUse = new PolicyDocumentEntityFactory();
                break;

            case policyDB.EntityType.PolicyLinkEntity:
                factoryToUse = new PolicyLinkEntityFactory();
                break;

            case policyDB.EntityType.QueryEntity:
                factoryToUse = new QueryEntityFactory();
                break;

            case policyDB.EntityType.QueryValueEntity:
                factoryToUse = new QueryValueEntityFactory();
                break;

            case policyDB.EntityType.RuleEntity:
                factoryToUse = new RuleEntityFactory();
                break;

            case policyDB.EntityType.TargetEntity:
                factoryToUse = new TargetEntityFactory();
                break;

            case policyDB.EntityType.TargetConditionEntity:
                factoryToUse = new TargetConditionEntityFactory();
                break;

            case policyDB.EntityType.UriComponentEntity:
                factoryToUse = new UriComponentEntityFactory();
                break;
            }
            IEntity toReturn = null;

            if (factoryToUse != null)
            {
                toReturn = factoryToUse.Create();
            }
            return(toReturn);
        }
 /// <summary>CTor</summary>
 /// <param name="entityName">Name of the entity.</param>
 /// <param name="typeOfEntity">The type of entity.</param>
 public EntityFactoryBase(string entityName, policyDB.EntityType typeOfEntity)
 {
     _entityName   = entityName;
     _typeOfEntity = typeOfEntity;
 }
 /// <summary>CTor</summary>
 /// <param name="entityName">Name of the entity.</param>
 /// <param name="typeOfEntity">The type of entity.</param>
 public EntityFactoryBase(string entityName, policyDB.EntityType typeOfEntity)
 {
     _entityName = entityName;
     _typeOfEntity = typeOfEntity;
 }