SmartAPI
Open Source .NET RQL library for RedDot CMS / OpenText WSM Management Server
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Pages
Pages/Elements/IStandardFieldTime.cs
Go to the documentation of this file.
1 ï»¿// SmartAPI - .Net programmatic access to RedDot servers
2 //
3 // Copyright (C) 2013 erminas GbR
4 //
5 // This program is free software: you can redistribute it and/or modify it
6 // under the terms of the GNU General Public License as published by the Free Software Foundation,
7 // either version 3 of the License, or (at your option) any later version.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 // See the GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License along with this program.
14 // If not, see <http://www.gnu.org/licenses/>.
15 
16 using System;
17 using System.Globalization;
18 using System.Xml;
19 using erminas.SmartAPI.CMS.Project.ContentClasses.Elements;
20 using erminas.SmartAPI.Utils;
21 
22 namespace erminas.SmartAPI.CMS.Project.Pages.Elements
23 {
24  public interface IStandardFieldTime : IStandardField<TimeSpan>
25  {
26  }
27 
31  [PageElementType(ElementType.StandardFieldTime)]
32  internal sealed class StandardFieldTime : StandardField<TimeSpan>, IStandardFieldTime
33  {
34  internal StandardFieldTime(IProject project, XmlElement xmlElement) : base(project, xmlElement)
35  {
36  }
37 
38  public StandardFieldTime(IProject project, Guid guid, ILanguageVariant languageVariant)
39  : base(project, guid, languageVariant)
40  {
41  }
42 
43  public override void Commit()
44  {
45  using (new LanguageContext(LanguageVariant))
46  {
47  //TODO testen gegen _value == null und ob das ergebnis mit htmlencode richtig ist
48  Project.ExecuteRQL(string.Format(SAVE_VALUE, Guid.ToRQLString(),
49  _value.Hours/24.0 + _value.Minutes/(24.0*60.0) +
50  _value.Seconds/(24.0*60.0*60.0), (int) ElementType));
51  }
52  //TODO check guid
53  //xml
54  }
55 
56  protected override TimeSpan FromString(string value)
57  {
58  try
59  {
60  return DateTime.Parse(value, CultureInfo.InvariantCulture).TimeOfDay;
61  } catch (FormatException e)
62  {
63  throw new ArgumentException(string.Format("Invalid time value: {0}", value), e);
64  }
65  }
66 
67  protected override TimeSpan FromXmlNodeValue(string value)
68  {
69  return value.ToOADate().TimeOfDay;
70  }
71 
72  protected override string GetXmlNodeValue()
73  {
74  if (Value == default(TimeSpan))
75  {
76  return "";
77  }
78  var date = new DateTime(0, 0, Value.Days, Value.Hours, Value.Minutes, Value.Seconds);
79  return date.ToOADate().ToString(CultureInfo.InvariantCulture);
80  }
81 
82  protected override void LoadWholeStandardField()
83  {
84  }
85  }
86 }