<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>PropertyCreationHelper xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> * <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> */</em>
<a name="19" href="#19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.chemistry.opencmis.inmemory.types;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.math.BigDecimal;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.math.BigInteger;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.GregorianCalendar;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.Map.Entry;
<a name="30" href="#30">30</a>  
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.PropertyIds;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.Acl;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.AllowableActions;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ExtensionsData;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ObjectData;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.Properties;
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.PropertyData;
<a name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.PropertyInteger;
<a name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.Choice;
<a name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
<a name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
<a name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.Cardinality;
<a name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
<a name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.PropertyType;
<a name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.Updatability;
<a name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
<a name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
<a name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.AbstractPropertyData;
<a name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.AbstractPropertyDefinition;
<a name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.BindingsObjectFactoryImpl;
<a name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.ChoiceImpl;
<a name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.ObjectDataImpl;
<a name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertiesImpl;
<a name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyBooleanDefinitionImpl;
<a name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyBooleanImpl;
<a name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDateTimeDefinitionImpl;
<a name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDateTimeImpl;
<a name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDecimalDefinitionImpl;
<a name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDecimalImpl;
<a name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyHtmlDefinitionImpl;
<a name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyHtmlImpl;
<a name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIdDefinitionImpl;
<a name="63" href="#63">63</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIdImpl;
<a name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIntegerDefinitionImpl;
<a name="65" href="#65">65</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIntegerImpl;
<a name="66" href="#66">66</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyStringDefinitionImpl;
<a name="67" href="#67">67</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyStringImpl;
<a name="68" href="#68">68</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyUriDefinitionImpl;
<a name="69" href="#69">69</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyUriImpl;
<a name="70" href="#70">70</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
<a name="71" href="#71">71</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.DataObjectCreator;
<a name="72" href="#72">72</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.FilterParser;
<a name="73" href="#73">73</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.NameValidator;
<a name="74" href="#74">74</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.storedobj.api.DocumentVersion;
<a name="75" href="#75">75</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
<a name="76" href="#76">76</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
<a name="77" href="#77">77</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
<a name="78" href="#78">78</a>  
<a name="79" href="#79">79</a>  <em class="jxr_javadoccomment">/**</em>
<a name="80" href="#80">80</a>  <em class="jxr_javadoccomment"> * @author Jens</em>
<a name="81" href="#81">81</a>  <em class="jxr_javadoccomment"> * </em>
<a name="82" href="#82">82</a>  <em class="jxr_javadoccomment"> */</em>
<a name="83" href="#83">83</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.html">PropertyCreationHelper</a> {
<a name="84" href="#84">84</a>  
<a name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log log = LogFactory.getLog(PropertyCreationHelper.<strong class="jxr_keyword">class</strong>);
<a name="86" href="#86">86</a>  
<a name="87" href="#87">87</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.html">PropertyCreationHelper</a>() {
<a name="88" href="#88">88</a>      }
<a name="89" href="#89">89</a>  
<a name="90" href="#90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyBooleanDefinitionImpl createBooleanDefinition(String id, String displayName, Updatability upd) {
<a name="91" href="#91">91</a>          PropertyBooleanDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyBooleanDefinitionImpl();
<a name="92" href="#92">92</a>          createStandardDefinition(prop, id, PropertyType.BOOLEAN, displayName, Cardinality.SINGLE, upd);
<a name="93" href="#93">93</a>          <strong class="jxr_keyword">return</strong> prop;
<a name="94" href="#94">94</a>      }
<a name="95" href="#95">95</a>  
<a name="96" href="#96">96</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyBooleanDefinitionImpl createBooleanMultiDefinition(String id, String displayName,
<a name="97" href="#97">97</a>              Updatability upd) {
<a name="98" href="#98">98</a>          PropertyBooleanDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyBooleanDefinitionImpl();
<a name="99" href="#99">99</a>          createStandardDefinition(prop, id, PropertyType.BOOLEAN, displayName, Cardinality.MULTI, upd);
<a name="100" href="#100">100</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="101" href="#101">101</a>     }
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyDateTimeDefinitionImpl createDateTimeDefinition(String id, String displayName,
<a name="104" href="#104">104</a>             Updatability upd) {
<a name="105" href="#105">105</a>         PropertyDateTimeDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyDateTimeDefinitionImpl();
<a name="106" href="#106">106</a>         createStandardDefinition(prop, id, PropertyType.DATETIME, displayName, Cardinality.SINGLE, upd);
<a name="107" href="#107">107</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="108" href="#108">108</a>     }
<a name="109" href="#109">109</a> 
<a name="110" href="#110">110</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyDateTimeDefinitionImpl createDateTimeMultiDefinition(String id, String displayName,
<a name="111" href="#111">111</a>             Updatability upd) {
<a name="112" href="#112">112</a>         PropertyDateTimeDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyDateTimeDefinitionImpl();
<a name="113" href="#113">113</a>         createStandardDefinition(prop, id, PropertyType.DATETIME, displayName, Cardinality.MULTI, upd);
<a name="114" href="#114">114</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="115" href="#115">115</a>     }
<a name="116" href="#116">116</a> 
<a name="117" href="#117">117</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyDecimalDefinitionImpl createDecimalDefinition(String id, String displayName, Updatability upd) {
<a name="118" href="#118">118</a>         PropertyDecimalDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyDecimalDefinitionImpl();
<a name="119" href="#119">119</a>         createStandardDefinition(prop, id, PropertyType.DECIMAL, displayName, Cardinality.SINGLE, upd);
<a name="120" href="#120">120</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="121" href="#121">121</a>     }
<a name="122" href="#122">122</a> 
<a name="123" href="#123">123</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyDecimalDefinitionImpl createDecimalMultiDefinition(String id, String displayName,
<a name="124" href="#124">124</a>             Updatability upd) {
<a name="125" href="#125">125</a>         PropertyDecimalDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyDecimalDefinitionImpl();
<a name="126" href="#126">126</a>         createStandardDefinition(prop, id, PropertyType.DECIMAL, displayName, Cardinality.MULTI, upd);
<a name="127" href="#127">127</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="128" href="#128">128</a>     }
<a name="129" href="#129">129</a> 
<a name="130" href="#130">130</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyHtmlDefinitionImpl createHtmlDefinition(String id, String displayName, Updatability upd) {
<a name="131" href="#131">131</a>         PropertyHtmlDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyHtmlDefinitionImpl();
<a name="132" href="#132">132</a>         createStandardDefinition(prop, id, PropertyType.HTML, displayName, Cardinality.SINGLE, upd);
<a name="133" href="#133">133</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="134" href="#134">134</a>     }
<a name="135" href="#135">135</a> 
<a name="136" href="#136">136</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyHtmlDefinitionImpl createHtmlMultiDefinition(String id, String displayName, Updatability upd) {
<a name="137" href="#137">137</a>         PropertyHtmlDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyHtmlDefinitionImpl();
<a name="138" href="#138">138</a>         createStandardDefinition(prop, id, PropertyType.HTML, displayName, Cardinality.MULTI, upd);
<a name="139" href="#139">139</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="140" href="#140">140</a>     }
<a name="141" href="#141">141</a> 
<a name="142" href="#142">142</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyIdDefinitionImpl createIdDefinition(String id, String displayName, Updatability upd) {
<a name="143" href="#143">143</a>         PropertyIdDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyIdDefinitionImpl();
<a name="144" href="#144">144</a>         createStandardDefinition(prop, id, PropertyType.ID, displayName, Cardinality.SINGLE, upd);
<a name="145" href="#145">145</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="146" href="#146">146</a>     }
<a name="147" href="#147">147</a> 
<a name="148" href="#148">148</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyIdDefinitionImpl createIdMultiDefinition(String id, String displayName, Updatability upd) {
<a name="149" href="#149">149</a>         PropertyIdDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyIdDefinitionImpl();
<a name="150" href="#150">150</a>         createStandardDefinition(prop, id, PropertyType.ID, displayName, Cardinality.MULTI, upd);
<a name="151" href="#151">151</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="152" href="#152">152</a>     }
<a name="153" href="#153">153</a> 
<a name="154" href="#154">154</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyIntegerDefinitionImpl createIntegerDefinition(String id, String displayName, Updatability upd) {
<a name="155" href="#155">155</a>         PropertyIntegerDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyIntegerDefinitionImpl();
<a name="156" href="#156">156</a>         createStandardDefinition(prop, id, PropertyType.INTEGER, displayName, Cardinality.SINGLE, upd);
<a name="157" href="#157">157</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="158" href="#158">158</a>     }
<a name="159" href="#159">159</a> 
<a name="160" href="#160">160</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyIntegerDefinitionImpl createIntegerMultiDefinition(String id, String displayName,
<a name="161" href="#161">161</a>             Updatability upd) {
<a name="162" href="#162">162</a>         PropertyIntegerDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyIntegerDefinitionImpl();
<a name="163" href="#163">163</a>         createStandardDefinition(prop, id, PropertyType.INTEGER, displayName, Cardinality.MULTI, upd);
<a name="164" href="#164">164</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="165" href="#165">165</a>     }
<a name="166" href="#166">166</a> 
<a name="167" href="#167">167</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyStringDefinitionImpl createStringDefinition(String id, String displayName, Updatability upd) {
<a name="168" href="#168">168</a>         PropertyStringDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyStringDefinitionImpl();
<a name="169" href="#169">169</a>         createStandardDefinition(prop, id, PropertyType.STRING, displayName, Cardinality.SINGLE, upd);
<a name="170" href="#170">170</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="171" href="#171">171</a>     }
<a name="172" href="#172">172</a> 
<a name="173" href="#173">173</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyStringDefinitionImpl createStringMultiDefinition(String id, String displayName,
<a name="174" href="#174">174</a>             Updatability upd) {
<a name="175" href="#175">175</a>         PropertyStringDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyStringDefinitionImpl();
<a name="176" href="#176">176</a>         createStandardDefinition(prop, id, PropertyType.STRING, displayName, Cardinality.MULTI, upd);
<a name="177" href="#177">177</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="178" href="#178">178</a>     }
<a name="179" href="#179">179</a> 
<a name="180" href="#180">180</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyUriDefinitionImpl createUriDefinition(String id, String displayName, Updatability upd) {
<a name="181" href="#181">181</a>         PropertyUriDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyUriDefinitionImpl();
<a name="182" href="#182">182</a>         createStandardDefinition(prop, id, PropertyType.URI, displayName, Cardinality.SINGLE, upd);
<a name="183" href="#183">183</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="184" href="#184">184</a>     }
<a name="185" href="#185">185</a> 
<a name="186" href="#186">186</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> PropertyUriDefinitionImpl createUriMultiDefinition(String id, String displayName, Updatability upd) {
<a name="187" href="#187">187</a>         PropertyUriDefinitionImpl prop = <strong class="jxr_keyword">new</strong> PropertyUriDefinitionImpl();
<a name="188" href="#188">188</a>         createStandardDefinition(prop, id, PropertyType.URI, displayName, Cardinality.MULTI, upd);
<a name="189" href="#189">189</a>         <strong class="jxr_keyword">return</strong> prop;
<a name="190" href="#190">190</a>     }
<a name="191" href="#191">191</a> 
<a name="192" href="#192">192</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> &lt;T&gt; <strong class="jxr_keyword">void</strong> addElemToPicklist(AbstractPropertyDefinition&lt;T&gt; prop, T value) {
<a name="193" href="#193">193</a>         List&lt;Choice&lt;T&gt;&gt; choiceList = prop.getChoices();
<a name="194" href="#194">194</a>         <strong class="jxr_keyword">if</strong> (choiceList == <strong class="jxr_keyword">null</strong>) {
<a name="195" href="#195">195</a>             choiceList = <strong class="jxr_keyword">new</strong> ArrayList&lt;Choice&lt;T&gt;&gt;();
<a name="196" href="#196">196</a>             prop.setChoices(choiceList);
<a name="197" href="#197">197</a>         }
<a name="198" href="#198">198</a> 
<a name="199" href="#199">199</a>         ChoiceImpl&lt;T&gt; elem = <strong class="jxr_keyword">new</strong> ChoiceImpl&lt;T&gt;();
<a name="200" href="#200">200</a>         elem.setValue(Collections.singletonList(value));
<a name="201" href="#201">201</a>         choiceList.add(elem);
<a name="202" href="#202">202</a>     }
<a name="203" href="#203">203</a> 
<a name="204" href="#204">204</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> &lt;T&gt; <strong class="jxr_keyword">void</strong> setDefaultValue(AbstractPropertyDefinition&lt;T&gt; prop, T defVal) {
<a name="205" href="#205">205</a>         prop.setDefaultValue(Collections.singletonList(defVal));
<a name="206" href="#206">206</a>     }
<a name="207" href="#207">207</a> 
<a name="208" href="#208">208</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Properties getPropertiesFromObject(<a href="../../../../../../org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.html">StoredObject</a> so, TypeDefinition td, List&lt;String&gt; requestedIds,
<a name="209" href="#209">209</a>             <strong class="jxr_keyword">boolean</strong> fillOptionalPropertyData) {
<a name="210" href="#210">210</a>         <em class="jxr_comment">// build properties collection</em>
<a name="211" href="#211">211</a> 
<a name="212" href="#212">212</a>         BindingsObjectFactory objectFactory = <strong class="jxr_keyword">new</strong> BindingsObjectFactoryImpl();
<a name="213" href="#213">213</a>         Map&lt;String, PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyData&lt;?&gt;&gt;();
<a name="214" href="#214">214</a>         so.fillProperties(properties, objectFactory, requestedIds);
<a name="215" href="#215">215</a> 
<a name="216" href="#216">216</a>         String typeId = so.getTypeId();
<a name="217" href="#217">217</a>         <strong class="jxr_keyword">if</strong> (FilterParser.isContainedInFilter(PropertyIds.BASE_TYPE_ID, requestedIds)) {
<a name="218" href="#218">218</a>             <strong class="jxr_keyword">if</strong> (td == <strong class="jxr_keyword">null</strong>) {
<a name="219" href="#219">219</a>                 log.warn(<span class="jxr_string">"getPropertiesFromObject(), cannot get type definition, a type with id "</span> + typeId
<a name="220" href="#220">220</a>                         + <span class="jxr_string">" is unknown"</span>);
<a name="221" href="#221">221</a>             } <strong class="jxr_keyword">else</strong> {
<a name="222" href="#222">222</a>                 String baseTypeId = td.getBaseTypeId().value();
<a name="223" href="#223">223</a>                 properties.put(PropertyIds.BASE_TYPE_ID,
<a name="224" href="#224">224</a>                         objectFactory.createPropertyIdData(PropertyIds.BASE_TYPE_ID, baseTypeId));
<a name="225" href="#225">225</a>             }
<a name="226" href="#226">226</a>         }
<a name="227" href="#227">227</a> 
<a name="228" href="#228">228</a>         <em class="jxr_comment">// fill not-set properties from type definition (as spec requires)</em>
<a name="229" href="#229">229</a>         Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propDefs = td.getPropertyDefinitions();
<a name="230" href="#230">230</a>         <strong class="jxr_keyword">for</strong> (PropertyDefinition&lt;?&gt; propDef : propDefs.values()) {
<a name="231" href="#231">231</a>             <strong class="jxr_keyword">if</strong> (!properties.containsKey(propDef.getId()) &amp;&amp; FilterParser.isContainedInFilter(propDef.getId(), requestedIds))
<a name="232" href="#232">232</a>                 properties.put(propDef.getId(), getEmptyValue(propDef));
<a name="233" href="#233">233</a>         }
<a name="234" href="#234">234</a> 
<a name="235" href="#235">235</a>         List&lt;PropertyData&lt;?&gt;&gt; propertiesList = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;(properties.values());
<a name="236" href="#236">236</a> 
<a name="237" href="#237">237</a>         <strong class="jxr_keyword">if</strong> (fillOptionalPropertyData) { <em class="jxr_comment">// add query name, local name, display</em>
<a name="238" href="#238">238</a>                                         <em class="jxr_comment">// name</em>
<a name="239" href="#239">239</a>             fillOptionalPropertyData(td, propertiesList);
<a name="240" href="#240">240</a>         }
<a name="241" href="#241">241</a> 
<a name="242" href="#242">242</a>         Properties props = objectFactory.createPropertiesData(propertiesList);
<a name="243" href="#243">243</a>         <strong class="jxr_keyword">return</strong> props;
<a name="244" href="#244">244</a>     }
<a name="245" href="#245">245</a> 
<a name="246" href="#246">246</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Properties getPropertiesFromObject(<a href="../../../../../../org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.html">StoredObject</a> so, TypeDefinition td,
<a name="247" href="#247">247</a>             Map&lt;String, String&gt; requestedIds, Map&lt;String, String&gt; requestedFuncs) {
<a name="248" href="#248">248</a>         <em class="jxr_comment">// build properties collection</em>
<a name="249" href="#249">249</a> 
<a name="250" href="#250">250</a>         List&lt;String&gt; idList = <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;(requestedIds.values());
<a name="251" href="#251">251</a>         BindingsObjectFactory objectFactory = <strong class="jxr_keyword">new</strong> BindingsObjectFactoryImpl();
<a name="252" href="#252">252</a>         Map&lt;String, PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyData&lt;?&gt;&gt;();
<a name="253" href="#253">253</a>         so.fillProperties(properties, objectFactory, idList);
<a name="254" href="#254">254</a> 
<a name="255" href="#255">255</a>         String typeId = so.getTypeId();
<a name="256" href="#256">256</a>         <strong class="jxr_keyword">if</strong> (FilterParser.isContainedInFilter(PropertyIds.BASE_TYPE_ID, idList)) {
<a name="257" href="#257">257</a>             <strong class="jxr_keyword">if</strong> (td == <strong class="jxr_keyword">null</strong>) {
<a name="258" href="#258">258</a>                 log.warn(<span class="jxr_string">"getPropertiesFromObject(), cannot get type definition, a type with id "</span> + typeId
<a name="259" href="#259">259</a>                         + <span class="jxr_string">" is unknown"</span>);
<a name="260" href="#260">260</a>             } <strong class="jxr_keyword">else</strong> {
<a name="261" href="#261">261</a>                 String baseTypeId = td.getBaseTypeId().value();
<a name="262" href="#262">262</a>                 properties.put(PropertyIds.BASE_TYPE_ID,
<a name="263" href="#263">263</a>                         objectFactory.createPropertyIdData(PropertyIds.BASE_TYPE_ID, baseTypeId));
<a name="264" href="#264">264</a>             }
<a name="265" href="#265">265</a>         }
<a name="266" href="#266">266</a> 
<a name="267" href="#267">267</a>         Map&lt;String, PropertyData&lt;?&gt;&gt; mappedProperties = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyData&lt;?&gt;&gt;();
<a name="268" href="#268">268</a>         <strong class="jxr_keyword">if</strong> (requestedIds.containsValue(<span class="jxr_string">"*"</span>)) {
<a name="269" href="#269">269</a>             <strong class="jxr_keyword">for</strong> (Map.Entry&lt;String, PropertyData&lt;?&gt;&gt; prop : properties.entrySet()) {
<a name="270" href="#270">270</a>                 <em class="jxr_comment">// map property id to property query name</em>
<a name="271" href="#271">271</a>                 String queryName = td.getPropertyDefinitions().get(prop.getKey()).getQueryName();
<a name="272" href="#272">272</a>                 String localName = td.getPropertyDefinitions().get(prop.getKey()).getLocalName();
<a name="273" href="#273">273</a>                 String displayName = td.getPropertyDefinitions().get(prop.getKey()).getDisplayName();
<a name="274" href="#274">274</a>                 AbstractPropertyData&lt;?&gt; ad = clonePropertyData(prop.getValue()); 
<a name="275" href="#275">275</a>                 
<a name="276" href="#276">276</a>                 ad.setQueryName(queryName);
<a name="277" href="#277">277</a>                 ad.setLocalName(localName);
<a name="278" href="#278">278</a>                 ad.setDisplayName(displayName);
<a name="279" href="#279">279</a>                 mappedProperties.put(queryName, ad);
<a name="280" href="#280">280</a>             }
<a name="281" href="#281">281</a>         } <strong class="jxr_keyword">else</strong> {
<a name="282" href="#282">282</a>             <em class="jxr_comment">// replace all ids with query names or alias:</em>
<a name="283" href="#283">283</a>             <strong class="jxr_keyword">for</strong> (Entry&lt;String, String&gt; propAlias : requestedIds.entrySet()) {
<a name="284" href="#284">284</a>                 String queryNameOrAlias = propAlias.getKey();
<a name="285" href="#285">285</a>                 PropertyData&lt;?&gt; prop = properties.get(propAlias.getValue());
<a name="286" href="#286">286</a>                 String localName = td.getPropertyDefinitions().get(prop.getId()).getLocalName();
<a name="287" href="#287">287</a>                 String displayName = td.getPropertyDefinitions().get(prop.getId()).getDisplayName();
<a name="288" href="#288">288</a>                 AbstractPropertyData&lt;?&gt; ad = clonePropertyData(prop); 
<a name="289" href="#289">289</a>                 
<a name="290" href="#290">290</a>                 ad.setQueryName(queryNameOrAlias);
<a name="291" href="#291">291</a>                 ad.setLocalName(localName);
<a name="292" href="#292">292</a>                 ad.setDisplayName(displayName);
<a name="293" href="#293">293</a>                 mappedProperties.put(queryNameOrAlias, ad);
<a name="294" href="#294">294</a>             }
<a name="295" href="#295">295</a>         }
<a name="296" href="#296">296</a>         <em class="jxr_comment">// add functions:</em>
<a name="297" href="#297">297</a>         BindingsObjectFactory objFactory = <strong class="jxr_keyword">new</strong> BindingsObjectFactoryImpl();
<a name="298" href="#298">298</a>         <strong class="jxr_keyword">for</strong> (Entry&lt;String, String&gt; funcEntry : requestedFuncs.entrySet()) {
<a name="299" href="#299">299</a>             PropertyInteger pi = objFactory.createPropertyIntegerData(funcEntry.getValue(), BigInteger.valueOf(100));
<a name="300" href="#300">300</a>             <em class="jxr_comment">// fixed dummy value</em>
<a name="301" href="#301">301</a>             mappedProperties.put(funcEntry.getKey(), pi);
<a name="302" href="#302">302</a>         }
<a name="303" href="#303">303</a> 
<a name="304" href="#304">304</a>         Properties props = <strong class="jxr_keyword">new</strong> PropertiesImpl(mappedProperties.values());
<a name="305" href="#305">305</a>         <strong class="jxr_keyword">return</strong> props;
<a name="306" href="#306">306</a>     }
<a name="307" href="#307">307</a> 
<a name="308" href="#308">308</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> ObjectData getObjectData(TypeDefinition typeDef, <a href="../../../../../../org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.html">StoredObject</a> so, String filter, String user,
<a name="309" href="#309">309</a>             Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
<a name="310" href="#310">310</a>             Boolean includePolicyIds, Boolean includeACL, ExtensionsData extension) {
<a name="311" href="#311">311</a> 
<a name="312" href="#312">312</a>         ObjectDataImpl od = <strong class="jxr_keyword">new</strong> ObjectDataImpl();
<a name="313" href="#313">313</a> 
<a name="314" href="#314">314</a>         <strong class="jxr_keyword">if</strong> (so == <strong class="jxr_keyword">null</strong>) {
<a name="315" href="#315">315</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisObjectNotFoundException(<span class="jxr_string">"Illegal object id: null"</span>);
<a name="316" href="#316">316</a>         }
<a name="317" href="#317">317</a> 
<a name="318" href="#318">318</a>         <em class="jxr_comment">// build properties collection</em>
<a name="319" href="#319">319</a>         List&lt;String&gt; requestedIds = FilterParser.getRequestedIdsFromFilter(filter);
<a name="320" href="#320">320</a>         Properties props = getPropertiesFromObject(so, typeDef, requestedIds, <strong class="jxr_keyword">true</strong>);
<a name="321" href="#321">321</a> 
<a name="322" href="#322">322</a>         <em class="jxr_comment">// fill output object</em>
<a name="323" href="#323">323</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> != includeAllowableActions &amp;&amp; includeAllowableActions) {
<a name="324" href="#324">324</a>             AllowableActions allowableActions = so.getAllowableActions(user);
<a name="325" href="#325">325</a>             od.setAllowableActions(allowableActions);
<a name="326" href="#326">326</a>         }
<a name="327" href="#327">327</a> 
<a name="328" href="#328">328</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> != includeACL &amp;&amp; includeACL) {
<a name="329" href="#329">329</a>             Acl acl = so instanceof <a href="../../../../../../org/apache/chemistry/opencmis/inmemory/storedobj/api/DocumentVersion.html">DocumentVersion</a> ? ((DocumentVersion) so).getParentDocument().getAcl() : so.getAcl();
<a name="330" href="#330">330</a>             od.setAcl(acl);
<a name="331" href="#331">331</a>         }
<a name="332" href="#332">332</a>         od.setIsExactAcl(<strong class="jxr_keyword">true</strong>);
<a name="333" href="#333">333</a> 
<a name="334" href="#334">334</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> != includePolicyIds &amp;&amp; includePolicyIds) {
<a name="335" href="#335">335</a>             od.setPolicyIds(DataObjectCreator.fillPolicyIds(so));
<a name="336" href="#336">336</a>         }
<a name="337" href="#337">337</a> 
<a name="338" href="#338">338</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> != includeRelationships &amp;&amp; includeRelationships != IncludeRelationships.NONE) {
<a name="339" href="#339">339</a>             od.setRelationships(DataObjectCreator.fillRelationships(includeRelationships, so, user));
<a name="340" href="#340">340</a>         }
<a name="341" href="#341">341</a> 
<a name="342" href="#342">342</a>         <strong class="jxr_keyword">if</strong> (renditionFilter != <strong class="jxr_keyword">null</strong> &amp;&amp; renditionFilter.length() &gt; 0) {
<a name="343" href="#343">343</a>             od.setRenditions(DataObjectCreator.fillRenditions(so));
<a name="344" href="#344">344</a>         }
<a name="345" href="#345">345</a> 
<a name="346" href="#346">346</a>         od.setProperties(props);
<a name="347" href="#347">347</a> 
<a name="348" href="#348">348</a>         <em class="jxr_comment">// Note: do not set change event info for this call</em>
<a name="349" href="#349">349</a>         <strong class="jxr_keyword">return</strong> od;
<a name="350" href="#350">350</a>     }
<a name="351" href="#351">351</a> 
<a name="352" href="#352">352</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> ObjectData getObjectDataQueryResult(TypeDefinition typeDef, <a href="../../../../../../org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.html">StoredObject</a> so, String user,
<a name="353" href="#353">353</a>             Map&lt;String, String&gt; requestedProperties, Map&lt;String, String&gt; requestedFuncs,
<a name="354" href="#354">354</a>             Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter) {
<a name="355" href="#355">355</a> 
<a name="356" href="#356">356</a>         ObjectDataImpl od = <strong class="jxr_keyword">new</strong> ObjectDataImpl();
<a name="357" href="#357">357</a> 
<a name="358" href="#358">358</a>         <em class="jxr_comment">// build properties collection</em>
<a name="359" href="#359">359</a>         Properties props = getPropertiesFromObject(so, typeDef, requestedProperties, requestedFuncs);
<a name="360" href="#360">360</a> 
<a name="361" href="#361">361</a>         <em class="jxr_comment">// fill output object</em>
<a name="362" href="#362">362</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> != includeAllowableActions &amp;&amp; includeAllowableActions) {
<a name="363" href="#363">363</a>             <em class="jxr_comment">// AllowableActions allowableActions =</em>
<a name="364" href="#364">364</a>             <em class="jxr_comment">// DataObjectCreator.fillAllowableActions(so, user);</em>
<a name="365" href="#365">365</a>             AllowableActions allowableActions = so.getAllowableActions(user);
<a name="366" href="#366">366</a>             od.setAllowableActions(allowableActions);
<a name="367" href="#367">367</a>         }
<a name="368" href="#368">368</a> 
<a name="369" href="#369">369</a>         od.setAcl(so.getAcl());
<a name="370" href="#370">370</a>         od.setIsExactAcl(<strong class="jxr_keyword">true</strong>);
<a name="371" href="#371">371</a> 
<a name="372" href="#372">372</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> != includeRelationships &amp;&amp; includeRelationships != IncludeRelationships.NONE) {
<a name="373" href="#373">373</a>             od.setRelationships(DataObjectCreator.fillRelationships(includeRelationships, so, user));
<a name="374" href="#374">374</a>         }
<a name="375" href="#375">375</a> 
<a name="376" href="#376">376</a>         <strong class="jxr_keyword">if</strong> (renditionFilter != <strong class="jxr_keyword">null</strong> &amp;&amp; renditionFilter.length() &gt; 0) {
<a name="377" href="#377">377</a>             od.setRenditions(DataObjectCreator.fillRenditions(so));
<a name="378" href="#378">378</a>         }
<a name="379" href="#379">379</a> 
<a name="380" href="#380">380</a>         od.setProperties(props);
<a name="381" href="#381">381</a> 
<a name="382" href="#382">382</a>         <strong class="jxr_keyword">return</strong> od;
<a name="383" href="#383">383</a>     }
<a name="384" href="#384">384</a> 
<a name="385" href="#385">385</a>     <em class="jxr_comment">// internal helpers</em>
<a name="386" href="#386">386</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> createStandardDefinition(AbstractPropertyDefinition&lt;?&gt; prop, String id, PropertyType propType,
<a name="387" href="#387">387</a>             String displayName, Cardinality card, Updatability upd) {
<a name="388" href="#388">388</a> 
<a name="389" href="#389">389</a>         <strong class="jxr_keyword">if</strong> (!NameValidator.isValidId(id)) {
<a name="390" href="#390">390</a>             <strong class="jxr_keyword">if</strong> (!NameValidator.isValidId(id)) {
<a name="391" href="#391">391</a>                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisInvalidArgumentException(NameValidator.ERROR_ILLEGAL_NAME);
<a name="392" href="#392">392</a>             }
<a name="393" href="#393">393</a>         }
<a name="394" href="#394">394</a> 
<a name="395" href="#395">395</a>         prop.setId(id);
<a name="396" href="#396">396</a>         <strong class="jxr_keyword">if</strong> (displayName == <strong class="jxr_keyword">null</strong>) {
<a name="397" href="#397">397</a>             prop.setDisplayName(<span class="jxr_string">"Sample "</span> + prop.getId() + <span class="jxr_string">" boolean property"</span>);
<a name="398" href="#398">398</a>         } <strong class="jxr_keyword">else</strong> {
<a name="399" href="#399">399</a>             prop.setDisplayName(displayName);
<a name="400" href="#400">400</a>         }
<a name="401" href="#401">401</a>         prop.setDescription(<span class="jxr_string">"This is a "</span> + prop.getDisplayName() + <span class="jxr_string">" property."</span>);
<a name="402" href="#402">402</a>         prop.setLocalName(id);
<a name="403" href="#403">403</a>         prop.setLocalNamespace(<span class="jxr_string">"local"</span>);
<a name="404" href="#404">404</a>         prop.setQueryName(id);
<a name="405" href="#405">405</a>         prop.setIsInherited(false);
<a name="406" href="#406">406</a>         prop.setCardinality(card);
<a name="407" href="#407">407</a>         prop.setIsOpenChoice(false);
<a name="408" href="#408">408</a>         prop.setIsQueryable(<strong class="jxr_keyword">true</strong>);
<a name="409" href="#409">409</a>         prop.setIsRequired(false);
<a name="410" href="#410">410</a>         prop.setIsOrderable(<strong class="jxr_keyword">true</strong>);
<a name="411" href="#411">411</a>         prop.setPropertyType(propType);
<a name="412" href="#412">412</a>         prop.setUpdatability(upd);
<a name="413" href="#413">413</a>     }
<a name="414" href="#414">414</a> 
<a name="415" href="#415">415</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> fillOptionalPropertyData(TypeDefinition td, List&lt;PropertyData&lt;?&gt;&gt; properties) {
<a name="416" href="#416">416</a>         <strong class="jxr_keyword">for</strong> (PropertyData&lt;?&gt; pd : properties) {
<a name="417" href="#417">417</a>             fillOptionalPropertyData(td, (AbstractPropertyData&lt;?&gt;) pd);
<a name="418" href="#418">418</a>         }
<a name="419" href="#419">419</a>     }
<a name="420" href="#420">420</a> 
<a name="421" href="#421">421</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> fillOptionalPropertyData(TypeDefinition td, AbstractPropertyData&lt;?&gt; property) {
<a name="422" href="#422">422</a>         PropertyDefinition&lt;?&gt; pd = td.getPropertyDefinitions().get(property.getId());
<a name="423" href="#423">423</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> != pd) {
<a name="424" href="#424">424</a>             String displayName = pd.getDisplayName();
<a name="425" href="#425">425</a>             String queryName = pd.getQueryName();
<a name="426" href="#426">426</a>             String localName = pd.getLocalName();
<a name="427" href="#427">427</a>             property.setDisplayName(displayName);
<a name="428" href="#428">428</a>             property.setLocalName(localName);
<a name="429" href="#429">429</a>             property.setQueryName(queryName);
<a name="430" href="#430">430</a>         }
<a name="431" href="#431">431</a>     }
<a name="432" href="#432">432</a> 
<a name="433" href="#433">433</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> PropertyData&lt;?&gt; getEmptyValue(PropertyDefinition&lt;?&gt; propDef) {
<a name="434" href="#434">434</a>         <strong class="jxr_keyword">if</strong> (propDef.getPropertyType().equals(PropertyType.BOOLEAN))
<a name="435" href="#435">435</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> PropertyBooleanImpl(propDef.getId(), (Boolean) <strong class="jxr_keyword">null</strong>);
<a name="436" href="#436">436</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propDef.getPropertyType().equals(PropertyType.DATETIME))
<a name="437" href="#437">437</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> PropertyDateTimeImpl(propDef.getId(), (GregorianCalendar) <strong class="jxr_keyword">null</strong>);
<a name="438" href="#438">438</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propDef.getPropertyType().equals(PropertyType.DECIMAL))
<a name="439" href="#439">439</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> PropertyDecimalImpl(propDef.getId(), (BigDecimal) <strong class="jxr_keyword">null</strong>);
<a name="440" href="#440">440</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propDef.getPropertyType().equals(PropertyType.HTML))
<a name="441" href="#441">441</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> PropertyHtmlImpl(propDef.getId(), (String) <strong class="jxr_keyword">null</strong>);
<a name="442" href="#442">442</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propDef.getPropertyType().equals(PropertyType.ID))
<a name="443" href="#443">443</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> PropertyIdImpl(propDef.getId(), (String) <strong class="jxr_keyword">null</strong>);
<a name="444" href="#444">444</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propDef.getPropertyType().equals(PropertyType.INTEGER))
<a name="445" href="#445">445</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> PropertyIntegerImpl(propDef.getId(), (BigInteger) <strong class="jxr_keyword">null</strong>);
<a name="446" href="#446">446</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propDef.getPropertyType().equals(PropertyType.STRING))
<a name="447" href="#447">447</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> PropertyStringImpl(propDef.getId(), (String) <strong class="jxr_keyword">null</strong>);
<a name="448" href="#448">448</a>         <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propDef.getPropertyType().equals(PropertyType.URI))
<a name="449" href="#449">449</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> PropertyUriImpl(propDef.getId(), (String) <strong class="jxr_keyword">null</strong>);
<a name="450" href="#450">450</a>         <strong class="jxr_keyword">else</strong>
<a name="451" href="#451">451</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="452" href="#452">452</a>     }
<a name="453" href="#453">453</a>     
<a name="454" href="#454">454</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> AbstractPropertyData&lt;?&gt; clonePropertyData(PropertyData&lt;?&gt; prop) {
<a name="455" href="#455">455</a>         AbstractPropertyData&lt;?&gt; ad = <strong class="jxr_keyword">null</strong>;
<a name="456" href="#456">456</a>         
<a name="457" href="#457">457</a>         <strong class="jxr_keyword">if</strong> (prop instanceof PropertyBooleanImpl) {
<a name="458" href="#458">458</a>             PropertyBooleanImpl clone = <strong class="jxr_keyword">new</strong> PropertyBooleanImpl();
<a name="459" href="#459">459</a>             clone.setValues(((PropertyBooleanImpl)prop).getValues());
<a name="460" href="#460">460</a>             ad = clone;
<a name="461" href="#461">461</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (prop instanceof PropertyDateTimeImpl) {
<a name="462" href="#462">462</a>             PropertyDateTimeImpl clone = <strong class="jxr_keyword">new</strong> PropertyDateTimeImpl();
<a name="463" href="#463">463</a>             clone.setValues(((PropertyDateTimeImpl)prop).getValues());
<a name="464" href="#464">464</a>             ad = clone;
<a name="465" href="#465">465</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (prop instanceof PropertyDecimalImpl) {
<a name="466" href="#466">466</a>             PropertyDecimalImpl clone = <strong class="jxr_keyword">new</strong> PropertyDecimalImpl();
<a name="467" href="#467">467</a>             clone.setValues(((PropertyDecimalImpl)prop).getValues());
<a name="468" href="#468">468</a>             ad = clone;
<a name="469" href="#469">469</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (prop instanceof PropertyHtmlImpl) {
<a name="470" href="#470">470</a>             PropertyHtmlImpl clone = <strong class="jxr_keyword">new</strong> PropertyHtmlImpl();
<a name="471" href="#471">471</a>             clone.setValues(((PropertyHtmlImpl)prop).getValues());
<a name="472" href="#472">472</a>             ad = clone;
<a name="473" href="#473">473</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (prop instanceof PropertyIdImpl) {
<a name="474" href="#474">474</a>             PropertyIdImpl clone = <strong class="jxr_keyword">new</strong> PropertyIdImpl();
<a name="475" href="#475">475</a>             clone.setValues(((PropertyIdImpl)prop).getValues());
<a name="476" href="#476">476</a>             ad = clone;
<a name="477" href="#477">477</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (prop instanceof PropertyIntegerImpl) {
<a name="478" href="#478">478</a>             PropertyIntegerImpl clone = <strong class="jxr_keyword">new</strong> PropertyIntegerImpl();
<a name="479" href="#479">479</a>             clone.setValues(((PropertyIntegerImpl)prop).getValues());
<a name="480" href="#480">480</a>             ad = clone;
<a name="481" href="#481">481</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (prop instanceof PropertyStringImpl) {
<a name="482" href="#482">482</a>             PropertyStringImpl clone = <strong class="jxr_keyword">new</strong> PropertyStringImpl();
<a name="483" href="#483">483</a>             clone.setValues(((PropertyStringImpl)prop).getValues());
<a name="484" href="#484">484</a>             ad = clone;
<a name="485" href="#485">485</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (prop instanceof PropertyUriImpl) {
<a name="486" href="#486">486</a>             PropertyUriImpl clone = <strong class="jxr_keyword">new</strong> PropertyUriImpl();
<a name="487" href="#487">487</a>             clone.setValues(((PropertyUriImpl)prop).getValues());
<a name="488" href="#488">488</a>             ad = clone;
<a name="489" href="#489">489</a>         } <strong class="jxr_keyword">else</strong> {
<a name="490" href="#490">490</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Unknown property type: "</span> + prop.getClass());
<a name="491" href="#491">491</a>         }
<a name="492" href="#492">492</a>         
<a name="493" href="#493">493</a>         ad.setDisplayName(prop.getDisplayName());
<a name="494" href="#494">494</a>         ad.setId(prop.getId());
<a name="495" href="#495">495</a>         ad.setLocalName(prop.getLocalName());
<a name="496" href="#496">496</a>         ad.setQueryName(prop.getQueryName());
<a name="497" href="#497">497</a>         ad.setExtensions(prop.getExtensions());
<a name="498" href="#498">498</a> 
<a name="499" href="#499">499</a>         <strong class="jxr_keyword">return</strong> ad;        
<a name="500" href="#500">500</a>     }
<a name="501" href="#501">501</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

