Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Persistence/3.3/Default/ViewOnly/ViewOnlyFormat.cs @ 1566

Last change on this file since 1566 was 1566, checked in by epitzer, 15 years ago

Format white space. (Ctrl-K, Ctrl-D) (#548)

File size: 4.5 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Text;
4using HeuristicLab.Persistence.Interfaces;
5using HeuristicLab.Persistence.Default.Xml;
6using HeuristicLab.Persistence.Core;
7using HeuristicLab.Persistence.Core.Tokens;
8
9namespace HeuristicLab.Persistence.Default.ViewOnly {
10
11  public class String : ISerialData {
12    public string Data { get; set; }
13    public String(string s) {
14      Data = s;
15    }
16  }
17
18  public class ViewOnlyFormat : FormatBase<String> {
19    public override string Name { get { return "ViewOnly"; } }
20  }
21
22  public abstract class ValueType2ViewFormatterBase<T> : FormatterBase<T, String> {
23    public override String Format(T o) { return new String(o.ToString()); }
24    public override T Parse(String s) {
25      throw new NotImplementedException();
26    }
27  }
28
29  [EmptyStorableClass]
30  public class String2ViewFormatter : ValueType2ViewFormatterBase<string> { }
31
32  [EmptyStorableClass]
33  public class Bool2ViewFormatter : ValueType2ViewFormatterBase<bool> { }
34
35  [EmptyStorableClass]
36  public class Int2ViewFormatter : ValueType2ViewFormatterBase<int> { }
37
38  [EmptyStorableClass]
39  public class Double2ViewFormatter : ValueType2ViewFormatterBase<double> { }
40
41  [EmptyStorableClass]
42  public class DateTime2ViewFormatter : ValueType2ViewFormatterBase<DateTime> { }
43
44  [EmptyStorableClass]
45  public class Type2ViewFormatter : ValueType2ViewFormatterBase<Type> { }
46
47  [EmptyStorableClass]
48  public class Float2ViewFormatter : ValueType2ViewFormatterBase<float> { }
49
50  public class ViewOnlyGenerator : GeneratorBase<string> {
51
52    private bool isSepReq;
53    private readonly bool showRefs;
54
55    public ViewOnlyGenerator() : this(false) { }
56
57    public ViewOnlyGenerator(bool showRefs) {
58      isSepReq = false;
59      this.showRefs = showRefs;
60    }
61
62    protected override string Format(BeginToken beginToken) {
63      StringBuilder sb = new StringBuilder();
64      if (isSepReq)
65        sb.Append(", ");
66      if (!string.IsNullOrEmpty(beginToken.Name)) {
67        sb.Append(beginToken.Name);
68        if (beginToken.Id != null && showRefs) {
69          sb.Append('[');
70          sb.Append(beginToken.Id);
71          sb.Append(']');
72        }
73      }
74      sb.Append("(");
75      isSepReq = false;
76      return sb.ToString();
77    }
78
79    protected override string Format(EndToken endToken) {
80      isSepReq = true;
81      return ")";
82    }
83
84    protected override string Format(PrimitiveToken primitiveToken) {
85      StringBuilder sb = new StringBuilder();
86      if (isSepReq)
87        sb.Append(", ");
88      if (!string.IsNullOrEmpty(primitiveToken.Name)) {
89        sb.Append(primitiveToken.Name);
90        if (primitiveToken.Id != null && showRefs) {
91          sb.Append('[');
92          sb.Append(primitiveToken.Id);
93          sb.Append(']');
94        }
95        sb.Append('=');
96      }
97      sb.Append(((String)primitiveToken.SerialData).Data);
98      isSepReq = true;
99      return sb.ToString();
100    }
101
102    protected override string Format(ReferenceToken referenceToken) {
103      StringBuilder sb = new StringBuilder();
104      if (isSepReq)
105        sb.Append(", ");
106      if (!string.IsNullOrEmpty(referenceToken.Name)) {
107        sb.Append(referenceToken.Name);
108        sb.Append('=');
109      }
110      sb.Append('{');
111      sb.Append(referenceToken.Id);
112      sb.Append('}');
113      isSepReq = true;
114      return sb.ToString();
115    }
116
117    protected override string Format(NullReferenceToken nullReferenceToken) {
118      StringBuilder sb = new StringBuilder();
119      if (isSepReq)
120        sb.Append(", ");
121      if (!string.IsNullOrEmpty(nullReferenceToken.Name)) {
122        sb.Append(nullReferenceToken.Name);
123        sb.Append('=');
124      }
125      sb.Append("<null>");
126      isSepReq = true;
127      return sb.ToString();
128    }
129
130    protected override string Format(MetaInfoBeginToken metaInfoBeginToken) {
131      return "[";
132    }
133
134    protected override string Format(MetaInfoEndToken metaInfoEndToken) {
135      return "]";
136    }
137
138    public static string Serialize(object o) {
139      return Serialize(o, ConfigurationService.Instance.GetDefaultConfig(new ViewOnlyFormat()));
140    }
141
142    public static string Serialize(object o, Configuration configuration) {
143      Serializer s = new Serializer(o, configuration);
144      ViewOnlyGenerator generator = new ViewOnlyGenerator();
145      StringBuilder sb = new StringBuilder();
146      foreach (ISerializationToken token in s) {
147        sb.Append(generator.Format(token));
148      }
149      return sb.ToString();
150    }
151  }
152}
Note: See TracBrowser for help on using the repository browser.