private void WriteCollectionPesponse(IEntity entity) { cw.WriteLine("[DataContract]"); cw.BeginClass(AccessLevel.Public, true, NamingHelperStack.ToServiceResponseCollectionName(entity, null), Const.EmptyName); intfh.WriteProperty(NamingHelperStack.ToDTOCollectionTypeName(entity, null), NamingHelperStack.ToDTOCollectionPropertyName(entity)); intfh.WriteProperty("ResponseStatus", "ResponseStatus"); cw.WriteLine(); cw.BeginRegion("Constructors"); cw.WriteLine("public {0}()", NamingHelperStack.ToServiceResponseCollectionName(entity, null)); cw.BeginScope(); cw.WriteLine("this.ResponseStatus = new ResponseStatus();"); cw.WriteLine("this.{0} = new {1}();", NamingHelperStack.ToDTOCollectionPropertyName(entity), NamingHelperStack.ToDTOCollectionTypeName(entity, null)); cw.EndScope(); cw.EndRegion(); cw.EndClass(); }
private void WriteOnPost(IEntity entity) { cw.BeginFunction("public override object OnPost({0} {1})", NamingHelperStack.ToServiceRequestName(entity, interfacesEnvironment), VarName_Request); cw.WriteLine("{0} {1} = new {0}();", NamingHelperStack.ToServiceResponseName(entity, interfacesEnvironment), VarName_Response); WriteInitResponse(VarName_Response); string requestDto = String.Format("{0}.{1}", VarName_Request, NamingHelper.ToDTOPropertyName(entity)); cw.BeginTry(); bool declared = false; foreach (IEntityOperation operation in entity.Operations) { if (operation.Access != EntityOperationAccess.Public) { continue; } string condition = String.Format("{0}.{1} != null", VarName_Request, OperationHelper.GetParamClassPropertyName(operation)); if (!declared) { cw.If(condition); declared = true; } else { cw.ElseIf(condition); } if (entity.Persistence.Persisted) { cw.WriteLine("{0} domain = null;", domainEnvironment.ToTypeName(entity, true)); cw.WriteLine("if ({0} != null) domain = {1}.{2}({3});", requestDto, domainEnvironment.ToTypeName(entity, true), DomainLayerConfig.Methods.GetById(entity.PrimaryId, domainEnvironment).Name, entity.PrimaryId.Attributes.ToNamesString(", ", requestDto + ".", "")); cw.WriteLine("if (domain == null) domain = new {0}();", domainEnvironment.ToTypeName(entity, true)); } else { cw.WriteLine("{0} domain = new {0}();", domainEnvironment.ToTypeName(entity, true)); } cw.WriteLine("{0}({1}, domain);", MethodName_DTOToDomainObject, requestDto); if (entity.Persistence.Persisted) { cw.WriteLine("domain.Save();"); } if (operation.Params.HasReturns) { cw.Write("{0}.{1}.{2} = ", VarName_Request, OperationHelper.GetParamClassPropertyName(operation), operation.Params.Returns.Name, operation.Name); } cw.Write("domain.{0}(", operation.Name); for (int i = 0; i < operation.Params.Count; i++) { if (operation.Params[i].IsOut || operation.Params[i].IsRef) { throw new GlException( "Output or reference parameters are not allowed on service layer. " + "Use ordinal parameters or define operation as internal. {0}", operation.Params[i].ToString()); } cw.Write("{0}{1}.{2}.{3}", i == 0 ? "" : ", ", VarName_Request, OperationHelper.GetParamClassPropertyName(operation), operation.Params[i].Name); } cw.WriteLine(");"); cw.WriteLine("{0}(domain, {1});", MethodName_DomainObjectToDTO, requestDto); //oph.WriteParamClassesPropertiesInitialization(entity); cw.WriteLine("{0}.{1} = {2}.{1};", VarName_Response, NamingHelper.ToDTOPropertyName(entity), VarName_Request); cw.WriteLine("{0}.{1} = {2}.{1};", VarName_Response, OperationHelper.GetParamClassPropertyName(operation), VarName_Request); } if (entity.Persistence.Persisted) { string condition2 = String.Format("{0} != null", requestDto); if (!declared) { cw.If(condition2); } else { cw.ElseIf(condition2); } declared = true; cw.WriteLine("{0} uow = new {0}();", NamingHelper.ClassName_UnitOfWorkDTO); cw.WriteLine("uow.Save({0}.{1});", VarName_Request, NamingHelper.ToDTOPropertyName(entity)); cw.WriteLine("{0}.{1} = {2}.Commit(uow, null);", VarName_Response, NamingHelper.PropertyName_CommitResult, NamingHelperStack.ToServiceName(NamingHelper.ServiceName_Persistence)); cw.WriteLine("{0}.{1} = (uow.WorkItems[0].Item as {2});", VarName_Response, NamingHelper.ToDTOPropertyName(entity), NamingHelper.ToDTOTypeName(entity, interfacesEnvironment)); cw.If("{0}.{1}.HasError == true", VarName_Response, NamingHelper.PropertyName_CommitResult); WriteResponceError(VarName_Response, '"' + "Error saving object" + '"', null); cw.EndIf(); cw.ElseIf("{0}.{1} != null", VarName_Request, NamingHelperStack.ParamName_Query); cw.WriteLine("{0} {1} = new {0}();", NamingHelperStack.ToServiceResponseCollectionName(entity, interfacesEnvironment), VarName_ResponseList); WriteInitResponse(VarName_ResponseList); cw.BeginTry(); cw.WriteLine("IList<{0}> list = {0}.{1}({2}.{3}, {4}.ToDomainQueryParams({2}.{5}), {2}.{6} != null ? {2}.{6}.Value : 0, {2}.{7} != null ? {2}.{7}.Value : {8});", domainEnvironment.ToTypeName(entity, true), DomainLayerConfig.Methods.GetPageByHQL().Name, VarName_Request, NamingHelperStack.ParamName_Query, ClassName_DomainQueryFactory, NamingHelperStack.ParamName_QueryParams, NamingHelperStack.ParamName_PageNumber, NamingHelperStack.ParamName_PageSize, RestServiceHelper.MaxPageSize); cw.WriteLine("{0}.{1} = {2}(list);", VarName_ResponseList, NamingHelperStack.ToDTOCollectionPropertyName(entity), MethodName_DomainCollectionToDTO); cw.EndTry(); WriteCatch(VarName_ResponseList); cw.WriteLine("return {0};", VarName_ResponseList); } if (declared) { cw.EndIf(); } cw.EndTry(); WriteCatch(VarName_Response); cw.WriteLine("return {0};", VarName_Response); cw.EndFunction(); }
private void WriteOnGet(IEntity entity) { cw.BeginFunction("public override object OnGet({0} {1})", NamingHelperStack.ToServiceRequestName(entity, interfacesEnvironment), VarName_Request); cw.WriteLine("{0} {1} = new {0}();", NamingHelperStack.ToServiceResponseName(entity, interfacesEnvironment), VarName_Response); WriteInitResponse(VarName_Response); cw.WriteLine("{0} {1} = null;", domainEnvironment.ToTypeName(entity, true), VarName_DomainObject); cw.BeginTry(); cw.If(entity.Constraints.PrimaryId.Attributes.ToNamesString(" && ", VarName_Request + ".", " != null")); // Global // Request by primary id cw.WriteLine("{0} = {1}.{2}({3});", VarName_DomainObject, domainEnvironment.ToTypeName(entity, true), DomainLayerConfig.Methods.GetById(entity.Constraints.PrimaryId, domainEnvironment).Name, cw.ToSeparatedString(entity.Constraints.PrimaryId.Attributes.ToList(), ", ", delegate(object item, int count) { return(String.Format("{0}.{1}{2}", VarName_Request, (item as IAttribute).Name, environment.IsNullable(item as IAttribute) ? ".Value" : "")); }) ); // Request by uid foreach (IUniqueId uid in entity.Constraints.UniqueIds) { cw.ElseIf(uid.Attributes.ToNamesString(" && ", VarName_Request + ".", " != null")); cw.WriteLine("{0} = {1}.{2}({3});", VarName_DomainObject, domainEnvironment.ToTypeName(entity, true), DomainLayerConfig.Methods.GetByUniqueId(uid, domainEnvironment).Name, cw.ToSeparatedString(uid.Attributes.ToList(), ", ", delegate(object item, int count) { string arg = String.Empty; if ((item as IAttribute).Type is IEnumerationType) { arg = String.Format("({0})", domainEnvironment.ToTypeName((item as IAttribute), true)); } arg += String.Format("{0}.{1}{2}", VarName_Request, (item as IAttribute).Name, environment.IsNullable(item as IAttribute) ? ".Value" : ""); return(arg); }) ); } // Request by relation foreach (IRelation r in entity.Parents) { cw.ElseIf(r.ChildAttributes.ToNamesString(" && ", VarName_Request + ".", " != null")); cw.WriteLine("{0} {1} = new {0}();", NamingHelperStack.ToServiceResponseCollectionName(entity, interfacesEnvironment), VarName_ResponseList); WriteInitResponse(VarName_ResponseList); cw.BeginTry(); cw.WriteLine("IList<{0}> list = ", domainEnvironment.ToTypeName(entity, true)); cw.Indent++; cw.WriteLine("{0}.{1};", domainEnvironment.ToTypeName(entity, true), DomainLayerConfig.Methods.GetByRelationParent(r, domainEnvironment) .Call(r.ChildAttributes.ToNamesString(", ", VarName_Request + ".", ".Value")) ); cw.Indent--; cw.WriteLine("{0}.{1} = {2}(list);", VarName_ResponseList, NamingHelperStack.ToDTOCollectionPropertyName(entity), MethodName_DomainCollectionToDTO); cw.EndTry(); WriteCatch(VarName_ResponseList); cw.WriteLine("return {0};", VarName_ResponseList); } cw.Else(); // Collection request TOP MaxPageSize or by page cw.WriteLine("{0} {1} = new {0}();", NamingHelperStack.ToServiceResponseCollectionName(entity, interfacesEnvironment), VarName_ResponseList); WriteInitResponse(VarName_ResponseList); cw.BeginTry(); cw.WriteLine("IList<{0}> list = null;", domainEnvironment.ToTypeName(entity, true)); cw.If("{0}.{1} != null && {0}.{2} != null", VarName_Request, NamingHelperStack.ParamName_PageNumber, NamingHelperStack.ParamName_PageSize); cw.If("{0}.{1} != null && {0}.{2} != null", VarName_Request, NamingHelperStack.ParamName_SortOrderProperty, NamingHelperStack.ParamName_SortOrderAsc); cw.WriteLine("list = {0}.GetPage({1}.{2}.Value, {1}.{3}.Value, new {4}[] {{ new {4}({1}.{5}, {1}.{6}.Value) }});", domainEnvironment.ToTypeName(entity, true), VarName_Request, NamingHelperStack.ParamName_PageNumber, NamingHelperStack.ParamName_PageSize, DomainLayerConfig.GetClassName_SortOrder(true), NamingHelperStack.ParamName_SortOrderProperty, NamingHelperStack.ParamName_SortOrderAsc); cw.Else(); cw.WriteLine("list = {0}.GetPage({1}.{2}.Value, {1}.{3}.Value, null);", domainEnvironment.ToTypeName(entity, true), VarName_Request, NamingHelperStack.ParamName_PageNumber, NamingHelperStack.ParamName_PageSize); cw.EndIf(); cw.Else(); cw.WriteLine("list = {0}.GetPage(0, {1}, null);", domainEnvironment.ToTypeName(entity, true), RestServiceHelper.MaxPageSize); cw.EndIf(); cw.WriteLine("{0}.{1} = {2}(list);", VarName_ResponseList, NamingHelperStack.ToDTOCollectionPropertyName(entity), MethodName_DomainCollectionToDTO); cw.EndTry(); WriteCatch(VarName_ResponseList); cw.WriteLine("return {0};", VarName_ResponseList); cw.EndIf(); // Global cw.WriteLine(); cw.If("{0} != null", VarName_DomainObject); cw.WriteLine("{0} {1} = new {0}();", NamingHelperStack.ToDTOTypeName(entity, interfacesEnvironment), VarName_DTO); cw.WriteLine("{0}.{1}({2}, {3});", NamingHelperStack.ToServiceName(entity, null), MethodName_DomainObjectToDTO, VarName_DomainObject, VarName_DTO); cw.WriteLine("{0}.{1} = {2};", VarName_Response, NamingHelperStack.ToDTOPropertyName(entity), VarName_DTO); cw.EndIf(); cw.EndTry(); WriteCatch(VarName_Response); cw.WriteLine("return {0};", VarName_Response); cw.EndFunction(); }
private void WriteEntityDTOAdapterCollection(IEntity entity) { string baseClass = String.Format("{0}<{1}", entity.Persistence.Persisted ? ClassName_PersistentDTOAdapterCollection : ClassName_DTOAdapterCollection, NamingHelperStack.ToDTOAdapterTypeName(entity, environment)); if (entity.Persistence.Persisted) { baseClass += ", " + NamingHelper.ToDTOTypeName(entity, dtoEnvironment) + ">"; } else { baseClass += ">"; } cw.BeginClass(AccessLevel.Public, true, NamingHelperStack.ToDTOAdapterCollectionTypeName(entity, null), baseClass); cw.BeginRegion("Constructors"); cw.BeginFunction("public {0} ()", NamingHelperStack.ToDTOAdapterCollectionTypeName(entity, null)); cw.EndFunction(); cw.BeginFunction("public {0} ({1} {2})", NamingHelperStack.ToDTOAdapterCollectionTypeName(entity, null), NamingHelperStack.ToDTOCollectionTypeName(entity, dtoEnvironment), VarName_DTOCollection); cw.WriteLine("foreach ({0} {1} in {2})", NamingHelper.ToDTOTypeName(entity, dtoEnvironment), VarName_DTO, VarName_DTOCollection); cw.BeginScope(); cw.WriteLine("this.InternalAdd(new {0}({1}));", NamingHelperStack.ToDTOAdapterTypeName(entity, environment), VarName_DTO); cw.EndScope(); cw.EndFunction(); cw.EndRegion(); cw.WriteLine(); // Get page // cw.BeginFunction("public static {0} {1}(int pageNum = 0, int pageSize = 20)", // NamingHelperStack.ToDTOAdapterCollectionTypeName(entity, null), // MethodName_GetPage); // cw.WriteLine("return null;"); // cw.EndFunction(); // cw.WriteLine(); // Get by query cw.BeginFunction("public static {0} {1}(string query, {2}.{3} queryParams, int pageNum = 0, int pageSize = {4})", NamingHelperStack.ToDTOAdapterCollectionTypeName(entity, null), MethodName_GetByQuery, interfacesEnvironment.BaseNamespace, NamingHelper.ClassName_ServicesQueryParams, RestServiceHelper.MaxPageSize); cw.WriteLine("{0} request = new {0}();", NamingHelperStack.ToServiceRequestName(entity, interfacesEnvironment)); cw.WriteLine("request.{0} = query;", NamingHelperStack.ParamName_Query); cw.WriteLine("request.{0} = queryParams;", NamingHelperStack.ParamName_QueryParams); cw.WriteLine("request.{0} = pageNum;", NamingHelperStack.ParamName_PageNumber); cw.WriteLine("request.{0} = pageSize;", NamingHelperStack.ParamName_PageSize); cw.WriteLine("{0} {1} =", NamingHelperStack.ToServiceResponseCollectionName(entity, interfacesEnvironment), VarName_Response); cw.Indent++; cw.WriteLine("WebClientFactory.GetJsonClient()"); cw.WriteLine(".Post<{0}>(\"/{1}\", request);", NamingHelperStack.ToServiceResponseCollectionName(entity, interfacesEnvironment), NamingHelperStack.ToServiceName(entity, null)); cw.Indent--; cw.WriteLine("WebClientFactory.CheckResponseStatus({0}.ResponseStatus);", VarName_Response); cw.WriteLine("return new {0}({1}.{2});", NamingHelperStack.ToDTOAdapterCollectionTypeName(entity, null), VarName_Response, NamingHelperStack.ToDTOCollectionPropertyName(entity)); cw.EndFunction(); cw.WriteLine(); // Get by relations foreach (IRelation r in entity.Parents) { cw.BeginFunction("public static {0} {1}", NamingHelperStack.ToDTOAdapterCollectionTypeName(entity, null), ServicesLayerConfig.Methods.GetByRelationParent(r, interfacesEnvironment).Signature); cw.WriteLine("{0} request = new {0}();", NamingHelperStack.ToServiceRequestName(entity, interfacesEnvironment)); cw.WriteLine("{0} {1} = WebClientFactory.GetJsonClient()", NamingHelperStack.ToServiceResponseCollectionName(entity, interfacesEnvironment), VarName_Response); cw.Indent++; cw.WriteLine(".Get<{0}>(String.Format(\"/{1}/{2}\", {3}));", NamingHelperStack.ToServiceResponseCollectionName(entity, interfacesEnvironment), NamingHelperStack.ToServiceName(entity, null), cw.ToSeparatedString(r.ChildAttributes.ToList(), "/", delegate(object item, int count) { return(String.Format("{0}/{{{1}}}", (item as IAttribute).Name, count)); }), environment.ToArguments(r.ChildAttributes) ); cw.Indent--; cw.WriteLine("WebClientFactory.CheckResponseStatus({0}.ResponseStatus);", VarName_Response); cw.WriteLine("return new {0}({1}.{2});", NamingHelperStack.ToDTOAdapterCollectionTypeName(entity, null), VarName_Response, NamingHelperStack.ToDTOCollectionPropertyName(entity)); cw.EndFunction(); cw.WriteLine(); } cw.EndClass(); }