using System;
using System.Collections.Generic;
namespace Umbraco.Core.Models
{
///
/// Represents the pre-value data for a DataType
///
///
/// Due to the legacy nature of the data that can be stored for pre-values, we have this class which encapsulates the 2 different
/// ways that pre-values are stored: A string array or a Dictionary.
///
/// Most legacy property editors won't support the dictionary format but new property editors should always use the dictionary format.
/// In order to get overrideable pre-values working we need a dictionary since we'll have to reference a pre-value by a key.
///
public class PreValueCollection
{
private IDictionary _preValuesAsDictionary;
private IEnumerable _preValuesAsArray;
public IEnumerable PreValuesAsArray
{
get
{
if (_preValuesAsArray == null)
{
throw new InvalidOperationException("The current pre-value collection is dictionary based, use the PreValuesAsDictionary property instead");
}
return _preValuesAsArray;
}
set { _preValuesAsArray = value; }
}
public IDictionary PreValuesAsDictionary
{
get
{
if (_preValuesAsDictionary == null)
{
throw new InvalidOperationException("The current pre-value collection is array based, use the PreValuesAsArray property instead");
}
return _preValuesAsDictionary;
}
set { _preValuesAsDictionary = value; }
}
///
/// Check if it is a dictionary based collection
///
public bool IsDictionaryBased
{
get { return _preValuesAsDictionary != null; }
}
public PreValueCollection(IEnumerable preVals)
{
_preValuesAsArray = preVals;
}
public PreValueCollection(IDictionary preVals)
{
_preValuesAsDictionary = preVals;
}
}
}