//
// PersistenceMetaInfoDeclaration.cs
// s.im.pl serialization
//
// Generated by MetaMetadataDotNetTranslator.
// Copyright 2015 Interface Ecology Lab. 
//


using Ecologylab.BigSemantics.MetaMetadataNS;
using Ecologylab.BigSemantics.MetadataNS;
using Ecologylab.BigSemantics.MetadataNS.Builtins;
using Ecologylab.BigSemantics.MetadataNS.Scalar;
using Ecologylab.Collections;
using Simpl.Fundamental.Generic;
using Simpl.Fundamental.Net;
using Simpl.Serialization;
using Simpl.Serialization.Attributes;
using System;
using System.Collections;
using System.Collections.Generic;

namespace Ecologylab.BigSemantics.MetadataNS.Builtins.Declarations 
{
	/// <summary>
	/// The PersistenceMetaInfo Class
	/// </summary>
	[SimplInherit]
	public class PersistenceMetaInfoDeclaration : Metadata
	{
		[SimplScalar]
		private MetadataString docId;

		[SimplScalar]
		private MetadataParsedURL location;

		[SimplCollection("additional_location")]
		[MmName("additional_locations")]
		private List<Ecologylab.BigSemantics.MetadataNS.Scalar.MetadataParsedURL> additionalLocations;

		[SimplScalar]
		private MetadataString charset;

		[SimplScalar]
		private MetadataString mimeType;

		[SimplScalar]
		private MetadataDate accessTime;

		[SimplScalar]
		private MetadataDate persistenceTime;

		[SimplScalar]
		private MetadataString mmdHash;

		public PersistenceMetaInfoDeclaration()
		{ }

		public PersistenceMetaInfoDeclaration(MetaMetadataCompositeField mmd) : base(mmd) { }


		public MetadataString DocId
		{
			get{return docId;}
			set
			{
				if (this.docId != value)
				{
					this.docId = value;
					// TODO we need to implement our property change notification mechanism.
				}
			}
		}

		public MetadataParsedURL Location
		{
			get{return location;}
			set
			{
				if (this.location != value)
				{
					this.location = value;
					// TODO we need to implement our property change notification mechanism.
				}
			}
		}

		public List<Ecologylab.BigSemantics.MetadataNS.Scalar.MetadataParsedURL> AdditionalLocations
		{
			get{return additionalLocations;}
			set
			{
				if (this.additionalLocations != value)
				{
					this.additionalLocations = value;
					// TODO we need to implement our property change notification mechanism.
				}
			}
		}

		public MetadataString Charset
		{
			get{return charset;}
			set
			{
				if (this.charset != value)
				{
					this.charset = value;
					// TODO we need to implement our property change notification mechanism.
				}
			}
		}

		public MetadataString MimeType
		{
			get{return mimeType;}
			set
			{
				if (this.mimeType != value)
				{
					this.mimeType = value;
					// TODO we need to implement our property change notification mechanism.
				}
			}
		}

		public MetadataDate AccessTime
		{
			get{return accessTime;}
			set
			{
				if (this.accessTime != value)
				{
					this.accessTime = value;
					// TODO we need to implement our property change notification mechanism.
				}
			}
		}

		public MetadataDate PersistenceTime
		{
			get{return persistenceTime;}
			set
			{
				if (this.persistenceTime != value)
				{
					this.persistenceTime = value;
					// TODO we need to implement our property change notification mechanism.
				}
			}
		}

		public MetadataString MmdHash
		{
			get{return mmdHash;}
			set
			{
				if (this.mmdHash != value)
				{
					this.mmdHash = value;
					// TODO we need to implement our property change notification mechanism.
				}
			}
		}
	}
}
