From 00d79bb4a7b17c0a7cc4623c3ea86cb5be40e2a3 Mon Sep 17 00:00:00 2001 From: Uwe Beyer Date: Wed, 24 Mar 2021 09:13:10 +0100 Subject: [PATCH 1/2] Added Lookup ans ValueList support for properties by ub --- .../XmlImporter/LookupOrValuelistStrategy.cs | 28 ++ .../XmlImporter/PropertySelector.cs | 63 +++++ .../VaultApplication.ImportXmlFile.cs | 261 +++++++++++++++++- .../XmlImporter/XmlImporter.csproj | 1 + .../MSBuildTasks.1.5.0.196/.signature.p7s | Bin 0 -> 9466 bytes 5 files changed, 345 insertions(+), 8 deletions(-) create mode 100644 Samples/VAF/XmlImporter/XmlImporter/LookupOrValuelistStrategy.cs create mode 100644 Samples/VAF/XmlImporter/packages/MSBuildTasks.1.5.0.196/.signature.p7s diff --git a/Samples/VAF/XmlImporter/XmlImporter/LookupOrValuelistStrategy.cs b/Samples/VAF/XmlImporter/XmlImporter/LookupOrValuelistStrategy.cs new file mode 100644 index 0000000..9bed74c --- /dev/null +++ b/Samples/VAF/XmlImporter/XmlImporter/LookupOrValuelistStrategy.cs @@ -0,0 +1,28 @@ +namespace XmlImporter +{ + /// + /// The type to use a lookup filed. + /// + public enum LookupOrValuelistStrategy + { + /// + /// Don't search for something + /// + SearchNoWhere = 0, + + /// + /// Search for an object item. + /// + SearchLookup = 1, + + /// + /// Search for an valuelist item. + /// + SearchValueList = 2, + + /// + /// Search for an value inside an object. + /// + SearchObjectValue = 3 + } +} diff --git a/Samples/VAF/XmlImporter/XmlImporter/PropertySelector.cs b/Samples/VAF/XmlImporter/XmlImporter/PropertySelector.cs index 8eccd19..b74a07e 100644 --- a/Samples/VAF/XmlImporter/XmlImporter/PropertySelector.cs +++ b/Samples/VAF/XmlImporter/XmlImporter/PropertySelector.cs @@ -19,5 +19,68 @@ public class PropertySelector [DataMember(Order = 1)] [MFPropertyDef] public MFIdentifier PropertyDef { get; set; } + + /// + /// Strategy how to search with Lookup, ValueList or Object value + /// + [DataMember(Order = 2)] + [JsonConfEditor(Label = "Search type", + HelpText = "SearchNoWhere=don\'t search\nSearchLookup=use a lookup Name or ID\nSearchValueList=use a valuelist\nSearchObjectValue=use a object value", + DefaultValue = LookupOrValuelistStrategy.SearchNoWhere)] + public LookupOrValuelistStrategy LookupOrValuelistStrategy { get; set; } + = LookupOrValuelistStrategy.SearchNoWhere; + + /// + /// Object to search for. + /// + [DataMember(Order = 3)] + [MFObjType(AllowEmpty = true)] + [JsonConfEditor(Label = "Object to search", + IsRequired = false, + Hidden = true, + HelpText = "Select Object to search", + ShowWhen = ".parent._children{.key == 'LookupOrValuelistStrategy' && (.value == 'SearchLookup' || .value == 'SearchObjectValue') }", + DefaultValue = null)] + public MFIdentifier LookupObjectDef { get; set; } + + /// + /// ValueList to search for. + /// + [DataMember(Order = 3)] + [MFValueList(AllowEmpty = true)] + [JsonConfEditor(Label = "Valuelist", + IsRequired = false, + Hidden = true, + HelpText = "The Valuelist type to search for..", + ShowWhen = ".parent._children{.key == 'LookupOrValuelistStrategy' && .value == 'SearchValueList' }", + DefaultValue = null)] + public MFIdentifier LookupValueListDef { get; set; } + + /// + /// If Lookup or MultiSelectlookup use ID or Name search. + /// + [DataMember(Order = 4)] + [JsonConfEditor(Label = "Use ID to search", + Hidden = true, + HelpText = "Yes = Search by ID, No = Search by Name.", + ShowWhen = ".parent._children{.key == 'LookupOrValuelistStrategy' && .value == 'SearchLookup' }", + DefaultValue = false)] + public bool SearchByLookupID { get; set; } + = false; + + /// + /// Property where tp search inside an Object. + /// + [DataMember(Order = 4)] + [MFPropertyDef(AllowEmpty = true)] + [JsonConfEditor(Label = "Property to search", + IsRequired = false, + Hidden = true, + HelpText = "Select Property of Object Type to search", + ShowWhen = ".parent._children{.key == 'LookupOrValuelistStrategy' && .value == 'SearchObjectValue' }", + DefaultValue = null + )] + public MFIdentifier objSearchProperty { get; set; } + } } \ No newline at end of file diff --git a/Samples/VAF/XmlImporter/XmlImporter/VaultApplication.ImportXmlFile.cs b/Samples/VAF/XmlImporter/XmlImporter/VaultApplication.ImportXmlFile.cs index 8eb7abc..cf6741c 100644 --- a/Samples/VAF/XmlImporter/XmlImporter/VaultApplication.ImportXmlFile.cs +++ b/Samples/VAF/XmlImporter/XmlImporter/VaultApplication.ImportXmlFile.cs @@ -13,6 +13,112 @@ namespace XmlImporter { public partial class VaultApplication { + private Boolean CastToBool(string value) + { + var lbReturn = false; + if (value.ToLower() == "true") + lbReturn = true; + else if (value.ToLower() == "j") + lbReturn = true; + else if (value.ToLower() == "y") + lbReturn = true; + else if (value.ToLower() == "ja") + lbReturn = true; + else if (value.ToLower() == "yes") + lbReturn = true; + else if (value.ToLower() == "wahr") + lbReturn = true; + return lbReturn; + } + private int LookupRef(Vault vault, int ObjectID, MFDataType DataType, bool SearchLookupID, object value, LookupOrValuelistStrategy searchType = LookupOrValuelistStrategy.SearchLookup) + { + // Create list of search conditions. + var oSCs = new MFilesAPI.SearchConditions(); + + // Create single search condition. + var oSC = new MFilesAPI.SearchCondition(); + + // ================================================================================= + // Filter not deleted + if (searchType == LookupOrValuelistStrategy.SearchLookup) + { + oSC.Expression.SetStatusValueExpression(MFStatusType.MFStatusTypeDeleted); + } + else + { + oSC.Expression.SetValueListItemExpression(MFValueListItemPropertyDef.MFValueListItemPropertyDefDeleted, + MFParentChildBehavior.MFParentChildBehaviorNone); + } + oSC.ConditionType = MFConditionType.MFConditionTypeEqual; + oSC.TypedValue.SetValue(MFDataType.MFDatatypeBoolean, false); + oSCs.Add(-1, oSC); + + // ================================================================================= + // Filter if it's object only objects + if (searchType == LookupOrValuelistStrategy.SearchLookup) + { + oSC.Expression.SetStatusValueExpression(MFStatusType.MFStatusTypeObjectTypeID); + oSC.ConditionType = MFConditionType.MFConditionTypeEqual; + oSC.TypedValue.SetValue(DataType, ObjectID); + oSCs.Add(-1, oSC); + } + + // ================================================================================= + // Filter Search by ID or name Value + if (SearchLookupID) + { + oSC.Expression.DataStatusValueType = MFStatusType.MFStatusTypeExtID; + oSC.ConditionType = MFConditionType.MFConditionTypeEqual; + oSC.TypedValue.SetValue(MFDataType.MFDatatypeText, value); + oSCs.Add(-1, oSC); + } + else + { + if (searchType == LookupOrValuelistStrategy.SearchLookup) + { + // object value search syntax + oSC.Expression.SetPropertyValueExpression((int)MFBuiltInPropertyDef.MFBuiltInPropertyDefNameOrTitle, MFParentChildBehavior.MFParentChildBehaviorNone); + oSC.ConditionType = MFConditionType.MFConditionTypeEqual; + oSC.TypedValue.SetValue(MFDataType.MFDatatypeText, value); + oSCs.Add(-1, oSC); + } + else + { + // valuelist value search syntax + oSC.Expression.SetValueListItemExpression(MFValueListItemPropertyDef.MFValueListItemPropertyDefName, MFParentChildBehavior.MFParentChildBehaviorNone); + oSC.ConditionType = MFConditionType.MFConditionTypeEqual; + oSC.TypedValue.SetValue(MFDataType.MFDatatypeText, value); + oSCs.Add(-1, oSC); + } + } + + // execute the final search + if (searchType == LookupOrValuelistStrategy.SearchLookup) + { + var oResult = vault.ObjectSearchOperations.SearchForObjectsByConditionsEx(oSCs, MFSearchFlags.MFSearchFlagNone, false); + if (oResult.Count == 0) + { + return -1; + } + else + { + return oResult[1].ObjVer.ObjID.ID; + } + } + else + { + var vlResult = vault.ValueListItemOperations.SearchForValueListItemsEx(ObjectID, oSCs, false); + if (vlResult.Count == 0) + { + return -1; + } + else + { + return vlResult[1].ObjID.ID; + } + } + + } /// /// Executes an , importing files to the vault as required. /// @@ -261,10 +367,10 @@ public List ImportXmlFile( throw new InvalidOperationException("The property value selector property definition is not resolved"); // Retrieve the element for the property value. - var matchingPropertyElement = matchingElement - .XPathSelectElement(propertySelector.XPathQuery, xmlNamespaceManager); - if (null == matchingPropertyElement) - continue; + // var matchingPropertyElement = matchingElement + // .XPathSelectElement(propertySelector.XPathQuery, xmlNamespaceManager); + //if (null == matchingPropertyElement) + // continue; // Find the property definition type. var propertyDefType = vault @@ -272,11 +378,150 @@ public List ImportXmlFile( .GetPropertyDef(propertySelector.PropertyDef.ID) .DataType; + // Check if it's lookup or multilookup + var isLookup = ((propertyDefType == MFDataType.MFDatatypeMultiSelectLookup) || (propertyDefType == MFDataType.MFDatatypeLookup)); + + #region itterate XAttributes from XPath + if (propertySelector.XPathQuery.Contains("@")) + { + List listLookup = new List(); + IEnumerable matchingPropertyAttributes = + (IEnumerable)matchingElement.XPathEvaluate(propertySelector.XPathQuery); + foreach (System.Xml.Linq.XAttribute matchingPropertyAttribute in matchingPropertyAttributes) + { + string szValue = matchingPropertyAttribute.Value; + + if (propertyDefType == MFDataType.MFDatatypeBoolean) + { + propertyValuesBuilder.Add( + propertySelector.PropertyDef.ID, + propertyDefType, + CastToBool(szValue)); + } + else if (propertyDefType == MFDataType.MFDatatypeDate) + { + szValue = $"{szValue} 00:00:00"; + propertyValuesBuilder.Add( + propertySelector.PropertyDef.ID, + propertyDefType, + szValue); + } + else if (isLookup) + { + var iLookupDef = (propertySelector.LookupOrValuelistStrategy == LookupOrValuelistStrategy.SearchLookup ? + propertySelector.LookupObjectDef.ID : + propertySelector.LookupValueListDef.ID); + + var iLookupItem = LookupRef(vault, + iLookupDef, + propertyDefType, + propertySelector.SearchByLookupID, + szValue, + propertySelector.LookupOrValuelistStrategy); + + if (iLookupItem != -1) + { + listLookup.Add(iLookupItem); + } + } + else + { + propertyValuesBuilder.Add( + propertySelector.PropertyDef.ID, + propertyDefType, + szValue); + } + } + + // Lookup or MultiSelectLookup and found something + if ((isLookup) && (listLookup.Count != 0)) + { + int[] arrLookupIDs = listLookup.ToArray(); + propertyValuesBuilder.Add( + propertySelector.PropertyDef.ID, + propertyDefType, + arrLookupIDs); + } + } + #endregion + else + #region itterate XElements from XPath + { + List listLookup = new List(); + var matchingPropertyElements = + matchingElement.XPathSelectElements(propertySelector.XPathQuery); + if (null == matchingPropertyElements) + continue; + + // iterate found XElements + foreach (var matchingPropertyElement in matchingPropertyElements) + { + if (null == matchingPropertyElement) + continue; + + string szValue = matchingPropertyElement.Value; + + if (propertyDefType == MFDataType.MFDatatypeBoolean) + { + propertyValuesBuilder.Add( + propertySelector.PropertyDef.ID, + propertyDefType, + CastToBool(szValue)); + } + else if (propertyDefType == MFDataType.MFDatatypeDate) + { + szValue = $"{szValue} 00:00:00"; + propertyValuesBuilder.Add( + propertySelector.PropertyDef.ID, + propertyDefType, + szValue); + } + else if (isLookup) + { + var iLookupDef = (propertySelector.LookupOrValuelistStrategy == LookupOrValuelistStrategy.SearchLookup ? + propertySelector.LookupObjectDef.ID : + propertySelector.LookupValueListDef.ID); + + var iLookupItem = LookupRef(vault, + iLookupDef, + propertyDefType, + propertySelector.SearchByLookupID, + szValue, + propertySelector.LookupOrValuelistStrategy); + + if (iLookupItem != -1) + { + listLookup.Add(iLookupItem); + } + propertyValuesBuilder.AddLookup( + propertySelector.PropertyDef.ID, + szValue); + } + else + { + propertyValuesBuilder.Add( + propertySelector.PropertyDef.ID, + propertyDefType, + szValue); + } + } + // Lookup or MultiSelectLookup and found something + if ((isLookup) && (listLookup.Count != 0)) + { + int[] arrLookupIDs = listLookup.ToArray(); + propertyValuesBuilder.Add( + propertySelector.PropertyDef.ID, + propertyDefType, + arrLookupIDs); + } + } + #endregion + // Add the property to the builder. - propertyValuesBuilder.Add( - propertySelector.PropertyDef.ID, - propertyDefType, - matchingPropertyElement.Value); + //propertyValuesBuilder.Add( + //propertySelector.PropertyDef.ID, + //propertyDefType, + //matchingPropertyElement.Value); } diff --git a/Samples/VAF/XmlImporter/XmlImporter/XmlImporter.csproj b/Samples/VAF/XmlImporter/XmlImporter/XmlImporter.csproj index 23460fc..cc8b275 100644 --- a/Samples/VAF/XmlImporter/XmlImporter/XmlImporter.csproj +++ b/Samples/VAF/XmlImporter/XmlImporter/XmlImporter.csproj @@ -60,6 +60,7 @@ + diff --git a/Samples/VAF/XmlImporter/packages/MSBuildTasks.1.5.0.196/.signature.p7s b/Samples/VAF/XmlImporter/packages/MSBuildTasks.1.5.0.196/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..6626a86ac5e60dcda5691e3a68e73e13f412c356 GIT binary patch literal 9466 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 O-IH-Wx6;n|3jPmDpHlY# literal 0 HcmV?d00001 From 16d317e3f1c3ffb1bb191d8cfb4b32424a978a9a Mon Sep 17 00:00:00 2001 From: Uwe Beyer Date: Tue, 30 Mar 2021 10:50:10 +0200 Subject: [PATCH 2/2] Added xmlNamespaceManager --- .../XmlImporter/XmlImporter/VaultApplication.ImportXmlFile.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Samples/VAF/XmlImporter/XmlImporter/VaultApplication.ImportXmlFile.cs b/Samples/VAF/XmlImporter/XmlImporter/VaultApplication.ImportXmlFile.cs index cf6741c..7c040e5 100644 --- a/Samples/VAF/XmlImporter/XmlImporter/VaultApplication.ImportXmlFile.cs +++ b/Samples/VAF/XmlImporter/XmlImporter/VaultApplication.ImportXmlFile.cs @@ -386,7 +386,7 @@ public List ImportXmlFile( { List listLookup = new List(); IEnumerable matchingPropertyAttributes = - (IEnumerable)matchingElement.XPathEvaluate(propertySelector.XPathQuery); + (IEnumerable)matchingElement.XPathEvaluate(propertySelector.XPathQuery, xmlNamespaceManager); foreach (System.Xml.Linq.XAttribute matchingPropertyAttribute in matchingPropertyAttributes) { string szValue = matchingPropertyAttribute.Value; @@ -449,7 +449,7 @@ public List ImportXmlFile( { List listLookup = new List(); var matchingPropertyElements = - matchingElement.XPathSelectElements(propertySelector.XPathQuery); + matchingElement.XPathSelectElements(propertySelector.XPathQuery, xmlNamespaceManager); if (null == matchingPropertyElements) continue;