/// <summary> /// Creates the cross reference source field. /// </summary> /// <param name="field">The field.</param> /// <param name="owner">The owner.</param> /// <returns>SourceField.</returns> private static SourceField CreateCrossReferenceSourceField(FieldEdit field, ExpressionObjectBase owner) { var dataType = field.IsSingleCrossReference() ? NodeDataType.CrossReference : NodeDataType.List; var requiredStep = (CrossRefRequiredStepEdit)field.StepList.FirstOrDefault(s => s is CrossRefRequiredStepEdit); IExpressionFieldsRetriever subfieldsRetriever = null; if (requiredStep != null && requiredStep.CrossRefProcessId.HasValue) { subfieldsRetriever = new CrossReferenceSubfieldsRetriever(requiredStep.CrossRefProcessId.Value, CanBeSourceField, CreateSourceField); } var sf = new SourceField(owner) { DataType = dataType, Name = field.Name, ConnectorOut = { DataType = dataType, Name = field.Name }, SystemName = field.SystemName, SetName = SourceFieldSetNames.DataTriggerSourceItem, SubfieldsRetriever = subfieldsRetriever }; return sf; }
private static IExpressionFieldsRetriever GetSourceFieldsRetriever(FieldEdit field) { switch (field.ColumnType) { case ColumnTypes.Reference: case ColumnTypes.MultiReference: { var requiredStep = field.GetStep<CrossRefRequiredStepEdit>(); IExpressionFieldsRetriever subfieldsRetriever = null; if (requiredStep != null && requiredStep.CrossRefProcessId.HasValue) { subfieldsRetriever = new CrossReferenceSubfieldsRetriever(requiredStep.CrossRefProcessId.Value, CanBeSourceField, CreateSourceField); } return subfieldsRetriever; } case ColumnTypes.Sample: return new SampleSubfieldsRetriever(SourceFieldSetNames.DataTriggerSourceItem); case ColumnTypes.File: return new FileSubfieldsRetriever(SourceFieldSetNames.DataTriggerSourceItem); default: return null; } }