Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 7 additions & 13 deletions APIClient/Model/Asset/Asset.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace VersionOne.SDK.APIClient
public class Asset
{
private Oid oid = Oid.Null;
private readonly IDictionary<string, Attribute> attributes = new Dictionary<string, Attribute>();
private readonly IDictionary<string, IAttribute> attributes = new Dictionary<string, IAttribute>();
private readonly IAssetType assetType;
private readonly AssetList children = new AssetList();

Expand All @@ -30,15 +30,9 @@ public Oid Oid
}
}

public IDictionary<string, Attribute> Attributes
{
get { return attributes; }
}
public IDictionary<string, IAttribute> Attributes => attributes;

public AssetList Children
{
get { return children; }
}
public AssetList Children => children;

public Asset(Oid oid)
{
Expand Down Expand Up @@ -95,9 +89,9 @@ public void ClearAttributeCache(IAttributeDefinition attribdef)

public Attribute GetAttribute(IAttributeDefinition attribdef)
{
Attribute attrib;
IAttribute attrib;
attributes.TryGetValue(ResolveAttributeDefinition(attribdef).Token, out attrib);
return attrib;
return (Attribute)attrib;
}

private IAttributeDefinition ResolveAttributeDefinition(IAttributeDefinition attribdef)
Expand Down Expand Up @@ -143,15 +137,15 @@ public void LoadAttributeValue(IAttributeDefinition attribdef, object value)
public Attribute EnsureAttribute(IAttributeDefinition attribdef)
{
attribdef = ResolveAttributeDefinition(attribdef);
Attribute attrib;
IAttribute attrib;

if (!attributes.TryGetValue(attribdef.Token, out attrib))
{
attrib = attribdef.IsMultiValue ? (Attribute)new MultiValueAttribute(attribdef, this) : new SingleValueAttribute(attribdef, this);
attributes[attribdef.Token] = attrib;
}

return attrib;
return (Attribute)attrib;
}
}
}
12 changes: 3 additions & 9 deletions APIClient/Model/Asset/Attribute/Attribute.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace VersionOne.SDK.APIClient
{
public abstract class Attribute
public abstract class Attribute : IAttribute
{
private readonly IAttributeDefinition def;
private readonly Asset asset;
Expand All @@ -14,15 +14,9 @@ protected Attribute(IAttributeDefinition def, Asset asset)
this.asset = asset;
}

public Asset Asset
{
get { return asset; }
}
public Asset Asset => asset;

public IAttributeDefinition Definition
{
get { return def; }
}
public IAttributeDefinition Definition => def;

public abstract object OriginalValue { get; }
public abstract object NewValue { get; }
Expand Down
22 changes: 22 additions & 0 deletions APIClient/Model/Asset/Attribute/IAttribute.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using System.Collections;

namespace VersionOne.SDK.APIClient
{
public interface IAttribute
{
Asset Asset { get; }
IAttributeDefinition Definition { get; }
object OriginalValue { get; }
object NewValue { get; }
object Value { get; }
IEnumerable OriginalValues { get; }
IEnumerable NewValues { get; }
IEnumerable AddedValues { get; }
IEnumerable RemovedValues { get; }
IEnumerable Values { get; }
IList ValuesList { get; }
bool HasChanged { get; }
void AcceptChanges();
void RejectChanges();
}
}
6 changes: 3 additions & 3 deletions APIClient/Services/XmlApiWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -145,14 +145,14 @@ public void WriteHistoricalAttribute(AssetList assets, IAttributeDefinition attr
writer.WriteEndElement();
}

private void WriteAttributeReference(Attribute attrib)
private void WriteAttributeReference(IAttribute attrib)
{
AttributeToXml(attrib);
}

#region Attribute Value Output

private void AttributeToXml(Attribute attribute)
private void AttributeToXml(IAttribute attribute)
{
if (changesOnly && !attribute.HasChanged)
{
Expand Down Expand Up @@ -189,7 +189,7 @@ private void AttributeToXml(Attribute attribute)
}
}

private void RelationAttributeToXml(Attribute attribute)
private void RelationAttributeToXml(IAttribute attribute)
{
if (attribute.HasChanged && attribute.Definition.IsMultiValue)
{
Expand Down
3 changes: 2 additions & 1 deletion APIClient/VersionOne.SDK.APIClient.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@
<ItemGroup>
<Compile Include="Model\Aggregate.cs" />
<Compile Include="Model\Asset\AssetStateManager.cs" />
<Compile Include="Model\Asset\Attribute\IAttribute.cs" />
<Compile Include="Obsolete\Attachments.cs" />
<Compile Include="Model\Asset\Attribute\Attribute.cs" />
<Compile Include="Model\Asset\Attribute\AttributeType.cs" />
Expand Down Expand Up @@ -307,4 +308,4 @@
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
</Project>
</Project>