public String ValidateContraint(softWrench.sW4.Security.Entities.DataConstraint constraint)
 {
     try {
         var entityMetadata = MetadataProvider.Entity(constraint.EntityName);
         if (entityMetadata == null)
         {
             return(String.Format("EntityName {0} not found, unable to apply constraint", constraint.EntityName));
         }
         var query = new EntityQueryBuilder().CountRowsFromConstraint(entityMetadata, constraint);
         _dao.FindByNativeQuery(query.Sql, query.Parameters);
         return(null);
     }
     catch (Exception e) {
         return(String.Format("error saving constraint {0}.Cause:{1}", constraint.WhereClause, e.Message));
     }
 }
示例#2
0
        public BindedEntityQuery CountRowsFromConstraint(EntityMetadata entityMetadata, softWrench.sW4.Security.Entities.DataConstraint constraint)
        {
            var buffer = new StringBuilder(InitialStringBuilderCapacity);

            buffer.Append(QuerySelectBuilder.BuildSelectAttributesClause(entityMetadata, QueryCacheKey.QueryMode.Count, null));
            buffer.Append(QueryFromBuilder.Build(entityMetadata));
            var dataConstraintsWhereBuilder = SimpleInjectorGenericFactory.Instance.GetObject <DataConstraintsWhereBuilder>(typeof(DataConstraintsWhereBuilder));
            var list = new List <IWhereBuilder> {
                new EntityWhereClauseBuilder(),
                dataConstraintsWhereBuilder,
                new MultiTenantCustomerWhereBuilder()
            };
            var whereBuilder = new CompositeWhereBuilder(list);

            buffer.Append(whereBuilder.BuildWhereClause(entityMetadata.Name, QueryCacheKey.QueryMode.Count));
            return(new BindedEntityQuery(buffer.ToString(), whereBuilder.GetParameters()));
        }