[jboss-cvs] JBossAS SVN: r90972 - in projects/docs/enterprise/4.3.5/Hibernate: Hibernate_Search and 8 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jul 8 21:36:28 EDT 2009


Author: irooskov at redhat.com
Date: 2009-07-08 21:36:28 -0400 (Wed, 08 Jul 2009)
New Revision: 90972

Added:
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/Makefile
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Architecture.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Architecture.xml.bak
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Author_Group.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Batch_Index.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Batch_Index.xml.bak
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Book_Info.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Configuration.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Configuration.xml.bak
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Feedback.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Getting_Started.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Getting_Started.xml.bak
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Hibernate_Search_Reference_Guide_CP05.ent
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Hibernate_Search_Reference_Guide_CP05.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Introduction.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Lucene_Native.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Mapping.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Mapping.xml.bak
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Optimize.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Optimize.xml.bak
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Preface.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Query.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Query.xml.bak
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Revision_History.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/hibernate_logo_a.png
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/icon.svg
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/jms-backend.png
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/lucene-backend.png
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Architecture.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Author_Group.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Batch_Index.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Book_Info.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Configuration.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Feedback.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Getting_Started.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Hibernate_Search_Reference_Guide_CP05_FP01.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Introduction.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Lucene_Native.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Mapping.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Optimize.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Preface.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Query.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Revision_History.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/Makefile
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Author_Group.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Book_Info.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Checkconstraints.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Defineconstraints.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Feedback.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Hibernate_Validator_Reference_Guide_CP05.ent
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Hibernate_Validator_Reference_Guide_CP05.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Introduction.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Preface.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Revision_History.xml
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotate_constraint.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotate_interface.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotation_syntax.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/app_validate.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/check_property.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/class_validate.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/constraint_annotation.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/define_descriptor.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/hibernate_config.xmlt
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/pres_validation.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/userdefined_descriptor.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/validator_capitalized.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/validator_implementation.javat
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/images/
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/images/hibernate_logo_a.png
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/images/icon.svg
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Author_Group.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Book_Info.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Checkconstraints.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Defineconstraints.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Feedback.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Hibernate_Validator_Reference_Guide_CP05_FP01.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Introduction.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Preface.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Revision_History.pot
   projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/extras/
Log:
porting books from CP05_FP01 to the main CP05 release


Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/Makefile
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/Makefile	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/Makefile	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,11 @@
+#Makefile for Hibernate_Search
+
+XML_LANG	= en-US
+DOCNAME		= Hibernate_Search
+BRAND		= JBoss
+
+#OTHER_LANGS	= as-IN bn-IN de-DE es-ES fr-FR gu-IN hi-IN it-IT ja-JP kn-IN ko-KR ml-IN mr-IN or-IN pa-IN pt-BR ru-RU si-LK ta-IN te-IN zh-CN zh-TW
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Architecture.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Architecture.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Architecture.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,238 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Architecture">
+	<title>Architecture</title>
+	
+	<section id="Hibernate_Search-Architecture-Overview">
+		<title>Overview</title>
+		
+		<para>Hibernate Search consists of an indexing and an index search engine.
+			Both are backed by Apache Lucene.</para>
+		
+		<para>When an entity is inserted, updated or removed in/from the database,
+			Hibernate Search keeps track of this event (through the Hibernate event
+			system) and schedules an index update. All the index updates are handled
+			for you without you having to use the Apache Lucene APIs (see <xref linkend="Hibernate_Search-Configuration-Event" />).</para>
+		
+		<para>To interact with Apache Lucene indexes, Hibernate Search has the
+			notion of <classname>DirectoryProvider</classname>s. A directory provider
+			will manage a given Lucene <classname>Directory</classname> type. You can
+			configure directory providers to adjust the directory target (see <xref linkend="Hibernate_Search-Configuration-Directory" />).</para>
+		
+		<para>Hibernate Search can also use the Lucene index to search an entity
+			and return a list of managed entities saving you the tedious object to
+			Lucene document mapping. The same persistence context is shared between
+			Hibernate and Hibernate Search; as a matter of fact, the Search Session is
+			built on top of the Hibernate Session. The application code use the
+			unified <classname>org.hibernate.Query</classname> or
+			<classname>javax.persistence.Query</classname> APIs exactly the way a HQL,
+			JPA-QL or native queries would do.</para>
+		
+		<para>To be more efficient, Hibernate Search batches the write
+			interactions with the Lucene index. There is currently two types of
+			batching depending on the expected scope.</para>
+		
+		<para>Outside a transaction, the index update operation is executed right
+			after the actual database operation. This scope is really a no scoping
+			setup and no batching is performed.</para>
+		
+		<para>It is however recommended, for both your database and Hibernate
+			Search, to execute your operation in a transaction be it JDBC or JTA. When
+			in a transaction, the index update operation is scheduled for the
+			transaction commit and discarded in case of transaction rollback. The
+			batching scope is the transaction. There are two immediate
+			benefits:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>Performance: Lucene indexing works better when operation are
+					executed in batch.</para>
+			</listitem>
+			
+			<listitem>
+				<para>ACIDity: The work executed has the same scoping as the one
+					executed by the database transaction and is executed if and only if
+					the transaction is committed.</para>
+				
+				<note>
+					<para>Disclaimer, the work in not ACID in the strict sense of it,
+						but ACID behavior is rarely useful for full text search indexes
+						since they can be rebuilt from the source at any time.</para>
+				</note>
+			</listitem>
+		</itemizedlist>
+		
+		<para>You can think of those two scopes (no scope vs transactional) as the
+			equivalent of the (infamous) auto-commit vs transactional behavior. From a
+			performance perspective, the <emphasis>in transaction</emphasis> mode is
+			recommended. The scoping choice is made transparently: Hibernate Search
+			detects the presence of a transaction and adjust the scoping.</para>
+		
+		<note>
+			<para>
+				Hibernate Search works perfectly fine in the Hibernate / EntityManager long conversation pattern aka. atomic conversation.
+			</para>
+		</note>
+		
+		<note>
+			<para>
+				Depending on user demand, additional scoping will be considered, the pluggability mechanism being already in place.
+			</para>	
+		</note>
+	</section>
+	
+	<section id="Hibernate_Search-Architecture-Back_End">
+		<title>Back End</title>
+		
+		<para>
+			Hibernate Search offers the ability to let the scoped work being
+			processed by different back ends. Two back ends are provided out of the
+			box for two different scenarios.
+		</para>
+		
+		<note>
+			<para>
+				Hibernate Search is an extensible architecture. While not yet part of the public API, plugging a third party back end is possible. Feel free to drop ideas to <literal>hibernate-dev at lists.jboss.org</literal>.
+			</para>	
+		</note>
+		
+		<section id="Hibernate_Search-Back_End-Lucene">
+			<title>Lucene</title>
+			
+			<para>
+				In this mode, all index update operations applied on a given node
+				(JVM) will be executed to the Lucene directories (through the directory
+				providers) by the same node. This mode is typically used in non
+				clustered environment or in clustered environments where the directory
+				store is shared.
+			</para>
+			
+			<mediaobject>
+				<imageobject>
+					<imagedata 
+						   fileref="images/lucene-backend.png"
+						   format="PNG" />
+				</imageobject>
+			</mediaobject>
+			
+			<para>
+				This mode targets non clustered applications, or clustered
+				applications where the Directory is taking care of the locking
+				strategy.
+			</para>
+			
+			<para>
+				The main advantage is simplicity and immediate visibility of the
+				changes in Lucene queries (a requirement is some applications).
+			</para>
+		</section>
+		
+		<section id="Hibernate_Search-Back_End-JMS">
+			<title>JMS</title>
+			
+			<para>
+				All index update operations applied on a given node are sent to a
+				JMS queue. A unique reader will then process the queue and update the
+				master Lucene index. The master index is then replicated on a regular
+				basis to the slave copies. This is known as the master / slaves pattern.
+				The master is the sole responsible for updating the Lucene index. The
+				slaves can accept read as well as write operations. However, they only
+				process the read operation on their local index copy and delegate the
+				update operations to the master.
+			</para>
+			
+			<mediaobject>
+				<imageobject>
+					<imagedata fileref="images/jms-backend.png"
+						   format="PNG" />
+				</imageobject>
+			</mediaobject>
+			
+			<para>
+				This mode targets clustered environments where throughput is critical, and index update delays are affordable. Reliability is ensured by the JMS provider and by having the slaves working on a local copy of the index.
+			</para>
+		</section>
+		
+	</section>
+	
+	<section id="Hibernate_Search-Architecture-Work_Execution">
+		<title>Work Execution</title>
+		
+		<para>The indexing work (done by the back end) can be executed
+			synchronously with the transaction commit (or update operation if out of
+			transaction), or asynchronously.</para>
+		
+		<section id="Hibernate_Search-Work_Execution-Synchronous">
+			<title>Synchronous</title>
+			
+			<para>This is the safe mode where the back end work is executed in
+				concert with the transaction commit. Under highly concurrent
+				environment, this can lead to throughput limitations (due to the Apache
+				Lucene lock mechanism) and it can increase the system response time if
+				the backend is significantly slower than the transactional process and
+				if a lot of IO operations are involved.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Work_Execution-Asynchronous">
+			<title>Asynchronous</title>
+			
+			<para>This mode delegates the work done by the back end to a different
+				thread. That way, throughput and response time are (to a certain extend)
+				decorrelated from the back end performance. The drawback is that a small
+				delay appears between the transaction commit and the index update and a
+				small overhead is introduced to deal with thread management.</para>
+			
+			<para>It is recommended to use synchronous execution first and evaluate
+				asynchronous execution if performance problems occur and after having
+				set up a proper benchmark (i.e. not a lonely cowboy hitting the system in
+				a completely unrealistic way).</para>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Architecture-Reader_Strategy">
+		<title>Reader Strategy</title>
+		
+		<para>When executing a query, Hibernate Search interacts with the Apache
+			Lucene indexes through a reader strategy. Choosing a reader strategy will
+			depend on the profile of the application (frequent updates, read mostly,
+			asynchronous index update etc). See also <xref
+								      linkend="Hibernate_Search-Configuration-Reader_Strategy" /></para>
+		
+		<section id="Hibernate_Search-Reader_Strategy-Shared">
+			<title>Shared</title>
+			
+			<para>With this strategy, Hibernate Search will share the same
+				IndexReader, for a given Lucene index, across multiple queries and
+				threads provided that the IndexReader is still up-to-date. If the
+				IndexReader is not up-to-date, a new one is opened and provided.
+				Generally speaking, this strategy provides much better performances than
+				the <literal>not-shared</literal> strategy. It is especially true if the
+				number of updates is much lower than the reads. This strategy is the
+				default.</para>
+		</section>
+		
+		<section>
+			<title>Not-shared</title>
+			
+			<para>Every time a query is executed, a Lucene IndexReader is opened.
+				This strategy is not the most efficient since opening and warming up an
+				IndexReader can be a relatively expensive operation.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Reader_Strategy-Custom">
+			<title>Custom</title>
+			
+			<para>You can write your own reader strategy that suits your application
+				needs by implementing
+				<classname>org.hibernate.search.reader.ReaderProvider</classname>. The
+				implementation must be thread safe.</para>
+			
+			<note>
+				<para>Some additional strategies are planned in future versions of
+					Hibernate Search</para>
+			</note>
+		</section>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Architecture.xml.bak
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Architecture.xml.bak	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Architecture.xml.bak	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,238 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Architecture">
+	<title>Architecture</title>
+	
+	<section id="Hibernate_Search-Architecture-Overview">
+		<title>Overview</title>
+		
+		<para>Hibernate Search consists of an indexing and an index search engine.
+			Both are backed by Apache Lucene.</para>
+		
+		<para>When an entity is inserted, updated or removed in/from the database,
+			Hibernate Search keeps track of this event (through the Hibernate event
+			system) and schedules an index update. All the index updates are handled
+			for you without you having to use the Apache Lucene APIs (see <xref linkend="Hibernate_Search-Configuration-Event" />).</para>
+		
+		<para>To interact with Apache Lucene indexes, Hibernate Search has the
+			notion of <classname>DirectoryProvider</classname>s. A directory provider
+			will manage a given Lucene <classname>Directory</classname> type. You can
+			configure directory providers to adjust the directory target (see <xref linkend="Hibernate_Search-Configuration-Directory" />).</para>
+		
+		<para>Hibernate Search can also use the Lucene index to search an entity
+			and return a list of managed entities saving you the tedious object to
+			Lucene document mapping. The same persistence context is shared between
+			Hibernate and Hibernate Search; as a matter of fact, the Search Session is
+			built on top of the Hibernate Session. The application code use the
+			unified <classname>org.hibernate.Query</classname> or
+			<classname>javax.persistence.Query</classname> APIs exactly the way a HQL,
+			JPA-QL or native queries would do.</para>
+		
+		<para>To be more efficient, Hibernate Search batches the write
+			interactions with the Lucene index. There is currently two types of
+			batching depending on the expected scope.</para>
+		
+		<para>Outside a transaction, the index update operation is executed right
+			after the actual database operation. This scope is really a no scoping
+			setup and no batching is performed.</para>
+		
+		<para>It is however recommended, for both your database and Hibernate
+			Search, to execute your operation in a transaction be it JDBC or JTA. When
+			in a transaction, the index update operation is scheduled for the
+			transaction commit and discarded in case of transaction rollback. The
+			batching scope is the transaction. There are two immediate
+			benefits:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>Performance: Lucene indexing works better when operation are
+					executed in batch.</para>
+			</listitem>
+			
+			<listitem>
+				<para>ACIDity: The work executed has the same scoping as the one
+					executed by the database transaction and is executed if and only if
+					the transaction is committed.</para>
+				
+				<note>
+					<para>Disclaimer, the work in not ACID in the strict sense of it,
+						but ACID behavior is rarely useful for full text search indexes
+						since they can be rebuilt from the source at any time.</para>
+				</note>
+			</listitem>
+		</itemizedlist>
+		
+		<para>You can think of those two scopes (no scope vs transactional) as the
+			equivalent of the (infamous) autocommit vs transactional behavior. From a
+			performance perspective, the <emphasis>in transaction</emphasis> mode is
+			recommended. The scoping choice is made transparently: Hibernate Search
+			detects the presence of a transaction and adjust the scoping.</para>
+		
+		<note>
+			<para>
+				Hibernate Search works perfectly fine in the Hibernate / EntityManager long conversation pattern aka. atomic conversation.
+			</para>
+		</note>
+		
+		<note>
+			<para>
+				Depending on user demand, additional scoping will be considered, the pluggability mechanism being already in place.
+			</para>	
+		</note>
+	</section>
+	
+	<section id="Hibernate_Search-Architecture-Back_End">
+		<title>Back End</title>
+		
+		<para>
+			Hibernate Search offers the ability to let the scoped work being
+			processed by different back ends. Two back ends are provided out of the
+			box for two different scenarios.
+		</para>
+		
+		<note>
+			<para>
+				Hibernate Search is an extensible architecture. While not yet part of the public API, plugging a third party back end is possible. Feel free to drop ideas to <literal>hibernate-dev at lists.jboss.org</literal>.
+			</para>	
+		</note>
+		
+		<section id="Hibernate_Search-Back_End-Lucene">
+			<title>Lucene</title>
+			
+			<para>
+				In this mode, all index update operations applied on a given node
+				(JVM) will be executed to the Lucene directories (through the directory
+				providers) by the same node. This mode is typically used in non
+				clustered environment or in clustered environments where the directory
+				store is shared.
+			</para>
+			
+			<mediaobject>
+				<imageobject>
+					<imagedata 
+						   fileref="images/lucene-backend.png"
+						   format="PNG" />
+				</imageobject>
+			</mediaobject>
+			
+			<para>
+				This mode targets non clustered applications, or clustered
+				applications where the Directory is taking care of the locking
+				strategy.
+			</para>
+			
+			<para>
+				The main advantage is simplicity and immediate visibility of the
+				changes in Lucene queries (a requirement is some applications).
+			</para>
+		</section>
+		
+		<section id="Hibernate_Search-Back_End-JMS">
+			<title>JMS</title>
+			
+			<para>
+				All index update operations applied on a given node are sent to a
+				JMS queue. A unique reader will then process the queue and update the
+				master Lucene index. The master index is then replicated on a regular
+				basis to the slave copies. This is known as the master / slaves pattern.
+				The master is the sole responsible for updating the Lucene index. The
+				slaves can accept read as well as write operations. However, they only
+				process the read operation on their local index copy and delegate the
+				update operations to the master.
+			</para>
+			
+			<mediaobject>
+				<imageobject>
+					<imagedata fileref="images/jms-backend.png"
+						   format="PNG" />
+				</imageobject>
+			</mediaobject>
+			
+			<para>
+				This mode targets clustered environments where throughput is critical, and index update delays are affordable. Reliability is ensured by the JMS provider and by having the slaves working on a local copy of the index.
+			</para>
+		</section>
+		
+	</section>
+	
+	<section id="Hibernate_Search-Architecture-Work_Execution">
+		<title>Work Execution</title>
+		
+		<para>The indexing work (done by the back end) can be executed
+			synchronously with the transaction commit (or update operation if out of
+			transaction), or asynchronously.</para>
+		
+		<section id="Hibernate_Search-Work_Execution-Synchronous">
+			<title>Synchronous</title>
+			
+			<para>This is the safe mode where the back end work is executed in
+				concert with the transaction commit. Under highly concurrent
+				environment, this can lead to throughput limitations (due to the Apache
+				Lucene lock mechanism) and it can increase the system response time if
+				the backend is significantly slower than the transactional process and
+				if a lot of IO operations are involved.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Work_Execution-Asynchronous">
+			<title>Asynchronous</title>
+			
+			<para>This mode delegates the work done by the back end to a different
+				thread. That way, throughput and response time are (to a certain extend)
+				decorrelated from the back end performance. The drawback is that a small
+				delay appears between the transaction commit and the index update and a
+				small overhead is introduced to deal with thread management.</para>
+			
+			<para>It is recommended to use synchronous execution first and evaluate
+				asynchronous execution if performance problems occur and after having
+				set up a proper benchmark (ie not a lonely cowboy hitting the system in
+				a completely unrealistic way).</para>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Architecture-Reader_Strategy">
+		<title>Reader Strategy</title>
+		
+		<para>When executing a query, Hibernate Search interacts with the Apache
+			Lucene indexes through a reader strategy. chosing a reader strategy will
+			depend on the profile of the application (frequent updates, read mostly,
+			asynchronous index update etc). See also <xref
+								      linkend="Hibernate_Search-Configuration-Reader_Strategy" /></para>
+		
+		<section id="Hibernate_Search-Reader_Strategy-Shared">
+			<title>Shared</title>
+			
+			<para>With this strategy, Hibernate Search will share the same
+				IndexReader, for a given Lucene index, across multiple queries and
+				threads provided that the IndexReader is still up-to-date. If the
+				IndexReader is not up-to-date, a new one is opened and provided.
+				Generally speaking, this strategy provides much better performances than
+				the <literal>not-shared</literal> strategy. It is especially true if the
+				number of updates is much lower than the reads. This strategy is the
+				default.</para>
+		</section>
+		
+		<section>
+			<title>Not-shared</title>
+			
+			<para>Every time a query is executed, a Lucene IndexReader is opened.
+				This strategy is not the most efficient since opening and warming up an
+				IndexReader can be a relatively expensive operation.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Reader_Strategy-Custom">
+			<title>Custom</title>
+			
+			<para>You can write your own reader strategy that suits your application
+				needs by implementing
+				<classname>org.hibernate.search.reader.ReaderProvider</classname>. The
+				implementation must be thread safe.</para>
+			
+			<note>
+				<para>Some additional strategies are planned in future versions of
+					Hibernate Search</para>
+			</note>
+		</section>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Author_Group.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Author_Group.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Author_Group.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,14 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+	<author>
+		<firstname>Hibernate Development Team</firstname>
+		<surname></surname>
+	</author>
+	<editor>
+		<firstname>Red Hat Inc. Engineering Content Services</firstname>
+		<surname></surname>
+	</editor>
+</authorgroup>

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Batch_Index.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Batch_Index.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Batch_Index.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,114 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Batch_Index">
+	<title>Manual Indexing</title>
+	
+<section id="Hibernate_Search-Batch_Index-Indexing">
+    	<title>Indexing</title>
+	
+	<para>It is sometimes useful to index an object even if this object is not
+		inserted nor updated to the database. This is especially true when you
+		want to build your index for the first time. You can achieve that goal
+		using the <classname>FullTextSession</classname>.</para>
+	
+	<programlisting>FullTextSession fullTextSession = Search.createFullTextSession(session);
+		Transaction tx = fullTextSession.beginTransaction();
+		for (Customer customer : customers) {
+		<emphasis role="bold">fullTextSession.index(customer);</emphasis>
+		}
+		tx.commit(); //index are written at commit time    </programlisting>
+	
+	<para>For maximum efficiency, Hibernate Search batches index operations
+		and executes them at commit time (Note: you don't need to use
+		<classname>org.hibernate.Transaction</classname> in a JTA
+		environment).</para>
+	
+	<para>If you expect to index a lot of data, you need to be careful about
+		memory consumption: since all documents are kept in a queue until the
+		transaction commit, you can potentially face an
+		<classname>OutOfMemoryException</classname>.</para>
+	
+	<para>To avoid that, you can set up the
+		<literal>hibernate.search.worker.batch_size</literal> property to a
+		sensitive value: all index operations are queued until
+		<literal>batch_size</literal> is reached. Every time
+		<literal>batch_size</literal> is reached (or if the transaction is
+		committed), the queue is processed (freeing memory) and emptied. Be aware
+		that the changes cannot be rolled-back if the number of index elements goes
+		beyond <literal>batch_size</literal>. Be also aware that the queue limits
+		are also applied on regular transparent indexing (and not only when
+		<literal>session.index()</literal> is used). That's why a sensitive
+		<literal>batch_size</literal> value is expected.</para>
+	
+	<para>Other parameters which also can affect indexing time and memory
+		consumption are
+		<literal>hibernate.search.[default|&lt;indexname&gt;].batch.merge_factor</literal>
+		,
+		<literal>hibernate.search.[default|&lt;indexname&gt;].batch.max_merge_docs</literal>
+		and
+		<literal>hibernate.search.[default|&lt;indexname&gt;].batch.max_buffered_docs</literal>
+		. These parameters are Lucene specific and Hibernate Search is just
+		passing these parameters through - see <xref linkend="Hibernate_Search-Configuration-Lucene_Index_Performance" /> for more details.</para>
+	
+	<para>Here is an especially efficient way to index a given class (useful
+		for index (re)initialization):</para>
+	
+	<programlisting>fullTextSession.setFlushMode(FlushMode.MANUAL);
+		fullTextSession.setCacheMode(CacheMode.IGNORE);
+		transaction = fullTextSession.beginTransaction();
+		//Scrollable results will avoid loading too many objects in memory
+		ScrollableResults results = fullTextSession.createCriteria( Email.class ).scroll(
+		ScrollMode.FORWARD_ONLY );
+		int index = 0;
+		while( results.next() ) {
+		index++;
+		fullTextSession.index( results.get(0) ); //index each element
+		if (index % batchSize == 0) s.clear(); //clear every batchSize since the queue is processed
+		}
+		transaction.commit();</programlisting>
+	
+	<para>It is critical that <literal>batchSize</literal> in the previous
+		example matches the <literal>batch_size</literal> value described
+		previously.</para>
+</section>
+
+<section id="Hibernate_Search-Batch_Index-Purging">
+	<title>Purging</title>
+	
+	<para>It is equally possible to remove an entity or all entities of a
+		given type from a Lucene index without the need to physically remove them
+		from the database. This operation is named purging and is done through the
+		<classname>FullTextSession</classname>.</para>
+	
+	<programlisting>FullTextSession fullTextSession = Search.createFullTextSession(session);
+		Transaction tx = fullTextSession.beginTransaction();
+		for (Customer customer : customers) {
+		<emphasis role="bold">fullTextSession.purge( Customer.class, customer.getId() );</emphasis>
+		}
+		tx.commit(); //index are written at commit time    </programlisting>
+	
+	<para>Purging will remove the entity with the given id from the Lucene
+		index but will not touch the database.</para>
+	
+	<para>If you need to remove all entities of a given type, you can use the
+		<command>purgeAll</command> method.</para>
+	
+	<programlisting>FullTextSession fullTextSession = Search.createFullTextSession(session);
+		Transaction tx = fullTextSession.beginTransaction();
+		<emphasis role="bold">fullTextSession.purgeAll( Customer.class );</emphasis>
+		//optionally optimize the index
+		//fullTextSession.getSearchFactory().optimize( Customer.class );
+		tx.commit(); //index are written at commit time    </programlisting>
+	
+	<para>It is recommended to optimize the index after such an
+		operation.</para>
+	
+	<note>
+		<para>Methods <command>index</command>,
+			<command>purge</command> and <command>purgeAll</command> are
+			available on <classname>FullTextEntityManager</classname> as well</para>
+	</note>
+</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Batch_Index.xml.bak
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Batch_Index.xml.bak	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Batch_Index.xml.bak	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,114 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Batch_Index">
+	<title>Manual Indexing</title>
+	
+<section id="Hibernate_Search-Batch_Index-Indexing">
+    	<title>Indexing</title>
+	
+	<para>It is sometimes useful to index an object even if this object is not
+		inserted nor updated to the database. This is especially true when you
+		want to build your index for the first time. You can achieve that goal
+		using the <classname>FullTextSession</classname>.</para>
+	
+	<programlisting>FullTextSession fullTextSession = Search.createFullTextSession(session);
+		Transaction tx = fullTextSession.beginTransaction();
+		for (Customer customer : customers) {
+		<emphasis role="bold">fullTextSession.index(customer);</emphasis>
+		}
+		tx.commit(); //index are written at commit time    </programlisting>
+	
+	<para>For maximum efficiency, Hibernate Search batches index operations
+		and executse them at commit time (Note: you don't need to use
+		<classname>org.hibernate.Transaction</classname> in a JTA
+		environment).</para>
+	
+	<para>If you expect to index a lot of data, you need to be careful about
+		memory consumption: since all documents are kept in a queue until the
+		transaction commit, you can potentially face an
+		<classname>OutOfMemoryException</classname>.</para>
+	
+	<para>To avoid that, you can set up the
+		<literal>hibernate.search.worker.batch_size</literal> property to a
+		sensitive value: all index operations are queued until
+		<literal>batch_size</literal> is reached. Every time
+		<literal>batch_size</literal> is reached (or if the transaction is
+		committed), the queue is processed (freeing memory) and emptied. Be aware
+		that the changes cannot be rollbacked if the number of index elements goes
+		beyond <literal>batch_size</literal>. Be also aware that the queue limits
+		are also applied on regular transparent indexing (and not only when
+		<literal>session.index()</literal> is used). That's why a sensitive
+		<literal>batch_size</literal> value is expected.</para>
+	
+	<para>Other parameters which also can affect indexing time and memory
+		consumption are
+		<literal>hibernate.search.[default|&lt;indexname&gt;].batch.merge_factor</literal>
+		,
+		<literal>hibernate.search.[default|&lt;indexname&gt;].batch.max_merge_docs</literal>
+		and
+		<literal>hibernate.search.[default|&lt;indexname&gt;].batch.max_buffered_docs</literal>
+		. These parameters are Lucene specific and Hibernate Search is just
+		passing these paramters through - see <xref linkend="Hibernate_Search-Configuration-Lucene_Index_Performance" /> for more details.</para>
+	
+	<para>Here is an especially efficient way to index a given class (useful
+		for index (re)initialization):</para>
+	
+	<programlisting>fullTextSession.setFlushMode(FlushMode.MANUAL);
+		fullTextSession.setCacheMode(CacheMode.IGNORE);
+		transaction = fullTextSession.beginTransaction();
+		//Scrollable results will avoid loading too many objects in memory
+		ScrollableResults results = fullTextSession.createCriteria( Email.class ).scroll(
+		ScrollMode.FORWARD_ONLY );
+		int index = 0;
+		while( results.next() ) {
+		index++;
+		fullTextSession.index( results.get(0) ); //index each element
+		if (index % batchSize == 0) s.clear(); //clear every batchSize since the queue is processed
+		}
+		transaction.commit();</programlisting>
+	
+	<para>It is critical that <literal>batchSize</literal> in the previous
+		example matches the <literal>batch_size</literal> value described
+		previously.</para>
+</section>
+
+<section id="Hibernate_Search-Batch_Index-Purging">
+	<title>Purging</title>
+	
+	<para>It is equally possible to remove an entity or all entities of a
+		given type from a Lucene index without the need to physically remove them
+		from the database. This operation is named purging and is done through the
+		<classname>FullTextSession</classname>.</para>
+	
+	<programlisting>FullTextSession fullTextSession = Search.createFullTextSession(session);
+		Transaction tx = fullTextSession.beginTransaction();
+		for (Customer customer : customers) {
+		<emphasis role="bold">fullTextSession.purge( Customer.class, customer.getId() );</emphasis>
+		}
+		tx.commit(); //index are written at commit time    </programlisting>
+	
+	<para>Purging will remove the entity with the given id from the Lucene
+		index but will not touch the database.</para>
+	
+	<para>If you need to remove all entities of a given type, you can use the
+		<command>purgeAll</command> method.</para>
+	
+	<programlisting>FullTextSession fullTextSession = Search.createFullTextSession(session);
+		Transaction tx = fullTextSession.beginTransaction();
+		<emphasis role="bold">fullTextSession.purgeAll( Customer.class );</emphasis>
+		//optionally optimize the index
+		//fullTextSession.getSearchFactory().optimize( Customer.class );
+		tx.commit(); //index are written at commit time    </programlisting>
+	
+	<para>It is recommended to optimize the index after such an
+		operation.</para>
+	
+	<note>
+		<para>Methods <command>index</command>,
+			<command>purge</command> and <command>purgeAll</command> are
+			available on <classname>FullTextEntityManager</classname> as well</para>
+	</note>
+</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Book_Info.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Book_Info.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Book_Info.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,36 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<bookinfo id="Hibernate_Search">
+	<title>Hibernate Search Reference Guide CP05</title>
+	<subtitle>Apache <trademark>Lucene</trademark> Integration</subtitle>
+	<subtitle>For use with JBoss Enterprise Application Platform 4.3.0 Cumulative Patch 5</subtitle>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.3</productnumber>
+	<edition>1.0</edition>
+	<pubsnumber>2</pubsnumber>
+<!--	<pubdate>November, 2008</pubdate> -->
+	<abstract>
+		<para>	
+			This book is a Reference Guide to Hibernate Search for JBoss Enterprise Application Platform 4.3.0 CP05
+		</para>
+	</abstract>
+	<corpauthor>
+		<inlinemediaobject>
+			<imageobject>
+				<imagedata format='SVG' fileref="Common_Content/images/title_logo.svg" />
+			</imageobject>
+			<textobject><phrase>Logo</phrase></textobject>
+		</inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+
+
+

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Configuration.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Configuration.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Configuration.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,713 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Configuration">
+	<title>Configuration</title>
+	
+	<section id="Hibernate_Search-Configuration-Directory">
+		<title>Directory Configuration</title>
+		
+		<para>Apache Lucene has a notion of <literal>Directory</literal> to store
+			the index files. The Directory implementation can be customized, but
+			Lucene comes bundled with a file system
+			(<literal>FSDirectoryProvider</literal>) and a in memory
+			(<literal>RAMDirectoryProvider</literal>) implementation. Hibernate Search
+			has the notion of <literal>DirectoryProvider</literal> that handles the
+			configuration and the initialization of the Lucene Directory.</para>
+		
+		<table>
+			<title>List of built-in Directory Providers in the namespace of org.hibernate.search.store.</title>
+			
+			<tgroup cols="3">
+				<thead>
+					<row>
+						<entry align="center">Class</entry>
+						
+						<entry align="center">Description</entry>
+						
+						<entry align="center">Properties</entry>
+					</row>
+				</thead>
+				
+				<tbody>
+					<row>
+						<entry>FSDirectoryProvider</entry>
+						
+						<entry>File system based directory. The directory used will be
+							&lt;indexBase&gt;/&lt; <literal>@Indexed.name</literal>
+							&gt;</entry>
+						
+						<entry><para><literal>indexBase</literal> : Base
+								directory</para><para><literal>indexName</literal>: override
+								@Index.name (useful for sharded indexes)</para></entry>
+					</row>
+					
+					<row>
+						<entry>FSMasterDirectoryProvider</entry>
+						
+						<entry><para>File system based directory. Like
+								FSDirectoryProvider. It also copies the index to a source
+								directory (aka copy directory) on a regular basis.
+							</para><para>The recommended value for the refresh period is (at least) 50% higher that the time to copy the information (default
+								3600 seconds - 60 minutes).</para><para>Note that the copy is
+								based on an incremental copy mechanism reducing the average copy
+								time.</para><para>DirectoryProvider typically used on the master
+								node in a JMS back end cluster.</para>DirectoryProvider typically
+							used on slave nodes using a JMS back end.</entry>
+						
+						<entry><para><literal>indexBase</literal>: Base
+								directory</para><para><literal>indexName</literal>: override
+								@Index.name (useful for sharded
+								indexes)</para><para><literal>sourceBase</literal>: Source (copy)
+								base directory.</para><para><literal>source</literal>: Source
+								directory suffix (default to <literal>@Indexed.name</literal>).
+								The actual source directory name being
+								<filename>&lt;sourceBase&gt;/&lt;source&gt;</filename>
+							</para><para>refresh: refresh period in second (the copy will take
+								place every refresh seconds).</para></entry>
+					</row>
+					
+					<row>
+						<entry>FSSlaveDirectoryProvider</entry>
+						
+						<entry><para>File system based directory. Like
+								FSDirectoryProvider, but retrieves a master version (source) on a
+								regular basis. To avoid locking and inconsistent search results, 2
+								local copies are kept. </para><para>The recommended value for the
+								refresh period is (at least) 50% higher that the time to copy the
+								information (default 3600 seconds - 60 minutes).</para><para>Note
+								that the copy is based on an incremental copy mechanism reducing
+								the average copy time.</para><para>DirectoryProvider typically
+								used on slave nodes using a JMS back end.</para></entry>
+						
+						<entry><para><literal>indexBase</literal>: Base
+								directory</para><para><literal>indexName</literal>: override
+								@Index.name (useful for sharded
+								indexes)</para><para><literal>sourceBase</literal>: Source (copy)
+								base directory.</para><para><literal>source</literal>: Source
+								directory suffix (default to <literal>@Indexed.name</literal>).
+								The actual source directory name being
+								<filename>&lt;sourceBase&gt;/&lt;source&gt;</filename>
+							</para><para>refresh: refresh period in second (the copy will take
+								place every refresh seconds).</para></entry>
+					</row>
+					
+					<row>
+						<entry>RAMDirectoryProvider</entry>
+						
+						<entry>Memory based directory, the directory will be uniquely
+							identified (in the same deployment unit) by the
+							<literal>@Indexed.name</literal> element</entry>
+						
+						<entry>none</entry>
+					</row>
+				</tbody>
+			</tgroup>
+		</table>
+		
+		<para>If the built-in directory providers does not fit your needs, you can
+			write your own directory provider by implementing the
+			<classname>org.hibernate.store.DirectoryProvider</classname>
+			interface</para>
+		
+		<para>Each indexed entity is associated to a Lucene index (an index can be
+			shared by several entities but this is not usually the case). You can
+			configure the index through properties prefixed by
+			<command>hibernate.search.</command><replaceable>indexname</replaceable>
+			. Default properties inherited to all indexes can be defined using the
+			prefix <command>hibernate.search.default.</command></para>
+		
+		<para>To define the directory provider of a given index, you use the property
+			<literal>hibernate.search.<replaceable>indexname</replaceable>.directory_provider
+			</literal>.</para>
+		
+		<programlisting>hibernate.search.default.directory_provider  org.hibernate.search.store.FSDirectoryProvider
+			hibernate.search.default.indexBase=/usr/lucene/indexes
+			
+			hibernate.search.Rules.directory_provider  org.hibernate.search.store.RAMDirectoryProvider        </programlisting>
+		
+		<para>applied on</para>
+		
+		<programlisting>
+ at Indexed(name="Status")
+public class Status { ... }
+			
+ at Indexed(name="Rules")
+public class Rule { ... }</programlisting>
+		
+		<para>will create a file system directory in
+			<filename>/usr/lucene/indexes/Status</filename> where the Status entities
+			will be indexed, and use an in memory directory named
+			<literal>Rules</literal> where Rule entities will be indexed.</para>
+		
+		<para>You can easily define common rules like the directory provider and
+			base directory, and override those default later on on a per index
+			basis.</para>
+		
+		<para>Writing your own <classname>DirectoryProvider</classname>, you can
+			utilize this configuration mechanism as well.</para>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-Index_Sharding">
+		<title>Index Sharding</title>
+		
+		<para>In some extreme cases involving huge indexes (in size), it is
+			necessary to split (shard) the indexing data of a given entity type into
+			several Lucene indexes. This solution is not recommended until you reach
+			significant index sizes and index update time are slowing down. The main
+			drawback of index sharding is that searches will end up being slower since
+			more files have to be opened for a single search. In other words don't do
+			it until you have problems :)</para>
+		
+		<para>Despite this strong warning, Hibernate Search allows you to index a
+			given entity type into several sub indexes. Data is sharded into the
+			different sub indexes thanks to an
+			<classname>IndexShardingStrategy</classname>. By default, no sharding
+			strategy is enabled, unless the number of shards is configured. To
+			configure the number of shards use the following property</para>
+		
+		<programlisting>hibernate.search.&lt;indexName&gt;.sharding_strategy.nbr_of_shards 5</programlisting>
+		
+		<para>This will use 5 different shards.</para>
+		
+		<para>The default sharding strategy, when shards are set up, splits the
+			data according to the hash value of the id string representation
+			(generated by the Field Bridge). This ensures a fairly balanced sharding.
+			You can replace the strategy by implementing
+			<literal>IndexShardingStrategy</literal> and by setting the following
+			property</para>
+		
+		<programlisting>hibernate.search.&lt;indexName&gt;.sharding_strategy my.shardingstrategy.Implementation</programlisting>
+		
+		<para>Each shard has an independent directory provider configuration as
+			described in <xref linkend="Hibernate_Search-Configuration-Directory" />. The
+			DirectoryProvider default name for the previous example are
+			<literal>&lt;indexName&gt;.0</literal> to
+			<literal>&lt;indexName&gt;.4</literal>. In other words, each shard has the
+			name of it's owning index followed by <command>.</command> (dot) and its
+			index number.</para>
+		
+		<programlisting>hibernate.search.default.indexBase /usr/lucene/indexes
+			
+			hibernate.search.Animal.sharding_strategy.nbr_of_shards 5
+			hibernate.search.Animal.directory_provider org.hibernate.search.store.FSDirectoryProvider
+			hibernate.search.Animal.0.indexName Animal00
+			hibernate.search.Animal.3.indexBase /usr/lucene/sharded
+			hibernate.search.Animal.3.indexName Animal03</programlisting>
+		
+		<para>This configuration uses the default id string hashing strategy and
+			shards the Animal index into 5 sub-indexes. All sub-indexes are
+			FSDirectoryProvider instances and the directory where each sub-index is
+			stored is as followed:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>for subindex 0: /usr/lucene/indexes/Animal00 (shared indexBase
+					but overridden indexName)</para>
+			</listitem>
+			
+			<listitem>
+				<para>for subindex 1: /usr/lucene/indexes/Animal.1 (shared indexBase,
+					default indexName)</para>
+			</listitem>
+			
+			<listitem>
+				<para>for subindex 2: /usr/lucene/indexes/Animal.2 (shared indexBase,
+					default indexName)</para>
+			</listitem>
+			
+			<listitem>
+				<para>for subindex 3: /usr/lucene/shared/Animal03 (overridden
+					indexBase, overridden indexName)</para>
+			</listitem>
+			
+			<listitem>
+				<para>for subindex 4: /usr/lucene/indexes/Animal.4 (shared indexBase,
+					default indexName)</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-Worker_Configuration">
+		<title>Worker Configuration</title>
+		
+		<para>It is possible to refine how Hibernate Search interacts with Lucene
+			through the worker configuration. The work can be executed to the Lucene
+			directory or sent to a JMS queue for later processing. When processed to
+			the Lucene directory, the work can be processed synchronously or
+			asynchronously to the transaction commit.</para>
+		
+		<para>You can define the worker configuration using the following
+			properties</para>
+		
+		<table>
+			<title>Worker Configuration (in the namespace of hibernate.worker)</title>
+			
+			<tgroup cols="2">
+				<colspec align="center" />
+								
+				<colspec colname="c1" colwidth="2*"/>
+				<colspec colname="c2" colwidth="1*"/>
+				
+				<tbody>
+					<row>
+						<entry>Property</entry>
+						
+						<entry>Description</entry>
+					</row>
+					
+					<row>
+						<entry><literal>backend</literal></entry>
+						
+						<entry>Out of the box support for the Apache Lucene back end and
+							the JMS back end. Default to <literal>lucene</literal>. Supports
+							also <literal>jms</literal>.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>execution</literal></entry>
+						
+						<entry>Supports synchronous and asynchrounous execution. Default
+							to <literal><literal>sync</literal></literal>. Supports also
+							<literal>async</literal>.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>thread_pool.size</literal></entry>
+						
+						<entry>Defines the number of threads in the pool. useful only for
+							asynchrounous execution. Default to 1.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>buffer_queue.max</literal></entry>
+						
+						<entry>Defines the maximal number of work queue if the thread poll
+							is starved. Useful only for asynchrounous execution. Default to
+							infinite. If the limit is reached, the work is done by the main
+							thread.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>jndi.*</literal></entry>
+						
+						<entry>Defines the JNDI properties to initiate the InitialContext
+							(if needed). JNDI is only used by the JMS back end.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>
+								jms.connection_factory</literal></entry>
+						
+						<entry>Mandatory for the JMS back end. Defines the JNDI name to
+							lookup the JMS connection factory from
+							(<literal>java:/ConnectionFactory</literal> by default in JBoss
+							AS)</entry>
+					</row>
+					
+					<row>
+						<entry><literal>jms.queue</literal></entry>
+						
+						<entry>Mandatory for the JMS back end. Defines the JNDI name to
+							lookup the JMS queue from. The queue will be used to post work
+							messages.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>batch_size</literal></entry>
+						
+						<entry>Defines the maximum number of elements indexed before
+							flushing the transaction-bound queue. Default to 0 (i.e. no limit).
+							See <xref linkend="Hibernate_Search-Batch_Index" /> for more
+							information.</entry>
+					</row>
+				</tbody>
+			</tgroup>
+		</table>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-JMS_Backend">
+		<title>JMS Master/Slave Configuration</title>
+		
+		<para>This section describes in greater detail how to configure the Master
+			/ Slaves Hibernate Search architecture.</para>
+		
+		<section id="Hibernate_Search-JMS_Backend-Slave_Nodes">
+			<title>Slave Nodes</title>
+			
+			<para>Every index update operation is sent to a JMS queue. Index querying
+				operations are executed on a local index copy.</para>
+			
+			<programlisting>### slave configuration
+				
+				## DirectoryProvider
+				# (remote) master location
+				hibernate.search.default.sourceBase = /mnt/mastervolume/lucenedirs/mastercopy
+				
+				# local copy location
+				hibernate.search.default.indexBase = /Users/prod/lucenedirs
+				
+				# refresh every half hour
+				hibernate.search.default.refresh = 1800
+				
+				# appropriate directory provider
+				hibernate.search.default.directory_provider = org.hibernate.search.store.FSSlaveDirectoryProvider
+				
+				## Backend configuration
+				hibernate.search.worker.backend = jms
+				hibernate.search.worker.jms.connection_factory = java:/ConnectionFactory
+				hibernate.search.worker.jms.queue = queue/hibernatesearch
+				#optional jndi configuration (check your JMS provider for more information)
+				
+				## Optional asynchronous execution strategy
+				# org.hibernate.worker.execution = async
+				# org.hibernate.worker.thread_pool.size = 2
+				# org.hibernate.worker.buffer_queue.max = 50</programlisting>
+			
+			<para>A file system local copy is recommended for faster search
+				results.</para>
+			
+			<para>The refresh period should be higher that the expected time
+				copy.</para>
+		</section>
+		
+		<section id="Hibernate_Search-JMS_Backend-Master_Node">
+			<title>Master node</title>
+			
+			<para>Every index update operation is taken from a JMS queue and
+				executed. The master index(es) is(are) copied on a regular basis.</para>
+			
+			<programlisting>### master configuration
+				
+				## DirectoryProvider
+				# (remote) master location where information is copied to
+				hibernate.search.default.sourceBase = /mnt/mastervolume/lucenedirs/mastercopy
+				
+				# local master location
+				hibernate.search.default.indexBase = /Users/prod/lucenedirs
+				
+				# refresh every half hour
+				hibernate.search.default.refresh = 1800
+				
+				# appropriate directory provider
+				hibernate.search.default.directory_provider = org.hibernate.search.store.FSMasterDirectoryProvider
+				
+				## Backend configuration
+				#Backend is the default lucene one</programlisting>
+			
+			<para>The refresh period should be higher that the expected time
+				copy.</para>
+			
+			<para>In addition to the Hibernate Search framework configuration, a
+				Message Driven Bean should be written and set up to process index works
+				queue through JMS.</para>
+			
+			<programlisting>@MessageDriven(activationConfig = {
+				@ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"),
+				@ActivationConfigProperty(propertyName="destination", propertyValue="queue/hiebrnatesearch"),
+				@ActivationConfigProperty(propertyName="DLQMaxResent", propertyValue="1")
+				} )
+				public class MDBSearchController extends AbstractJMSHibernateSearchController implements MessageListener {
+				@PersistenceContext EntityManager em;
+				
+				//method retrieving the appropriate session
+				protected Session getSession() {
+				return (Session) em.getDelegate();
+				}
+				
+				//potentially close the session opened in #getSession(), not needed here
+				protected void cleanSessionIfNeeded(Session session) 
+				}
+				}</programlisting>
+			
+			<para>This example inherit the abstract JMS controller class available
+				and implements a JavaEE 5 MDB. This implementation is given as an
+				example and, while most likely more complex, can be adjusted to make use
+				of non Java EE Message Driven Beans. For more information about the
+				<command>getSession()</command> and
+				<command>cleanSessionIfNeeded()</command>, please check
+				<classname>AbstractJMSHibernateSearchController</classname>'s
+				javadoc.</para>
+			
+			<note>
+				<para>Hibernate Search test suite makes use of JBoss Embedded to test
+					the JMS integration. It allows the unit test to run both the MDB
+					container and JBoss Messaging (JMS provider) in a standalone way
+					(marketed by some as "lightweight").</para>
+			</note>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-Reader_Strategy">
+		<title>Reader Strategy Configuration</title>
+		
+		<para>The different reader strategies are described in <xref linkend="Hibernate_Search-Architecture-Reader_Strategy" />. The default reader
+			strategy is <literal>shared</literal>. This can be adjusted:</para>
+		
+		<programlisting>hibernate.search.reader.strategy = not-shared</programlisting>
+		
+		<para>Adding this property switch to the <literal>non shared</literal>
+			strategy.</para>
+		
+		<para>Or if you have a custom reader strategy:</para>
+		
+		<programlisting>hibernate.search.reader.strategy = my.corp.myapp.CustomReaderProvider</programlisting>
+		
+		<para>where <classname>my.corp.myapp.CustomReaderProvider</classname> is
+			the custom strategy implementation</para>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-Event">
+		<title>Enabling Hibernate Search and automatic indexing</title>
+		
+		<section id="Hibernate_Search-Event-Enabling_Hibernate_Search">
+			<title>Enabling Hibernate Search</title>
+			
+			<para>Hibernate Search is enabled out of the box when using Hibernate
+				Annotations or Hibernate EntityManager. If, for some reason you need to
+				disable it, set
+				<literal>hibernate.search.autoregister_listeners</literal> to false.
+				Note that there is no performance runtime when the listeners are enabled
+				while no entity is indexable.</para>
+			
+			<para>To enable Hibernate Search in Hibernate Core, add the
+				<literal>FullTextIndexEventListener</literal> for the three Hibernate
+				events that occur after changes are executed to the database. Once
+				again, such a configuration is not useful with Hibernate Annotations or
+				Hibernate EntityManager.</para>
+			
+			<programlisting>&lt;hibernate-configuration&gt;
+				&lt;session-factory&gt;
+				...
+				&lt;event type="post-update"/&gt;
+				&lt;listener class="org.hibernate.search.event.FullTextIndexEventListener"/&gt;
+				&lt;/event&gt;
+				&lt;event type="post-insert"/&gt;
+				&lt;listener class="org.hibernate.search.event.FullTextIndexEventListener"/&gt;
+				&lt;/event&gt;
+				&lt;event type="post-delete"/&gt;
+				&lt;listener class="org.hibernate.search.event.FullTextIndexEventListener"/&gt;
+				&lt;/event&gt;
+				&lt;/session-factory&gt;
+				&lt;/hibernate-configuration&gt;</programlisting>
+			
+			<para>Be sure to add the appropriate jar files in your classpath. Check
+				<literal>lib/README.TXT</literal> for the list of third party libraries.
+				A typical installation on top of Hibernate Annotations will add:</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para><filename>hibernate-search.jar</filename>: the core
+						engine</para>
+				</listitem>
+				
+				<listitem>
+					<para><filename>lucene-core-*.jar</filename>: Lucene core
+						engine</para>
+				</listitem>
+			</itemizedlist>
+			
+			<section>
+				<title>Hibernate Core 3.2.6 and beyond</title>
+				
+				<para>If you use Hibernate Core 3.2.6 and beyond, make sure to add
+					three additional event listeners that cope with collection
+					events</para>
+				
+				<programlisting>&lt;hibernate-configuration&gt;
+					&lt;session-factory&gt;
+					...
+					&lt;event type="post-collection-recreate"/&gt;
+					&lt;listener class="org.hibernate.search.event.FullTextIndexCollectionEventListener"/&gt;
+					&lt;/event&gt;
+					&lt;event type="post-collection-remove"/&gt;
+					&lt;listener class="org.hibernate.search.event.FullTextIndexCollectionEventListener"/&gt;
+					&lt;/event&gt;
+					&lt;event type="post-collection-update"/&gt;
+					&lt;listener class="org.hibernate.search.event.FullTextIndexCollectionEventListener"/&gt;
+					&lt;/event&gt;
+					&lt;/session-factory&gt;
+					&lt;/hibernate-configuration&gt;</programlisting>
+				
+				<para>Those additional event listeners have been introduced in
+					Hibernate 3.2.6. note the
+					<classname>FullTextIndexCollectionEventListener</classname> usage. You
+					need to explicitly reference those event listeners unless you use
+					Hibernate Annotations 3.3.1 and above.</para>
+			</section>
+		</section>
+		
+		<section id="Hibernate_Search-Event-Automatic_Indexing">
+			<title>Automatic indexing</title>
+			
+			<para>By default, every time an object is inserted, updated or deleted
+				through Hibernate, Hibernate Search updates the according Lucene index.
+				It is sometimes desirable to disable that features if either your index
+				is read-only or if index updates are done in a batch way (see <xref linkend="Hibernate_Search-Batch_Index" />).</para>
+			
+			<para>To disable event based indexing, set</para>
+			
+			<programlisting>hibernate.search.indexing_strategy manual</programlisting>
+			
+			<note>
+				<para>In most case, the JMS backend provides the best of both world, a
+					lightweight event based system keeps track of all changes in the
+					system, and the heavyweight indexing process is done by a separate
+					process or machine.</para>
+			</note>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-Lucene_Index_Performance">
+		<title>Tuning Lucene indexing performance</title>
+		
+		<para>Hibernate Search allows you to tune the Lucene indexing performance
+			by specifying a set of parameters which are passed through to underlying
+			Lucene <literal>IndexWriter</literal> such as
+			<literal>mergeFactor</literal>, <literal>maxMergeDocs</literal> and
+			<literal>maxBufferedDocs</literal>. You can specify these parameters
+			either as default values applying for all indexes or on a per index
+			basis.</para>
+		
+		<para>There are two sets of parameters allowing for different performance
+			settings depending on the use case. During indexing operations triggered
+			by database modifications, the following ones are used: <itemizedlist>
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].transaction.merge_factor</literal></para>
+				</listitem>
+				
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].transaction.max_merge_docs</literal></para>
+				</listitem>
+				
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].transaction.max_buffered_docs</literal></para>
+				</listitem>
+			</itemizedlist>When indexing occurs via
+			<literal>FullTextSession.index()</literal> (see <xref linkend="Hibernate_Search-Batch_Index" />), the following properties are used:
+			<itemizedlist>
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].batch.merge_factor</literal></para>
+				</listitem>
+				
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].batch.max_merge_docs</literal></para>
+				</listitem>
+				
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].batch.max_buffered_docs</literal></para>
+				</listitem>
+			</itemizedlist></para>
+		
+		<para>Unless the corresponding <literal>.batch</literal> property is
+			explicitly set, the value will default to the
+			<literal>.transaction</literal> property.</para>
+		
+		<para>For more information about Lucene indexing performances, please
+			refer to the Lucene documentation.</para>
+		
+		<table id="Configuration-Indexing_Performance">
+			<title>List of indexing performance properties in the namespace of hibernate.search.[default|&lt;indexname&gt;]</title>
+			
+			<tgroup cols="3">
+			
+			<colspec colname="c1" colwidth="3*"/>
+			<colspec colname="c2" colwidth="3*"/>
+			<colspec colname="c3" colwidth="2*"/>
+				
+				
+				<thead>
+					<row>
+						<entry align="center">Property</entry>
+						
+						<entry align="center">Description</entry>
+						
+						<entry align="center">Default Value</entry>
+					</row>
+				</thead>
+				
+				<tbody>
+					<row>
+						<entry><literal>transaction.merge_factor</literal></entry>
+						
+						<entry><para>Controls segment merge frequency and size. </para>
+							<para>Determines how often segment indices are merged when
+								insertion occurs. With smaller values, less RAM is used while
+								indexing, and searches on unoptimized indices are faster, but
+								indexing speed is slower. With larger values, more RAM is used
+								during indexing, and while searches on unoptimized indices are
+								slower, indexing is faster. Thus larger values (&gt; 10) are best
+								for batch index creation, and smaller values (&lt; 10) for indices
+								that are interactively maintained. The value must no be lower than
+								2.</para> <para>Used by Hibernate Search during index update
+								operations as part of database modifications.</para></entry>
+						
+						<entry>10</entry>
+					</row>
+					
+					<row>
+						<entry><literal>transaction.max_merge_docs</literal></entry>
+						
+						<entry><para>Defines the largest number of documents allowed in a
+								segment.</para> <para>Used by Hibernate Search during index update
+								operations as part of database modifications.</para></entry>
+						
+						<entry>Unlimited (Integer.MAX_VALUE)</entry>
+					</row>
+					
+					<row>
+						<entry><literal>transaction.
+								max_buffered_docs</literal></entry>
+						
+						<entry><para>Controls the amount of documents buffered in memory
+								during indexing. The bigger the more RAM is consumed.</para>
+							<para>Used by Hibernate Search during index update operations as
+								part of database modifications.</para></entry>
+						
+						<entry>10</entry>
+					</row>
+					
+					<row>
+						<entry><literal>batch.merge_factor</literal></entry>
+						
+						<entry><para>Controls segment merge frequency and size.</para>
+							<para>Determines how often segment indices are merged when
+								insertion occurs. With smaller values, less RAM is used while
+								indexing, and searches on unoptimized indices are faster, but
+								indexing speed is slower. With larger values, more RAM is used
+								during indexing, and while searches on unoptimized indices are
+								slower, indexing is faster. Thus larger values (&gt; 10) are best
+								for batch index creation, and smaller values (&lt; 10) for indices
+								that are interactively maintained. The value must no be lower than
+								2.</para> <para>Used during indexing via
+								<literal>FullTextSession.index()</literal></para></entry>
+						
+						<entry>10</entry>
+					</row>
+					
+					<row>
+						<entry><literal>batch.max_merge_docs</literal></entry>
+						
+						<entry><para>Defines the largest number of documents allowed in a
+								segment.</para> <para>Used during indexing via
+								<literal>FullTextSession.index()</literal></para></entry>
+						
+						<entry>Unlimited (Integer.MAX_VALUE)</entry>
+					</row>
+					
+					<row>
+						<entry><literal>batch.max_buffered_docs</literal></entry>
+						
+						<entry><para>Controls the amount of documents buffered in memory
+								during indexing. The bigger the more RAM is consumed.</para>
+							<para>Used during indexing via
+								<literal>FullTextSession.index()</literal></para></entry>
+						
+						<entry>10</entry>
+					</row>
+				</tbody>
+			</tgroup>
+		</table>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Configuration.xml.bak
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Configuration.xml.bak	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Configuration.xml.bak	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,712 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Configuration">
+	<title>Configuration</title>
+	
+	<section id="Hibernate_Search-Configuration-Directory">
+		<title>Directory Configuration</title>
+		
+		<para>Apache Lucene has a notion of <literal>Directory</literal> to store
+			the index files. The Directory implementation can be customized, but
+			Lucene comes bundled with a file system
+			(<literal>FSDirectoryProvider</literal>) and a in memory
+			(<literal>RAMDirectoryProvider</literal>) implementation. Hibernate Search
+			has the notion of <literal>DirectoryProvider</literal> that handles the
+			configuration and the initialization of the Lucene Directory.</para>
+		
+		<table>
+			<title>List of built-in Directory Providers in the namespace of org.hibernate.search.store.</title>
+			
+			<tgroup cols="3">
+				<thead>
+					<row>
+						<entry align="center">Class</entry>
+						
+						<entry align="center">Description</entry>
+						
+						<entry align="center">Properties</entry>
+					</row>
+				</thead>
+				
+				<tbody>
+					<row>
+						<entry>FSDirectoryProvider</entry>
+						
+						<entry>File system based directory. The directory used will be
+							&lt;indexBase&gt;/&lt; <literal>@Indexed.name</literal>
+							&gt;</entry>
+						
+						<entry><para><literal>indexBase</literal> : Base
+								directory</para><para><literal>indexName</literal>: override
+								@Index.name (useful for sharded indexes)</para></entry>
+					</row>
+					
+					<row>
+						<entry>FSMasterDirectoryProvider</entry>
+						
+						<entry><para>File system based directory. Like
+								FSDirectoryProvider. It also copies the index to a source
+								directory (aka copy directory) on a regular basis.
+							</para><para>The recommended value for the refresh period is (at least) 50% higher that the time to copy the information (default
+								3600 seconds - 60 minutes).</para><para>Note that the copy is
+								based on an incremental copy mechanism reducing the average copy
+								time.</para><para>DirectoryProvider typically used on the master
+								node in a JMS back end cluster.</para>DirectoryProvider typically
+							used on slave nodes using a JMS back end.</entry>
+						
+						<entry><para><literal>indexBase</literal>: Base
+								directory</para><para><literal>indexName</literal>: override
+								@Index.name (useful for sharded
+								indexes)</para><para><literal>sourceBase</literal>: Source (copy)
+								base directory.</para><para><literal>source</literal>: Source
+								directory suffix (default to <literal>@Indexed.name</literal>).
+								The actual source directory name being
+								<filename>&lt;sourceBase&gt;/&lt;source&gt;</filename>
+							</para><para>refresh: refresh period in second (the copy will take
+								place every refresh seconds).</para></entry>
+					</row>
+					
+					<row>
+						<entry>FSSlaveDirectoryProvider</entry>
+						
+						<entry><para>File system based directory. Like
+								FSDirectoryProvider, but retrieves a master version (source) on a
+								regular basis. To avoid locking and inconsistent search results, 2
+								local copies are kept. </para><para>The recommended value for the
+								refresh period is (at least) 50% higher that the time to copy the
+								information (default 3600 seconds - 60 minutes).</para><para>Note
+								that the copy is based on an incremental copy mechanism reducing
+								the average copy time.</para><para>DirectoryProvider typically
+								used on slave nodes using a JMS back end.</para></entry>
+						
+						<entry><para><literal>indexBase</literal>: Base
+								directory</para><para><literal>indexName</literal>: override
+								@Index.name (useful for sharded
+								indexes)</para><para><literal>sourceBase</literal>: Source (copy)
+								base directory.</para><para><literal>source</literal>: Source
+								directory suffix (default to <literal>@Indexed.name</literal>).
+								The actual source directory name being
+								<filename>&lt;sourceBase&gt;/&lt;source&gt;</filename>
+							</para><para>refresh: refresh period in second (the copy will take
+								place every refresh seconds).</para></entry>
+					</row>
+					
+					<row>
+						<entry>RAMDirectoryProvider</entry>
+						
+						<entry>Memory based directory, the directory will be uniquely
+							identified (in the same deployment unit) by the
+							<literal>@Indexed.name</literal> element</entry>
+						
+						<entry>none</entry>
+					</row>
+				</tbody>
+			</tgroup>
+		</table>
+		
+		<para>If the built-in directory providers does not fit your needs, you can
+			write your own directory provider by implementing the
+			<classname>org.hibernate.store.DirectoryProvider</classname>
+			interface</para>
+		
+		<para>Each indexed entity is associated to a Lucene index (an index can be
+			shared by several entities but this is not usually the case). You can
+			configure the index through properties prefixed by
+			<command>hibernate.search.</command><replaceable>indexname</replaceable>
+			. Default properties inherited to all indexes can be defined using the
+			prefix <command>hibernate.search.default.</command></para>
+		
+		<para>To define the directory provider of a given index, you use the property
+			<literal>hibernate.search.<replaceable>indexname</replaceable>.directory_provider
+			</literal>.</para>
+		
+		<programlisting>hibernate.search.default.directory_provider  org.hibernate.search.store.FSDirectoryProvider
+			hibernate.search.default.indexBase=/usr/lucene/indexes
+			
+			hibernate.search.Rules.directory_provider  org.hibernate.search.store.RAMDirectoryProvider        </programlisting>
+		
+		<para>applied on</para>
+		
+		<programlisting>
+ at Indexed(name="Status")
+public class Status { ... }
+			
+ at Indexed(name="Rules")
+public class Rule { ... }</programlisting>
+		
+		<para>will create a file system directory in
+			<filename>/usr/lucene/indexes/Status</filename> where the Status entities
+			will be indexed, and use an in memory directory named
+			<literal>Rules</literal> where Rule entities will be indexed.</para>
+		
+		<para>You can easily define common rules like the directory provider and
+			base directory, and overide those default later on on a per index
+			basis.</para>
+		
+		<para>Writing your own <classname>DirectoryProvider</classname>, you can
+			utilize this configuration mechanism as well.</para>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-Index_Sharding">
+		<title>Index Sharding</title>
+		
+		<para>In some extreme cases involving huge indexes (in size), it is
+			necessary to split (shard) the indexing data of a given entity type into
+			several Lucene indexes. This solution is not recommended until you reach
+			significant index sizes and index update time are slowing down. The main
+			drawback of index sharding is that searches will end up being slower since
+			more files have to be opend for a single search. In other words don't do
+			it until you have problems :)</para>
+		
+		<para>Despite this strong warning, Hibernate Search allows you to index a
+			given entity type into several sub indexes. Data is sharded into the
+			different sub indexes thanks to an
+			<classname>IndexShardingStrategy</classname>. By default, no sharding
+			strategy is enabled, unless the number of shards is configured. To
+			configure the number of shards use the following property</para>
+		
+		<programlisting>hibernate.search.&lt;indexName&gt;.sharding_strategy.nbr_of_shards 5</programlisting>
+		
+		<para>This will use 5 different shards.</para>
+		
+		<para>The default sharding strategy, when shards are set up, splits the
+			data according to the hash value of the id string representation
+			(generated by the Field Bridge). This ensures a fairly balanced sharding.
+			You can replace the strategy by implementing
+			<literal>IndexShardingStrategy</literal> and by setting the following
+			property</para>
+		
+		<programlisting>hibernate.search.&lt;indexName&gt;.sharding_strategy my.shardingstrategy.Implementation</programlisting>
+		
+		<para>Each shard has an independent directory provider configuration as
+			described in <xref linkend="Hibernate_Search-Configuration-Directory" />. The
+			DirectoryProvider default name for the previous example are
+			<literal>&lt;indexName&gt;.0</literal> to
+			<literal>&lt;indexName&gt;.4</literal>. In other words, each shard has the
+			name of it's owning index followed by <command>.</command> (dot) and its
+			index number.</para>
+		
+		<programlisting>hibernate.search.default.indexBase /usr/lucene/indexes
+			
+			hibernate.search.Animal.sharding_strategy.nbr_of_shards 5
+			hibernate.search.Animal.directory_provider org.hibernate.search.store.FSDirectoryProvider
+			hibernate.search.Animal.0.indexName Animal00
+			hibernate.search.Animal.3.indexBase /usr/lucene/sharded
+			hibernate.search.Animal.3.indexName Animal03</programlisting>
+		
+		<para>This configuration uses the default id string hashing strategy and
+			shards the Animal index into 5 subindexes. All subindexes are
+			FSDirectoryProvider instances and the directory where each subindex is
+			stored is as followed:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>for subindex 0: /usr/lucene/indexes/Animal00 (shared indexBase
+					but overridden indexName)</para>
+			</listitem>
+			
+			<listitem>
+				<para>for subindex 1: /usr/lucene/indexes/Animal.1 (shared indexBase,
+					default indexName)</para>
+			</listitem>
+			
+			<listitem>
+				<para>for subindex 2: /usr/lucene/indexes/Animal.2 (shared indexBase,
+					default indexName)</para>
+			</listitem>
+			
+			<listitem>
+				<para>for subindex 3: /usr/lucene/shared/Animal03 (overridden
+					indexBase, overridden indexName)</para>
+			</listitem>
+			
+			<listitem>
+				<para>for subindex 4: /usr/lucene/indexes/Animal.4 (shared indexBase,
+					default indexName)</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-Worker_Configuration">
+		<title>Worker Configuration</title>
+		
+		<para>It is possible to refine how Hibernate Search interacts with Lucene
+			through the worker configuration. The work can be exected to the Lucene
+			directory or sent to a JMS queue for later processing. When processed to
+			the Lucene directory, the work can be processed synchronously or
+			asynchronously to the transaction commit.</para>
+		
+		<para>You can define the worker configuration using the following
+			properties</para>
+		
+		<table>
+			<title>Worker Configuration (in the namespace of hibernate.worker)</title>
+			
+			<tgroup cols="2">
+				<colspec align="center" />
+								
+				<colspec colname="c1" colwidth="2*"/>
+				<colspec colname="c2" colwidth="1*"/>
+				
+				<tbody>
+					<row>
+						<entry>Property</entry>
+						
+						<entry>Description</entry>
+					</row>
+					
+					<row>
+						<entry><literal>backend</literal></entry>
+						
+						<entry>Out of the box support for the Apache Lucene back end and
+							the JMS back end. Default to <literal>lucene</literal>. Supports
+							also <literal>jms</literal>.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>execution</literal></entry>
+						
+						<entry>Supports synchronous and asynchrounous execution. Default
+							to <literal><literal>sync</literal></literal>. Supports also
+							<literal>async</literal>.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>thread_pool.size</literal></entry>
+						
+						<entry>Defines the number of threads in the pool. useful only for
+							asynchrounous execution. Default to 1.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>buffer_queue.max</literal></entry>
+						
+						<entry>Defines the maximal number of work queue if the thread poll
+							is starved. Useful only for asynchrounous execution. Default to
+							infinite. If the limit is reached, the work is done by the main
+							thread.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>jndi.*</literal></entry>
+						
+						<entry>Defines the JNDI properties to initiate the InitialContext
+							(if needed). JNDI is only used by the JMS back end.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>
+								jms.connection_factory</literal></entry>
+						
+						<entry>Mandatory for the JMS back end. Defines the JNDI name to
+							lookup the JMS connection factory from
+							(<literal>java:/ConnectionFactory</literal> by default in JBoss
+							AS)</entry>
+					</row>
+					
+					<row>
+						<entry><literal>jms.queue</literal></entry>
+						
+						<entry>Mandatory for the JMS back end. Defines the JNDI name to
+							lookup the JMS queue from. The queue will be used to post work
+							messages.</entry>
+					</row>
+					
+					<row>
+						<entry><literal>batch_size</literal></entry>
+						
+						<entry>Defines the maximum number of elements indexed before
+							flushing the transaction-bound queue. Default to 0 (ie no limit).
+							See <xref linkend="Hibernate_Search-Batch_Index" /> for more
+							information.</entry>
+					</row>
+				</tbody>
+			</tgroup>
+		</table>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-JMS_Backend">
+		<title>JMS Master/Slave Configuration</title>
+		
+		<para>This section describes in greater detail how to configure the Master
+			/ Slaves Hibernate Search architecture.</para>
+		
+		<section id="Hibernate_Search-JMS_Backend-Slave_Nodes">
+			<title>Slave Nodes</title>
+			
+			<para>Every index update operation is sent to a JMS queue. Index quering
+				operations are executed on a local index copy.</para>
+			
+			<programlisting>### slave configuration
+				
+				## DirectoryProvider
+				# (remote) master location
+				hibernate.search.default.sourceBase = /mnt/mastervolume/lucenedirs/mastercopy
+				
+				# local copy location
+				hibernate.search.default.indexBase = /Users/prod/lucenedirs
+				
+				# refresh every half hour
+				hibernate.search.default.refresh = 1800
+				
+				# appropriate directory provider
+				hibernate.search.default.directory_provider = org.hibernate.search.store.FSSlaveDirectoryProvider
+				
+				## Backend configuration
+				hibernate.search.worker.backend = jms
+				hibernate.search.worker.jms.connection_factory = java:/ConnectionFactory
+				hibernate.search.worker.jms.queue = queue/hibernatesearch
+				#optional jndi configuration (check your JMS provider for more information)
+				
+				## Optional asynchronous execution strategy
+				# org.hibernate.worker.execution = async
+				# org.hibernate.worker.thread_pool.size = 2
+				# org.hibernate.worker.buffer_queue.max = 50</programlisting>
+			
+			<para>A file system local copy is recommended for faster search
+				results.</para>
+			
+			<para>The refresh period should be higher that the expected time
+				copy.</para>
+		</section>
+		
+		<section id="Hibernate_Search-JMS_Backend-Master_Node">
+			<title>Master node</title>
+			
+			<para>Every index update operation is taken from a JMS queue and
+				executed. The master index(es) is(are) copied on a regular basis.</para>
+			
+			<programlisting>### master configuration
+				
+				## DirectoryProvider
+				# (remote) master location where information is copied to
+				hibernate.search.default.sourceBase = /mnt/mastervolume/lucenedirs/mastercopy
+				
+				# local master location
+				hibernate.search.default.indexBase = /Users/prod/lucenedirs
+				
+				# refresh every half hour
+				hibernate.search.default.refresh = 1800
+				
+				# appropriate directory provider
+				hibernate.search.default.directory_provider = org.hibernate.search.store.FSMasterDirectoryProvider
+				
+				## Backend configuration
+				#Backend is the default lucene one</programlisting>
+			
+			<para>The refresh period should be higher that the expected time
+				copy.</para>
+			
+			<para>In addition to the Hibernate Search framework configuration, a
+				Message Driven Bean should be written and set up to process index works
+				queue through JMS.</para>
+			
+			<programlisting>@MessageDriven(activationConfig = {
+				@ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"),
+				@ActivationConfigProperty(propertyName="destination", propertyValue="queue/hiebrnatesearch"),
+				@ActivationConfigProperty(propertyName="DLQMaxResent", propertyValue="1")
+				} )
+				public class MDBSearchController extends AbstractJMSHibernateSearchController implements MessageListener {
+				@PersistenceContext EntityManager em;
+				
+				//method retrieving the appropriate session
+				protected Session getSession() {
+				return (Session) em.getDelegate();
+				}
+				
+				//potentially close the session opened in #getSession(), not needed here
+				protected void cleanSessionIfNeeded(Session session) 
+				}
+				}</programlisting>
+			
+			<para>This example inherit the abstract JMS controller class available
+				and implements a JavaEE 5 MDB. This implementation is given as an
+				example and, while most likely more complex, can be adjusted to make use
+				of non Java EE Message Driven Beans. For more information about the
+				<command>getSession()</command> and
+				<command>cleanSessionIfNeeded()</command>, please check
+				<classname>AbstractJMSHibernateSearchController</classname>'s
+				javadoc.</para>
+			
+			<note>
+				<para>Hibernate Search test suite makes use of JBoss Embedded to test
+					the JMS integration. It allows the unit test to run both the MDB
+					container and JBoss Messaging (JMS provider) in a standalone way
+					(marketed by some as "lightweight").</para>
+			</note>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-Reader_Strategy">
+		<title>Reader Strategy Configuration</title>
+		
+		<para>The different reader strategies are described in <xref linkend="Hibernate_Search-Architecture-Reader_Strategy" />. The default reader
+			strategy is <literal>shared</literal>. This can be adjusted:</para>
+		
+		<programlisting>hibernate.search.reader.strategy = not-shared</programlisting>
+		
+		<para>Adding this property switch to the <literal>non shared</literal>
+			strategy.</para>
+		
+		<para>Or if you have a custom reader strategy:</para>
+		
+		<programlisting>hibernate.search.reader.strategy = my.corp.myapp.CustomReaderProvider</programlisting>
+		
+		<para>where <classname>my.corp.myapp.CustomReaderProvider</classname> is
+			the custom strategy implementation</para>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-Event">
+		<title>Enabling Hibernate Search and automatic indexing</title>
+		
+		<section id="Hibernate_Search-Event-Enabling_Hibernate_Search">
+			<title>Enabling Hibernate Search</title>
+			
+			<para>Hibernate Search is enabled out of the box when using Hibernate
+				Annotations or Hibernate EntityManager. If, for some reason you need to
+				disable it, set
+				<literal>hibernate.search.autoregister_listeners</literal> to false.
+				Note that there is no performance runtime when the listeners are enabled
+				while no entity is indexable.</para>
+			
+			<para>To enable Hibernate Search in Hibernate Core, add the
+				<literal>FullTextIndexEventListener</literal> for the three Hibernate
+				events that occur after changes are executed to the database. Once
+				again, such a configuration is not useful with Hibernate Annotations or
+				Hibernate EntityManager.</para>
+			
+			<programlisting>&lt;hibernate-configuration&gt;
+				&lt;session-factory&gt;
+				...
+				&lt;event type="post-update"/&gt;
+				&lt;listener class="org.hibernate.search.event.FullTextIndexEventListener"/&gt;
+				&lt;/event&gt;
+				&lt;event type="post-insert"/&gt;
+				&lt;listener class="org.hibernate.search.event.FullTextIndexEventListener"/&gt;
+				&lt;/event&gt;
+				&lt;event type="post-delete"/&gt;
+				&lt;listener class="org.hibernate.search.event.FullTextIndexEventListener"/&gt;
+				&lt;/event&gt;
+				&lt;/session-factory&gt;
+				&lt;/hibernate-configuration&gt;</programlisting>
+			
+			<para>Be sure to add the appropriate jar files in your classpath. Check
+				<literal>lib/README.TXT</literal> for the list of third party libraries.
+				A typical installation on top of Hibernate Annotations will add:</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para><filename>hibernate-search.jar</filename>: the core
+						engine</para>
+				</listitem>
+				
+				<listitem>
+					<para><filename>lucene-core-*.jar</filename>: Lucene core
+						engine</para>
+				</listitem>
+			</itemizedlist>
+			
+			<section>
+				<title>Hibernate Core 3.2.6 and beyond</title>
+				
+				<para>If you use Hibernate Core 3.2.6 and beyond, make sure to add
+					three additional event listeners that cope with collection
+					events</para>
+				
+				<programlisting>&lt;hibernate-configuration&gt;
+					&lt;session-factory&gt;
+					...
+					&lt;event type="post-collection-recreate"/&gt;
+					&lt;listener class="org.hibernate.search.event.FullTextIndexCollectionEventListener"/&gt;
+					&lt;/event&gt;
+					&lt;event type="post-collection-remove"/&gt;
+					&lt;listener class="org.hibernate.search.event.FullTextIndexCollectionEventListener"/&gt;
+					&lt;/event&gt;
+					&lt;event type="post-collection-update"/&gt;
+					&lt;listener class="org.hibernate.search.event.FullTextIndexCollectionEventListener"/&gt;
+					&lt;/event&gt;
+					&lt;/session-factory&gt;
+					&lt;/hibernate-configuration&gt;</programlisting>
+				
+				<para>Those additional event listeners have been introduced in
+					Hibernate 3.2.6. note the
+					<classname>FullTextIndexCollectionEventListener</classname> usage. You
+					need to explicitly reference those event listeners unless you use
+					Hibernate Annotations 3.3.1 and above.</para>
+			</section>
+		</section>
+		
+		<section id="Hibernate_Search-Event-Automatic_Indexing">
+			<title>Automatic indexing</title>
+			
+			<para>By default, every time an object is inserted, updated or deleted
+				through Hibernate, Hibernate Search updates the according Lucene index.
+				It is sometimes desirable to disable that features if either your index
+				is read-only or if index updates are done in a batch way (see <xref linkend="Hibernate_Search-Batch_Index" />).</para>
+			
+			<para>To disable event based indexing, set</para>
+			
+			<programlisting>hibernate.search.indexing_strategy manual</programlisting>
+			
+			<note>
+				<para>In most case, the JMS backend provides the best of both world, a
+					lightweight event based system keeps track of all changes in the
+					system, and the heavyweight indexing process is done by a separate
+					process or machine.</para>
+			</note>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Configuration-Lucene_Index_Performance">
+		<title>Tuning Lucene indexing performance</title>
+		
+		<para>Hibernate Search allows you to tune the Lucene indexing performance
+			by specifying a set of parameters which are passed through to underlying
+			Lucene <literal>IndexWriter</literal> such as
+			<literal>mergeFactor</literal>, <literal>maxMergeDocs</literal> and
+			<literal>maxBufferedDocs</literal>. You can specify these parameters
+			either as default values applying for all indexes or on a per index
+			basis.</para>
+		
+		<para>There are two sets of parameters allowing for different performance
+			settings depending on the use case. During indexing operations triggered
+			by database modifications, the following ones are used: <itemizedlist>
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].transaction.merge_factor</literal></para>
+				</listitem>
+				
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].transaction.max_merge_docs</literal></para>
+				</listitem>
+				
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].transaction.max_buffered_docs</literal></para>
+				</listitem>
+			</itemizedlist>When indexing occurs via
+			<literal>FullTextSession.index()</literal> (see <xref linkend="Hibernate_Search-Batch_Index" />), the following properties are used:
+			<itemizedlist>
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].batch.merge_factor</literal></para>
+				</listitem>
+				
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].batch.max_merge_docs</literal></para>
+				</listitem>
+				
+				<listitem>
+					<para><literal>hibernate.search.[default|&lt;indexname&gt;].batch.max_buffered_docs</literal></para>
+				</listitem>
+			</itemizedlist></para>
+		
+		<para>Unless the corresponding <literal>.batch</literal> property is
+			explicitly set, the value will default to the
+			<literal>.transaction</literal> property.</para>
+		
+		<para>For more information about Lucene indexing performances, please
+			refer to the Lucene documentation.</para>
+		
+		<table id="Configuration-Indexing_Performance">
+			<title>List of indexing performance properties in the namespace of hibernate.search.[default|&lt;indexname&gt;]</title>
+			
+			<tgroup cols="3">
+			
+			<colspec colname="c1" colwidth="3*"/>
+			<colspec colname="c2" colwidth="3*"/>
+			<colspec colname="c3" colwidth="2*"/>
+				
+				
+				<thead>
+					<row>
+						<entry align="center">Property</entry>
+						
+						<entry align="center">Description</entry>
+						
+						<entry align="center">Default Value</entry>
+					</row>
+				</thead>
+				
+				<tbody>
+					<row>
+						<entry><literal>transaction.merge_factor</literal></entry>
+						
+						<entry><para>Controls segment merge frequency and size. </para>
+							<para>Determines how often segment indices are merged when
+								insertion occurs. With smaller values, less RAM is used while
+								indexing, and searches on unoptimized indices are faster, but
+								indexing speed is slower. With larger values, more RAM is used
+								during indexing, and while searches on unoptimized indices are
+								slower, indexing is faster. Thus larger values (&gt; 10) are best
+								for batch index creation, and smaller values (&lt; 10) for indices
+								that are interactively maintained. The value must no be lower than
+								2.</para> <para>Used by Hibernate Search during index update
+								operations as part of database modifications.</para></entry>
+						
+						<entry>10</entry>
+					</row>
+					
+					<row>
+						<entry><literal>transaction.max_merge_docs</literal></entry>
+						
+						<entry><para>Defines the largest number of documents allowed in a
+								segment.</para> <para>Used by Hibernate Search during index update
+								operations as part of database modifications.</para></entry>
+						
+						<entry>Unlimited (Integer.MAX_VALUE)</entry>
+					</row>
+					
+					<row>
+						<entry><literal>transaction.max_buffered_docs</literal></entry>
+						
+						<entry><para>Controls the amount of documents buffered in memory
+								during indexing. The bigger the more RAM is consumed.</para>
+							<para>Used by Hibernate Search during index update operations as
+								part of database modifications.</para></entry>
+						
+						<entry>10</entry>
+					</row>
+					
+					<row>
+						<entry><literal>batch.merge_factor</literal></entry>
+						
+						<entry><para>Controls segment merge frequency and size.</para>
+							<para>Determines how often segment indices are merged when
+								insertion occurs. With smaller values, less RAM is used while
+								indexing, and searches on unoptimized indices are faster, but
+								indexing speed is slower. With larger values, more RAM is used
+								during indexing, and while searches on unoptimized indices are
+								slower, indexing is faster. Thus larger values (&gt; 10) are best
+								for batch index creation, and smaller values (&lt; 10) for indices
+								that are interactively maintained. The value must no be lower than
+								2.</para> <para>Used during indexing via
+								<literal>FullTextSession.index()</literal></para></entry>
+						
+						<entry>10</entry>
+					</row>
+					
+					<row>
+						<entry><literal>batch.max_merge_docs</literal></entry>
+						
+						<entry><para>Defines the largest number of documents allowed in a
+								segment.</para> <para>Used during indexing via
+								<literal>FullTextSession.index()</literal></para></entry>
+						
+						<entry>Unlimited (Integer.MAX_VALUE)</entry>
+					</row>
+					
+					<row>
+						<entry><literal>batch.max_buffered_docs</literal></entry>
+						
+						<entry><para>Controls the amount of documents buffered in memory
+								during indexing. The bigger the more RAM is consumed.</para>
+							<para>Used during indexing via
+								<literal>FullTextSession.index()</literal></para></entry>
+						
+						<entry>10</entry>
+					</row>
+				</tbody>
+			</tgroup>
+		</table>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Feedback.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Feedback.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Feedback.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,11 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+]>
+
+
+<section id="Feedback">
+	<title>Feedback</title>
+	<para>
+			If you spot a typo in this guide, or if you have thought of a way to make this manual better, we would love to hear from you! Submit a report in <ulink url="http://jira.jboss.com/jira/browse/JBPAPP">JIRA</ulink> against the Product: JBoss Enterprise Application Platform, Version: <replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</emphasis>. If you have a suggestion for improving the documentation, try to be as specific as possible. If you have found an error, include the section number and some of the surrounding text so we can find it easily.
+	</para>
+</section>

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Getting_Started.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Getting_Started.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Getting_Started.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,397 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Getting_Started">
+	<title>Getting Started</title>
+	
+	
+	<para>Welcome to Hibernate Search! The following chapter will guide you
+		through the initial steps required to integrate Hibernate Search into an
+		existing Hibernate enabled application. In case you are a Hibernate first
+		timer we recommend you start <ulink url="http://hibernate.org/152.html">here</ulink>.</para>
+	
+	<section id="Hibernate_Search-Getting_Started-System_Requirements">
+		<title>System Requirements</title>
+		
+		<table>
+			<title>System requirements</title>
+			
+			<tgroup cols="2">
+				<tbody>
+					<row>
+						<entry>Java Runtime</entry>
+						
+						<entry>A JDK or JRE version <emphasis>5</emphasis> or greater. You
+							can download a Java Runtime for Windows/Linux/Solaris <ulink url="http://java.sun.com/javase/downloads/"> here
+							</ulink>.</entry>
+					</row>
+					
+					<row>
+						<entry>Hibernate Search</entry>
+						
+						<entry><literal>hibernate-search.jar</literal> and all
+							dependencies from the <literal>lib</literal> directory of the
+							Hibernate Search distribution, especially lucene.</entry>
+					</row>
+					
+					<row>
+						<entry>Hibernate Core</entry>
+						
+						<entry>These instructions have been tested against Hibernate 3.2.x.
+							Next to the main <literal>hibernate3.jar</literal> you will need
+							all required libraries from the <literal>lib</literal> directory of
+							the distribution. Refer to <literal>README.txt</literal> in the
+							<literal>lib</literal> directory of the distribution to determine
+							the minimum runtime requirements.</entry>
+					</row>
+					
+					<row>
+						<entry>Hibernate Annotations</entry>
+						
+						<entry>Although Hibernate Search can be used without Hibernate
+							Annotations the following instructions use them for ease of
+							use. The tutorial is tested against version 3.3.x of Hibernate Annotations.</entry>
+					</row>
+				</tbody>
+			</tgroup>
+		</table>
+		
+		<para>You can download all dependencies from the Hibernate <ulink url="http://www.hibernate.org/6.html">download site</ulink>. You can also verify the dependency versions against the <ulink			 url="http://www.hibernate.org/6.html#A3">Hibernate Compatibility
+				Matrix</ulink>.</para>
+	</section>
+	
+	<section id="Hibernate_Search-Getting_Started-Maven">
+		<title>Maven</title>
+		
+		<para>Instead of managing all dependencies yourself, maven users are able to use the <ulink
+						     url="http://repository.jboss.com/maven2">JBoss maven repository</ulink>.
+			Just add the JBoss repository url to the <emphasis>repositories</emphasis>
+			section of your <filename>pom.xml</filename> or
+			<filename>settings.xml</filename>:</para>
+		
+		<programlisting>
+			&lt;repository&gt;
+			   &lt;id&gt;repository.jboss.org&lt;/id&gt;
+			&lt;name&gt;JBoss Maven Repository&lt;/name&gt;
+			&lt;url&gt;http://repository.jboss.org/maven2&lt;/url&gt;
+			&lt;layout&gt;default&lt;/layout&gt;
+			&lt;/repository&gt;
+		</programlisting>
+		
+		<para>Then add the following dependencies to your pom.xml:</para>
+		
+		<programlisting>
+			&lt;dependency&gt;
+			&lt;groupId&gt;org.hibernate&lt;/groupId&gt;
+			&lt;artifactId&gt;hibernate-search&lt;/artifactId&gt;
+			&lt;version&gt;3.0.0.ga&lt;/version&gt;
+			&lt;/dependency&gt;
+			&lt;dependency&gt;
+			&lt;groupId&gt;org.hibernate&lt;/groupId&gt;
+			&lt;artifactId&gt;hibernate-annotations&lt;/artifactId&gt;
+			&lt;version&gt;3.3.0.ga&lt;/version&gt;
+			&lt;/dependency&gt;
+			&lt;dependency&gt;
+			&lt;groupId&gt;org.hibernate&lt;/groupId&gt;
+			&lt;artifactId&gt;hibernate-entitymanager&lt;/artifactId&gt;
+			&lt;version&gt;3.3.1.ga&lt;/version&gt;
+			&lt;/dependency&gt;
+		</programlisting>
+		
+		<para>Not all three dependencies are required.
+			<emphasis>hibernate-search</emphasis> alone contains everything needed to
+			use Hibernate Search. <emphasis>hibernate-annotations</emphasis> is only
+			needed if you use non-Hibernate Search annotations, which are used in the
+			examples of this tutorial. Note that <emphasis>hibernate-entitymanager</emphasis> is only required if you use Hibernate Search in conjunction with JPA.</para>
+	</section>
+	
+	<section id="Hibernate_Search-Getting_Started-Configuration">
+		<title>Configuration</title>
+		
+		<para>Once all required dependencies have been downloaded and added to your application, you will need to add some properties to your hibernate configuration file. If you are using Hibernate directly this can be done in <literal>hibernate.properties</literal> or <literal>hibernate.cfg.xml</literal>. If you are using Hibernate via JPA you can also add the properties to <literal>persistence.xml</literal>. The default properties are suitable for the standard use.
+		</para>
+		
+		<para>Apache Lucene has a notion of <literal>Directory</literal> to store
+			the index files. Hibernate Search handles the initialization and
+			configuration of a Lucene <literal>Directory</literal> instance via a
+			<literal>DirectoryProvider</literal>. In this tutorial we will use a
+			subclass of <literal>DirectoryProvider</literal> called
+			<classname>FSDirectoryProvider</classname>. This will give us the ability
+			to physically inspect the Lucene indexes created by Hibernate Search (e.g.
+			via <ulink url="http://www.getopt.org/luke/">Luke</ulink>). Once you have
+			a working configuration you can start experimenting with other directory
+			providers (see <xref linkend="Hibernate_Search-Configuration-Directory" />).</para>
+		
+		<para>Lets assume that your application contains the Hibernate managed
+			class <classname>example.Book</classname> and you now want to add free
+			text search capabilities to your application in order to search body and
+			summary of the books contained in your database.</para>
+		
+		<programlisting>
+			package example.Book
+			...
+			@Entity
+			public class Book {
+			
+			@Id
+			private Integer id; 
+			private String body;  
+			private String summary; 
+			@ManyToMany private Set&lt;Author&gt; authors = new HashSet&lt;Author&gt;();
+			@ManyToOne private Author mainAuthor;
+			private Date publicationDate;
+			
+			public Book() {
+			} 
+			
+			// standard getters/setters follow here
+			... 
+		</programlisting>
+		
+		<para>First you need to tell Hibernate Search which
+			<classname>DirectoryProvider</classname> to use. This can be achieved by
+			setting the <literal>hibernate.search.default.directory_provider</literal>
+			property. You also have to specify the default root directory for all
+			indexes via <literal>hibernate.search.default.indexBase</literal>.</para>
+		
+		<programlisting>
+			...
+			# the default directory provider
+			hibernate.search.default.directory_provider = org.hibernate.search.store.FSDirectoryProvider
+			
+			# the default base directory for the indecies
+			hibernate.search.default.indexBase = /var/lucene/indexes    
+			...
+		</programlisting>
+		
+		<para>Now add three annotations to the
+			<classname>Book</classname> class. The first annotation
+			<literal>@Indexed</literal> marks <classname>Book</classname> as
+			indexable. By design Hibernate Search needs to store an untokenized id in
+			the index to ensure index unicity for a given entity.
+			<literal>@DocumentId</literal> marks the property to use for this purpose.
+			Most, if not all of the time, the property is the database primary key. Finally you will need to index the fields you wish to make searchable. In
+			our example these fields are <literal>body</literal> and
+			<literal>summary</literal>. Both properties get annotated with
+			<literal>@Field</literal>. The property
+			<literal>index=Index.TOKENIZED</literal> will ensure that the text will be
+			tokenized using the default Lucene analyzer whereas
+			<literal>store=Store.NO</literal> ensures that the actual data will not be
+			stored in the index. Usually, tokenizing means chunking a sentence into
+			individual words (and potentially excluding common words like
+			<literal>a</literal>, <literal>the </literal>etc).</para>
+		
+		<para>These settings are sufficient for an initial test. For more details
+			on entity mapping refer to <xref linkend="Hibernate_Search-Mapping-Entity" />. In
+			case you want to store and retrieve the indexed data in order to avoid
+			database roundtrips, refer to projections in <xref linkend="Hibernate_Search-Query-Projections" /></para>
+		
+		<programlisting>
+			package example.Book
+			...
+			@Entity
+			<emphasis role="bold">@Indexed</emphasis>
+			public class Book {
+			
+			@Id
+			<emphasis role="bold">@DocumentId</emphasis>
+			private Integer id;
+			
+			<emphasis role="bold">@Field(index=Index.TOKENIZED, store=Store.NO)</emphasis>
+			private String body;
+			
+			<emphasis role="bold">@Field(index=Index.TOKENIZED, store=Store.NO)</emphasis>
+			private String summary; 
+			@ManyToMany private Set&lt;Author&gt; authors = new HashSet&lt;Author&gt;();
+			@ManyToOne private Author mainAuthor;
+			private Date publicationDate;
+			
+			public Book() {
+			} 
+			
+			// standard getters/setters follow here
+			... 
+		</programlisting>
+	</section>
+	
+	<section>
+		<title>Indexing</title>
+		
+		<para>Hibernate Search will index every entity persisted, updated or
+			removed through Hibernate core transparently for the application. However,
+			the data already present in your database needs to be indexed once to
+			populate the Lucene index. Once you have added the above properties and
+			annotations it is time to trigger an initial batch index of your books.
+			You can achieve this by adding one of the following code examples to your
+			code (see also <xref linkend="Hibernate_Search-Batch_Index" />):</para>
+		
+		<para>Example using Hibernate Session:</para>
+		
+		<programlisting>
+			FullTextSession fullTextSession = Search.createFullTextSession(session);
+			Transaction tx = fullTextSession.beginTransaction();
+			List books = session.createQuery("from Book as book").list();
+			for (Book book : books) {
+			fullTextSession.index(book);
+			}
+			tx.commit(); //index are written at commit time       
+		</programlisting>
+		
+		<para>Example using JPA:</para>
+		
+		<programlisting>
+			EntityManager em = entityManagerFactory.createEntityManager();
+			FullTextEntityManager fullTextEntityManager = Search.createFullTextEntityManager(em);
+			List books = em.createQuery("select book from Book as book").getResultList();
+			for (Book book : books) {
+			fullTextEntityManager.index(book);
+			} 
+		</programlisting>
+		
+		<para>After executing the above code, you should be able to see a Lucene
+			index under <literal>/var/lucene/indexes/example.Book</literal>. Go ahead
+			an inspect this index. It will help you to understand how Hibernate Search
+			works.</para>
+	</section>
+	
+	<section id="Hibernate_Search-Getting_Started-Searching">
+		<title>Searching</title>
+		
+		<para>Now it is time to execute a first search. The following code will
+			prepare a query against the fields <literal>summary</literal> and
+			<literal>body</literal>, execute it and return a list of
+			<classname>Book</classname>s:</para>
+		
+		<para>Example using Hibernate Session:</para>
+		
+		<programlisting>
+			FullTextSession fullTextSession = Search.createFullTextSession(session);
+			
+			Transaction tx = fullTextSession.beginTransaction();
+			
+			MultiFieldQueryParser parser = new MultiFieldQueryParser( new String[]{"summary", "body"}, 
+			new StandardAnalyzer());
+			Query query = parser.parse( "Java rocks!" );
+			org.hibernate.Query hibQuery = fullTextSession.createFullTextQuery( query, Book.class );
+			List result = hibQuery.list();
+			
+			tx.commit();
+			session.close();  
+		</programlisting>
+		
+		<para>Example using JPA:</para>
+		
+		<programlisting>
+			EntityManager em = entityManagerFactory.createEntityManager();
+			
+			FullTextEntityManager fullTextEntityManager = 
+			org.hibernate.hibernate.search.jpa.Search.createFullTextEntityManager(em);
+			MultiFieldQueryParser parser = new MultiFieldQueryParser( new String[]{"summary", "body"}, 
+			new StandardAnalyzer());
+			Query query = parser.parse( "Java rocks!" );
+			org.hibernate.Query hibQuery = fullTextEntityManager.createFullTextQuery( query, Book.class );
+			List result = hibQuery.list();
+		</programlisting>
+	</section>
+	
+	<section id="Hibernate_Search-Getting_Started-Analyzer">
+		<title>Analyzer</title>
+		
+		<para>Assume that one of your indexed book entities contains the text
+			"Java rocks" and you want to get hits for all of the following queries:
+			"rock", "rocks", "rocked" and "rocking". In Lucene this can be achieved by
+			choosing an analyzer class which applies word stemming during the indexing
+			process. Hibernate Search offers several ways to configure the analyzer to
+			use (see <xref linkend="Hibernate_Search-Entity-Analyzer" />):</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>Setting the <literal>hibernate.search.analyzer</literal>
+					property in the configuration file. The specified class will then be
+					the default analyzer.</para>
+			</listitem>
+			
+			<listitem>
+				<para>Setting the <literal>Analyzer</literal> annotation at the entity
+					level.</para>
+			</listitem>
+			
+			<listitem>
+				<para>Setting the <literal>Analyzer</literal> annotation at the field
+					level.</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>The following example uses the entity level annotation to apply a
+			English language analyzer which would help you to achieve your goal. The
+			class <classname>EnglishAnalyzer</classname> is a custom class using the
+			Snowball English Stemmer from the <ulink
+								url="http://lucene.apache.org/java/docs/lucene-sandbox/">Lucene
+				Sandbox</ulink>.</para>
+		
+		<programlisting>
+			package example.Book
+			...
+			@Entity
+			@Indexed
+			<emphasis role="bold">@Analyzer(impl = example.EnglishAnalyzer.class)</emphasis>
+			public class Book {
+			
+			@Id
+			@DocumentId
+			private Integer id;
+			
+			@Field(index=Index.TOKENIZED, store=Store.NO)
+			private String body;
+			
+			@Field(index=Index.TOKENIZED, store=Store.NO)
+			private String summary; 
+			@ManyToMany private Set&lt;Author&gt; authors = new HashSet&lt;Author&gt;();
+			@ManyToOne private Author mainAuthor;
+			private Date publicationDate;
+			
+			public Book() {
+			} 
+			
+			// standard getters/setters follow here
+			... 
+			}
+			
+			public class EnglishAnalyzer extends Analyzer {
+			/**
+			* {@inheritDoc}
+			*/
+			@Override
+			public TokenStream tokenStream(String fieldName, Reader reader) {
+			TokenStream result = new StandardTokenizer(reader);
+			result = new StandardFilter(result);
+			result = new LowerCaseFilter(result);
+			result = new SnowballFilter(result, name);
+			return result;
+			}
+			}
+		</programlisting>
+	</section>
+	
+	<section id="Hibernate_Search-Getting_Started-Whats_Next">
+		<title>What's next</title>
+		
+		<para>The above paragraphs hopefully helped you getting started with
+			Hibernate Search. You should by now have a file system based index and be
+			able to search and retrieve a list of managed objects via Hibernate
+			Search. The next step is to get more familiar with the overall
+			architecture (<xref linkend="Hibernate_Search-Architecture" />) and explore the
+			basic features in more detail.</para>
+		
+		<para>Two topics which where only briefly touched in this tutorial were
+			analyzer configuration (<xref linkend="Hibernate_Search-Entity-Analyzer" />) and field bridges
+			(<xref linkend="Hibernate_Search-Mapping-Bridge" />), both important features
+			required for more fine-grained indexing.</para>
+		
+		<para>More advanced topics cover clustering (<xref
+								  linkend="Hibernate_Search-Configuration-JMS_Backend" />) and large indexes handling (<xref
+										linkend="Hibernate_Search-Configuration-Index_Sharding" />).</para>
+	</section>
+
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Getting_Started.xml.bak
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Getting_Started.xml.bak	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Getting_Started.xml.bak	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,397 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Getting_Started">
+	<title>Getting Started</title>
+	
+	
+	<para>Welcome to Hibernate Search! The following chapter will guide you
+		through the initial steps required to integrate Hibernate Search into an
+		existing Hibernate enabled application. In case you are a Hibernate first
+		timer we recommend you start <ulink url="http://hibernate.org/152.html">here</ulink>.</para>
+	
+	<section id="Hibernate_Search-Getting_Started-System_Requirements">
+		<title>System Requirements</title>
+		
+		<table>
+			<title>System requirements</title>
+			
+			<tgroup cols="2">
+				<tbody>
+					<row>
+						<entry>Java Runtime</entry>
+						
+						<entry>A JDK or JRE version <emphasis>5</emphasis> or greater. You
+							can download a Java Runtime for Windows/Linux/Solaris <ulink url="http://java.sun.com/javase/downloads/"> here
+							</ulink>.</entry>
+					</row>
+					
+					<row>
+						<entry>Hibernate Search</entry>
+						
+						<entry><literal>hibernate-search.jar</literal> and all
+							dependencies from the <literal>lib</literal> directory of the
+							Hibernate Search distribution, especially lucene.</entry>
+					</row>
+					
+					<row>
+						<entry>Hibernate Core</entry>
+						
+						<entry>These instructions have been tested against Hibernate 3.2.x.
+							Next to the main <literal>hibernate3.jar</literal> you will need
+							all required libaries from the <literal>lib</literal> directory of
+							the distribution. Refer to <literal>README.txt</literal> in the
+							<literal>lib</literal> directory of the distibution to determine
+							the minimum runtime requirements.</entry>
+					</row>
+					
+					<row>
+						<entry>Hibernate Annotations</entry>
+						
+						<entry>Although Hibernate Search can be used without Hibernate
+							Annotations the following instructions use them for ease of
+							use. The tutorial is tested against version 3.3.x of Hibernate Annotations.</entry>
+					</row>
+				</tbody>
+			</tgroup>
+		</table>
+		
+		<para>You can download all dependencies from the Hibernate <ulink url="http://www.hibernate.org/6.html">download site</ulink>. You can also verify the dependency versions against the <ulink			 url="http://www.hibernate.org/6.html#A3">Hibernate Compatibility
+				Matrix</ulink>.</para>
+	</section>
+	
+	<section id="Hibernate_Search-Getting_Started-Maven">
+		<title>Maven</title>
+		
+		<para>Instead of managing all dependencies yourself, maven users are able to use the <ulink
+						     url="http://repository.jboss.com/maven2">JBoss maven repository</ulink>.
+			Just add the JBoss repository url to the <emphasis>repositories</emphasis>
+			section of your <filename>pom.xml</filename> or
+			<filename>settings.xml</filename>:</para>
+		
+		<programlisting>
+			&lt;repository&gt;
+			   &lt;id&gt;repository.jboss.org&lt;/id&gt;
+			&lt;name&gt;JBoss Maven Repository&lt;/name&gt;
+			&lt;url&gt;http://repository.jboss.org/maven2&lt;/url&gt;
+			&lt;layout&gt;default&lt;/layout&gt;
+			&lt;/repository&gt;
+		</programlisting>
+		
+		<para>Then add the following dependencies to your pom.xml:</para>
+		
+		<programlisting>
+			&lt;dependency&gt;
+			&lt;groupId&gt;org.hibernate&lt;/groupId&gt;
+			&lt;artifactId&gt;hibernate-search&lt;/artifactId&gt;
+			&lt;version&gt;3.0.0.ga&lt;/version&gt;
+			&lt;/dependency&gt;
+			&lt;dependency&gt;
+			&lt;groupId&gt;org.hibernate&lt;/groupId&gt;
+			&lt;artifactId&gt;hibernate-annotations&lt;/artifactId&gt;
+			&lt;version&gt;3.3.0.ga&lt;/version&gt;
+			&lt;/dependency&gt;
+			&lt;dependency&gt;
+			&lt;groupId&gt;org.hibernate&lt;/groupId&gt;
+			&lt;artifactId&gt;hibernate-entitymanager&lt;/artifactId&gt;
+			&lt;version&gt;3.3.1.ga&lt;/version&gt;
+			&lt;/dependency&gt;
+		</programlisting>
+		
+		<para>Not all three dependencies are required.
+			<emphasis>hibernate-search</emphasis> alone contains everything needed to
+			use Hibernate Search. <emphasis>hibernate-annotations</emphasis> is only
+			needed if you use non-Hibernate Search annotations, which are used in the
+			examples of this tutorial. Note that <emphasis>hibernate-entitymanager</emphasis> is only required if you use Hibernate Search in conjunction with JPA.</para>
+	</section>
+	
+	<section id="Hibernate_Search-Getting_Started-Configuration">
+		<title>Configuration</title>
+		
+		<para>Once all required dependencies have been downloaded and added to your application, you will need to add some properties to your hibernate configuration file. If you are using Hibernate directly this can be done in <literal>hibernate.properties</literal> or <literal>hibernate.cfg.xml</literal>. If you are using Hibernate via JPA you can also add the properties to <literal>persistence.xml</literal>. The default properties are suitable for the standard use.
+		</para>
+		
+		<para>Apache Lucene has a notion of <literal>Directory</literal> to store
+			the index files. Hibernate Search handles the initialization and
+			configuration of a Lucene <literal>Directory</literal> instance via a
+			<literal>DirectoryProvider</literal>. In this tutorial we will use a
+			subclass of <literal>DirectoryProvider</literal> called
+			<classname>FSDirectoryProvider</classname>. This will give us the ability
+			to physically inspect the Lucene indexes created by Hibernate Search (eg
+			via <ulink url="http://www.getopt.org/luke/">Luke</ulink>). Once you have
+			a working configuration you can start experimenting with other directory
+			providers (see <xref linkend="Hibernate_Search-Configuration-Directory" />).</para>
+		
+		<para>Lets assume that your application contains the Hibernate managed
+			class <classname>example.Book</classname> and you now want to add free
+			text search capabilities to your application in order to search body and
+			summary of the books contained in your database.</para>
+		
+		<programlisting>
+			package exmaple.Book
+			...
+			@Entity
+			public class Book {
+			
+			@Id
+			private Integer id; 
+			private String body;  
+			private String summary; 
+			@ManyToMany private Set&lt;Author&gt; authors = new HashSet&lt;Author&gt;();
+			@ManyToOne private Author mainAuthor;
+			private Date publicationDate;
+			
+			public Book() {
+			} 
+			
+			// standard getters/setters follow here
+			... 
+		</programlisting>
+		
+		<para>First you need to tell Hibernate Search which
+			<classname>DirectoryProvider</classname> to use. This can be achieved by
+			setting the <literal>hibernate.search.default.directory_provider</literal>
+			property. You also have to specify the default root directory for all
+			indexes via <literal>hibernate.search.default.indexBase</literal>.</para>
+		
+		<programlisting>
+			...
+			# the default directory provider
+			hibernate.search.default.directory_provider = org.hibernate.search.store.FSDirectoryProvider
+			
+			# the default base directory for the indecies
+			hibernate.search.default.indexBase = /var/lucene/indexes    
+			...
+		</programlisting>
+		
+		<para>Now add three annotations to the
+			<classname>Book</classname> class. The first annotation
+			<literal>@Indexed</literal> marks <classname>Book</classname> as
+			indexable. By design Hibernate Search needs to store an untokenized id in
+			the index to ensure index unicity for a given entity.
+			<literal>@DocumentId</literal> marks the property to use for this purpose.
+			Most, if not all of the time, the property is the database primary key. Finally you will need to index the fields you wish to make searchable. In
+			our example these fields are <literal>body</literal> and
+			<literal>summary</literal>. Both properties get annotated with
+			<literal>@Field</literal>. The property
+			<literal>index=Index.TOKENIZED</literal> will ensure that the text will be
+			tokenized using the default Lucene analyzer whereas
+			<literal>store=Store.NO</literal> ensures that the actual data will not be
+			stored in the index. Usually, tokenizing means chunking a sentence into
+			individual words (and potentially excluding common words like
+			<literal>a</literal>, <literal>the </literal>etc).</para>
+		
+		<para>These settings are sufficient for an initial test. For more details
+			on entity mapping refer to <xref linkend="Hibernate_Search-Mapping-Entity" />. In
+			case you want to store and retrieve the indexed data in order to avoid
+			database roundtrips, refer to projections in <xref linkend="Hibernate_Search-Query-Projections" /></para>
+		
+		<programlisting>
+			package exmaple.Book
+			...
+			@Entity
+			<emphasis role="bold">@Indexed</emphasis>
+			public class Book {
+			
+			@Id
+			<emphasis role="bold">@DocumentId</emphasis>
+			private Integer id;
+			
+			<emphasis role="bold">@Field(index=Index.TOKENIZED, store=Store.NO)</emphasis>
+			private String body;
+			
+			<emphasis role="bold">@Field(index=Index.TOKENIZED, store=Store.NO)</emphasis>
+			private String summary; 
+			@ManyToMany private Set&lt;Author&gt; authors = new HashSet&lt;Author&gt;();
+			@ManyToOne private Author mainAuthor;
+			private Date publicationDate;
+			
+			public Book() {
+			} 
+			
+			// standard getters/setters follow here
+			... 
+		</programlisting>
+	</section>
+	
+	<section>
+		<title>Indexing</title>
+		
+		<para>Hibernate Search will index every entity persisted, updated or
+			removed through Hibernate core transparently for the application. However,
+			the data already present in your database needs to be indexed once to
+			populate the Lucene index. Once you have added the above properties and
+			annotations it is time to trigger an initial batch index of your books.
+			You can achieve this by adding one of the following code examples to your
+			code (see also <xref linkend="Hibernate_Search-Batch_Index" />):</para>
+		
+		<para>Example using Hibernate Session:</para>
+		
+		<programlisting>
+			FullTextSession fullTextSession = Search.createFullTextSession(session);
+			Transaction tx = fullTextSession.beginTransaction();
+			List books = session.createQuery("from Book as book").list();
+			for (Book book : books) {
+			fullTextSession.index(book);
+			}
+			tx.commit(); //index are written at commit time       
+		</programlisting>
+		
+		<para>Example using JPA:</para>
+		
+		<programlisting>
+			EntityManager em = entityManagerFactory.createEntityManager();
+			FullTextEntityManager fullTextEntityManager = Search.createFullTextEntityManager(em);
+			List books = em.createQuery("select book from Book as book").getResultList();
+			for (Book book : books) {
+			fullTextEntityManager.index(book);
+			} 
+		</programlisting>
+		
+		<para>After executing the above code, you should be able to see a Lucene
+			index under <literal>/var/lucene/indexes/example.Book</literal>. Go ahead
+			an inspect this index. It will help you to understand how Hibernate Search
+			works.</para>
+	</section>
+	
+	<section id="Hibernate_Search-Getting_Started-Searching">
+		<title>Searching</title>
+		
+		<para>Now it is time to execute a first search. The following code will
+			prepare a query against the fields <literal>summary</literal> and
+			<literal>body</literal>, execute it and return a list of
+			<classname>Book</classname>s:</para>
+		
+		<para>Example using Hibernate Session:</para>
+		
+		<programlisting>
+			FullTextSession fullTextSession = Search.createFullTextSession(session);
+			
+			Transaction tx = fullTextSession.beginTransaction();
+			
+			MultiFieldQueryParser parser = new MultiFieldQueryParser( new String[]{"summary", "body"}, 
+			new StandardAnalyzer());
+			Query query = parser.parse( "Java rocks!" );
+			org.hibernate.Query hibQuery = fullTextSession.createFullTextQuery( query, Book.class );
+			List result = hibQuery.list();
+			
+			tx.commit();
+			session.close();  
+		</programlisting>
+		
+		<para>Example using JPA:</para>
+		
+		<programlisting>
+			EntityManager em = entityManagerFactory.createEntityManager();
+			
+			FullTextEntityManager fullTextEntityManager = 
+			org.hibernate.hibernate.search.jpa.Search.createFullTextEntityManager(em);
+			MultiFieldQueryParser parser = new MultiFieldQueryParser( new String[]{"summary", "body"}, 
+			new StandardAnalyzer());
+			Query query = parser.parse( "Java rocks!" );
+			org.hibernate.Query hibQuery = fullTextEntityManager.createFullTextQuery( query, Book.class );
+			List result = hibQuery.list();
+		</programlisting>
+	</section>
+	
+	<section id="Hibernate_Search-Getting_Started-Analyzer">
+		<title>Analyzer</title>
+		
+		<para>Assume that one of your indexed book entities contains the text
+			"Java rocks" and you want to get hits for all of the following queries:
+			"rock", "rocks", "rocked" and "rocking". In Lucene this can be achieved by
+			choosing an analyzer class which applies word stemming during the indexing
+			process. Hibernate Search offers several ways to configure the analyzer to
+			use (see <xref linkend="Hibernate_Search-Entity-Analyzer" />):</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>Setting the <literal>hibernate.search.analyzer</literal>
+					property in the configuration file. The specified class will then be
+					the default analyzer.</para>
+			</listitem>
+			
+			<listitem>
+				<para>Setting the <literal>Analyzer</literal> annotation at the entity
+					level.</para>
+			</listitem>
+			
+			<listitem>
+				<para>Setting the <literal>Analyzer</literal> annotation at the field
+					level.</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>The following example uses the entity level annotation to apply a
+			English language analyzer which would help you to achieve your goal. The
+			class <classname>EnglishAnalyzer</classname> is a custom class using the
+			Snowball English Stemmer from the <ulink
+								url="http://lucene.apache.org/java/docs/lucene-sandbox/">Lucene
+				Sandbox</ulink>.</para>
+		
+		<programlisting>
+			package example.Book
+			...
+			@Entity
+			@Indexed
+			<emphasis role="bold">@Analyzer(impl = example.EnglishAnalyzer.class)</emphasis>
+			public class Book {
+			
+			@Id
+			@DocumentId
+			private Integer id;
+			
+			@Field(index=Index.TOKENIZED, store=Store.NO)
+			private String body;
+			
+			@Field(index=Index.TOKENIZED, store=Store.NO)
+			private String summary; 
+			@ManyToMany private Set&lt;Author&gt; authors = new HashSet&lt;Author&gt;();
+			@ManyToOne private Author mainAuthor;
+			private Date publicationDate;
+			
+			public Book() {
+			} 
+			
+			// standard getters/setters follow here
+			... 
+			}
+			
+			public class EnglishAnalyzer extends Analyzer {
+			/**
+			* {@inheritDoc}
+			*/
+			@Override
+			public TokenStream tokenStream(String fieldName, Reader reader) {
+			TokenStream result = new StandardTokenizer(reader);
+			result = new StandardFilter(result);
+			result = new LowerCaseFilter(result);
+			result = new SnowballFilter(result, name);
+			return result;
+			}
+			}
+		</programlisting>
+	</section>
+	
+	<section id="Hibernate_Search-Getting_Started-Whats_Next">
+		<title>What's next</title>
+		
+		<para>The above paragraphs hopefully helped you getting started with
+			Hibernate Search. You should by now have a file system based index and be
+			able to search and retrieve a list of managed objects via Hibernate
+			Search. The next step is to get more familiar with the overall
+			architecture (<xref linkend="Hibernate_Search-Architecture" />) and explore the
+			basic features in more detail.</para>
+		
+		<para>Two topics which where only briefly touched in this tutorial were
+			analyzer configuration (<xref linkend="Hibernate_Search-Entity-Analyzer" />) and field bridges
+			(<xref linkend="Hibernate_Search-Mapping-Bridge" />), both important features
+			required for more fine-grained indexing.</para>
+		
+		<para>More advanced topics cover clustering (<xref
+								  linkend="Hibernate_Search-Configuration-JMS_Backend" />) and large indexes handling (<xref
+										linkend="Hibernate_Search-Configuration-Index_Sharding" />).</para>
+	</section>
+
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Hibernate_Search_Reference_Guide_CP05.ent
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Hibernate_Search_Reference_Guide_CP05.ent	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Hibernate_Search_Reference_Guide_CP05.ent	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,3 @@
+<!ENTITY PRODUCT "Documentation">
+<!ENTITY BOOKID "Hibernate_Search">
+<!ENTITY YEAR "2009">

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Hibernate_Search_Reference_Guide_CP05.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Hibernate_Search_Reference_Guide_CP05.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Hibernate_Search_Reference_Guide_CP05.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,20 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Getting_Started.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Architecture.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Mapping.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Query.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Batch_Index.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Optimize.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Lucene_Native.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</book>	
+
+

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Introduction.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Introduction.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Introduction.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,23 @@
+<?xml version='1.0'?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Introduction">
+		<title>Introduction</title>
+	
+	<para>Full text search engines like <productname>Apache
+			Lucene</productname> are powerful technologies that add efficient free
+		text search capabilities to applications. However, they suffer several mismatches when
+		dealing with object domain models. Amongst other things, indexes have to be kept up to date and
+		mismatches between index structure and domain model as well as query mismatches 
+		need to be avoided.
+	</para>
+	<para>
+		Hibernate Search indexes your domain model with the help of a few annotations,
+		takes care of database/index synchronization and brings back
+		regular managed objects from free text queries. To achieve this Hibernate Search
+		combines the power of <ulink url="http://www.hibernate.org">Hibernate</ulink> and  
+		<ulink url="http://lucene.apache.org">Apache Lucene</ulink>.
+    		</para>
+</chapter>	
+

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Lucene_Native.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Lucene_Native.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Lucene_Native.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,87 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Lucene_Native">
+	<title>Accessing Lucene natively</title>
+	
+	<section id="Hibernate_Search-Lucene_Native-Search_Factory">
+		<title>SearchFactory</title>
+		
+		<para>The <classname>SearchFactory</classname> object keeps track of the
+			underlying Lucene resources for Hibernate Search, it's also a convenient
+			way to access Lucene natively. The <classname>SearchFactory</classname>
+			can be accessed from a <classname>FullTextSession</classname>:</para>
+		
+		<programlisting>FullTextSession fullTextSession = Search.createFullTextSession(regularSession);
+			SearchFactory searchFactory = fullTextSession.getSearchFactory();</programlisting>
+	</section>
+	
+	<section id="Hibernate_Search-Lucene_Native-Access_Directory">
+		<title>Accessing a Lucene Directory</title>
+		
+		<para>You can always access the Lucene directories through plain Lucene,
+			the Directory structure is in no way different with or without Hibernate
+			Search. However there are some more convenient ways to access a given
+			Directory. The <classname>SearchFactory</classname> keeps track of the
+			<classname>DirectoryProvider</classname>s per indexed class. One directory
+			provider can be shared amongst several indexed classes if the classes
+			share the same underlying index directory. While usually not the case, a
+			given entity can have several <classname>DirectoryProvider</classname>s is
+			the index is sharded (see <xref linkend="Hibernate_Search-Configuration-Index_Sharding" />).</para>
+		
+		<programlisting>DirectoryProvider[] provider = searchFactory.getDirectoryProviders(Order.class);
+			org.apache.lucene.store.Directory directory = provider[0].getDirectory();</programlisting>
+		
+		<para>In this example, directory points to the lucene index storing
+			<classname>Order</classname>s information. Note that the obtained Lucene
+			directory must not be closed (this is Hibernate Search
+			responsibility).</para>
+	</section>
+	
+	<section id="Hibernate_Search-Lucene_Native-IndexReader">
+		<title>Using an IndexReader</title>
+		
+		<para>Queries in Lucene are executed on an <literal>IndexReader</literal>.
+			Hibernate Search caches such index readers to maximize performances. Your
+			code can access such cached / shared resources. You will just have to
+			follow some "good citizen" rules.</para>
+		
+		<programlisting>DirectoryProvider orderProvider = searchFactory.getDirectoryProviders(Order.class)[0];
+			DirectoryProvider clientProvider = searchFactory.getDirectoryProviders(Client.class)[0];
+			
+			ReaderProvider readerProvider = searchFactory.getReaderProvider();
+			IndexReader reader = readerProvider.openReader(orderProvider, clientProvider);
+			
+			try {
+			//do read-only operations on the reader
+			}
+			finally {
+			readerProvider.closeReader(reader);
+			}</programlisting>
+		
+		<para>The ReaderProvider (described in <xref linkend="Hibernate_Search-Architecture-Reader_Strategy" />), will open an IndexReader
+			on top of the index(es) referenced by the directory providers. This
+			IndexReader being shared amongst several clients, you must adhere to the
+			following rules:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>Never call indexReader.close(), but always call
+					readerProvider.closeReader(reader); (a finally block is the best
+					area).</para>
+			</listitem>
+			
+			<listitem>
+				<para>This indexReader must not be used for modification operations
+					(especially delete), if you want to use an read/write index reader,
+					open one from the Lucene Directory object.</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>Aside from those rules, you can use the IndexReader freely,
+			especially to do native queries. Using the shared
+			<literal>IndexReader</literal>s will make most queries more
+			efficient.</para>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Mapping.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Mapping.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Mapping.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,842 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Mapping">
+	<title>Mapping Entities to the Index Structure</title>
+	
+	<para>All the metadata information needed to index entities is described
+		through some Java annotations. There is no need for xml mapping files nor a
+		list of indexed entities. The list is discovered at startup by scanning
+		the Hibernate mapped entities.</para>
+	
+	<section id="Hibernate_Search-Mapping-Entity">
+		<title>Mapping an entity</title>
+		
+		<section id="Hibernate_Search-Entity-Basic_Mapping">
+			<title>Basic mapping</title>
+			
+			<para>First, we must declare a persistent class as indexable. This is
+				done by annotating the class with <literal>@Indexed</literal> (all
+				entities not annotated with <literal>@Indexed</literal> will be ignored
+				by the indexing process):</para>
+			
+			<programlisting>@Entity
+				<emphasis role="bold">@Indexed(index="indexes/essays")</emphasis>
+				public class Essay {
+				...
+				}</programlisting>
+			
+			<para>The <literal>index</literal> attribute tells Hibernate what the
+				Lucene directory name is (usually a directory on your file system). If
+				you wish to define a base directory for all Lucene indexes, you can use
+				the <literal>hibernate.search.default.indexBase</literal> property in
+				your configuration file. Each entity instance will be represented by a
+				Lucene <classname>Document</classname> inside the given index (aka
+				Directory).</para>
+			
+			<para>For each property (or attribute) of your entity, you have the
+				ability to describe how it will be indexed. The default (i.e. no
+				annotation) means that the property is completely ignored by the indexing
+				process. <literal>@Field</literal> does declare a property as indexed.
+				When indexing an element to a Lucene document you can specify how it is
+				indexed:</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para><literal>name</literal> : describe under which name, the
+						property should be stored in the Lucene Document. The default value
+						is the property name (following the JavaBeans convention)</para>
+				</listitem>
+				
+				<listitem>
+					<para><literal>store</literal> : describe whether or not the
+						property is stored in the Lucene index. You can store the value
+						<literal>Store.YES</literal> (consuming more space in the index but
+						allowing projection, see <xref linkend="Hibernate_Search-Query-Projections" /> for more
+						information), store it in a compressed way
+						<literal>Store.COMPRESS</literal> (this does consume more CPU), or
+						avoid any storage <literal>Store.NO</literal> (this is the default
+						value). When a property is stored, you can retrieve it from the
+						Lucene Document (note that this is not related to whether the
+						element is indexed or not).</para>
+				</listitem>
+				
+				<listitem>
+					<para>index: describe how the element is indexed (i.e. the process
+						used to index the property and the type of information store). The
+						different values are <literal>Index.NO</literal> (no indexing, i.e.
+						cannot be found by a query), <literal>Index.TOKENIZED</literal> (use
+						an analyzer to process the property),
+						<literal>Index.UN_TOKENISED</literal> (no analyzer pre-processing),
+						<literal>Index.NO_NORM</literal> (do not store the normalization
+						data). The default value is <literal>TOKENIZED</literal>.</para>
+				</listitem>
+			</itemizedlist>
+			
+			<para>These attributes are part of the <literal>@Field</literal>
+				annotation.</para>
+			
+			<para>Whether or not you want to store the data depends on how you wish
+				to use the index query result. For a regular Hibernate Search usage,
+				storing is not necessary. However you might want to store some fields to
+				subsequently project them (see <xref linkend="Hibernate_Search-Query-Projections" /> for more
+				information).</para>
+			
+			<para>Whether or not you want to tokenize a property depends on whether
+				you wish to search the element as is, or by the words it contains. It
+				make sense to tokenize a text field, but it does not to do it for a date
+				field (or an id field). Note that fields used for sorting must not be
+				tokenized.</para>
+			
+			<para>Finally, the id property of an entity is a special property used
+				by Hibernate Search to ensure index unicity of a given entity. By
+				design, an id has to be stored and must not be tokenized. To mark a
+				property as index id, use the <literal>@DocumentId</literal>
+				annotation.</para>
+			
+			<programlisting>@Entity
+				@Indexed(index="indexes/essays")
+				public class Essay {
+				...
+				
+				@Id
+				<emphasis role="bold">@DocumentId</emphasis>
+				public Long getId() { return id; }
+				
+				<emphasis role="bold">@Field(name="Abstract", index=Index.TOKENIZED, store=Store.YES)</emphasis>
+				public String getSummary() { return summary; }
+				
+				@Lob
+				<emphasis role="bold">@Field(index=Index.TOKENIZED)</emphasis>
+				public String getText() { return text; }
+				}</programlisting>
+			
+			<para>These annotations define an index with three fields:
+				<literal>id</literal> , <literal>Abstract</literal> and
+				<literal>text</literal> . Note that by default the field name is
+				decapitalized, following the JavaBean specification.</para>
+			
+			<note>
+				<para>You <emphasis>must</emphasis> specify
+					<literal>@DocumentId</literal> on the identifier property of your
+					entity class.</para>
+			</note>
+		</section>
+		
+		<section id="Hibernate_Search-Entity-Mapping_Properties">
+			<title>Mapping properties multiple times</title>
+			
+			<para>It is sometimes needed to map a property multiple times per index,
+				with slightly different indexing strategies. Especially, sorting a query
+				by field requires the field to be <literal>UN_TOKENIZED</literal>. If
+				one want to search by words in this property and still sort it, one need
+				to index it twice, once tokenized, once untokenized. @Fields allows to
+				achieve this goal.</para>
+			
+			<programlisting>@Entity
+				@Indexed(index = "Book" )
+				public class Book {
+				@Fields( {
+				@Field(index = Index.TOKENIZED),
+				@Field(name = "summary_forSort", index = Index.UN_TOKENIZED, store = Store.YES)
+				} )
+				public String getSummary() {
+				return summary;
+				}
+				
+				...
+				}</programlisting>
+			
+			<para>The field summary is indexed twice, once as
+				<literal>summary</literal> in a tokenized way, and once as
+				<literal>summary_forSort</literal> in an untokenized way. @Field
+				supports 2 attributes useful when @Fields is used:</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para>analyzer: defines a @Analyzer annotation per field rather than
+						per property</para>
+				</listitem>
+				
+				<listitem>
+					<para>bridge: defines a @FieldBridge annotation per field rather
+						than per property</para>
+				</listitem>
+			</itemizedlist>
+			
+			<para>See below for more information about analyzers and field
+				bridges.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Entity-Embedded">
+			<title>Embedded and Associated Objects</title>
+			
+			<para>Associated objects as well as embedded objects can be indexed as
+				part of the root entity index. It is necessary if you expect to search a
+				given entity based on properties of the associated object(s). In the
+				following example, the use case is to return the places whose city is
+				Atlanta (In the Lucene query parser language, it would translate into
+				<code>address.city:Atlanta</code>).</para>
+			
+			<programlisting>@Entity
+				@Indexed
+				public class Place {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Long id;
+				
+				@Field( index = Index.TOKENIZED )
+				private String name;
+				
+				@OneToOne( cascade = { CascadeType.PERSIST, CascadeType.REMOVE } )
+				<emphasis role="bold">@IndexedEmbedded</emphasis>
+				private Address address;
+				....
+				}
+				
+				@Entity
+				@Indexed
+				public class Address {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Long id;
+				
+				@Field(index=Index.TOKENIZED)
+				private String street;
+				
+				@Field(index=Index.TOKENIZED)
+				private String city;
+				
+				<emphasis role="bold">@ContainedIn</emphasis>
+				@OneToMany(mappedBy="address")
+				private Set&lt;Place&gt; places;
+				...
+				}</programlisting>
+			
+			<para>
+				In this example, the place fields will be indexed in the
+				<literal>Place</literal> index. The <literal>Place</literal> index
+				documents will also contain the fields <literal>address.id</literal>,
+				<literal>address.street</literal>, and <literal>address.city</literal>
+				which you will be able to query. This is enabled by the
+				<literal>@IndexedEmbedded</literal> annotation.
+			</para>
+			
+			<para>
+				Be careful. Because the data is denormalized in the Lucene index
+				when using the <classname>@IndexedEmbedded</classname> technique,
+				Hibernate Search needs to be aware of any change in the Place object and
+				any change in the Address object to keep the index up to date. To make
+				sure the Place Lucene document is updated when it's Address changes, you
+				need to mark the other side of the bidirectional relationship with
+				<classname>@ContainedIn</classname>.
+			</para>
+			
+			<para><literal>@ContainedIn</literal> is only useful on associations
+				pointing to entities as opposed to embedded (collection of)
+				objects.</para>
+			
+			<para>Let's make our example a bit more complex:</para>
+			
+			<programlisting>@Entity
+				@Indexed
+				public class Place {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Long id;
+				
+				@Field( index = Index.TOKENIZED )
+				private String name;
+				
+				@OneToOne( cascade = { CascadeType.PERSIST, CascadeType.REMOVE } )
+				<emphasis role="bold">@IndexedEmbedded</emphasis>
+				private Address address;
+				....
+				}
+				
+				@Entity
+				@Indexed
+				public class Address {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Long id;
+				
+				@Field(index=Index.TOKENIZED)
+				private String street;
+				
+				@Field(index=Index.TOKENIZED)
+				private String city;
+				
+				<emphasis role="bold">@IndexedEmbedded(depth = 1, prefix = "ownedBy_")</emphasis>
+				private Owner ownedBy;
+				
+				<emphasis role="bold">@ContainedIn</emphasis>
+				@OneToMany(mappedBy="address")
+				private Set&lt;Place&gt; places;
+				...
+				}
+				
+				@Embeddable
+				public class Owner {
+				@Field(index = Index.TOKENIZED)
+				private String name;
+				...
+				}</programlisting>
+			
+			<para>Any <literal>@*ToOne</literal> and <literal>@Embedded</literal>
+				attribute can be annotated with <literal>@IndexedEmbedded</literal>. The
+				attributes of the associated class will then be added to the main entity
+				index. In the previous example, the index will contain the following
+				fields</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para>id</para>
+				</listitem>
+				
+				<listitem>
+					<para>name</para>
+				</listitem>
+				
+				<listitem>
+					<para>address.street</para>
+				</listitem>
+				
+				<listitem>
+					<para>address.city</para>
+				</listitem>
+				
+				<listitem>
+					<para>addess.ownedBy_name</para>
+				</listitem>
+			</itemizedlist>
+			
+			<para>The default prefix is <literal>propertyName.</literal>, following
+				the traditional object navigation convention. You can override it using
+				the <literal>prefix</literal> attribute as it is shown on the
+				<literal>ownedBy</literal> property.</para>
+			
+			<para><literal>depth</literal> is necessary when the object graph
+				contains a cyclic dependency of classes (not instances). For example, if
+				<classname>Owner</classname> points to <classname>Place</classname>.
+				Hibernate Search will stop including Indexed embedded attributes after
+				reaching the expected depth (or the object graph boundaries are
+				reached). A class having a self reference is an example of cyclic
+				dependency. In our example, because <literal>depth</literal> is set to
+				1, any <literal>@IndexedEmbedded</literal> attribute in Owner (if any)
+				will be ignored.</para>
+			
+			<para>Such a feature (<literal>@IndexedEmbedded</literal>) is very
+				useful to express queries referring to associated objects, such
+				as:</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para>Return places where name contains JBoss and where address city
+						is Atlanta. In Lucene query this would be</para>
+					
+					<programlisting>+name:jboss +address.city:atlanta  </programlisting>
+				</listitem>
+				
+				<listitem>
+					<para>Return places where name contains JBoss and where owner's name
+						contain Joe. In Lucene query this would be</para>
+					
+					<programlisting>+name:jboss +address.orderBy_name:joe  </programlisting>
+				</listitem>
+			</itemizedlist>
+			
+			<para>In a way it mimics the relational join operation in a more
+				efficient way (at the cost of data duplication). Remember that, out of
+				the box, Lucene indexes have no notion of association, the join
+				operation is simply non-existent. It might help to keep the relational
+				model normalized while benefiting from the full text index speed and
+				feature richness.</para>
+			
+			<para><note>
+					<para>An associated object can itself be (but don't have to)
+						<literal>@Indexed</literal></para>
+				</note></para>
+			
+			<para>When @IndexedEmbedded points to an entity, the association has to
+				be directional and the other side has to be annotated
+				<literal>@ContainedIn</literal> (as see in the previous example). If
+				not, Hibernate Search has no way to update the root index when the
+				associated entity is updated (in our example, a <literal>Place</literal>
+				index document has to be updated when the associated
+				<classname>Address</classname> instance is updated.</para>
+			
+			<para>Sometimes, the object type annotated by
+				<classname>@IndexedEmbedded</classname> is not the object type targeted
+				by Hibernate and Hibernate Search especially when interface are used in
+				lieu of their implementation. You can override the object type targeted
+				by Hibernate Search using the <command>targetElement</command>
+				parameter.</para>
+			
+			<programlisting>@Entity
+				@Indexed
+				public class Address {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Long id;
+				
+				@Field(index= Index.TOKENIZED)
+				private String street;
+				
+				@IndexedEmbedded(depth = 1, prefix = "ownedBy_", <emphasis role="bold">targetElement = Owner.class</emphasis>)
+				@Target(Owner.class)
+				private Person ownedBy;
+				
+				
+				...
+				}
+				
+				@Embeddable
+				public class Owner implements Person { ... }</programlisting>
+		</section>
+		
+		<section id="Hibernate_Search-Entity-Boost_Factor">
+			<title>Boost factor</title>
+			
+			<para>Lucene has the notion of <emphasis>boost factor</emphasis> . It's
+				a way to give more weight to a field or to an indexed element over an
+				other during the indexation process. You can use
+				<literal>@Boost</literal> at the field or the class level.</para>
+			
+			<programlisting>@Entity
+				@Indexed(index="indexes/essays")
+				<emphasis role="bold">@Boost(2)</emphasis>
+				public class Essay {
+				...
+				
+				@Id
+				@DocumentId
+				public Long getId() { return id; }
+				
+				@Field(name="Abstract", index=Index.TOKENIZED, store=Store.YES)
+				<emphasis role="bold">@Boost(2.5f)</emphasis>
+				public String getSummary() { return summary; }
+				
+				@Lob
+				@Field(index=Index.TOKENIZED)
+				public String getText() { return text; }
+				}        </programlisting>
+			
+			<para>In our example, Essay's probability to reach the top of the search
+				list will be multiplied by 2 and the summary field will be 2.5 more
+				important than the test field. Note that this explanation is actually
+				wrong, but it is simple and close enough to the reality. Please check
+				the Lucene documentation or the excellent <citetitle>Lucene In Action
+				</citetitle> from Otis Gospodnetic and Erik Hatcher.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Entity-Analyzer">
+			<title>Analyzer</title>
+			
+			<para>The default analyzer class used to index the elements is
+				configurable through the <literal>hibernate.search.analyzer</literal>
+				property. If none is defined,
+				<classname>org.apache.lucene.analysis.standard.StandardAnalyzer</classname>
+				is used as the default.</para>
+			
+			<para>You can also define the analyzer class per entity, per property
+				and even per @Field (useful when multiple fields are indexed from a
+				single property).</para>
+			
+			<programlisting>@Entity
+				@Indexed
+				@Analyzer(impl = EntityAnalyzer.class)
+				public class MyEntity {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Integer id;
+				
+				@Field(index = Index.TOKENIZED)
+				private String name;
+				
+				@Field(index = Index.TOKENIZED)
+				@Analyzer(impl = PropertyAnalyzer.class)
+				private String summary;
+				
+				@Field(index = Index.TOKENIZED, analyzer = @Analyzer(impl = FieldAnalyzer.class)
+				private String body;
+				
+				...
+				}</programlisting>
+			
+			<para>In this example, <classname>EntityAnalyzer</classname> is used
+				index all tokenized properties (e.g. <literal>name</literal>), except for
+				<literal>summary</literal> and <literal>body</literal> which are indexed
+				with <classname>PropertyAnalyzer</classname> and
+				<classname>FieldAnalyzer</classname> respectively.</para>
+			
+			<warning>
+				<para>
+					Mixing different analyzers in the same entity is most of the
+					time a bad practice. It makes query building more complex and results
+					less predictable (for the novice), especially if you are using a
+					QueryParser (which uses the same analyzer for the whole query). As a
+					thumb rule, the same analyzer should be used for both the indexing and
+					the query for a given field.
+				</para>
+			</warning>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Mapping-Bridge">
+		<title>Property/Field Bridge</title>
+		
+		<para>In Lucene all index fields have to be represented as Strings. For
+			this reason all entity properties annotated with <literal>@Field</literal>
+			have to be indexed in a String form. For most of your properties,
+			Hibernate Search does the translation job for you thanks to a built-in set
+			of bridges. In some cases, though you need a more fine grain control over
+			the translation process.</para>
+		
+		<section>
+			<title>Built-in bridges</title>
+			
+			<para><literal>Hibernate Search</literal> comes bundled with a set of
+				built-in bridges between a Java property type and its full text
+				representation.</para>
+			
+			<variablelist>
+				<varlistentry>
+					<term>null</term>
+					
+					<listitem>
+						<para>null elements are not indexed. Lucene does not support null
+							elements and this does not make much sense either.</para>
+					</listitem>
+				</varlistentry>
+				
+				<varlistentry>
+					<term>java.lang.String</term>
+					
+					<listitem>
+						<para>String are indexed as is</para>
+					</listitem>
+				</varlistentry>
+				
+				<varlistentry>
+					<term>short, Short, integer, Integer, long, Long, float, Float,
+						double, Double, BigInteger, BigDecimal</term>
+					
+					<listitem>
+						<para>Numbers are converted in their String representation. Note
+							that numbers cannot be compared by Lucene (i.e. used in ranged
+							queries) out of the box: they have to be padded <footnote>
+								<para>Using a Range query is debatable and has drawbacks, an
+									alternative approach is to use a Filter query which will
+									filter the result query to the appropriate range.</para>
+								
+								<para>Hibernate Search will support a padding mechanism</para>
+							</footnote></para>
+					</listitem>
+				</varlistentry>
+				
+				<varlistentry>
+					<term>java.util.Date</term>
+					
+					<listitem>
+						<para>Dates are stored as yyyyMMddHHmmssSSS in GMT time
+							(200611072203012 for Nov 7th of 2006 4:03PM and 12ms EST). You
+							shouldn't really bother with the internal format. What is
+							important is that when using a DateRange Query, you should know
+							that the dates have to be expressed in GMT time.</para>
+						
+						<para>Usually, storing the date up to the millisecond is not
+							necessary. <literal>@DateBridge</literal> defines the appropriate
+							resolution you are willing to store in the index ( <literal>
+								<literal>@DateBridge(resolution=Resolution.DAY)</literal>
+							</literal> ). The date pattern will then be truncated
+							accordingly.</para>
+						
+						<programlisting>@Entity 
+							@Indexed
+							public class Meeting {
+							@Field(index=Index.UN_TOKENIZED)
+							<emphasis role="bold">@DateBridge(resolution=Resolution.MINUTE)</emphasis>
+							private Date date;
+							...                 </programlisting>
+						
+						<warning>
+							<para>A Date whose resolution is lower than
+								<literal>MILLISECOND</literal> cannot be a
+								<literal>@DocumentId</literal></para>
+						</warning>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+			
+		</section>
+		
+		<section id="Hibernation_Search-Bridge-Custom_Bridge">
+			<title>Custom Bridge</title>
+			
+			<para>It can happen that the built-in bridges of Hibernate Search do not
+				cover some of your property types, or that the String representation
+				used is not what you expect. The following paragraphs several solutions
+				for this problem.</para>
+			
+			<section id="Hibernation_Search-Custom_Bridge-StringBridge">
+				<title>StringBridge</title>
+				
+				<para>The simplest custom solution is to give <productname>Hibernate
+						Search </productname> an implementation of your expected
+					<emphasis>object to String</emphasis> bridge. To do so you need to
+					implements the
+					<literal>org.hibernate.search.bridge.StringBridge</literal>
+					interface</para>
+				
+				<programlisting>/**
+					* Padding Integer bridge.
+					* All numbers will be padded with 0 to match 5 digits
+					*
+					* @author Emmanuel Bernard
+					*/
+					public class PaddedIntegerBridge implements <emphasis role="bold">StringBridge</emphasis> {
+					
+					private int PADDING = 5;
+					
+					<emphasis role="bold">public String objectToString(Object object)</emphasis> {
+					String rawInteger = ( (Integer) object ).toString();
+					if (rawInteger.length() &gt; PADDING) 
+					throw new IllegalArgumentException( "Try to pad on a number too big" );
+					StringBuilder paddedInteger = new StringBuilder( );
+					for ( int padIndex = rawInteger.length() ; padIndex &lt; PADDING ; padIndex++ ) {
+					paddedInteger.append('0');
+					}
+					return paddedInteger.append( rawInteger ).toString();
+					}
+					}                </programlisting>
+				
+				<para>Then any property or field can use this bridge thanks to the
+					<literal>@FieldBridge</literal> annotation</para>
+				
+				<programlisting><emphasis role="bold">@FieldBridge(impl = PaddedIntegerBridge.class)</emphasis>
+					private Integer length;                </programlisting>
+				
+				<para>Parameters can be passed to the Bridge implementation making it
+					more flexible. The Bridge implementation implements a
+					<classname>ParameterizedBridge</classname> interface, and the
+					parameters are passed through the <literal>@FieldBridge</literal>
+					annotation.</para>
+				
+				<programlisting>public class PaddedIntegerBridge implements StringBridge, <emphasis
+										role="bold">ParameterizedBridge</emphasis> {
+					
+					public static String PADDING_PROPERTY = "padding";
+					private int padding = 5; //default
+					
+					<emphasis role="bold">public void setParameterValues(Map parameters)</emphasis> {
+					Object padding = parameters.get( PADDING_PROPERTY );
+					if (padding != null) this.padding = (Integer) padding;
+					}
+					
+					public String objectToString(Object object) {
+					String rawInteger = ( (Integer) object ).toString();
+					if (rawInteger.length() &gt; padding) 
+					throw new IllegalArgumentException( "Try to pad on a number too big" );
+					StringBuilder paddedInteger = new StringBuilder( );
+					for ( int padIndex = rawInteger.length() ; padIndex &lt; padding ; padIndex++ ) {
+					paddedInteger.append('0');
+					}
+					return paddedInteger.append( rawInteger ).toString();
+					}
+					}
+					
+					
+					//property
+					@FieldBridge(impl = PaddedIntegerBridge.class,
+					<emphasis role="bold">params = @Parameter(name="padding", value="10")</emphasis>
+					)
+					private Integer length;                </programlisting>
+				
+				<para>The <classname>ParameterizedBridge</classname> interface can be
+					implemented by <classname>StringBridge</classname> ,
+					<classname>TwoWayStringBridge</classname> ,
+					<classname>FieldBridge</classname> implementations (see
+					bellow).</para>
+				
+				<para>If you expect to use your bridge implementation on for an id
+					property (i.e. annotated with <literal>@DocumentId</literal> ), you need
+					to use a slightly extended version of <literal>StringBridge</literal>
+					named <classname>TwoWayStringBridge</classname> . <literal>Hibernate
+						Search </literal> needs to read the string representation of the
+					identifier and generate the object out of it. There is not difference
+					in the way the <literal>@FieldBridge</literal> annotation is
+					used.</para>
+				
+				<programlisting>public class PaddedIntegerBridge implements TwoWayStringBridge, ParameterizedBridge {
+					
+					public static String PADDING_PROPERTY = "padding";
+					private int padding = 5; //default
+					
+					public void setParameterValues(Map parameters) {
+					Object padding = parameters.get( PADDING_PROPERTY );
+					if (padding != null) this.padding = (Integer) padding;
+					}
+					
+					public String objectToString(Object object) {
+					String rawInteger = ( (Integer) object ).toString();
+					if (rawInteger.length() &gt; padding) 
+					throw new IllegalArgumentException( "Try to pad on a number too big" );
+					StringBuilder paddedInteger = new StringBuilder( );
+					for ( int padIndex = rawInteger.length() ; padIndex &lt; padding ; padIndex++ ) {
+					paddedInteger.append('0');
+					}
+					return paddedInteger.append( rawInteger ).toString();
+					}
+					
+					<emphasis role="bold">public Object stringToObject(String stringValue)</emphasis> {
+					return new Integer(stringValue);
+					}
+					}
+					
+					
+					//id property
+					@DocumentId
+					@FieldBridge(impl = PaddedIntegerBridge.class,
+					params = @Parameter(name="padding", value="10") 
+					private Integer id;
+				</programlisting>
+				
+				<para>	
+					It is critically important for the two-way process to be
+					idempotent (i.e. object = stringToObject( objectToString( object ) )
+					).
+				</para>
+			</section>
+			
+			<section id="Hibernation_Search-Custom_Bridge-FieldBridge">
+				<title>FieldBridge</title>
+				
+				<para>Some usecases requires more than a simple object to string
+					translation when mapping a property to a Lucene index. To give you
+					most of the flexibility you can also implement a bridge as a
+					<classname>FieldBridge</classname> . This interface give you a
+					property value and let you map it the way you want in your Lucene
+					<classname>Document</classname> .This interface is very similar in its
+					concept to the <productname>Hibernate</productname>
+					<classname>UserType</classname> .</para>
+				
+				<para>You can for example store a given property in two different
+					document fields</para>
+				
+				<programlisting>/**
+					* Store the date in 3 different field year, month, day
+					* to ease Range Query per year, month or day
+					* (e.g. get all the elements of December for the last 5 years)
+					*
+					* @author Emmanuel Bernard
+					*/
+					public class DateSplitBridge implements FieldBridge {
+					private final static TimeZone GMT = TimeZone.getTimeZone("GMT");
+					
+					<emphasis role="bold">public void set(String name, Object value, Document document, Field.Store
+						store, Field.Index index, Float boost) {
+					</emphasis>
+					Date date = (Date) value;
+					Calendar cal = GregorianCalendar.getInstance( GMT );
+					cal.setTime( date );
+					int year = cal.get( Calendar.YEAR );
+					int month = cal.get( Calendar.MONTH ) + 1;
+					int day = cal.get( Calendar.DAY_OF_MONTH );
+					//set year
+					Field field = new Field( name + ".year", String.valueOf(year), store, index );
+					if ( boost != null ) field.setBoost( boost );
+					document.add( field );
+					//set month and pad it if needed
+					field = new Field( name + ".month", month &lt; 10 ? "0" : "" + String.valueOf(month), store, index);
+					if ( boost != null ) field.setBoost( boost );
+					document.add( field );
+					//set day and pad it if needed
+					field = new Field( name + ".day", day &lt; 10 ? "0" : "" + String.valueOf(day), store, index );
+					if ( boost != null ) field.setBoost( boost );
+					document.add( field );
+					}
+					}
+					
+					
+					//property
+					<emphasis role="bold">@FieldBridge(impl = DateSplitBridge.class)</emphasis>
+					private Integer length;                </programlisting>
+			
+			</section>
+			
+			<section id="Hibernation_Search-Custom_Bridge-ClassBridge">
+				<title>@ClassBridge</title>
+				
+				<para>It is sometimes useful to combine more than one property of a
+					given entity and index this combination in a specific way into the
+					Lucene index. The <classname>@ClassBridge</classname> and
+					<classname>@ClassBridges</classname> annotations can be defined at the
+					class level (as opposed to the property level). In this case the
+					custom field bridge implementation receives the entity instance as the
+					value parameter instead of a particular property.</para>
+				
+				<programlisting>@Entity
+					@Indexed
+					<emphasis role="bold">@ClassBridge</emphasis>(name="branchnetwork",
+					index=Index.TOKENIZED,
+					store=Store.YES,
+					impl = <emphasis role="bold">CatFieldsClassBridge.class</emphasis>,
+					params = @Parameter( name="sepChar", value=" " ) )
+					public class Department {
+					private int id;
+					private String network;
+					private String branchHead;
+					private String branch;
+					private Integer maxEmployees;
+					...
+					}
+					
+					public class CatFieldsClassBridge implements FieldBridge, ParameterizedBridge {
+					
+					private String sepChar;
+					
+					public void setParameterValues(Map parameters) {
+					this.sepChar = (String) parameters.get( "sepChar" );
+					}
+					
+					public void set(String name, 
+					Object value, //the department instance (entity) in this case
+					Document document, //the Lucene document 
+					Field.Store store, Field.Index index, Float boost) {
+					// In this particular class the name of the new field was passed
+					// from the name field of the ClassBridge Annotation. This is not
+					// a requirement. It just works that way in this instance. The
+					// actual name could be supplied by hard coding it below.
+					Department dep = (Department) value;
+					String fieldValue1 = dep.getBranch();
+					if ( fieldValue1 == null ) {
+					fieldValue1 = "";
+					}
+					String fieldValue2 = dep.getNetwork();
+					if ( fieldValue2 == null ) {
+					fieldValue2 = "";
+					}
+					String fieldValue = fieldValue1 + sepChar + fieldValue2;
+					Field field = new Field( name, fieldValue, store, index );
+					if ( boost != null ) field.setBoost( boost );
+					document.add( field );
+					}
+					}</programlisting>
+				
+				<para>In this example, the particular
+					<classname>CatFieldsClassBridge</classname> is applied to the
+					<literal>department</literal> instance, the field bridge then
+					concatenate both branch and network and index the
+					concatenation.</para>
+			</section>
+		</section>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Mapping.xml.bak
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Mapping.xml.bak	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Mapping.xml.bak	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,842 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Mapping">
+	<title>Mapping Entities to the Index Structure</title>
+	
+	<para>All the metadata information needed to index entities is described
+		through some Java annotations. There is no need for xml mapping files nor a
+		list of indexed entities. The list is discovered at startup by scanning
+		the Hibernate mapped entities.</para>
+	
+	<section id="Hibernate_Search-Mapping-Entity">
+		<title>Mapping an entity</title>
+		
+		<section id="Hibernate_Search-Entity-Basic_Mapping">
+			<title>Basic mapping</title>
+			
+			<para>First, we must declare a persistent class as indexable. This is
+				done by annotating the class with <literal>@Indexed</literal> (all
+				entities not annotated with <literal>@Indexed</literal> will be ignored
+				by the indexing process):</para>
+			
+			<programlisting>@Entity
+				<emphasis role="bold">@Indexed(index="indexes/essays")</emphasis>
+				public class Essay {
+				...
+				}</programlisting>
+			
+			<para>The <literal>index</literal> attribute tells Hibernate what the
+				Lucene directory name is (usually a directory on your file system). If
+				you wish to define a base directory for all Lucene indexes, you can use
+				the <literal>hibernate.search.default.indexBase</literal> property in
+				your configuration file. Each entity instance will be represented by a
+				Lucene <classname>Document</classname> inside the given index (aka
+				Directory).</para>
+			
+			<para>For each property (or attribute) of your entity, you have the
+				ability to describe how it will be indexed. The default (ie no
+				annotation) means that the property is completly ignored by the indexing
+				process. <literal>@Field</literal> does declare a property as indexed.
+				When indexing an element to a Lucene document you can specify how it is
+				indexed:</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para><literal>name</literal> : describe under which name, the
+						property should be stored in the Lucene Document. The default value
+						is the property name (following the JavaBeans convention)</para>
+				</listitem>
+				
+				<listitem>
+					<para><literal>store</literal> : describe whether or not the
+						property is stored in the Lucene index. You can store the value
+						<literal>Store.YES</literal> (comsuming more space in the index but
+						allowing projection, see <xref linkend="Hibernate_Search-Query-Projections" /> for more
+						information), store it in a compressed way
+						<literal>Store.COMPRESS</literal> (this does consume more CPU), or
+						avoid any storage <literal>Store.NO</literal> (this is the default
+						value). When a property is stored, you can retrieve it from the
+						Lucene Document (note that this is not related to whether the
+						element is indexed or not).</para>
+				</listitem>
+				
+				<listitem>
+					<para>index: describe how the element is indexed (ie the process
+						used to index the property and the type of information store). The
+						different values are <literal>Index.NO</literal> (no indexing, ie
+						cannot be found by a query), <literal>Index.TOKENIZED</literal> (use
+						an analyzer to process the property),
+						<literal>Index.UN_TOKENISED</literal> (no analyzer pre processing),
+						<literal>Index.NO_NORM</literal> (do not store the normalization
+						data). The default value is <literal>TOKENIZED</literal>.</para>
+				</listitem>
+			</itemizedlist>
+			
+			<para>These attributes are part of the <literal>@Field</literal>
+				annotation.</para>
+			
+			<para>Whether or not you want to store the data depends on how you wish
+				to use the index query result. For a regular Hibernate Search usage,
+				storing is not necessary. However you might want to store some fields to
+				subsequently project them (see <xref linkend="Hibernate_Search-Query-Projections" /> for more
+				information).</para>
+			
+			<para>Whether or not you want to tokenize a property depends on whether
+				you wish to search the element as is, or by the words it contains. It
+				make sense to tokenize a text field, but it does not to do it for a date
+				field (or an id field). Note that fields used for sorting must not be
+				tokenized.</para>
+			
+			<para>Finally, the id property of an entity is a special property used
+				by Hibernate Search to ensure index unicity of a given entity. By
+				design, an id has to be stored and must not be tokenized. To mark a
+				property as index id, use the <literal>@DocumentId</literal>
+				annotation.</para>
+			
+			<programlisting>@Entity
+				@Indexed(index="indexes/essays")
+				public class Essay {
+				...
+				
+				@Id
+				<emphasis role="bold">@DocumentId</emphasis>
+				public Long getId() { return id; }
+				
+				<emphasis role="bold">@Field(name="Abstract", index=Index.TOKENIZED, store=Store.YES)</emphasis>
+				public String getSummary() { return summary; }
+				
+				@Lob
+				<emphasis role="bold">@Field(index=Index.TOKENIZED)</emphasis>
+				public String getText() { return text; }
+				}</programlisting>
+			
+			<para>These annotations define an index with three fields:
+				<literal>id</literal> , <literal>Abstract</literal> and
+				<literal>text</literal> . Note that by default the field name is
+				decapitalized, following the JavaBean specification.</para>
+			
+			<note>
+				<para>You <emphasis>must</emphasis> specify
+					<literal>@DocumentId</literal> on the identifier property of your
+					entity class.</para>
+			</note>
+		</section>
+		
+		<section id="Hibernate_Search-Entity-Mapping_Properties">
+			<title>Mapping properties multiple times</title>
+			
+			<para>It is sometimes needed to map a property multiple times per index,
+				with slightly different indexing strategies. Especially, sorting a query
+				by field requires the field to be <literal>UN_TOKENIZED</literal>. If
+				one want to search by words in this property and still sort it, one need
+				to index it twice, once tokenized, once untokenized. @Fields allows to
+				achieve this goal.</para>
+			
+			<programlisting>@Entity
+				@Indexed(index = "Book" )
+				public class Book {
+				@Fields( {
+				@Field(index = Index.TOKENIZED),
+				@Field(name = "summary_forSort", index = Index.UN_TOKENIZED, store = Store.YES)
+				} )
+				public String getSummary() {
+				return summary;
+				}
+				
+				...
+				}</programlisting>
+			
+			<para>The field summary is indexed twice, once as
+				<literal>summary</literal> in a tokenized way, and once as
+				<literal>summary_forSort</literal> in an untokenized way. @Field
+				supports 2 attributes useful when @Fields is used:</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para>analyzer: defines a @Analyzer annotation per field rather than
+						per property</para>
+				</listitem>
+				
+				<listitem>
+					<para>bridge: defines a @FieldBridge annotation per field rather
+						than per property</para>
+				</listitem>
+			</itemizedlist>
+			
+			<para>See below for more information about analyzers and field
+				bridges.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Entity-Embedded">
+			<title>Embedded and Associated Objects</title>
+			
+			<para>Associated objects as well as embedded objects can be indexed as
+				part of the root entity index. It is necessary if you expect to search a
+				given entity based on properties of the associated object(s). In the
+				following example, the use case is to return the places whose city is
+				Atlanta (In the Lucene query parser language, it would translate into
+				<code>address.city:Atlanta</code>).</para>
+			
+			<programlisting>@Entity
+				@Indexed
+				public class Place {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Long id;
+				
+				@Field( index = Index.TOKENIZED )
+				private String name;
+				
+				@OneToOne( cascade = { CascadeType.PERSIST, CascadeType.REMOVE } )
+				<emphasis role="bold">@IndexedEmbedded</emphasis>
+				private Address address;
+				....
+				}
+				
+				@Entity
+				@Indexed
+				public class Address {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Long id;
+				
+				@Field(index=Index.TOKENIZED)
+				private String street;
+				
+				@Field(index=Index.TOKENIZED)
+				private String city;
+				
+				<emphasis role="bold">@ContainedIn</emphasis>
+				@OneToMany(mappedBy="address")
+				private Set&lt;Place&gt; places;
+				...
+				}</programlisting>
+			
+			<para>
+				In this example, the place fields will be indexed in the
+				<literal>Place</literal> index. The <literal>Place</literal> index
+				documents will also contain the fields <literal>address.id</literal>,
+				<literal>address.street</literal>, and <literal>address.city</literal>
+				which you will be able to query. This is enabled by the
+				<literal>@IndexedEmbedded</literal> annotation.
+			</para>
+			
+			<para>
+				Be careful. Because the data is denormalized in the Lucene index
+				when using the <classname>@IndexedEmbedded</classname> technique,
+				Hibernate Search needs to be aware of any change in the Place object and
+				any change in the Address object to keep the index up to date. To make
+				sure the Place Lucene document is updated when it's Address changes, you
+				need to mark the other side of the birirectional relationship with
+				<classname>@ContainedIn</classname>.
+			</para>
+			
+			<para><literal>@ContainedIn</literal> is only useful on associations
+				pointing to entities as opposed to embedded (collection of)
+				objects.</para>
+			
+			<para>Let's make our example a bit more complex:</para>
+			
+			<programlisting>@Entity
+				@Indexed
+				public class Place {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Long id;
+				
+				@Field( index = Index.TOKENIZED )
+				private String name;
+				
+				@OneToOne( cascade = { CascadeType.PERSIST, CascadeType.REMOVE } )
+				<emphasis role="bold">@IndexedEmbedded</emphasis>
+				private Address address;
+				....
+				}
+				
+				@Entity
+				@Indexed
+				public class Address {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Long id;
+				
+				@Field(index=Index.TOKENIZED)
+				private String street;
+				
+				@Field(index=Index.TOKENIZED)
+				private String city;
+				
+				<emphasis role="bold">@IndexedEmbedded(depth = 1, prefix = "ownedBy_")</emphasis>
+				private Owner ownedBy;
+				
+				<emphasis role="bold">@ContainedIn</emphasis>
+				@OneToMany(mappedBy="address")
+				private Set&lt;Place&gt; places;
+				...
+				}
+				
+				@Embeddable
+				public class Owner {
+				@Field(index = Index.TOKENIZED)
+				private String name;
+				...
+				}</programlisting>
+			
+			<para>Any <literal>@*ToOne</literal> and <literal>@Embedded</literal>
+				attribute can be annotated with <literal>@IndexedEmbedded</literal>. The
+				attributes of the associated class will then be added to the main entity
+				index. In the previous example, the index will contain the following
+				fields</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para>id</para>
+				</listitem>
+				
+				<listitem>
+					<para>name</para>
+				</listitem>
+				
+				<listitem>
+					<para>address.street</para>
+				</listitem>
+				
+				<listitem>
+					<para>address.city</para>
+				</listitem>
+				
+				<listitem>
+					<para>addess.ownedBy_name</para>
+				</listitem>
+			</itemizedlist>
+			
+			<para>The default prefix is <literal>propertyName.</literal>, following
+				the traditional object navigation convention. You can override it using
+				the <literal>prefix</literal> attribute as it is shown on the
+				<literal>ownedBy</literal> property.</para>
+			
+			<para><literal>depth</literal> is necessary when the object graph
+				contains a cyclic dependency of classes (not instances). For example, if
+				<classname>Owner</classname> points to <classname>Place</classname>.
+				Hibernate Search will stop including Indexed embedded atttributes after
+				reaching the expected depth (or the object graph boundaries are
+				reached). A class having a self reference is an example of cyclic
+				dependency. In our example, because <literal>depth</literal> is set to
+				1, any <literal>@IndexedEmbedded</literal> attribute in Owner (if any)
+				will be ignored.</para>
+			
+			<para>Such a feature (<literal>@IndexedEmbedded</literal>) is very
+				useful to express queries refering to associated objects, such
+				as:</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para>Return places where name contains JBoss and where address city
+						is Atlanta. In Lucene query this would be</para>
+					
+					<programlisting>+name:jboss +address.city:atlanta  </programlisting>
+				</listitem>
+				
+				<listitem>
+					<para>Return places where name contains JBoss and where owner's name
+						contain Joe. In Lucene query this would be</para>
+					
+					<programlisting>+name:jboss +address.orderBy_name:joe  </programlisting>
+				</listitem>
+			</itemizedlist>
+			
+			<para>In a way it mimics the relational join operation in a more
+				efficient way (at the cost of data duplication). Remember that, out of
+				the box, Lucene indexes have no notion of association, the join
+				operation is simply non-existent. It might help to keep the relational
+				model normalzed while benefiting from the full text index speed and
+				feature richness.</para>
+			
+			<para><note>
+					<para>An associated object can itself be (but don't have to)
+						<literal>@Indexed</literal></para>
+				</note></para>
+			
+			<para>When @IndexedEmbedded points to an entity, the association has to
+				be directional and the other side has to be annotated
+				<literal>@ContainedIn</literal> (as see in the previous example). If
+				not, Hibernate Search has no way to update the root index when the
+				associated entity is updated (in ou example, a <literal>Place</literal>
+				index document has to be updated when the associated
+				<classname>Address</classname> instance is updated.</para>
+			
+			<para>Sometimes, the object type annotated by
+				<classname>@IndexedEmbedded</classname> is not the object type targeted
+				by Hibernate and Hibernate Search especially when interface are used in
+				lieu of their implementation. You can override the object type targeted
+				by Hibernate Search using the <command>targetElement</command>
+				parameter.</para>
+			
+			<programlisting>@Entity
+				@Indexed
+				public class Address {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Long id;
+				
+				@Field(index= Index.TOKENIZED)
+				private String street;
+				
+				@IndexedEmbedded(depth = 1, prefix = "ownedBy_", <emphasis role="bold">targetElement = Owner.class</emphasis>)
+				@Target(Owner.class)
+				private Person ownedBy;
+				
+				
+				...
+				}
+				
+				@Embeddable
+				public class Owner implements Person { ... }</programlisting>
+		</section>
+		
+		<section id="Hibernate_Search-Entity-Boost_Factor">
+			<title>Boost factor</title>
+			
+			<para>Lucene has the notion of <emphasis>boost factor</emphasis> . It's
+				a way to give more weigth to a field or to an indexed element over an
+				other during the indexation process. You can use
+				<literal>@Boost</literal> at the field or the class level.</para>
+			
+			<programlisting>@Entity
+				@Indexed(index="indexes/essays")
+				<emphasis role="bold">@Boost(2)</emphasis>
+				public class Essay {
+				...
+				
+				@Id
+				@DocumentId
+				public Long getId() { return id; }
+				
+				@Field(name="Abstract", index=Index.TOKENIZED, store=Store.YES)
+				<emphasis role="bold">@Boost(2.5f)</emphasis>
+				public String getSummary() { return summary; }
+				
+				@Lob
+				@Field(index=Index.TOKENIZED)
+				public String getText() { return text; }
+				}        </programlisting>
+			
+			<para>In our example, Essay's probability to reach the top of the search
+				list will be multiplied by 2 and the summary field will be 2.5 more
+				important than the test field. Note that this explaination is actually
+				wrong, but it is simple and close enought to the reality. Please check
+				the Lucene documentation or the excellent <citetitle>Lucene In Action
+				</citetitle> from Otis Gospodnetic and Erik Hatcher.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Entity-Analyzer">
+			<title>Analyzer</title>
+			
+			<para>The default analyzer class used to index the elements is
+				configurable through the <literal>hibernate.search.analyzer</literal>
+				property. If none is defined,
+				<classname>org.apache.lucene.analysis.standard.StandardAnalyzer</classname>
+				is used as the default.</para>
+			
+			<para>You can also define the analyzer class per entity, per property
+				and even per @Field (useful when multiple fields are indexed from a
+				single property).</para>
+			
+			<programlisting>@Entity
+				@Indexed
+				@Analyzer(impl = EntityAnalyzer.class)
+				public class MyEntity {
+				@Id
+				@GeneratedValue
+				@DocumentId
+				private Integer id;
+				
+				@Field(index = Index.TOKENIZED)
+				private String name;
+				
+				@Field(index = Index.TOKENIZED)
+				@Analyzer(impl = PropertyAnalyzer.class)
+				private String summary;
+				
+				@Field(index = Index.TOKENIZED, analyzer = @Analyzer(impl = FieldAnalyzer.class)
+				private String body;
+				
+				...
+				}</programlisting>
+			
+			<para>In this example, <classname>EntityAnalyzer</classname> is used
+				index all tokenized properties (eg. <literal>name</literal>), except for
+				<literal>summary</literal> and <literal>body</literal> which are indexed
+				with <classname>PropertyAnalyzer</classname> and
+				<classname>FieldAnalyzer</classname> respectively.</para>
+			
+			<warning>
+				<para>
+					Mixing different analyzers in the same entity is most of the
+					time a bad practice. It makes query building more complex and results
+					less predictable (for the novice), especially if you are using a
+					QueryParser (which uses the same analyzer for the whole query). As a
+					thumb rule, the same analyzer should be used for both the indexing and
+					the query for a given field.
+				</para>
+			</warning>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Mapping-Bridge">
+		<title>Property/Field Bridge</title>
+		
+		<para>In Lucene all index fields have to be represented as Strings. For
+			this reason all entity properties annotated with <literal>@Field</literal>
+			have to be indexed in a String form. For most of your properties,
+			Hibernate Search does the translation job for you thanks to a built-in set
+			of bridges. In some cases, though you need a more fine grain control over
+			the translation process.</para>
+		
+		<section>
+			<title>Built-in bridges</title>
+			
+			<para><literal>Hibernate Search</literal> comes bundled with a set of
+				built-in bridges between a Java property type and its full text
+				representation.</para>
+			
+			<variablelist>
+				<varlistentry>
+					<term>null</term>
+					
+					<listitem>
+						<para>null elements are not indexed. Lucene does not support null
+							elements and this does not make much sense either.</para>
+					</listitem>
+				</varlistentry>
+				
+				<varlistentry>
+					<term>java.lang.String</term>
+					
+					<listitem>
+						<para>String are indexed as is</para>
+					</listitem>
+				</varlistentry>
+				
+				<varlistentry>
+					<term>short, Short, integer, Integer, long, Long, float, Float,
+						double, Double, BigInteger, BigDecimal</term>
+					
+					<listitem>
+						<para>Numbers are converted in their String representation. Note
+							that numbers cannot be compared by Lucene (ie used in ranged
+							queries) out of the box: they have to be padded <footnote>
+								<para>Using a Range query is debatable and has drawbacks, an
+									alternative approach is to use a Filter query which will
+									filter the result query to the appropriate range.</para>
+								
+								<para>Hibernate Search will support a padding mechanism</para>
+							</footnote></para>
+					</listitem>
+				</varlistentry>
+				
+				<varlistentry>
+					<term>java.util.Date</term>
+					
+					<listitem>
+						<para>Dates are stored as yyyyMMddHHmmssSSS in GMT time
+							(200611072203012 for Nov 7th of 2006 4:03PM and 12ms EST). You
+							shouldn't really bother with the internal format. What is
+							important is that when using a DateRange Query, you should know
+							that the dates have to be expressed in GMT time.</para>
+						
+						<para>Usually, storing the date up to the milisecond is not
+							necessary. <literal>@DateBridge</literal> defines the appropriate
+							resolution you are willing to store in the index ( <literal>
+								<literal>@DateBridge(resolution=Resolution.DAY)</literal>
+							</literal> ). The date pattern will then be truncated
+							accordingly.</para>
+						
+						<programlisting>@Entity 
+							@Indexed
+							public class Meeting {
+							@Field(index=Index.UN_TOKENIZED)
+							<emphasis role="bold">@DateBridge(resolution=Resolution.MINUTE)</emphasis>
+							private Date date;
+							...                 </programlisting>
+						
+						<warning>
+							<para>A Date whose resolution is lower than
+								<literal>MILLISECOND</literal> cannot be a
+								<literal>@DocumentId</literal></para>
+						</warning>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+			
+		</section>
+		
+		<section id="Hibernation_Search-Bridge-Custom_Bridge">
+			<title>Custom Bridge</title>
+			
+			<para>It can happen that the built-in bridges of Hibernate Search do not
+				cover some of your property types, or that the String representation
+				used is not what you expect. The following paragraphs sveral solutions
+				for this problem.</para>
+			
+			<section id="Hibernation_Search-Custom_Bridge-StringBridge">
+				<title>StringBridge</title>
+				
+				<para>The simpliest custom solution is to give <productname>Hibernate
+						Search </productname> an implementation of your expected
+					<emphasis>object to String</emphasis> bridge. To do so you need to
+					implements the
+					<literal>org.hibernate.search.bridge.StringBridge</literal>
+					interface</para>
+				
+				<programlisting>/**
+					* Padding Integer bridge.
+					* All numbers will be padded with 0 to match 5 digits
+					*
+					* @author Emmanuel Bernard
+					*/
+					public class PaddedIntegerBridge implements <emphasis role="bold">StringBridge</emphasis> {
+					
+					private int PADDING = 5;
+					
+					<emphasis role="bold">public String objectToString(Object object)</emphasis> {
+					String rawInteger = ( (Integer) object ).toString();
+					if (rawInteger.length() &gt; PADDING) 
+					throw new IllegalArgumentException( "Try to pad on a number too big" );
+					StringBuilder paddedInteger = new StringBuilder( );
+					for ( int padIndex = rawInteger.length() ; padIndex &lt; PADDING ; padIndex++ ) {
+					paddedInteger.append('0');
+					}
+					return paddedInteger.append( rawInteger ).toString();
+					}
+					}                </programlisting>
+				
+				<para>Then any property or field can use this bridge thanks to the
+					<literal>@FieldBridge</literal> annotation</para>
+				
+				<programlisting><emphasis role="bold">@FieldBridge(impl = PaddedIntegerBridge.class)</emphasis>
+					private Integer length;                </programlisting>
+				
+				<para>Parameters can be passed to the Bridge implementation making it
+					more flexible. The Bridge implementation implements a
+					<classname>ParameterizedBridge</classname> interface, and the
+					parameters are passed through the <literal>@FieldBridge</literal>
+					annotation.</para>
+				
+				<programlisting>public class PaddedIntegerBridge implements StringBridge, <emphasis
+										role="bold">ParameterizedBridge</emphasis> {
+					
+					public static String PADDING_PROPERTY = "padding";
+					private int padding = 5; //default
+					
+					<emphasis role="bold">public void setParameterValues(Map parameters)</emphasis> {
+					Object padding = parameters.get( PADDING_PROPERTY );
+					if (padding != null) this.padding = (Integer) padding;
+					}
+					
+					public String objectToString(Object object) {
+					String rawInteger = ( (Integer) object ).toString();
+					if (rawInteger.length() &gt; padding) 
+					throw new IllegalArgumentException( "Try to pad on a number too big" );
+					StringBuilder paddedInteger = new StringBuilder( );
+					for ( int padIndex = rawInteger.length() ; padIndex &lt; padding ; padIndex++ ) {
+					paddedInteger.append('0');
+					}
+					return paddedInteger.append( rawInteger ).toString();
+					}
+					}
+					
+					
+					//property
+					@FieldBridge(impl = PaddedIntegerBridge.class,
+					<emphasis role="bold">params = @Parameter(name="padding", value="10")</emphasis>
+					)
+					private Integer length;                </programlisting>
+				
+				<para>The <classname>ParameterizedBridge</classname> interface can be
+					implemented by <classname>StringBridge</classname> ,
+					<classname>TwoWayStringBridge</classname> ,
+					<classname>FieldBridge</classname> implementations (see
+					bellow).</para>
+				
+				<para>If you expect to use your bridge implementation on for an id
+					property (ie annotated with <literal>@DocumentId</literal> ), you need
+					to use a slightly extended version of <literal>StringBridge</literal>
+					named <classname>TwoWayStringBridge</classname> . <literal>Hibernate
+						Search </literal> needs to read the string representation of the
+					identifier and generate the object out of it. There is not difference
+					in the way the <literal>@FieldBridge</literal> annotation is
+					used.</para>
+				
+				<programlisting>public class PaddedIntegerBridge implements TwoWayStringBridge, ParameterizedBridge {
+					
+					public static String PADDING_PROPERTY = "padding";
+					private int padding = 5; //default
+					
+					public void setParameterValues(Map parameters) {
+					Object padding = parameters.get( PADDING_PROPERTY );
+					if (padding != null) this.padding = (Integer) padding;
+					}
+					
+					public String objectToString(Object object) {
+					String rawInteger = ( (Integer) object ).toString();
+					if (rawInteger.length() &gt; padding) 
+					throw new IllegalArgumentException( "Try to pad on a number too big" );
+					StringBuilder paddedInteger = new StringBuilder( );
+					for ( int padIndex = rawInteger.length() ; padIndex &lt; padding ; padIndex++ ) {
+					paddedInteger.append('0');
+					}
+					return paddedInteger.append( rawInteger ).toString();
+					}
+					
+					<emphasis role="bold">public Object stringToObject(String stringValue)</emphasis> {
+					return new Integer(stringValue);
+					}
+					}
+					
+					
+					//id property
+					@DocumentId
+					@FieldBridge(impl = PaddedIntegerBridge.class,
+					params = @Parameter(name="padding", value="10") 
+					private Integer id;
+				</programlisting>
+				
+				<para>	
+					It is critically important for the two-way process to be
+					idempotent (ie object = stringToObject( objectToString( object ) )
+					).
+				</para>
+			</section>
+			
+			<section id="Hibernation_Search-Custom_Bridge-FieldBridge">
+				<title>FieldBridge</title>
+				
+				<para>Some usecase requires more than a simple object to string
+					translation when mapping a property to a Lucene index. To give you
+					most of the flexibility you can also implement a bridge as a
+					<classname>FieldBridge</classname> . This interface give you a
+					property value and let you map it the way you want in your Lucene
+					<classname>Document</classname> .This interface is very similar in its
+					concept to the <productname>Hibernate</productname>
+					<classname>UserType</classname> .</para>
+				
+				<para>You can for example store a given property in two different
+					document fields</para>
+				
+				<programlisting>/**
+					* Store the date in 3 different field year, month, day
+					* to ease Range Query per year, month or day
+					* (eg get all the elements of december for the last 5 years)
+					*
+					* @author Emmanuel Bernard
+					*/
+					public class DateSplitBridge implements FieldBridge {
+					private final static TimeZone GMT = TimeZone.getTimeZone("GMT");
+					
+					<emphasis role="bold">public void set(String name, Object value, Document document, Field.Store
+						store, Field.Index index, Float boost) {
+					</emphasis>
+					Date date = (Date) value;
+					Calendar cal = GregorianCalendar.getInstance( GMT );
+					cal.setTime( date );
+					int year = cal.get( Calendar.YEAR );
+					int month = cal.get( Calendar.MONTH ) + 1;
+					int day = cal.get( Calendar.DAY_OF_MONTH );
+					//set year
+					Field field = new Field( name + ".year", String.valueOf(year), store, index );
+					if ( boost != null ) field.setBoost( boost );
+					document.add( field );
+					//set month and pad it if needed
+					field = new Field( name + ".month", month &lt; 10 ? "0" : "" + String.valueOf(month), store, index);
+					if ( boost != null ) field.setBoost( boost );
+					document.add( field );
+					//set day and pad it if needed
+					field = new Field( name + ".day", day &lt; 10 ? "0" : "" + String.valueOf(day), store, index );
+					if ( boost != null ) field.setBoost( boost );
+					document.add( field );
+					}
+					}
+					
+					
+					//property
+					<emphasis role="bold">@FieldBridge(impl = DateSplitBridge.class)</emphasis>
+					private Integer length;                </programlisting>
+			
+			</section>
+			
+			<section id="Hibernation_Search-Custom_Bridge-ClassBridge">
+				<title>@ClassBridge</title>
+				
+				<para>It is sometimes useful to combine more than one property of a
+					given entity and index this combination in a specific way into the
+					Lucene index. The <classname>@ClassBridge</classname> and
+					<classname>@ClassBridges</classname> annotations can be defined at the
+					class level (as opposed to the property level). In this case the
+					custom field bridge implementation receives the entity instance as the
+					value parameter instead of a particular property.</para>
+				
+				<programlisting>@Entity
+					@Indexed
+					<emphasis role="bold">@ClassBridge</emphasis>(name="branchnetwork",
+					index=Index.TOKENIZED,
+					store=Store.YES,
+					impl = <emphasis role="bold">CatFieldsClassBridge.class</emphasis>,
+					params = @Parameter( name="sepChar", value=" " ) )
+					public class Department {
+					private int id;
+					private String network;
+					private String branchHead;
+					private String branch;
+					private Integer maxEmployees;
+					...
+					}
+					
+					public class CatFieldsClassBridge implements FieldBridge, ParameterizedBridge {
+					
+					private String sepChar;
+					
+					public void setParameterValues(Map parameters) {
+					this.sepChar = (String) parameters.get( "sepChar" );
+					}
+					
+					public void set(String name, 
+					Object value, //the department instance (entity) in this case
+					Document document, //the Lucene document 
+					Field.Store store, Field.Index index, Float boost) {
+					// In this particular class the name of the new field was passed
+					// from the name field of the ClassBridge Annotation. This is not
+					// a requirement. It just works that way in this instance. The
+					// actual name could be supplied by hard coding it below.
+					Department dep = (Department) value;
+					String fieldValue1 = dep.getBranch();
+					if ( fieldValue1 == null ) {
+					fieldValue1 = "";
+					}
+					String fieldValue2 = dep.getNetwork();
+					if ( fieldValue2 == null ) {
+					fieldValue2 = "";
+					}
+					String fieldValue = fieldValue1 + sepChar + fieldValue2;
+					Field field = new Field( name, fieldValue, store, index );
+					if ( boost != null ) field.setBoost( boost );
+					document.add( field );
+					}
+					}</programlisting>
+				
+				<para>In this example, the particular
+					<classname>CatFieldsClassBridge</classname> is applied to the
+					<literal>department</literal> instance, the field bridge then
+					concatenate both branch and network and index the
+					concatenation.</para>
+			</section>
+		</section>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Optimize.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Optimize.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Optimize.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,116 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Optimization">
+	<title>Index Optimization</title>
+	
+	<para>
+		From time to time, the Lucene index needs to be optimized. The process
+		is essentially a defragmentation: until the optimization occurs, deleted
+		documents are just marked as such, no physical deletion is applied, the
+		optimization can also adjust the number of files in the Lucene
+		Directory.
+	</para>
+	
+	<para>
+		The optimization speeds up searches but in no way speeds up indexation
+		(update). During an optimization, searches can be performed (but will most
+		likely be slowed down), and all index updates will be stopped. Prefer
+		optimizing:
+	</para>
+	
+	<itemizedlist>
+		<listitem>
+			<para>on an idle system or when the searches are less frequent</para>
+		</listitem>
+		
+		<listitem>
+			<para>after a lot of index modifications (doing so before will not speed
+				up the indexation process)</para>
+		</listitem>
+	</itemizedlist>
+	
+	<section>
+		<title>Automatic optimization</title>
+		
+		<para>Hibernate Search can optimize automatically an index after:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>a certain amount of operations have been applied (insertion,
+					deletion)</para>
+			</listitem>
+			
+			<listitem>
+				<para>or a certain amount of transactions have been applied</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>The configuration can be global or defined at the index
+			level:</para>
+		
+		<programlisting>hibernate.search.default.optimizer.operation_limit.max = 1000
+			hibernate.search.default.optimizer.transaction_limit.max = 100
+			
+			hibernate.search.Animal.optimizer.transaction_limit.max = 50</programlisting>
+		
+		<para>An optimization will be triggered to the <literal>Animal</literal>
+			index as soon as either:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>the number of addition and deletion reaches 1000</para>
+			</listitem>
+			
+			<listitem>
+				<para>the number of transactions reaches 50
+					(<command>hibernate.search.Animal.optimizer.transaction_limit.max</command>
+					having priority over
+					<command>hibernate.search.default.optimizer.transaction_limit.max</command>)</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>If none of these parameters are defined, not optimization is
+			processed automatically.</para>
+	</section>
+	
+	<section>
+		<title>Manual optimization</title>
+		
+		<para>You can programmatically optimize (defragment) a Lucene index from
+			Hibernate Search through the <classname>SearchFactory</classname></para>
+		
+		<programlisting>searchFactory.optimize(Order.class);
+			
+			searchFactory.optimize();</programlisting>
+		
+		<para>The first example re-index the Lucene index holding
+			<classname>Order</classname>s, the second, optimize all indexes.</para>
+		
+		<para>The <classname>SearchFactory</classname> can be accessed from a
+			<classname>FullTextSession</classname>:</para>
+		
+		<programlisting>FullTextSession fullTextSession = Search.createFullTextSession(regularSession);
+			SearchFactory searchFactory = fullTextSession.getSearchFactory();</programlisting>
+		
+		<para>Note that <literal>searchFactory.optimize()</literal> has no effect
+			on a JMS backend. You must apply the optimize operation on the Master
+			node.</para>
+	</section>
+	
+	<section>
+		<title>Adjusting optimization</title>
+		
+		<para>Apache Lucene has a few parameters to influence how optimization is
+			performed. Hibernate Search expose those parameters.</para>
+		
+		<para>Further index optimization parameters include
+			<literal>hibernate.search.[default|&lt;indexname&gt;].merge_factor</literal>,
+			<literal>hibernate.search.[default|&lt;indexname&gt;].max_merge_docs</literal>
+			and
+			<literal>hibernate.search.[default|&lt;indexname&gt;].max_buffered_docs</literal>
+			- see <xref linkend="Hibernate_Search-Configuration-Lucene_Index_Performance" /> for more
+			details.</para>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Optimize.xml.bak
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Optimize.xml.bak	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Optimize.xml.bak	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,116 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Optimization">
+	<title>Index Optimization</title>
+	
+	<para>
+		From time to time, the Lucene index needs to be optimized. The process
+		is essentially a defragmentation: until the optimization occurs, deleted
+		documents are just marked as such, no physical deletion is applied, the
+		optimization can also adjust the number of files in the Lucene
+		Directory.
+	</para>
+	
+	<para>
+		The optimization speeds up searches but in no way speeds up indexation
+		(update). During an optimization, searches can be performed (but will most
+		likely be slowed down), and all index updates will be stopped. Prefer
+		optimizing:
+	</para>
+	
+	<itemizedlist>
+		<listitem>
+			<para>on an idle system or when the searches are less frequent</para>
+		</listitem>
+		
+		<listitem>
+			<para>after a lot of index modifications (doing so before will not speed
+				up the indexation process)</para>
+		</listitem>
+	</itemizedlist>
+	
+	<section>
+		<title>Automatic optimization</title>
+		
+		<para>Hibernate Search can optimize automatically an index after:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>a certain amount of operations have been applied (insertion,
+					deletion)</para>
+			</listitem>
+			
+			<listitem>
+				<para>or a certain amout of transactions have been applied</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>The configuration can be global or defined at the index
+			level:</para>
+		
+		<programlisting>hibernate.search.default.optimizer.operation_limit.max = 1000
+			hibernate.search.default.optimizer.transaction_limit.max = 100
+			
+			hibernate.search.Animal.optimizer.transaction_limit.max = 50</programlisting>
+		
+		<para>An optimization will be triggered to the <literal>Animal</literal>
+			index as soon as either:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>the number of addition and deletion reaches 1000</para>
+			</listitem>
+			
+			<listitem>
+				<para>the number of transactions reaches 50
+					(<command>hibernate.search.Animal.optimizer.transaction_limit.max</command>
+					having priority over
+					<command>hibernate.search.default.optimizer.transaction_limit.max</command>)</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>If none of these parameters are defined, not optimization is
+			processed automatically.</para>
+	</section>
+	
+	<section>
+		<title>Manual optimization</title>
+		
+		<para>You can programmatically optimize (defragment) a Lucene index from
+			Hibernate Search through the <classname>SearchFactory</classname></para>
+		
+		<programlisting>searchFactory.optimize(Order.class);
+			
+			searchFactory.optimize();</programlisting>
+		
+		<para>The first example reindex the Lucene index holding
+			<classname>Order</classname>s, the second, optimize all indexes.</para>
+		
+		<para>The <classname>SearchFactory</classname> can be accessed from a
+			<classname>FullTextSession</classname>:</para>
+		
+		<programlisting>FullTextSession fullTextSession = Search.createFullTextSession(regularSession);
+			SearchFactory searchFactory = fullTextSession.getSearchFactory();</programlisting>
+		
+		<para>Note that <literal>searchFactory.optimize()</literal> has no effect
+			on a JMS backend. You must apply the optimize operation on the Master
+			node.</para>
+	</section>
+	
+	<section>
+		<title>Adjusting optimization</title>
+		
+		<para>Apache Lucene has a few parameters to influence how optimization is
+			performed. Hibernate Search expose those parameters.</para>
+		
+		<para>Further index optimisation parameters include
+			<literal>hibernate.search.[default|&lt;indexname&gt;].merge_factor</literal>,
+			<literal>hibernate.search.[default|&lt;indexname&gt;].max_merge_docs</literal>
+			and
+			<literal>hibernate.search.[default|&lt;indexname&gt;].max_buffered_docs</literal>
+			- see <xref linkend="Hibernate_Search-Configuration-Lucene_Index_Performance" /> for more
+			details.</para>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Preface.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Preface.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Preface.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,11 @@
+<?xml version='1.0'?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<preface id="JDK6_Compatibility_Notes-Preface">
+	<title>Preface</title>
+	<para>
+	</para>
+	<xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</preface>

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Query.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Query.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Query.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,599 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Query">
+	<title>Query</title>
+	
+	<para>The second most important capability of Hibernate Search is the
+		ability to execute a Lucene query and retrieve entities managed by an
+		Hibernate session, providing the power of Lucene without living the
+		Hibernate paradigm, and giving another dimension to the Hibernate classic
+		search mechanisms (HQL, Criteria query, native SQL query).</para>
+	
+	<para>To access the <productname>Hibernate Search</productname> querying
+		facilities, you have to use an Hibernate
+		<classname>FullTextSession</classname> . A Search Session wraps a regular
+		<classname>org.hibernate.Session</classname> to provide query and indexing
+		capabilities.</para>
+	
+	<programlisting>Session session = sessionFactory.openSession();
+		...
+		FullTextSession fullTextSession = Search.createFullTextSession(session);    </programlisting>
+	
+	<para>The search facility is built on native Lucene queries.</para>
+	
+	<programlisting>org.apache.lucene.queryParser.QueryParser parser = new QueryParser("title", new StopAnalyzer() );
+		
+		org.apache.lucene.search.Query luceneQuery = parser.parse( "summary:Festina Or brand:Seiko" );
+		<emphasis role="bold">org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery );
+		</emphasis>
+		
+		List result = fullTextQuery.list(); //return a list of managed objects    </programlisting>
+	
+	<para>The Hibernate query built on top of the Lucene query is a regular
+		<literal>org.hibernate.Query</literal> , you are in the same paradigm as the
+		other Hibernate query facilities (HQL, Native or Criteria). The regular
+		<literal>list()</literal> , <literal>uniqueResult()</literal> ,
+		<literal>iterate()</literal> and <literal>scroll()</literal> can be
+		used.</para>
+	
+	<para>For people using Java Persistence (aka EJB 3.0 Persistence) APIs of
+		Hibernate, the same extensions exist:</para>
+	
+	<programlisting>EntityManager em = entityManagerFactory.createEntityManager();
+		
+		FullTextEntityManager fullTextEntityManager = 
+		org.hibernate.hibernate.search.jpa.Search.createFullTextEntityManager(em);
+		
+		...
+		org.apache.lucene.queryParser.QueryParser parser = new QueryParser("title", new StopAnalyzer() );
+		
+		org.apache.lucene.search.Query luceneQuery = parser.parse( "summary:Festina Or brand:Seiko" );
+		<emphasis role="bold">javax.persistence.Query fullTextQuery = fullTextEntityManager.createFullTextQuery( luceneQuery );</emphasis>
+		
+		List result = fullTextQuery.getResultList(); //return a list of managed objects  </programlisting>
+	
+	<para>The following examples show the Hibernate APIs but the same example
+		can be easily rewritten with the Java Persistence API by just adjusting the
+		way the FullTextQuery is retrieved.</para>
+	
+	<section id="Hibernate_Search-Query-Building_Queries">
+		<title>Building queries</title>
+		
+		<para>Hibernate Search queries are built on top of Lucene queries. It
+			gives you a total freedom on the kind of Lucene queries you are willing to
+			execute. However, once built, Hibernate Search abstract the query
+			processing from your application using org.hibernate.Query as your primary
+			query manipulation API.</para>
+		
+		<section id="Hibernate_Search-Building_Queries-Lucene_Query">
+			<title>Building a Lucene query</title>
+			
+			<para>This subject is generally speaking out of the scope of this
+				documentation. Please refer to the Lucene documentation or Lucene In
+				Action.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Building_Queries-Hibernate_Query">
+			<title>Building a Hibernate Search query</title>
+			
+			<section id="Hibernate_Search-Hibernate_Query-Generality">
+				<title>Generality</title>
+				
+				<para>Once the Lucene query is built, it needs to be wrapped into an
+					Hibernate Query.</para>
+				
+				<programlisting>FullTextSession fullTextSession = Search.createFullTextSession( session );
+					org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery );</programlisting>
+				
+				<para>If not specified otherwise, the query will be executed against
+					all indexed entities, potentially returning all types of indexed
+					classes. It is advised, from a performance point of view, to restrict
+					the returned types:</para>
+				
+				<programlisting>org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Customer.class );
+					//or
+					fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Item.class, Actor.class );</programlisting>
+				
+				<para>The first example returns only matching customers, the second
+					returns matching actors and items.</para>
+			</section>
+			
+			<section id="Hibernate_Search-Hibernate_Query-Pagination">
+				<title>Pagination</title>
+				
+				<para>It is recommended to restrict the number of returned objects per
+					query. It is a very common use case as well, the user usually navigate
+					from one page to an other. The way to define pagination is exactly the
+					way you would define pagination in a plain HQL or Criteria
+					query.</para>
+				
+				<programlisting>org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Customer.class );
+					fullTextQuery.setFirstResult(15); //start from the 15th element
+					fullTextQuery.setMaxResults(10); //return 10 elements</programlisting>
+				
+				<note>
+					<para>It is still possible to get the total number of matching
+						elements regardless of the pagination. See
+						<command>getResultSize()</command> below</para>
+				</note>
+			</section>
+			
+			<section id="Hibernate_Search-Hibernate_Query-Sorting">
+				<title>Sorting</title>
+				
+				<para>Apache Lucene provides a very flexible and powerful way to sort
+					results. While the default sorting (by relevance) is appropriate most
+					of the time, it can interesting to sort by one or several
+					properties.</para>
+				
+				<para>Inject the Lucene Sort object to apply a Lucene sorting strategy
+					to an Hibernate Search.</para>
+				
+				<programlisting>org.hibernate.search.FullTextQuery query = s.createFullTextQuery( query, Book.class );
+					org.apache.lucene.search.Sort sort = new Sort(new SortField("title"));
+					<emphasis role="bold">query.setSort(sort);</emphasis>
+					List results = query.list();</programlisting>
+				
+				<para>One can notice the <classname>FullTextQuery</classname>
+					interface which is a sub interface of
+					<classname>org.hibernate.Query</classname>.</para>
+				
+				<para>Fields used for sorting must not be tokenized.</para>
+			</section>
+			
+			<section id="Hibernate_Search-Hibernate_Query-Fetching_Strategy">
+				<title>Fetching strategy</title>
+				
+				<para>When you restrict the return types to one class, Hibernate
+					Search loads the objects using a single query. It also respects the
+					static fetching strategy defined in your domain model.</para>
+				
+				<para>It is often useful, however, to refine the fetching strategy for
+					a specific use case.</para>
+				
+				<programlisting>Criteria criteria = s.createCriteria( Book.class ).setFetchMode( "authors", FetchMode.JOIN );
+					s.createFullTextQuery( luceneQuery ).setCriteriaQuery( criteria );</programlisting>
+				
+				<para>In this example, the query will return all Books matching the
+					luceneQuery. The authors collection will be loaded from the same query
+					using an SQL outer join.</para>
+				
+				<para>When defining a criteria query, it is not needed to restrict the
+					entity types returned while creating the Hibernate Search query from
+					the full text session: the type is guessed from the criteria query
+					itself. Only fetch mode can be adjusted, refrain from applying any
+					other restriction.</para>
+				
+				<para>One cannot use <command>setCriteriaQuery</command> if more
+					than one entity type is expected to be returned.</para>
+			</section>
+			
+			<section id="Hibernate_Search-Query-Projections">
+				<title>Projection</title>
+				
+				<para>For some use cases, returning the domain object (graph) is
+					overkill. Only a small subset of the properties is necessary.
+					Hibernate Search allows you to return a subset of properties:</para>
+				
+				<programlisting>org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery, Book.class );
+					query.<emphasis role="bold">setProjection( "id", "summary", "body", "mainAuthor.name" )</emphasis>;
+					List results = query.list();
+					Object[] firstResult = (Object[]) results.get(0);
+					Integer id = firstResult[0];
+					String summary = firstResult[1];
+					String body = firstResult[2];
+					String authorName = firstResult[3];</programlisting>
+				
+				<para>Hibernate Search extracts the properties from the Lucene index
+					and convert them back to their object representation, returning a list
+					of <classname>Object[]</classname>. Projections avoid a potential
+					database round trip (useful if the query response time is critical),
+					but has some constraints:</para>
+				
+				<itemizedlist>
+					<listitem>
+						<para>the properties projected must be stored in the index
+							(<literal>@Field(store=Store.YES)</literal>), which increase the
+							index size</para>
+					</listitem>
+					
+					<listitem>
+						<para>the properties projected must use a
+							<literal>FieldBridge</literal> implementing
+							<classname>org.hibernate.search.bridge.TwoWayFieldBridge</classname>
+							or
+							<literal>org.hibernate.search.bridge.TwoWayStringBridge</literal>,
+							the latter being the simpler version. All Hibernate Search
+							built-in types are two-way.</para>
+					</listitem>
+				</itemizedlist>
+				
+				<para>Projection is useful for another kind of usecases. Lucene
+					provides some metadata information to the user about the results. By
+					using some special placeholders, the projection mechanism can retrieve
+					them:</para>
+				
+				<programlisting>org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery, Book.class );
+					query.<emphasis role="bold">setProjection( FullTextQuery.SCORE, FullTextQuery.BOOST, FullTextQuery.THIS, "mainAuthor.name" )</emphasis>;
+					List results = query.list();
+					Object[] firstResult = (Object[]) results.get(0);
+					float score = firstResult[0];
+					float boost = firstResult[1];
+					Book book = firstResult[2];
+					String authorName = firstResult[3];</programlisting>
+				
+				<para>You can mix and match regular fields and special placeholders.
+					Here is the list of available placeholders:</para>
+				
+				<itemizedlist>
+					<listitem>
+						<para>FullTextQuery.THIS: returns the initialized and managed
+							entity (as a non projected query would have done)</para>
+					</listitem>
+					
+					<listitem>
+						<para>FullTextQuery.DOCUMENT: returns the Lucene Document related
+							to the object projected</para>
+					</listitem>
+					
+					<listitem>
+						<para>FullTextQuery.SCORE: returns the document score in the
+							query. The score is guaranteed to be between 0 and 1 but the
+							highest score is not necessarily equals to 1. Scores are handy to
+							compare one result against an other for a given query but are
+							useless when comparing the result of different queries.</para>
+					</listitem>
+					
+					<listitem>
+						<para>FullTextQuery.BOOST: the boost value of the Lucene
+							Document</para>
+					</listitem>
+					
+					<listitem>
+						<para>FullTextQuery.ID: the id property value of the projected
+							object</para>
+					</listitem>
+					
+					<listitem>
+						<para>FullTextQuery.DOCUMENT_ID: the Lucene document id. Careful,
+							Lucene document id can change overtime between two different
+							IndexReader opening (this feature is experimental)</para>
+					</listitem>
+				</itemizedlist>
+			</section>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Query-Retrieving_Results">
+		<title>Retrieving the results</title>
+		
+		<para>Once the Hibernate Search query is built, executing it is in no way
+			different than executing a HQL or Criteria query. The same paradigm and
+			object semantic apply. All the common operations are available:
+			<command>list()</command>, <command>uniqueResult()</command>,
+			<command>iterate()</command>,
+			<command>scroll()</command>.</para>
+		
+		<section id="Hibernate_Search-Retrieving_Results-Performance_Considerations">
+			<title>Performance considerations</title>
+			
+			<para>If you expect a reasonable number of results (for example using
+				pagination) and expect to work on all of them,
+				<command>list()</command> or
+				<command>uniqueResult()</command> are recommended.
+				<command>list()</command> work best if the entity
+				<literal>batch-size</literal> is set up properly. Note that Hibernate
+				Search has to process all Lucene Hits elements (within the pagination)
+				when using <command>list()</command> ,
+				<command>uniqueResult()</command> and
+				<command>iterate()</command>.</para>
+			
+			<para>If you wish to minimize Lucene document loading,
+				<command>scroll()</command> is more appropriate. Don't forget to
+				close the <classname>ScrollableResults</classname> object when you're
+				done, since it keeps Lucene resources. If you expect to use
+				<command>scroll</command> but wish to load objects in batch, you
+				can use <command>query.setFetchSize()</command>: When an object is
+				accessed, and if not already loaded, Hibernate Search will load the next
+				<literal>fetchSize</literal> objects in one pass.</para>
+			
+			<para>Pagination is a preferred method over scrolling though.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Retrieving_Results-Result_Size">
+			<title>Result size</title>
+			
+			<para>It is sometime useful to know the total number of matching
+				documents:</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para>for the Google-like feature 1-10 of about 888,000,000</para>
+				</listitem>
+				
+				<listitem>
+					<para>to implement a fast pagination navigation</para>
+				</listitem>
+				
+				<listitem>
+					<para>to implement a multi step search engine (adding approximation
+						if the restricted query return no or not enough results)</para>
+				</listitem>
+			</itemizedlist>
+			
+			<para>But it would be costly to retrieve all the matching
+				documents.</para>
+			
+			<para>Hibernate Search allows you to retrieve the total number of
+				matching documents regardless of the pagination parameters. Even more
+				interesting, you can retrieve the number of matching elements without
+				triggering a single object load.</para>
+			
+			<programlisting>org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery, Book.class );
+				assert 3245 == <emphasis role="bold">query.getResultSize()</emphasis>; //return the number of matching books without loading a single one
+				
+				org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery, Book.class );
+				query.setMaxResult(10);
+				List results = query.list();
+				assert 3245 == <emphasis role="bold">query.getResultSize()</emphasis>; //return the total number of matching books regardless of pagination</programlisting>
+			
+			<note>
+				<para>Like Google, the number of results is approximate if the index
+					is not fully up-to-date with the database (asynchronous cluster for
+					example).</para>
+			</note>
+		</section>
+		
+		<section id="Hibernate_Search-Retrieving_Results-Result_Transformer">
+			<title>ResultTransformer</title>
+			
+			<para>Especially when using projection, the data structure returned by a
+				query (an object array in this case), is not always matching the
+				application needs. It is possible to apply a
+				<classname>ResultTransformer</classname> operation post query to match
+				the targeted data structure:</para>
+			
+			<programlisting>org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery, Book.class );
+				query.setProjection( "title", "mainAuthor.name" );
+				
+				<emphasis role="bold">query.setResultTransformer( 
+					new StaticAliasToBeanResultTransformer( BookView.class, "title", "author" ) 
+					);</emphasis>
+				List&lt;BookView&gt; results = (List&lt;BookView&gt;) query.list();
+				for(BookView view : results) {
+				log.info( "Book: " + view.getTitle() + ", " + view.getAuthor() );
+				}</programlisting>
+			
+			<para>Examples of <classname>ResultTransformer</classname>
+				implementations can be found in the Hibernate Core codebase.</para>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Query-Filters">
+		<title>Filters</title>
+		
+		<para>Apache Lucene has a powerful feature that allows to filters results
+			from a query according to a custom filtering process. This is a very
+			powerful way to apply some data restrictions after a query, especially
+			since filters can be cached and reused. Some interesting usecases
+			are:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>security</para>
+			</listitem>
+			
+			<listitem>
+				<para>temporal data (e.g.. view only last month's data)</para>
+			</listitem>
+			
+			<listitem>
+				<para>population filter (e.g. search limited to a given
+					category)</para>
+			</listitem>
+			
+			<listitem>
+				<para>and many more</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>Hibernate Search pushes the concept further by introducing the
+			notion of parameterizable named filters which are transparently cached.
+			For people familiar with the notion of Hibernate Core filters, the API is
+			very similar.</para>
+		
+		<programlisting>fullTextQuery = s.createFullTextQuery( query, Driver.class );
+			fullTextQuery.enableFullTextFilter("bestDriver");
+			fullTextQuery.enableFullTextFilter("security").setParameter( "login", "andre" );
+			fullTextQuery.list(); //returns only best drivers where andre has credentials</programlisting>
+		
+		<para>In this example we enabled 2 filters on top of this query. You can
+			enable (or disable) as many filters as you want.</para>
+		
+		<para>Declaring filters is done through the
+			<classname>@FullTextFilterDef</classname> annotation. This annotation can
+			be on any <literal>@Indexed</literal> entity regardless of the filter
+			operation.</para>
+		
+		<programlisting>@Entity
+			@Indexed
+			@FullTextFilterDefs( {
+			<emphasis role="bold">@FullTextFilterDef(name = "bestDriver", impl = BestDriversFilter.class, cache=false)</emphasis>, //actual Filter implementation
+			<emphasis role="bold">@FullTextFilterDef(name = "security", impl = SecurityFilterFactory.class)</emphasis> //Filter factory with parameters
+			})
+			public class Driver { ... }</programlisting>
+		
+		<para>Each named filter points to an actual filter implementation.</para>
+		
+		<programlisting>public class BestDriversFilter extends <emphasis
+										role="bold">org.apache.lucene.search.Filter</emphasis> {
+			
+			public BitSet bits(IndexReader reader) throws IOException {
+			BitSet bitSet = new BitSet( reader.maxDoc() );
+			TermDocs termDocs = reader.termDocs( new Term("score", "5") );
+			while ( termDocs.next() ) {
+			bitSet.set( termDocs.doc() );
+			}
+			return bitSet;
+			}
+			}</programlisting>
+		
+		<para><classname>BestDriversFilter</classname> is an example of a simple
+			Lucene filter that will filter all results to only return drivers whose
+			score is 5. The filters must have a no-arg constructor when referenced in
+			a <literal>FulltextFilterDef.impl</literal>.</para>
+		
+		<para>The <literal>cache</literal> flag, defaulted to
+			<literal>true</literal>, tells Hibernate Search to search the filter in
+			its internal cache and reuses it if found.</para>
+		
+		<para>Note that, usually, filter using the
+			<classname>IndexReader</classname> are wrapped in a Lucene
+			<classname>CachingWrapperFilter</classname> to benefit from some caching
+			speed improvement. If your Filter creation requires additional steps or if
+			the filter you are willing to use does not have a no-arg constructor, you
+			can use the factory pattern:</para>
+		
+		<programlisting>@Entity
+			@Indexed
+			@FullTextFilterDef(name = "bestDriver", impl = BestDriversFilterFactory.class) //Filter factory
+			public class Driver { ... }
+			
+			public class BestDriversFilterFactory {
+			
+			<emphasis role="bold">@Factory</emphasis>
+			public Filter getFilter() {
+			//some additional steps to cache the filter results per IndexReader
+			Filter bestDriversFilter = new BestDriversFilter();
+			return new CachingWrapperFilter(bestDriversFilter);
+			}
+			}</programlisting>
+		
+		<para>Hibernate Search will look for a <literal>@Factory</literal>
+			annotated method and use it to build the filter instance. The factory must
+			have a no-arg constructor. For people familiar with JBoss Seam, this is
+			similar to the component factory pattern, but the annotation is
+			different!</para>
+		
+		<para>Named filters comes in handy where the filters have parameters. For
+			example a security filter needs to know which credentials you are willing
+			to filter by:</para>
+		
+		<programlisting>fullTextQuery = s.createFullTextQuery( query, Driver.class );
+			fullTextQuery.enableFullTextFilter("security")<emphasis role="bold">.setParameter( "level", 5 )</emphasis>;</programlisting>
+		
+		<para>Each parameter name should have an associated setter on either the
+			filter or filter factory of the targeted named filter definition.</para>
+		
+		<programlisting>public class SecurityFilterFactory {
+			private Integer level;
+			
+			/**
+			* injected parameter
+			*/
+			<emphasis role="bold">public void setLevel(Integer level)</emphasis> {
+			this.level = level;
+			}
+			
+			<emphasis role="bold">@Key
+				public FilterKey getKey()</emphasis> {
+			StandardFilterKey key = new StandardFilterKey();
+			key.addParameter( level );
+			return key;
+			}
+			
+			@Factory
+			public Filter getFilter() {
+			Query query = new TermQuery( new Term("level", level.toString() ) );
+			return new CachingWrapperFilter( new QueryWrapperFilter(query) );
+			}
+			}</programlisting>
+		
+		<para>Note the method annotated <classname>@Key</classname> and returning
+			a <classname>FilterKey</classname> object. The returned object has a
+			special contract: the key object must implement equals / hashcode so that
+			2 keys are equals if and only if the given Filter types are the same and
+			the set of parameters are the same. In other words, 2 filter keys are
+			equal if and only if the filters from which the keys are generated can be
+			interchanged. The key object is used as a key in the cache
+			mechanism.</para>
+		
+		<para><classname>@Key</classname> methods are needed only if:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>you enabled the filter caching system (enabled by
+					default)</para>
+			</listitem>
+			
+			<listitem>
+				<para>your filter has parameters</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>In most cases, using the <literal>StandardFilterKey</literal>
+			implementation will be good enough. It delegates the equals/hashcode
+			implementation to each of the parameters equals and hashcode
+			methods.</para>
+		
+		<para>Why should filters be cached? There are two area where filter
+			caching shines:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>the system does not update the targeted entity index often (in
+					other words, the IndexReader is reused a lot)</para>
+			</listitem>
+			
+			<listitem>
+				<para>the Filter BitSet is expensive to compute (compared to the time
+					spent to execute the query)</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>Cache is enabled by default and use the notion of SoftReferences to
+			dispose memory when needed. To adjust the size of the hard reference
+			cache, use <literal>hibernate.search.filter.cache_strategy.size</literal>
+			(defaults to 128). Don't forget to use a
+			<classname>CachingWrapperFilter</classname> when the filter is cacheable
+			and the Filter's bits methods makes use of IndexReader.</para>
+		
+		<para>For advance use of filter caching, you can implement your own
+			<classname>FilterCachingStrategy</classname>. The classname is defined by
+			<literal>hibernate.search.filter.cache_strategy</literal>.</para>
+	</section>
+	
+	<section id="Hibernate_Search-Query-Optimizing">
+		<title>Optimizing the query process</title>
+		
+		<para>Query performance depends on several criteria:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>the Lucene query itself: read the literature on this
+					subject</para>
+			</listitem>
+			
+			<listitem>
+				<para>the number of object loaded: use pagination (always ;-) ) or
+					index projection (if needed)</para>
+			</listitem>
+			
+			<listitem>
+				<para>the way Hibernate Search interacts with the Lucene readers:
+					defines the appropriate <xref
+								     linkend="Hibernate_Search-Architecture-Reader_Strategy" />.</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="Hibernate_Search-Query-Native_Lucene">
+		<title>Native Lucene Queries</title>
+		
+		<para>If you wish to use some specific features of Lucene, you can always
+			run Lucene specific queries. Check <xref linkend="Hibernate_Search-Lucene_Native" />
+			for more informations.</para>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Query.xml.bak
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Query.xml.bak	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Query.xml.bak	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,599 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Search-Query">
+	<title>Query</title>
+	
+	<para>The second most important capability of Hibernate Search is the
+		ability to execute a Lucene query and retrieve entities managed by an
+		Hibernate session, providing the power of Lucene without living the
+		Hibernate paradigm, and giving another dimension to the Hibernate classic
+		search mechanisms (HQL, Criteria query, native SQL query).</para>
+	
+	<para>To access the <productname>Hibernate Search</productname> querying
+		facilities, you have to use an Hibernate
+		<classname>FullTextSession</classname> . A Search Session wraps a regular
+		<classname>org.hibernate.Session</classname> to provide query and indexing
+		capabilities.</para>
+	
+	<programlisting>Session session = sessionFactory.openSession();
+		...
+		FullTextSession fullTextSession = Search.createFullTextSession(session);    </programlisting>
+	
+	<para>The search facility is built on native Lucene queries.</para>
+	
+	<programlisting>org.apache.lucene.queryParser.QueryParser parser = new QueryParser("title", new StopAnalyzer() );
+		
+		org.apache.lucene.search.Query luceneQuery = parser.parse( "summary:Festina Or brand:Seiko" );
+		<emphasis role="bold">org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery );
+		</emphasis>
+		
+		List result = fullTextQuery.list(); //return a list of managed objects    </programlisting>
+	
+	<para>The Hibernate query built on top of the Lucene query is a regular
+		<literal>org.hibernate.Query</literal> , you are in the same paradigm as the
+		other Hibernate query facilities (HQL, Native or Criteria). The regular
+		<literal>list()</literal> , <literal>uniqueResult()</literal> ,
+		<literal>iterate()</literal> and <literal>scroll()</literal> can be
+		used.</para>
+	
+	<para>For people using Java Persistence (aka EJB 3.0 Persistence) APIs of
+		Hibernate, the same extensions exist:</para>
+	
+	<programlisting>EntityManager em = entityManagerFactory.createEntityManager();
+		
+		FullTextEntityManager fullTextEntityManager = 
+		org.hibernate.hibernate.search.jpa.Search.createFullTextEntityManager(em);
+		
+		...
+		org.apache.lucene.queryParser.QueryParser parser = new QueryParser("title", new StopAnalyzer() );
+		
+		org.apache.lucene.search.Query luceneQuery = parser.parse( "summary:Festina Or brand:Seiko" );
+		<emphasis role="bold">javax.persistence.Query fullTextQuery = fullTextEntityManager.createFullTextQuery( luceneQuery );</emphasis>
+		
+		List result = fullTextQuery.getResultList(); //return a list of managed objects  </programlisting>
+	
+	<para>The following examples show the Hibernate APIs but the same example
+		can be easily rewritten with the Java Persistence API by just adjusting the
+		way the FullTextQuery is retrieved.</para>
+	
+	<section id="Hibernate_Search-Query-Building_Queries">
+		<title>Building queries</title>
+		
+		<para>Hibernate Search queries are built on top of Lucene queries. It
+			gives you a total freedom on the kind of Lucene queries you are willing to
+			execute. However, once built, Hibernate Search abstract the query
+			processing from your application using org.hibernate.Query as your primary
+			query manipulation API.</para>
+		
+		<section id="Hibernate_Search-Building_Queries-Lucene_Query">
+			<title>Building a Lucene query</title>
+			
+			<para>This subject is generally speaking out of the scope of this
+				documentation. Please refer to the Lucene documentation or Lucene In
+				Action.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Building_Queries-Hibernate_Query">
+			<title>Building a Hibernate Search query</title>
+			
+			<section id="Hibernate_Search-Hibernate_Query-Generality">
+				<title>Generality</title>
+				
+				<para>Once the Lucene query is built, it needs to be wrapped into an
+					Hibernate Query.</para>
+				
+				<programlisting>FullTextSession fullTextSession = Search.createFullTextSession( session );
+					org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery );</programlisting>
+				
+				<para>If not specified otherwise, the query will be executed against
+					all indexed entities, potentially returning all types of indexed
+					classes. It is advised, from a performance point of view, to restrict
+					the returned types:</para>
+				
+				<programlisting>org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Customer.class );
+					//or
+					fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Item.class, Actor.class );</programlisting>
+				
+				<para>The first example returns only matching customers, the second
+					returns matching actors and items.</para>
+			</section>
+			
+			<section id="Hibernate_Search-Hibernate_Query-Pagination">
+				<title>Pagination</title>
+				
+				<para>It is recommended to restrict the number of returned objects per
+					query. It is a very common use case as well, the user usually navigate
+					from one page to an other. The way to define pagination is exactly the
+					way you would define pagination in a plain HQL or Criteria
+					query.</para>
+				
+				<programlisting>org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Customer.class );
+					fullTextQuery.setFirstResult(15); //start from the 15th element
+					fullTextQuery.setMaxResults(10); //return 10 elements</programlisting>
+				
+				<note>
+					<para>It is still possible to get the total number of matching
+						elements regardless of the pagination. See
+						<command>getResultSize()</command> below</para>
+				</note>
+			</section>
+			
+			<section id="Hibernate_Search-Hibernate_Query-Sorting">
+				<title>Sorting</title>
+				
+				<para>Apache Lucene provides a very flexible and powerful way to sort
+					results. While the default sorting (by relevance) is appropriate most
+					of the time, it can interesting to sort by one or several
+					properties.</para>
+				
+				<para>Inject the Lucene Sort object to apply a Lucene sorting strategy
+					to an Hibernate Search.</para>
+				
+				<programlisting>org.hibernate.search.FullTextQuery query = s.createFullTextQuery( query, Book.class );
+					org.apache.lucene.search.Sort sort = new Sort(new SortField("title"));
+					<emphasis role="bold">query.setSort(sort);</emphasis>
+					List results = query.list();</programlisting>
+				
+				<para>One can notice the <classname>FullTextQuery</classname>
+					interface which is a sub interface of
+					<classname>org.hibernate.Query</classname>.</para>
+				
+				<para>Fields used for sorting must not be tokenized.</para>
+			</section>
+			
+			<section id="Hibernate_Search-Hibernate_Query-Fetching_Strategy">
+				<title>Fetching strategy</title>
+				
+				<para>When you restrict the return types to one class, Hibernate
+					Search loads the objects using a single query. It also respects the
+					static fetching strategy defined in your domain model.</para>
+				
+				<para>It is often useful, however, to refine the fetching strategy for
+					a specific use case.</para>
+				
+				<programlisting>Criteria criteria = s.createCriteria( Book.class ).setFetchMode( "authors", FetchMode.JOIN );
+					s.createFullTextQuery( luceneQuery ).setCriteriaQuery( criteria );</programlisting>
+				
+				<para>In this example, the query will return all Books matching the
+					luceneQuery. The authors collection will be loaded from the same query
+					using an SQL outer join.</para>
+				
+				<para>When defining a criteria query, it is not needed to restrict the
+					entity types returned while creating the Hibernate Search query from
+					the full text session: the type is guessed from the criteria query
+					itself. Only fetch mode can be adjusted, refrain from applying any
+					other restriction.</para>
+				
+				<para>One cannot use <command>setCriteriaQuery</command> if more
+					than one entity type is expected to be returned.</para>
+			</section>
+			
+			<section id="Hibernate_Search-Query-Projections">
+				<title>Projection</title>
+				
+				<para>For some use cases, returning the domain object (graph) is
+					overkill. Only a small subset of the properties is necessary.
+					Hibernate Search allows you to return a subset of properties:</para>
+				
+				<programlisting>org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery, Book.class );
+					query.<emphasis role="bold">setProjection( "id", "summary", "body", "mainAuthor.name" )</emphasis>;
+					List results = query.list();
+					Object[] firstResult = (Object[]) results.get(0);
+					Integer id = firstResult[0];
+					String summary = firstResult[1];
+					String body = firstResult[2];
+					String authorName = firstResult[3];</programlisting>
+				
+				<para>Hibernate Search extracts the properties from the Lucene index
+					and convert them back to their object representation, returning a list
+					of <classname>Object[]</classname>. Projections avoid a potential
+					database round trip (useful if the query response time is critical),
+					but has some constraints:</para>
+				
+				<itemizedlist>
+					<listitem>
+						<para>the properties projected must be stored in the index
+							(<literal>@Field(store=Store.YES)</literal>), which increase the
+							index size</para>
+					</listitem>
+					
+					<listitem>
+						<para>the properties projected must use a
+							<literal>FieldBridge</literal> implementing
+							<classname>org.hibernate.search.bridge.TwoWayFieldBridge</classname>
+							or
+							<literal>org.hibernate.search.bridge.TwoWayStringBridge</literal>,
+							the latter being the simpler version. All Hibernate Search
+							built-in types are two-way.</para>
+					</listitem>
+				</itemizedlist>
+				
+				<para>Projection is useful for another kind of usecases. Lucene
+					provides some metadata informations to the user about the results. By
+					using some special placeholders, the projection mechanism can retrieve
+					them:</para>
+				
+				<programlisting>org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery, Book.class );
+					query.<emphasis role="bold">setProjection( FullTextQuery.SCORE, FullTextQuery.BOOST, FullTextQuery.THIS, "mainAuthor.name" )</emphasis>;
+					List results = query.list();
+					Object[] firstResult = (Object[]) results.get(0);
+					float score = firstResult[0];
+					float boost = firstResult[1];
+					Book book = firstResult[2];
+					String authorName = firstResult[3];</programlisting>
+				
+				<para>You can mix and match regular fields and special placeholders.
+					Here is the list of available placeholders:</para>
+				
+				<itemizedlist>
+					<listitem>
+						<para>FullTextQuery.THIS: returns the intialized and managed
+							entity (as a non projected query would have done)</para>
+					</listitem>
+					
+					<listitem>
+						<para>FullTextQuery.DOCUMENT: returns the Lucene Document related
+							to the object projected</para>
+					</listitem>
+					
+					<listitem>
+						<para>FullTextQuery.SCORE: returns the document score in the
+							query. The score is guaranteed to be between 0 and 1 but the
+							highest score is not necessarily equals to 1. Scores are handy to
+							compare one result against an other for a given query but are
+							useless when comparing the result of different queries.</para>
+					</listitem>
+					
+					<listitem>
+						<para>FullTextQuery.BOOST: the boost value of the Lucene
+							Document</para>
+					</listitem>
+					
+					<listitem>
+						<para>FullTextQuery.ID: the id property value of the projected
+							object</para>
+					</listitem>
+					
+					<listitem>
+						<para>FullTextQuery.DOCUMENT_ID: the Lucene document id. Careful,
+							Lucene document id can change overtime between two different
+							IndexReader opening (this feature is experimental)</para>
+					</listitem>
+				</itemizedlist>
+			</section>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Query-Retrieving_Results">
+		<title>Retrieving the results</title>
+		
+		<para>Once the Hibernate Search query is built, executing it is in no way
+			different than executing a HQL or Criteria query. The same paradigm and
+			object semantic apply. All the common operations are available:
+			<command>list()</command>, <command>uniqueResult()</command>,
+			<command>iterate()</command>,
+			<command>scroll()</command>.</para>
+		
+		<section id="Hibernate_Search-Retrieving_Results-Performance_Considerations">
+			<title>Performance considerations</title>
+			
+			<para>If you expect a reasonable number of results (for example using
+				pagination) and expect to work on all of them,
+				<command>list()</command> or
+				<command>uniqueResult()</command> are recommended.
+				<command>list()</command> work best if the entity
+				<literal>batch-size</literal> is set up properly. Note that Hibernate
+				Search has to process all Lucene Hits elements (within the pagination)
+				when using <command>list()</command> ,
+				<command>uniqueResult()</command> and
+				<command>iterate()</command>.</para>
+			
+			<para>If you wish to minimize Lucene document loading,
+				<command>scroll()</command> is more appropriate. Don't forget to
+				close the <classname>ScrollableResults</classname> object when you're
+				done, since it keeps Lucene resources. If you expect to use
+				<command>scroll</command> but wish to load objects in batch, you
+				can use <command>query.setFetchSize()</command>: When an object is
+				accessed, and if not already loaded, Hibernate Search will load the next
+				<literal>fetchSize</literal> objects in one pass.</para>
+			
+			<para>Pagination is a preferred method over scrolling though.</para>
+		</section>
+		
+		<section id="Hibernate_Search-Retrieving_Results-Result_Size">
+			<title>Result size</title>
+			
+			<para>It is sometime useful to know the total number of matching
+				documents:</para>
+			
+			<itemizedlist>
+				<listitem>
+					<para>for the Google-like feature 1-10 of about 888,000,000</para>
+				</listitem>
+				
+				<listitem>
+					<para>to implement a fast pagination navigation</para>
+				</listitem>
+				
+				<listitem>
+					<para>to implement a multi step search engine (adding approximation
+						if the restricted query return no or not enough results)</para>
+				</listitem>
+			</itemizedlist>
+			
+			<para>But it would be costly to retrieve all the matching
+				documents.</para>
+			
+			<para>Hibernate Search allows you to retrieve the total number of
+				matching documents regardless of the pagination parameters. Even more
+				interesting, you can retrieve the number of matching elements without
+				triggering a single object load.</para>
+			
+			<programlisting>org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery, Book.class );
+				assert 3245 == <emphasis role="bold">query.getResultSize()</emphasis>; //return the number of matching books without loading a single one
+				
+				org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery, Book.class );
+				query.setMaxResult(10);
+				List results = query.list();
+				assert 3245 == <emphasis role="bold">query.getResultSize()</emphasis>; //return the total number of matching books regardless of pagination</programlisting>
+			
+			<note>
+				<para>Like Google, the number of results is approximative if the index
+					is not fully up-to-date with the database (asynchronous cluster for
+					example).</para>
+			</note>
+		</section>
+		
+		<section id="Hibernate_Search-Retrieving_Results-Result_Transformer">
+			<title>ResultTransformer</title>
+			
+			<para>Especially when using projection, the data structure returned by a
+				query (an object array in this case), is not always matching the
+				application needs. It is possible to apply a
+				<classname>ResultTransformer</classname> operation post query to match
+				the targeted data structure:</para>
+			
+			<programlisting>org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery, Book.class );
+				query.setProjection( "title", "mainAuthor.name" );
+				
+				<emphasis role="bold">query.setResultTransformer( 
+					new StaticAliasToBeanResultTransformer( BookView.class, "title", "author" ) 
+					);</emphasis>
+				List&lt;BookView&gt; results = (List&lt;BookView&gt;) query.list();
+				for(BookView view : results) {
+				log.info( "Book: " + view.getTitle() + ", " + view.getAuthor() );
+				}</programlisting>
+			
+			<para>Examples of <classname>ResultTransformer</classname>
+				implementations can be found in the Hibernate Core codebase.</para>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Search-Query-Filters">
+		<title>Filters</title>
+		
+		<para>Apache Lucene has a powerful feature that allows to filters results
+			from a query according to a custom filtering process. This is a very
+			powerful way to apply some data restrictions after a query, especially
+			since filters can be cached and reused. Some interesting usecases
+			are:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>security</para>
+			</listitem>
+			
+			<listitem>
+				<para>temporal data (e.g.. view only last month's data)</para>
+			</listitem>
+			
+			<listitem>
+				<para>population filter (e.g. search limited to a given
+					category)</para>
+			</listitem>
+			
+			<listitem>
+				<para>and many more</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>Hibernate Search pushes the concept further by introducing the
+			notion of parameterizable named filters which are transparantly cached.
+			For people familiar with the notion of Hibernate Core filters, the API is
+			very similar.</para>
+		
+		<programlisting>fullTextQuery = s.createFullTextQuery( query, Driver.class );
+			fullTextQuery.enableFullTextFilter("bestDriver");
+			fullTextQuery.enableFullTextFilter("security").setParameter( "login", "andre" );
+			fullTextQuery.list(); //returns only best drivers where andre has credentials</programlisting>
+		
+		<para>In this example we enabled 2 filters on top of this query. You can
+			enable (or disable) as many filters as you want.</para>
+		
+		<para>Declaring filters is done through the
+			<classname>@FullTextFilterDef</classname> annotation. This annotation can
+			be on any <literal>@Indexed</literal> entity regardless of the filter
+			operation.</para>
+		
+		<programlisting>@Entity
+			@Indexed
+			@FullTextFilterDefs( {
+			<emphasis role="bold">@FullTextFilterDef(name = "bestDriver", impl = BestDriversFilter.class, cache=false)</emphasis>, //actual Filter implementation
+			<emphasis role="bold">@FullTextFilterDef(name = "security", impl = SecurityFilterFactory.class)</emphasis> //Filter factory with parameters
+			})
+			public class Driver { ... }</programlisting>
+		
+		<para>Each named filter points to an actual filter implementation.</para>
+		
+		<programlisting>public class BestDriversFilter extends <emphasis
+										role="bold">org.apache.lucene.search.Filter</emphasis> {
+			
+			public BitSet bits(IndexReader reader) throws IOException {
+			BitSet bitSet = new BitSet( reader.maxDoc() );
+			TermDocs termDocs = reader.termDocs( new Term("score", "5") );
+			while ( termDocs.next() ) {
+			bitSet.set( termDocs.doc() );
+			}
+			return bitSet;
+			}
+			}</programlisting>
+		
+		<para><classname>BestDriversFilter</classname> is an example of a simple
+			Lucene filter that will filter all results to only return drivers whose
+			score is 5. The filters must have a no-arg constructor when referenced in
+			a <literal>FulltextFilterDef.impl</literal>.</para>
+		
+		<para>The <literal>cache</literal> flag, defaulted to
+			<literal>true</literal>, tells Hibernate Search to search the filter in
+			its internal cache and reuses it if found.</para>
+		
+		<para>Note that, usually, filter using the
+			<classname>IndexReader</classname> are wrapped in a Lucene
+			<classname>CachingWrapperFilter</classname> to benefit from some caching
+			speed improvement. If your Filter creation requires additional steps or if
+			the filter you are willing to use does not have a no-arg constructor, you
+			can use the factory pattern:</para>
+		
+		<programlisting>@Entity
+			@Indexed
+			@FullTextFilterDef(name = "bestDriver", impl = BestDriversFilterFactory.class) //Filter factory
+			public class Driver { ... }
+			
+			public class BestDriversFilterFactory {
+			
+			<emphasis role="bold">@Factory</emphasis>
+			public Filter getFilter() {
+			//some additional steps to cache the filter results per IndexReader
+			Filter bestDriversFilter = new BestDriversFilter();
+			return new CachingWrapperFilter(bestDriversFilter);
+			}
+			}</programlisting>
+		
+		<para>Hibernate Search will look for a <literal>@Factory</literal>
+			annotated method and use it to build the filter instance. The factory must
+			have a no-arg constructor. For people familiar with JBoss Seam, this is
+			similar to the component factory pattern, but the annotation is
+			different!</para>
+		
+		<para>Named filters comes in handy where the filters have parameters. For
+			example a security filter needs to know which credentials you are willing
+			to filter by:</para>
+		
+		<programlisting>fullTextQuery = s.createFullTextQuery( query, Driver.class );
+			fullTextQuery.enableFullTextFilter("security")<emphasis role="bold">.setParameter( "level", 5 )</emphasis>;</programlisting>
+		
+		<para>Each parameter name should have an associated setter on either the
+			filter or filter factory of the targeted named filter definition.</para>
+		
+		<programlisting>public class SecurityFilterFactory {
+			private Integer level;
+			
+			/**
+			* injected parameter
+			*/
+			<emphasis role="bold">public void setLevel(Integer level)</emphasis> {
+			this.level = level;
+			}
+			
+			<emphasis role="bold">@Key
+				public FilterKey getKey()</emphasis> {
+			StandardFilterKey key = new StandardFilterKey();
+			key.addParameter( level );
+			return key;
+			}
+			
+			@Factory
+			public Filter getFilter() {
+			Query query = new TermQuery( new Term("level", level.toString() ) );
+			return new CachingWrapperFilter( new QueryWrapperFilter(query) );
+			}
+			}</programlisting>
+		
+		<para>Note the method annotated <classname>@Key</classname> and returning
+			a <classname>FilterKey</classname> object. The returned object has a
+			special contract: the key object must implement equals / hashcode so that
+			2 keys are equals if and only if the given Filter types are the same and
+			the set of parameters are the same. In other words, 2 filter keys are
+			equal if and only if the filters from which the keys are generated can be
+			interchanged. The key object is used as a key in the cache
+			mechanism.</para>
+		
+		<para><classname>@Key</classname> methods are needed only if:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>you enabled the filter caching system (enabled by
+					default)</para>
+			</listitem>
+			
+			<listitem>
+				<para>your filter has parameters</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>In most cases, using the <literal>StandardFilterKey</literal>
+			implementation will be good enough. It delegates the equals/hashcode
+			implementation to each of the parameters equals and hashcode
+			methods.</para>
+		
+		<para>Why should filters be cached? There are two area where filter
+			caching shines:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>the system does not update the targeted entity index often (in
+					other words, the IndexReader is reused a lot)</para>
+			</listitem>
+			
+			<listitem>
+				<para>the Filter BitSet is expensive to compute (compared to the time
+					spent to execute the query)</para>
+			</listitem>
+		</itemizedlist>
+		
+		<para>Cache is enabled by default and use the notion of SoftReferences to
+			dispose memory when needed. To adjust the size of the hard reference
+			cache, use <literal>hibernate.search.filter.cache_strategy.size</literal>
+			(defaults to 128). Don't forget to use a
+			<classname>CachingWrapperFilter</classname> when the filter is cacheable
+			and the Filter's bits methods makes use of IndexReader.</para>
+		
+		<para>For advance use of filter caching, you can implement your own
+			<classname>FilterCachingStrategy</classname>. The classname is defined by
+			<literal>hibernate.search.filter.cache_strategy</literal>.</para>
+	</section>
+	
+	<section id="Hibernate_Search-Query-Optimizing">
+		<title>Optimizing the query process</title>
+		
+		<para>Query performance depends on several criteria:</para>
+		
+		<itemizedlist>
+			<listitem>
+				<para>the Lucene query itself: read the literature on this
+					subject</para>
+			</listitem>
+			
+			<listitem>
+				<para>the number of object loaded: use pagination (always ;-) ) or
+					index projection (if needed)</para>
+			</listitem>
+			
+			<listitem>
+				<para>the way Hibernate Search interacts with the Lucene readers:
+					defines the appropriate <xref
+								     linkend="Hibernate_Search-Architecture-Reader_Strategy" />.</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="Hibernate_Search-Query-Native_Lucene">
+		<title>Native Lucene Queries</title>
+		
+		<para>If you wish to use some specific features of Lucene, you can always
+			run Lucene specific queries. Check <xref linkend="Hibernate_Search-Lucene_Native" />
+			for more informations.</para>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Revision_History.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Revision_History.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/Revision_History.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname>Danielle</firstname>
+					<surname>Coulson</surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member>Content reformat</member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/hibernate_logo_a.png
===================================================================
(Binary files differ)


Property changes on: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/hibernate_logo_a.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/icon.svg
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/icon.svg	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/icon.svg	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/jms-backend.png
===================================================================
(Binary files differ)


Property changes on: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/jms-backend.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/lucene-backend.png
===================================================================
(Binary files differ)


Property changes on: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/en-US/images/lucene-backend.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Architecture.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Architecture.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Architecture.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,368 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Architecture.xml:6
+#, no-c-format
+msgid "Architecture"
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:9
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:11
+#, no-c-format
+msgid ""
+"Hibernate Search consists of an indexing and an index search engine. Both "
+"are backed by Apache Lucene."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:14
+#, no-c-format
+msgid ""
+"When an entity is inserted, updated or removed in/from the database, "
+"Hibernate Search keeps track of this event (through the Hibernate event "
+"system) and schedules an index update. All the index updates are handled for "
+"you without you having to use the Apache Lucene APIs (see <xref linkend="
+"\"Hibernate_Search-Configuration-Event\"/>)."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:19
+#, no-c-format
+msgid ""
+"To interact with Apache Lucene indexes, Hibernate Search has the notion of "
+"<classname>DirectoryProvider</classname>s. A directory provider will manage "
+"a given Lucene <classname>Directory</classname> type. You can configure "
+"directory providers to adjust the directory target (see <xref linkend="
+"\"Hibernate_Search-Configuration-Directory\"/>)."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:24
+#, no-c-format
+msgid ""
+"Hibernate Search can also use the Lucene index to search an entity and "
+"return a list of managed entities saving you the tedious object to Lucene "
+"document mapping. The same persistence context is shared between Hibernate "
+"and Hibernate Search; as a matter of fact, the Search Session is built on "
+"top of the Hibernate Session. The application code use the unified "
+"<classname>org.hibernate.Query</classname> or <classname>javax.persistence."
+"Query</classname> APIs exactly the way a HQL, JPA-QL or native queries would "
+"do."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:33
+#, no-c-format
+msgid ""
+"To be more efficient, Hibernate Search batches the write interactions with "
+"the Lucene index. There is currently two types of batching depending on the "
+"expected scope."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:37
+#, no-c-format
+msgid ""
+"Outside a transaction, the index update operation is executed right after "
+"the actual database operation. This scope is really a no scoping setup and "
+"no batching is performed."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:41
+#, no-c-format
+msgid ""
+"It is however recommended, for both your database and Hibernate Search, to "
+"execute your operation in a transaction be it JDBC or JTA. When in a "
+"transaction, the index update operation is scheduled for the transaction "
+"commit and discarded in case of transaction rollback. The batching scope is "
+"the transaction. There are two immediate benefits:"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:50
+#, no-c-format
+msgid ""
+"Performance: Lucene indexing works better when operation are executed in "
+"batch."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:55
+#, no-c-format
+msgid ""
+"ACIDity: The work executed has the same scoping as the one executed by the "
+"database transaction and is executed if and only if the transaction is "
+"committed."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:60
+#, no-c-format
+msgid ""
+"Disclaimer, the work in not ACID in the strict sense of it, but ACID "
+"behavior is rarely useful for full text search indexes since they can be "
+"rebuilt from the source at any time."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:67
+#, no-c-format
+msgid ""
+"You can think of those two scopes (no scope vs transactional) as the "
+"equivalent of the (infamous) auto-commit vs transactional behavior. From a "
+"performance perspective, the <emphasis>in transaction</emphasis> mode is "
+"recommended. The scoping choice is made transparently: Hibernate Search "
+"detects the presence of a transaction and adjust the scoping."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:74
+#, no-c-format
+msgid ""
+"Hibernate Search works perfectly fine in the Hibernate / EntityManager long "
+"conversation pattern aka. atomic conversation."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:80
+#, no-c-format
+msgid ""
+"Depending on user demand, additional scoping will be considered, the "
+"pluggability mechanism being already in place."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:87
+#, no-c-format
+msgid "Back End"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:89
+#, no-c-format
+msgid ""
+"Hibernate Search offers the ability to let the scoped work being processed "
+"by different back ends. Two back ends are provided out of the box for two "
+"different scenarios."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:96
+#, no-c-format
+msgid ""
+"Hibernate Search is an extensible architecture. While not yet part of the "
+"public API, plugging a third party back end is possible. Feel free to drop "
+"ideas to <literal>hibernate-dev at lists.jboss.org</literal>."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:102
+#, no-c-format
+msgid "Lucene"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:104
+#, no-c-format
+msgid ""
+"In this mode, all index update operations applied on a given node (JVM) will "
+"be executed to the Lucene directories (through the directory providers) by "
+"the same node. This mode is typically used in non clustered environment or "
+"in clustered environments where the directory store is shared."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:120
+#, no-c-format
+msgid ""
+"This mode targets non clustered applications, or clustered applications "
+"where the Directory is taking care of the locking strategy."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:126
+#, no-c-format
+msgid ""
+"The main advantage is simplicity and immediate visibility of the changes in "
+"Lucene queries (a requirement is some applications)."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:133
+#, no-c-format
+msgid "<title>JMS</title>"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:135
+#, no-c-format
+msgid ""
+"All index update operations applied on a given node are sent to a JMS queue. "
+"A unique reader will then process the queue and update the master Lucene "
+"index. The master index is then replicated on a regular basis to the slave "
+"copies. This is known as the master / slaves pattern. The master is the sole "
+"responsible for updating the Lucene index. The slaves can accept read as "
+"well as write operations. However, they only process the read operation on "
+"their local index copy and delegate the update operations to the master."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:153
+#, no-c-format
+msgid ""
+"This mode targets clustered environments where throughput is critical, and "
+"index update delays are affordable. Reliability is ensured by the JMS "
+"provider and by having the slaves working on a local copy of the index."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:161
+#, no-c-format
+msgid "Work Execution"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:163
+#, no-c-format
+msgid ""
+"The indexing work (done by the back end) can be executed synchronously with "
+"the transaction commit (or update operation if out of transaction), or "
+"asynchronously."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:168
+#, no-c-format
+msgid "Synchronous"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:170
+#, no-c-format
+msgid ""
+"This is the safe mode where the back end work is executed in concert with "
+"the transaction commit. Under highly concurrent environment, this can lead "
+"to throughput limitations (due to the Apache Lucene lock mechanism) and it "
+"can increase the system response time if the backend is significantly slower "
+"than the transactional process and if a lot of IO operations are involved."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:179
+#, no-c-format
+msgid "Asynchronous"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:181
+#, no-c-format
+msgid ""
+"This mode delegates the work done by the back end to a different thread. "
+"That way, throughput and response time are (to a certain extend) "
+"decorrelated from the back end performance. The drawback is that a small "
+"delay appears between the transaction commit and the index update and a "
+"small overhead is introduced to deal with thread management."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:187
+#, no-c-format
+msgid ""
+"It is recommended to use synchronous execution first and evaluate "
+"asynchronous execution if performance problems occur and after having set up "
+"a proper benchmark (i.e. not a lonely cowboy hitting the system in a "
+"completely unrealistic way)."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:195
+#, no-c-format
+msgid "Reader Strategy"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:197
+#, no-c-format
+msgid ""
+"When executing a query, Hibernate Search interacts with the Apache Lucene "
+"indexes through a reader strategy. Choosing a reader strategy will depend on "
+"the profile of the application (frequent updates, read mostly, asynchronous "
+"index update etc). See also"
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:204
+#, no-c-format
+msgid "Shared"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:206
+#, no-c-format
+msgid ""
+"With this strategy, Hibernate Search will share the same IndexReader, for a "
+"given Lucene index, across multiple queries and threads provided that the "
+"IndexReader is still up-to-date. If the IndexReader is not up-to-date, a new "
+"one is opened and provided. Generally speaking, this strategy provides much "
+"better performances than the <literal>not-shared</literal> strategy. It is "
+"especially true if the number of updates is much lower than the reads. This "
+"strategy is the default."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:217
+#, no-c-format
+msgid "Not-shared"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:219
+#, no-c-format
+msgid ""
+"Every time a query is executed, a Lucene IndexReader is opened. This "
+"strategy is not the most efficient since opening and warming up an "
+"IndexReader can be a relatively expensive operation."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:225
+#, no-c-format
+msgid "Custom"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:227
+#, no-c-format
+msgid ""
+"You can write your own reader strategy that suits your application needs by "
+"implementing <classname>org.hibernate.search.reader.ReaderProvider</"
+"classname>. The implementation must be thread safe."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:233
+#, no-c-format
+msgid ""
+"Some additional strategies are planned in future versions of Hibernate Search"
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Author_Group.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Author_Group.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Author_Group.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,29 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:6
+#, no-c-format
+msgid "<firstname>Hibernate Development Team</firstname> <surname></surname>"
+msgstr ""
+
+#. Tag: editor
+#: Author_Group.xml:10
+#, no-c-format
+msgid ""
+"<firstname>Red Hat Inc. Engineering Content Services</firstname> <surname></"
+"surname>"
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Batch_Index.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Batch_Index.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Batch_Index.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,212 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Batch_Index.xml:6
+#, no-c-format
+msgid "Manual Indexing"
+msgstr ""
+
+#. Tag: title
+#: Batch_Index.xml:9
+#, no-c-format
+msgid "Indexing"
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:11
+#, no-c-format
+msgid ""
+"It is sometimes useful to index an object even if this object is not "
+"inserted nor updated to the database. This is especially true when you want "
+"to build your index for the first time. You can achieve that goal using the "
+"<classname>FullTextSession</classname>."
+msgstr ""
+
+#. Tag: programlisting
+#: Batch_Index.xml:16
+#, no-c-format
+msgid ""
+"FullTextSession fullTextSession = Search.createFullTextSession(session);\n"
+"                Transaction tx = fullTextSession.beginTransaction();\n"
+"                for (Customer customer : customers) {\n"
+"                <emphasis role=\"bold\">fullTextSession.index(customer);</"
+"emphasis>\n"
+"                }\n"
+"                tx.commit(); //index are written at commit time"
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:18
+#, no-c-format
+msgid ""
+"For maximum efficiency, Hibernate Search batches index operations and "
+"executes them at commit time (Note: you don't need to use <classname>org."
+"hibernate.Transaction</classname> in a JTA environment)."
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:23
+#, no-c-format
+msgid ""
+"If you expect to index a lot of data, you need to be careful about memory "
+"consumption: since all documents are kept in a queue until the transaction "
+"commit, you can potentially face an <classname>OutOfMemoryException</"
+"classname>."
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:28
+#, no-c-format
+msgid ""
+"To avoid that, you can set up the <literal>hibernate.search.worker."
+"batch_size</literal> property to a sensitive value: all index operations are "
+"queued until <literal>batch_size</literal> is reached. Every time "
+"<literal>batch_size</literal> is reached (or if the transaction is "
+"committed), the queue is processed (freeing memory) and emptied. Be aware "
+"that the changes cannot be rolled-back if the number of index elements goes "
+"beyond <literal>batch_size</literal>. Be also aware that the queue limits "
+"are also applied on regular transparent indexing (and not only when "
+"<literal>session.index()</literal> is used). That's why a sensitive "
+"<literal>batch_size</literal> value is expected."
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:40
+#, no-c-format
+msgid ""
+"Other parameters which also can affect indexing time and memory consumption "
+"are <literal>hibernate.search.[default|&lt;indexname&gt;].batch."
+"merge_factor</literal> , <literal>hibernate.search.[default|&lt;"
+"indexname&gt;].batch.max_merge_docs</literal> and <literal>hibernate.search."
+"[default|&lt;indexname&gt;].batch.max_buffered_docs</literal> . These "
+"parameters are Lucene specific and Hibernate Search is just passing these "
+"parameters through - see <xref linkend=\"Hibernate_Search-Configuration-"
+"Lucene_Index_Performance\"/> for more details."
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:50
+#, no-c-format
+msgid ""
+"Here is an especially efficient way to index a given class (useful for index "
+"(re)initialization):"
+msgstr ""
+
+#. Tag: programlisting
+#: Batch_Index.xml:53
+#, no-c-format
+msgid ""
+"fullTextSession.setFlushMode(FlushMode.MANUAL);\n"
+"                fullTextSession.setCacheMode(CacheMode.IGNORE);\n"
+"                transaction = fullTextSession.beginTransaction();\n"
+"                //Scrollable results will avoid loading too many objects in "
+"memory\n"
+"                ScrollableResults results = fullTextSession.createCriteria"
+"( Email.class ).scroll(\n"
+"                ScrollMode.FORWARD_ONLY );\n"
+"                int index = 0;\n"
+"                while( results.next() ) {\n"
+"                index++;\n"
+"                fullTextSession.index( results.get(0) ); //index each "
+"element\n"
+"                if (index % batchSize == 0) s.clear(); //clear every "
+"batchSize since the queue is processed\n"
+"                }\n"
+"                transaction.commit();"
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:55
+#, no-c-format
+msgid ""
+"It is critical that <literal>batchSize</literal> in the previous example "
+"matches the <literal>batch_size</literal> value described previously."
+msgstr ""
+
+#. Tag: title
+#: Batch_Index.xml:61
+#, no-c-format
+msgid "Purging"
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:63
+#, no-c-format
+msgid ""
+"It is equally possible to remove an entity or all entities of a given type "
+"from a Lucene index without the need to physically remove them from the "
+"database. This operation is named purging and is done through the "
+"<classname>FullTextSession</classname>."
+msgstr ""
+
+#. Tag: programlisting
+#: Batch_Index.xml:68
+#, no-c-format
+msgid ""
+"FullTextSession fullTextSession = Search.createFullTextSession(session);\n"
+"                Transaction tx = fullTextSession.beginTransaction();\n"
+"                for (Customer customer : customers) {\n"
+"                <emphasis role=\"bold\">fullTextSession.purge( Customer."
+"class, customer.getId() );</emphasis>\n"
+"                }\n"
+"                tx.commit(); //index are written at commit time"
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:70
+#, no-c-format
+msgid ""
+"Purging will remove the entity with the given id from the Lucene index but "
+"will not touch the database."
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:73
+#, no-c-format
+msgid ""
+"If you need to remove all entities of a given type, you can use the "
+"<command>purgeAll</command> method."
+msgstr ""
+
+#. Tag: programlisting
+#: Batch_Index.xml:76
+#, no-c-format
+msgid ""
+"FullTextSession fullTextSession = Search.createFullTextSession(session);\n"
+"                Transaction tx = fullTextSession.beginTransaction();\n"
+"                <emphasis role=\"bold\">fullTextSession.purgeAll( Customer."
+"class );</emphasis>\n"
+"                //optionally optimize the index\n"
+"                //fullTextSession.getSearchFactory().optimize( Customer."
+"class );\n"
+"                tx.commit(); //index are written at commit time"
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:78
+#, no-c-format
+msgid "It is recommended to optimize the index after such an operation."
+msgstr ""
+
+#. Tag: para
+#: Batch_Index.xml:82
+#, no-c-format
+msgid ""
+"Methods <command>index</command>, <command>purge</command> and "
+"<command>purgeAll</command> are available on "
+"<classname>FullTextEntityManager</classname> as well"
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Book_Info.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Book_Info.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Book_Info.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,55 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "Hibernate Search Reference Guide CP05 FP01"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid "Apache <trademark>Lucene</trademark> Integration"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:8
+#, no-c-format
+msgid ""
+"For use with JBoss Enterprise Application Platform 4.3.0 Cumulative Patch 5 "
+"Feature Pack 1"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid ""
+"This book is a Reference Guide to Hibernate Search for JBoss Enterprise "
+"Application Platform 4.3.0 CP05 FP01"
+msgstr ""
+
+#. Tag: phrase
+#: Book_Info.xml:24
+#, no-c-format
+msgid "Logo"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:29
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Configuration.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Configuration.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Configuration.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,1156 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:6
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:9
+#, no-c-format
+msgid "Directory Configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Apache Lucene has a notion of <literal>Directory</literal> to store the "
+"index files. The Directory implementation can be customized, but Lucene "
+"comes bundled with a file system (<literal>FSDirectoryProvider</literal>) "
+"and a in memory (<literal>RAMDirectoryProvider</literal>) implementation. "
+"Hibernate Search has the notion of <literal>DirectoryProvider</literal> that "
+"handles the configuration and the initialization of the Lucene Directory."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:20
+#, no-c-format
+msgid ""
+"List of built-in Directory Providers in the namespace of org.hibernate."
+"search.store."
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:25
+#, no-c-format
+msgid "Class"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:27 Configuration.xml:243 Configuration.xml:528
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:29
+#, no-c-format
+msgid "Properties"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:35
+#, no-c-format
+msgid "FSDirectoryProvider"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"File system based directory. The directory used will be &lt;indexBase&gt;/"
+"&lt; <literal>@Indexed.name</literal> &gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:41
+#, no-c-format
+msgid "<literal>indexBase</literal> : Base directory"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:42 Configuration.xml:60 Configuration.xml:85
+#, no-c-format
+msgid ""
+"<literal>indexName</literal>: override @Index.name (useful for sharded "
+"indexes)"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:47
+#, no-c-format
+msgid "FSMasterDirectoryProvider"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid ""
+"File system based directory. Like FSDirectoryProvider. It also copies the "
+"index to a source directory (aka copy directory) on a regular basis."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:52 Configuration.xml:77
+#, no-c-format
+msgid ""
+"The recommended value for the refresh period is (at least) 50% higher that "
+"the time to copy the information (default 3600 seconds - 60 minutes)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53 Configuration.xml:79
+#, no-c-format
+msgid ""
+"Note that the copy is based on an incremental copy mechanism reducing the "
+"average copy time."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:55
+#, no-c-format
+msgid ""
+"DirectoryProvider typically used on the master node in a JMS back end "
+"cluster."
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"<entry>DirectoryProvider typically used on slave nodes using a JMS back end."
+"</entry>"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:59 Configuration.xml:84
+#, no-c-format
+msgid "<literal>indexBase</literal>: Base directory"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:87
+#, no-c-format
+msgid "<literal>sourceBase</literal>: Source (copy) base directory."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:63 Configuration.xml:88
+#, no-c-format
+msgid ""
+"<literal>source</literal>: Source directory suffix (default to "
+"<literal>@Indexed.name</literal>). The actual source directory name being "
+"<filename>&lt;sourceBase&gt;/&lt;source&gt;</filename>"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:67 Configuration.xml:92
+#, no-c-format
+msgid ""
+"refresh: refresh period in second (the copy will take place every refresh "
+"seconds)."
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:72
+#, no-c-format
+msgid "FSSlaveDirectoryProvider"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:74
+#, no-c-format
+msgid ""
+"File system based directory. Like FSDirectoryProvider, but retrieves a "
+"master version (source) on a regular basis. To avoid locking and "
+"inconsistent search results, 2 local copies are kept."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:81
+#, no-c-format
+msgid ""
+"<para>DirectoryProvider typically used on slave nodes using a JMS back end.</"
+"para>"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:97
+#, no-c-format
+msgid "RAMDirectoryProvider"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:99
+#, no-c-format
+msgid ""
+"Memory based directory, the directory will be uniquely identified (in the "
+"same deployment unit) by the <literal>@Indexed.name</literal> element"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:103
+#, no-c-format
+msgid "none"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:109
+#, no-c-format
+msgid ""
+"If the built-in directory providers does not fit your needs, you can write "
+"your own directory provider by implementing the <classname>org.hibernate."
+"store.DirectoryProvider</classname> interface"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid ""
+"Each indexed entity is associated to a Lucene index (an index can be shared "
+"by several entities but this is not usually the case). You can configure the "
+"index through properties prefixed by <command>hibernate.search.</"
+"command><replaceable>indexname</replaceable> . Default properties inherited "
+"to all indexes can be defined using the prefix <command>hibernate.search."
+"default.</command>"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:121
+#, no-c-format
+msgid ""
+"To define the directory provider of a given index, you use the property "
+"<literal>hibernate.search.<replaceable>indexname</replaceable>."
+"directory_provider </literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:125
+#, no-c-format
+msgid ""
+"hibernate.search.default.directory_provider  org.hibernate.search.store."
+"FSDirectoryProvider\n"
+"                        hibernate.search.default.indexBase=/usr/lucene/"
+"indexes\n"
+"                        \n"
+"                        hibernate.search.Rules.directory_provider  org."
+"hibernate.search.store.RAMDirectoryProvider"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:127
+#, no-c-format
+msgid "applied on"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:129
+#, no-c-format
+msgid ""
+"@Indexed(name=\"Status\")\n"
+"public class Status { ... }\n"
+"                        \n"
+"@Indexed(name=\"Rules\")\n"
+"public class Rule { ... }"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:131
+#, no-c-format
+msgid ""
+"will create a file system directory in <filename>/usr/lucene/indexes/Status</"
+"filename> where the Status entities will be indexed, and use an in memory "
+"directory named <literal>Rules</literal> where Rule entities will be indexed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:136
+#, no-c-format
+msgid ""
+"You can easily define common rules like the directory provider and base "
+"directory, and override those default later on on a per index basis."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:140
+#, no-c-format
+msgid ""
+"Writing your own <classname>DirectoryProvider</classname>, you can utilize "
+"this configuration mechanism as well."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:145
+#, no-c-format
+msgid "Index Sharding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"In some extreme cases involving huge indexes (in size), it is necessary to "
+"split (shard) the indexing data of a given entity type into several Lucene "
+"indexes. This solution is not recommended until you reach significant index "
+"sizes and index update time are slowing down. The main drawback of index "
+"sharding is that searches will end up being slower since more files have to "
+"be opened for a single search. In other words don't do it until you have "
+"problems :)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:155
+#, no-c-format
+msgid ""
+"Despite this strong warning, Hibernate Search allows you to index a given "
+"entity type into several sub indexes. Data is sharded into the different sub "
+"indexes thanks to an <classname>IndexShardingStrategy</classname>. By "
+"default, no sharding strategy is enabled, unless the number of shards is "
+"configured. To configure the number of shards use the following property"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:162
+#, no-c-format
+msgid "hibernate.search.&lt;indexName&gt;.sharding_strategy.nbr_of_shards 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:164
+#, no-c-format
+msgid "This will use 5 different shards."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:166
+#, no-c-format
+msgid ""
+"The default sharding strategy, when shards are set up, splits the data "
+"according to the hash value of the id string representation (generated by "
+"the Field Bridge). This ensures a fairly balanced sharding. You can replace "
+"the strategy by implementing <literal>IndexShardingStrategy</literal> and by "
+"setting the following property"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:173
+#, no-c-format
+msgid ""
+"hibernate.search.&lt;indexName&gt;.sharding_strategy my.shardingstrategy."
+"Implementation"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:175
+#, no-c-format
+msgid ""
+"Each shard has an independent directory provider configuration as described "
+"in <xref linkend=\"Hibernate_Search-Configuration-Directory\"/>. The "
+"DirectoryProvider default name for the previous example are <literal>&lt;"
+"indexName&gt;.0</literal> to <literal>&lt;indexName&gt;.4</literal>. In "
+"other words, each shard has the name of it's owning index followed by "
+"<command>.</command> (dot) and its index number."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"hibernate.search.default.indexBase /usr/lucene/indexes\n"
+"                        \n"
+"                        hibernate.search.Animal.sharding_strategy."
+"nbr_of_shards 5\n"
+"                        hibernate.search.Animal.directory_provider org."
+"hibernate.search.store.FSDirectoryProvider\n"
+"                        hibernate.search.Animal.0.indexName Animal00\n"
+"                        hibernate.search.Animal.3.indexBase /usr/lucene/"
+"sharded\n"
+"                        hibernate.search.Animal.3.indexName Animal03"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"This configuration uses the default id string hashing strategy and shards "
+"the Animal index into 5 sub-indexes. All sub-indexes are FSDirectoryProvider "
+"instances and the directory where each sub-index is stored is as followed:"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:192
+#, no-c-format
+msgid ""
+"for subindex 0: /usr/lucene/indexes/Animal00 (shared indexBase but "
+"overridden indexName)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:197
+#, no-c-format
+msgid ""
+"for subindex 1: /usr/lucene/indexes/Animal.1 (shared indexBase, default "
+"indexName)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:202
+#, no-c-format
+msgid ""
+"for subindex 2: /usr/lucene/indexes/Animal.2 (shared indexBase, default "
+"indexName)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:207
+#, no-c-format
+msgid ""
+"for subindex 3: /usr/lucene/shared/Animal03 (overridden indexBase, "
+"overridden indexName)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"for subindex 4: /usr/lucene/indexes/Animal.4 (shared indexBase, default "
+"indexName)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:219
+#, no-c-format
+msgid "Worker Configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"It is possible to refine how Hibernate Search interacts with Lucene through "
+"the worker configuration. The work can be executed to the Lucene directory "
+"or sent to a JMS queue for later processing. When processed to the Lucene "
+"directory, the work can be processed synchronously or asynchronously to the "
+"transaction commit."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid "You can define the worker configuration using the following properties"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Worker Configuration (in the namespace of hibernate.worker)"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:241 Configuration.xml:526
+#, no-c-format
+msgid "Property"
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:247
+#, no-c-format
+msgid "backend"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:249
+#, no-c-format
+msgid ""
+"Out of the box support for the Apache Lucene back end and the JMS back end. "
+"Default to <literal>lucene</literal>. Supports also <literal>jms</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:255
+#, no-c-format
+msgid "execution"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:257
+#, no-c-format
+msgid ""
+"Supports synchronous and asynchrounous execution. Default to "
+"<literal><literal>sync</literal></literal>. Supports also <literal>async</"
+"literal>."
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:263
+#, no-c-format
+msgid "thread_pool.size"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:265
+#, no-c-format
+msgid ""
+"Defines the number of threads in the pool. useful only for asynchrounous "
+"execution. Default to 1."
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:270
+#, no-c-format
+msgid "buffer_queue.max"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:272
+#, no-c-format
+msgid ""
+"Defines the maximal number of work queue if the thread poll is starved. "
+"Useful only for asynchrounous execution. Default to infinite. If the limit "
+"is reached, the work is done by the main thread."
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:279
+#, no-c-format
+msgid "jndi.*"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:281
+#, no-c-format
+msgid ""
+"Defines the JNDI properties to initiate the InitialContext (if needed). JNDI "
+"is only used by the JMS back end."
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:286
+#, no-c-format
+msgid "jms.connection_factory"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:289
+#, no-c-format
+msgid ""
+"Mandatory for the JMS back end. Defines the JNDI name to lookup the JMS "
+"connection factory from (<literal>java:/ConnectionFactory</literal> by "
+"default in JBoss AS)"
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:296
+#, no-c-format
+msgid "jms.queue"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:298
+#, no-c-format
+msgid ""
+"Mandatory for the JMS back end. Defines the JNDI name to lookup the JMS "
+"queue from. The queue will be used to post work messages."
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:304
+#, no-c-format
+msgid "batch_size"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"Defines the maximum number of elements indexed before flushing the "
+"transaction-bound queue. Default to 0 (i.e. no limit). See <xref linkend="
+"\"Hibernate_Search-Batch_Index\"/> for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:317
+#, no-c-format
+msgid "JMS Master/Slave Configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid ""
+"This section describes in greater detail how to configure the Master / "
+"Slaves Hibernate Search architecture."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:323
+#, no-c-format
+msgid "Slave Nodes"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"Every index update operation is sent to a JMS queue. Index querying "
+"operations are executed on a local index copy."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"### slave configuration\n"
+"                                \n"
+"                                ## DirectoryProvider\n"
+"                                # (remote) master location\n"
+"                                hibernate.search.default.sourceBase = /mnt/"
+"mastervolume/lucenedirs/mastercopy\n"
+"                                \n"
+"                                # local copy location\n"
+"                                hibernate.search.default.indexBase = /Users/"
+"prod/lucenedirs\n"
+"                                \n"
+"                                # refresh every half hour\n"
+"                                hibernate.search.default.refresh = 1800\n"
+"                                \n"
+"                                # appropriate directory provider\n"
+"                                hibernate.search.default.directory_provider "
+"= org.hibernate.search.store.FSSlaveDirectoryProvider\n"
+"                                \n"
+"                                ## Backend configuration\n"
+"                                hibernate.search.worker.backend = jms\n"
+"                                hibernate.search.worker.jms."
+"connection_factory = java:/ConnectionFactory\n"
+"                                hibernate.search.worker.jms.queue = queue/"
+"hibernatesearch\n"
+"                                #optional jndi configuration (check your JMS "
+"provider for more information)\n"
+"                                \n"
+"                                ## Optional asynchronous execution strategy\n"
+"                                # org.hibernate.worker.execution = async\n"
+"                                # org.hibernate.worker.thread_pool.size = 2\n"
+"                                # org.hibernate.worker.buffer_queue.max = 50"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:330
+#, no-c-format
+msgid "A file system local copy is recommended for faster search results."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:333 Configuration.xml:345
+#, no-c-format
+msgid "The refresh period should be higher that the expected time copy."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:338
+#, no-c-format
+msgid "Master node"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:340
+#, no-c-format
+msgid ""
+"Every index update operation is taken from a JMS queue and executed. The "
+"master index(es) is(are) copied on a regular basis."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"### master configuration\n"
+"                                \n"
+"                                ## DirectoryProvider\n"
+"                                # (remote) master location where information "
+"is copied to\n"
+"                                hibernate.search.default.sourceBase = /mnt/"
+"mastervolume/lucenedirs/mastercopy\n"
+"                                \n"
+"                                # local master location\n"
+"                                hibernate.search.default.indexBase = /Users/"
+"prod/lucenedirs\n"
+"                                \n"
+"                                # refresh every half hour\n"
+"                                hibernate.search.default.refresh = 1800\n"
+"                                \n"
+"                                # appropriate directory provider\n"
+"                                hibernate.search.default.directory_provider "
+"= org.hibernate.search.store.FSMasterDirectoryProvider\n"
+"                                \n"
+"                                ## Backend configuration\n"
+"                                #Backend is the default lucene one"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:348
+#, no-c-format
+msgid ""
+"In addition to the Hibernate Search framework configuration, a Message "
+"Driven Bean should be written and set up to process index works queue "
+"through JMS."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:352
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig = {\n"
+"                                @ActivationConfigProperty(propertyName="
+"\"destinationType\", propertyValue=\"javax.jms.Queue\"),\n"
+"                                @ActivationConfigProperty(propertyName="
+"\"destination\", propertyValue=\"queue/hiebrnatesearch\"),\n"
+"                                @ActivationConfigProperty(propertyName="
+"\"DLQMaxResent\", propertyValue=\"1\")\n"
+"                                } )\n"
+"                                public class MDBSearchController extends "
+"AbstractJMSHibernateSearchController implements MessageListener {\n"
+"                                @PersistenceContext EntityManager em;\n"
+"                                \n"
+"                                //method retrieving the appropriate session\n"
+"                                protected Session getSession() {\n"
+"                                return (Session) em.getDelegate();\n"
+"                                }\n"
+"                                \n"
+"                                //potentially close the session opened in "
+"#getSession(), not needed here\n"
+"                                protected void cleanSessionIfNeeded(Session "
+"session) \n"
+"                                }\n"
+"                                }"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:354
+#, no-c-format
+msgid ""
+"This example inherit the abstract JMS controller class available and "
+"implements a JavaEE 5 MDB. This implementation is given as an example and, "
+"while most likely more complex, can be adjusted to make use of non Java EE "
+"Message Driven Beans. For more information about the <command>getSession()</"
+"command> and <command>cleanSessionIfNeeded()</command>, please check "
+"<classname>AbstractJMSHibernateSearchController</classname>'s javadoc."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"Hibernate Search test suite makes use of JBoss Embedded to test the JMS "
+"integration. It allows the unit test to run both the MDB container and JBoss "
+"Messaging (JMS provider) in a standalone way (marketed by some as "
+"\"lightweight\")."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:373
+#, no-c-format
+msgid "Reader Strategy Configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"The different reader strategies are described in <xref linkend="
+"\"Hibernate_Search-Architecture-Reader_Strategy\"/>. The default reader "
+"strategy is <literal>shared</literal>. This can be adjusted:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:378
+#, no-c-format
+msgid "hibernate.search.reader.strategy = not-shared"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"Adding this property switch to the <literal>non shared</literal> strategy."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid "Or if you have a custom reader strategy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:385
+#, no-c-format
+msgid "hibernate.search.reader.strategy = my.corp.myapp.CustomReaderProvider"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:387
+#, no-c-format
+msgid ""
+"where <classname>my.corp.myapp.CustomReaderProvider</classname> is the "
+"custom strategy implementation"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:392
+#, no-c-format
+msgid "Enabling Hibernate Search and automatic indexing"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:395
+#, no-c-format
+msgid "Enabling Hibernate Search"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:397
+#, no-c-format
+msgid ""
+"Hibernate Search is enabled out of the box when using Hibernate Annotations "
+"or Hibernate EntityManager. If, for some reason you need to disable it, set "
+"<literal>hibernate.search.autoregister_listeners</literal> to false. Note "
+"that there is no performance runtime when the listeners are enabled while no "
+"entity is indexable."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:404
+#, no-c-format
+msgid ""
+"To enable Hibernate Search in Hibernate Core, add the "
+"<literal>FullTextIndexEventListener</literal> for the three Hibernate events "
+"that occur after changes are executed to the database. Once again, such a "
+"configuration is not useful with Hibernate Annotations or Hibernate "
+"EntityManager."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:410
+#, no-c-format
+msgid ""
+"&lt;hibernate-configuration&gt;\n"
+"                                &lt;session-factory&gt;\n"
+"                                ...\n"
+"                                &lt;event type=\"post-update\"/&gt;\n"
+"                                &lt;listener class=\"org.hibernate.search."
+"event.FullTextIndexEventListener\"/&gt;\n"
+"                                &lt;/event&gt;\n"
+"                                &lt;event type=\"post-insert\"/&gt;\n"
+"                                &lt;listener class=\"org.hibernate.search."
+"event.FullTextIndexEventListener\"/&gt;\n"
+"                                &lt;/event&gt;\n"
+"                                &lt;event type=\"post-delete\"/&gt;\n"
+"                                &lt;listener class=\"org.hibernate.search."
+"event.FullTextIndexEventListener\"/&gt;\n"
+"                                &lt;/event&gt;\n"
+"                                &lt;/session-factory&gt;\n"
+"                                &lt;/hibernate-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:412
+#, no-c-format
+msgid ""
+"Be sure to add the appropriate jar files in your classpath. Check "
+"<literal>lib/README.TXT</literal> for the list of third party libraries. A "
+"typical installation on top of Hibernate Annotations will add:"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:418
+#, no-c-format
+msgid "<filename>hibernate-search.jar</filename>: the core engine"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:423
+#, no-c-format
+msgid "<filename>lucene-core-*.jar</filename>: Lucene core engine"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:429
+#, no-c-format
+msgid "Hibernate Core 3.2.6 and beyond"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:431
+#, no-c-format
+msgid ""
+"If you use Hibernate Core 3.2.6 and beyond, make sure to add three "
+"additional event listeners that cope with collection events"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:435
+#, no-c-format
+msgid ""
+"&lt;hibernate-configuration&gt;\n"
+"                                        &lt;session-factory&gt;\n"
+"                                        ...\n"
+"                                        &lt;event type=\"post-collection-"
+"recreate\"/&gt;\n"
+"                                        &lt;listener class=\"org.hibernate."
+"search.event.FullTextIndexCollectionEventListener\"/&gt;\n"
+"                                        &lt;/event&gt;\n"
+"                                        &lt;event type=\"post-collection-"
+"remove\"/&gt;\n"
+"                                        &lt;listener class=\"org.hibernate."
+"search.event.FullTextIndexCollectionEventListener\"/&gt;\n"
+"                                        &lt;/event&gt;\n"
+"                                        &lt;event type=\"post-collection-"
+"update\"/&gt;\n"
+"                                        &lt;listener class=\"org.hibernate."
+"search.event.FullTextIndexCollectionEventListener\"/&gt;\n"
+"                                        &lt;/event&gt;\n"
+"                                        &lt;/session-factory&gt;\n"
+"                                        &lt;/hibernate-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:437
+#, no-c-format
+msgid ""
+"Those additional event listeners have been introduced in Hibernate 3.2.6. "
+"note the <classname>FullTextIndexCollectionEventListener</classname> usage. "
+"You need to explicitly reference those event listeners unless you use "
+"Hibernate Annotations 3.3.1 and above."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:446
+#, no-c-format
+msgid "Automatic indexing"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:448
+#, no-c-format
+msgid ""
+"By default, every time an object is inserted, updated or deleted through "
+"Hibernate, Hibernate Search updates the according Lucene index. It is "
+"sometimes desirable to disable that features if either your index is read-"
+"only or if index updates are done in a batch way (see <xref linkend="
+"\"Hibernate_Search-Batch_Index\"/>)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:453
+#, no-c-format
+msgid "To disable event based indexing, set"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:455
+#, no-c-format
+msgid "hibernate.search.indexing_strategy manual"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:458
+#, no-c-format
+msgid ""
+"In most case, the JMS backend provides the best of both world, a lightweight "
+"event based system keeps track of all changes in the system, and the "
+"heavyweight indexing process is done by a separate process or machine."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:467
+#, no-c-format
+msgid "Tuning Lucene indexing performance"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:469
+#, no-c-format
+msgid ""
+"Hibernate Search allows you to tune the Lucene indexing performance by "
+"specifying a set of parameters which are passed through to underlying Lucene "
+"<literal>IndexWriter</literal> such as <literal>mergeFactor</literal>, "
+"<literal>maxMergeDocs</literal> and <literal>maxBufferedDocs</literal>. You "
+"can specify these parameters either as default values applying for all "
+"indexes or on a per index basis."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:477
+#, no-c-format
+msgid ""
+"There are two sets of parameters allowing for different performance settings "
+"depending on the use case. During indexing operations triggered by database "
+"modifications, the following ones are used: <itemizedlist> <listitem> "
+"<para><literal>hibernate.search.[default|&lt;indexname&gt;].transaction."
+"merge_factor</literal></para> </listitem> <listitem> "
+"<para><literal>hibernate.search.[default|&lt;indexname&gt;].transaction."
+"max_merge_docs</literal></para> </listitem> <listitem> "
+"<para><literal>hibernate.search.[default|&lt;indexname&gt;].transaction."
+"max_buffered_docs</literal></para> </listitem> </itemizedlist>When indexing "
+"occurs via <literal>FullTextSession.index()</literal> (see <xref linkend="
+"\"Hibernate_Search-Batch_Index\"/>), the following properties are used:"
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:495
+#, no-c-format
+msgid "hibernate.search.[default|&lt;indexname&gt;].batch.merge_factor"
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:499
+#, no-c-format
+msgid "hibernate.search.[default|&lt;indexname&gt;].batch.max_merge_docs"
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:503
+#, no-c-format
+msgid "hibernate.search.[default|&lt;indexname&gt;].batch.max_buffered_docs"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:507
+#, no-c-format
+msgid ""
+"Unless the corresponding <literal>.batch</literal> property is explicitly "
+"set, the value will default to the <literal>.transaction</literal> property."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:511
+#, no-c-format
+msgid ""
+"For more information about Lucene indexing performances, please refer to the "
+"Lucene documentation."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:515
+#, no-c-format
+msgid ""
+"List of indexing performance properties in the namespace of hibernate.search."
+"[default|&lt;indexname&gt;]"
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:530
+#, no-c-format
+msgid "Default Value"
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:536
+#, no-c-format
+msgid "transaction.merge_factor"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:538 Configuration.xml:578
+#, no-c-format
+msgid "Controls segment merge frequency and size."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:539 Configuration.xml:579
+#, no-c-format
+msgid ""
+"Determines how often segment indices are merged when insertion occurs. With "
+"smaller values, less RAM is used while indexing, and searches on unoptimized "
+"indices are faster, but indexing speed is slower. With larger values, more "
+"RAM is used during indexing, and while searches on unoptimized indices are "
+"slower, indexing is faster. Thus larger values (&gt; 10) are best for batch "
+"index creation, and smaller values (&lt; 10) for indices that are "
+"interactively maintained. The value must no be lower than 2."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:547 Configuration.xml:557 Configuration.xml:569
+#, no-c-format
+msgid ""
+"Used by Hibernate Search during index update operations as part of database "
+"modifications."
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:550 Configuration.xml:572 Configuration.xml:590
+#: Configuration.xml:611
+#, no-c-format
+msgid "<entry>10</entry>"
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:554
+#, no-c-format
+msgid "transaction.max_merge_docs"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:556 Configuration.xml:596
+#, no-c-format
+msgid "Defines the largest number of documents allowed in a segment."
+msgstr ""
+
+#. Tag: entry
+#: Configuration.xml:560 Configuration.xml:600
+#, no-c-format
+msgid "Unlimited (Integer.MAX_VALUE)"
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:564
+#, no-c-format
+msgid "transaction. max_buffered_docs"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:567 Configuration.xml:606
+#, no-c-format
+msgid ""
+"Controls the amount of documents buffered in memory during indexing. The "
+"bigger the more RAM is consumed."
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:576
+#, no-c-format
+msgid "batch.merge_factor"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:587 Configuration.xml:597 Configuration.xml:608
+#, no-c-format
+msgid "Used during indexing via <literal>FullTextSession.index()</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:594
+#, no-c-format
+msgid "batch.max_merge_docs"
+msgstr ""
+
+#. Tag: literal
+#: Configuration.xml:604
+#, no-c-format
+msgid "batch.max_buffered_docs"
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Feedback.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Feedback.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Feedback.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,35 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Feedback.xml:7
+#, no-c-format
+msgid "Feedback"
+msgstr ""
+
+#. Tag: para
+#: Feedback.xml:8
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Getting_Started.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Getting_Started.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Getting_Started.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,607 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Getting_Started.xml:6
+#, no-c-format
+msgid "Getting Started"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:9
+#, no-c-format
+msgid ""
+"Welcome to Hibernate Search! The following chapter will guide you through "
+"the initial steps required to integrate Hibernate Search into an existing "
+"Hibernate enabled application. In case you are a Hibernate first timer we "
+"recommend you start <ulink url=\"http://hibernate.org/152.html\">here</"
+"ulink>."
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:15
+#, no-c-format
+msgid "System Requirements"
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:18
+#, no-c-format
+msgid "System requirements"
+msgstr ""
+
+#. Tag: entry
+#: Getting_Started.xml:23
+#, no-c-format
+msgid "Java Runtime"
+msgstr ""
+
+#. Tag: entry
+#: Getting_Started.xml:25
+#, no-c-format
+msgid ""
+"A JDK or JRE version <emphasis>5</emphasis> or greater. You can download a "
+"Java Runtime for Windows/Linux/Solaris <ulink url=\"http://java.sun.com/"
+"javase/downloads/\"> here </ulink>."
+msgstr ""
+
+#. Tag: entry
+#: Getting_Started.xml:31
+#, no-c-format
+msgid "Hibernate Search"
+msgstr ""
+
+#. Tag: entry
+#: Getting_Started.xml:33
+#, no-c-format
+msgid ""
+"<literal>hibernate-search.jar</literal> and all dependencies from the "
+"<literal>lib</literal> directory of the Hibernate Search distribution, "
+"especially lucene."
+msgstr ""
+
+#. Tag: entry
+#: Getting_Started.xml:39
+#, no-c-format
+msgid "Hibernate Core"
+msgstr ""
+
+#. Tag: entry
+#: Getting_Started.xml:41
+#, no-c-format
+msgid ""
+"These instructions have been tested against Hibernate 3.2.x. Next to the "
+"main <literal>hibernate3.jar</literal> you will need all required libraries "
+"from the <literal>lib</literal> directory of the distribution. Refer to "
+"<literal>README.txt</literal> in the <literal>lib</literal> directory of the "
+"distribution to determine the minimum runtime requirements."
+msgstr ""
+
+#. Tag: entry
+#: Getting_Started.xml:50
+#, no-c-format
+msgid "Hibernate Annotations"
+msgstr ""
+
+#. Tag: entry
+#: Getting_Started.xml:52
+#, no-c-format
+msgid ""
+"Although Hibernate Search can be used without Hibernate Annotations the "
+"following instructions use them for ease of use. The tutorial is tested "
+"against version 3.3.x of Hibernate Annotations."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:60
+#, no-c-format
+msgid ""
+"You can download all dependencies from the Hibernate <ulink url=\"http://www."
+"hibernate.org/6.html\">download site</ulink>. You can also verify the "
+"dependency versions against the <ulink url=\"http://www.hibernate.org/6."
+"html#A3\">Hibernate Compatibility Matrix</ulink>."
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:65
+#, no-c-format
+msgid "Maven"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:67
+#, no-c-format
+msgid ""
+"Instead of managing all dependencies yourself, maven users are able to use "
+"the <ulink url=\"http://repository.jboss.com/maven2\">JBoss maven "
+"repository</ulink>. Just add the JBoss repository url to the "
+"<emphasis>repositories</emphasis> section of your <filename>pom.xml</"
+"filename> or <filename>settings.xml</filename>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Getting_Started.xml:73
+#, no-c-format
+msgid ""
+"&lt;repository&gt;\n"
+"                           &lt;id&gt;repository.jboss.org&lt;/id&gt;\n"
+"                        &lt;name&gt;JBoss Maven Repository&lt;/name&gt;\n"
+"                        &lt;url&gt;http://repository.jboss.org/maven2&lt;/"
+"url&gt;\n"
+"                        &lt;layout&gt;default&lt;/layout&gt;\n"
+"                        &lt;/repository&gt;"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:75
+#, no-c-format
+msgid "Then add the following dependencies to your pom.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Getting_Started.xml:77
+#, no-c-format
+msgid ""
+"&lt;dependency&gt;\n"
+"                        &lt;groupId&gt;org.hibernate&lt;/groupId&gt;\n"
+"                        &lt;artifactId&gt;hibernate-search&lt;/"
+"artifactId&gt;\n"
+"                        &lt;version&gt;3.0.0.ga&lt;/version&gt;\n"
+"                        &lt;/dependency&gt;\n"
+"                        &lt;dependency&gt;\n"
+"                        &lt;groupId&gt;org.hibernate&lt;/groupId&gt;\n"
+"                        &lt;artifactId&gt;hibernate-annotations&lt;/"
+"artifactId&gt;\n"
+"                        &lt;version&gt;3.3.0.ga&lt;/version&gt;\n"
+"                        &lt;/dependency&gt;\n"
+"                        &lt;dependency&gt;\n"
+"                        &lt;groupId&gt;org.hibernate&lt;/groupId&gt;\n"
+"                        &lt;artifactId&gt;hibernate-entitymanager&lt;/"
+"artifactId&gt;\n"
+"                        &lt;version&gt;3.3.1.ga&lt;/version&gt;\n"
+"                        &lt;/dependency&gt;"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:79
+#, no-c-format
+msgid ""
+"Not all three dependencies are required. <emphasis>hibernate-search</"
+"emphasis> alone contains everything needed to use Hibernate Search. "
+"<emphasis>hibernate-annotations</emphasis> is only needed if you use non-"
+"Hibernate Search annotations, which are used in the examples of this "
+"tutorial. Note that <emphasis>hibernate-entitymanager</emphasis> is only "
+"required if you use Hibernate Search in conjunction with JPA."
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:87
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:89
+#, no-c-format
+msgid ""
+"Once all required dependencies have been downloaded and added to your "
+"application, you will need to add some properties to your hibernate "
+"configuration file. If you are using Hibernate directly this can be done in "
+"<literal>hibernate.properties</literal> or <literal>hibernate.cfg.xml</"
+"literal>. If you are using Hibernate via JPA you can also add the properties "
+"to <literal>persistence.xml</literal>. The default properties are suitable "
+"for the standard use."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:92
+#, no-c-format
+msgid ""
+"Apache Lucene has a notion of <literal>Directory</literal> to store the "
+"index files. Hibernate Search handles the initialization and configuration "
+"of a Lucene <literal>Directory</literal> instance via a "
+"<literal>DirectoryProvider</literal>. In this tutorial we will use a "
+"subclass of <literal>DirectoryProvider</literal> called "
+"<classname>FSDirectoryProvider</classname>. This will give us the ability to "
+"physically inspect the Lucene indexes created by Hibernate Search (e.g. via "
+"<ulink url=\"http://www.getopt.org/luke/\">Luke</ulink>). Once you have a "
+"working configuration you can start experimenting with other directory "
+"providers (see <xref linkend=\"Hibernate_Search-Configuration-Directory\"/>)."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:103
+#, no-c-format
+msgid ""
+"Lets assume that your application contains the Hibernate managed class "
+"<classname>example.Book</classname> and you now want to add free text search "
+"capabilities to your application in order to search body and summary of the "
+"books contained in your database."
+msgstr ""
+
+#. Tag: programlisting
+#: Getting_Started.xml:108
+#, no-c-format
+msgid ""
+"package example.Book\n"
+"                        ...\n"
+"                        @Entity\n"
+"                        public class Book {\n"
+"                        \n"
+"                        @Id\n"
+"                        private Integer id; \n"
+"                        private String body;  \n"
+"                        private String summary; \n"
+"                        @ManyToMany private Set&lt;Author&gt; authors = new "
+"HashSet&lt;Author&gt;();\n"
+"                        @ManyToOne private Author mainAuthor;\n"
+"                        private Date publicationDate;\n"
+"                        \n"
+"                        public Book() {\n"
+"                        } \n"
+"                        \n"
+"                        // standard getters/setters follow here\n"
+"                        ..."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:110
+#, no-c-format
+msgid ""
+"First you need to tell Hibernate Search which <classname>DirectoryProvider</"
+"classname> to use. This can be achieved by setting the <literal>hibernate."
+"search.default.directory_provider</literal> property. You also have to "
+"specify the default root directory for all indexes via <literal>hibernate."
+"search.default.indexBase</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Getting_Started.xml:116
+#, no-c-format
+msgid ""
+"...\n"
+"                        # the default directory provider\n"
+"                        hibernate.search.default.directory_provider = org."
+"hibernate.search.store.FSDirectoryProvider\n"
+"                        \n"
+"                        # the default base directory for the indecies\n"
+"                        hibernate.search.default.indexBase = /var/lucene/"
+"indexes    \n"
+"                        ..."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:118
+#, no-c-format
+msgid ""
+"Now add three annotations to the <classname>Book</classname> class. The "
+"first annotation <literal>@Indexed</literal> marks <classname>Book</"
+"classname> as indexable. By design Hibernate Search needs to store an "
+"untokenized id in the index to ensure index unicity for a given entity. "
+"<literal>@DocumentId</literal> marks the property to use for this purpose. "
+"Most, if not all of the time, the property is the database primary key. "
+"Finally you will need to index the fields you wish to make searchable. In "
+"our example these fields are <literal>body</literal> and <literal>summary</"
+"literal>. Both properties get annotated with <literal>@Field</literal>. The "
+"property <literal>index=Index.TOKENIZED</literal> will ensure that the text "
+"will be tokenized using the default Lucene analyzer whereas "
+"<literal>store=Store.NO</literal> ensures that the actual data will not be "
+"stored in the index. Usually, tokenizing means chunking a sentence into "
+"individual words (and potentially excluding common words like <literal>a</"
+"literal>, <literal>the </literal>etc)."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:135
+#, no-c-format
+msgid ""
+"These settings are sufficient for an initial test. For more details on "
+"entity mapping refer to <xref linkend=\"Hibernate_Search-Mapping-Entity\"/>. "
+"In case you want to store and retrieve the indexed data in order to avoid "
+"database roundtrips, refer to projections in"
+msgstr ""
+
+#. Tag: programlisting
+#: Getting_Started.xml:140
+#, no-c-format
+msgid ""
+"package example.Book\n"
+"                        ...\n"
+"                        @Entity\n"
+"                        <emphasis role=\"bold\">@Indexed</emphasis>\n"
+"                        public class Book {\n"
+"                        \n"
+"                        @Id\n"
+"                        <emphasis role=\"bold\">@DocumentId</emphasis>\n"
+"                        private Integer id;\n"
+"                        \n"
+"                        <emphasis role=\"bold\">@Field(index=Index."
+"TOKENIZED, store=Store.NO)</emphasis>\n"
+"                        private String body;\n"
+"                        \n"
+"                        <emphasis role=\"bold\">@Field(index=Index."
+"TOKENIZED, store=Store.NO)</emphasis>\n"
+"                        private String summary; \n"
+"                        @ManyToMany private Set&lt;Author&gt; authors = new "
+"HashSet&lt;Author&gt;();\n"
+"                        @ManyToOne private Author mainAuthor;\n"
+"                        private Date publicationDate;\n"
+"                        \n"
+"                        public Book() {\n"
+"                        } \n"
+"                        \n"
+"                        // standard getters/setters follow here\n"
+"                        ..."
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:144
+#, no-c-format
+msgid "Indexing"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:146
+#, no-c-format
+msgid ""
+"Hibernate Search will index every entity persisted, updated or removed "
+"through Hibernate core transparently for the application. However, the data "
+"already present in your database needs to be indexed once to populate the "
+"Lucene index. Once you have added the above properties and annotations it is "
+"time to trigger an initial batch index of your books. You can achieve this "
+"by adding one of the following code examples to your code (see also <xref "
+"linkend=\"Hibernate_Search-Batch_Index\"/>):"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:154 Getting_Started.xml:176
+#, no-c-format
+msgid "Example using Hibernate Session:"
+msgstr ""
+
+#. Tag: programlisting
+#: Getting_Started.xml:156
+#, no-c-format
+msgid ""
+"FullTextSession fullTextSession = Search.createFullTextSession(session);\n"
+"                        Transaction tx = fullTextSession.beginTransaction"
+"();\n"
+"                        List books = session.createQuery(\"from Book as book"
+"\").list();\n"
+"                        for (Book book : books) {\n"
+"                        fullTextSession.index(book);\n"
+"                        }\n"
+"                        tx.commit(); //index are written at commit time"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:158 Getting_Started.xml:180
+#, no-c-format
+msgid "Example using JPA:"
+msgstr ""
+
+#. Tag: programlisting
+#: Getting_Started.xml:160
+#, no-c-format
+msgid ""
+"EntityManager em = entityManagerFactory.createEntityManager();\n"
+"                        FullTextEntityManager fullTextEntityManager = Search."
+"createFullTextEntityManager(em);\n"
+"                        List books = em.createQuery(\"select book from Book "
+"as book\").getResultList();\n"
+"                        for (Book book : books) {\n"
+"                        fullTextEntityManager.index(book);\n"
+"                        }"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:162
+#, no-c-format
+msgid ""
+"After executing the above code, you should be able to see a Lucene index "
+"under <literal>/var/lucene/indexes/example.Book</literal>. Go ahead an "
+"inspect this index. It will help you to understand how Hibernate Search "
+"works."
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:169
+#, no-c-format
+msgid "Searching"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:171
+#, no-c-format
+msgid ""
+"Now it is time to execute a first search. The following code will prepare a "
+"query against the fields <literal>summary</literal> and <literal>body</"
+"literal>, execute it and return a list of <classname>Book</classname>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Getting_Started.xml:178
+#, no-c-format
+msgid ""
+"FullTextSession fullTextSession = Search.createFullTextSession(session);\n"
+"                        \n"
+"                        Transaction tx = fullTextSession.beginTransaction"
+"();\n"
+"                        \n"
+"                        MultiFieldQueryParser parser = new "
+"MultiFieldQueryParser( new String[]{\"summary\", \"body\"}, \n"
+"                        new StandardAnalyzer());\n"
+"                        Query query = parser.parse( \"Java rocks!\" );\n"
+"                        org.hibernate.Query hibQuery = fullTextSession."
+"createFullTextQuery( query, Book.class );\n"
+"                        List result = hibQuery.list();\n"
+"                        \n"
+"                        tx.commit();\n"
+"                        session.close();"
+msgstr ""
+
+#. Tag: programlisting
+#: Getting_Started.xml:182
+#, no-c-format
+msgid ""
+"EntityManager em = entityManagerFactory.createEntityManager();\n"
+"                        \n"
+"                        FullTextEntityManager fullTextEntityManager = \n"
+"                        org.hibernate.hibernate.search.jpa.Search."
+"createFullTextEntityManager(em);\n"
+"                        MultiFieldQueryParser parser = new "
+"MultiFieldQueryParser( new String[]{\"summary\", \"body\"}, \n"
+"                        new StandardAnalyzer());\n"
+"                        Query query = parser.parse( \"Java rocks!\" );\n"
+"                        org.hibernate.Query hibQuery = fullTextEntityManager."
+"createFullTextQuery( query, Book.class );\n"
+"                        List result = hibQuery.list();"
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:186
+#, no-c-format
+msgid "Analyzer"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:188
+#, no-c-format
+msgid ""
+"Assume that one of your indexed book entities contains the text \"Java rocks"
+"\" and you want to get hits for all of the following queries: \"rock\", "
+"\"rocks\", \"rocked\" and \"rocking\". In Lucene this can be achieved by "
+"choosing an analyzer class which applies word stemming during the indexing "
+"process. Hibernate Search offers several ways to configure the analyzer to "
+"use (see <xref linkend=\"Hibernate_Search-Entity-Analyzer\"/>):"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:197
+#, no-c-format
+msgid ""
+"Setting the <literal>hibernate.search.analyzer</literal> property in the "
+"configuration file. The specified class will then be the default analyzer."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:203
+#, no-c-format
+msgid "Setting the <literal>Analyzer</literal> annotation at the entity level."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:208
+#, no-c-format
+msgid "Setting the <literal>Analyzer</literal> annotation at the field level."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:213
+#, no-c-format
+msgid ""
+"The following example uses the entity level annotation to apply a English "
+"language analyzer which would help you to achieve your goal. The class "
+"<classname>EnglishAnalyzer</classname> is a custom class using the Snowball "
+"English Stemmer from the <ulink url=\"http://lucene.apache.org/java/docs/"
+"lucene-sandbox/\">Lucene Sandbox</ulink>."
+msgstr ""
+
+#. Tag: programlisting
+#: Getting_Started.xml:220
+#, no-c-format
+msgid ""
+"package example.Book\n"
+"                        ...\n"
+"                        @Entity\n"
+"                        @Indexed\n"
+"                        <emphasis role=\"bold\">@Analyzer(impl = example."
+"EnglishAnalyzer.class)</emphasis>\n"
+"                        public class Book {\n"
+"                        \n"
+"                        @Id\n"
+"                        @DocumentId\n"
+"                        private Integer id;\n"
+"                        \n"
+"                        @Field(index=Index.TOKENIZED, store=Store.NO)\n"
+"                        private String body;\n"
+"                        \n"
+"                        @Field(index=Index.TOKENIZED, store=Store.NO)\n"
+"                        private String summary; \n"
+"                        @ManyToMany private Set&lt;Author&gt; authors = new "
+"HashSet&lt;Author&gt;();\n"
+"                        @ManyToOne private Author mainAuthor;\n"
+"                        private Date publicationDate;\n"
+"                        \n"
+"                        public Book() {\n"
+"                        } \n"
+"                        \n"
+"                        // standard getters/setters follow here\n"
+"                        ... \n"
+"                        }\n"
+"                        \n"
+"                        public class EnglishAnalyzer extends Analyzer {\n"
+"                        /**\n"
+"                        * {@inheritDoc}\n"
+"                        */\n"
+"                        @Override\n"
+"                        public TokenStream tokenStream(String fieldName, "
+"Reader reader) {\n"
+"                        TokenStream result = new StandardTokenizer(reader);\n"
+"                        result = new StandardFilter(result);\n"
+"                        result = new LowerCaseFilter(result);\n"
+"                        result = new SnowballFilter(result, name);\n"
+"                        return result;\n"
+"                        }\n"
+"                        }"
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:224
+#, no-c-format
+msgid "What's next"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:226
+#, no-c-format
+msgid ""
+"The above paragraphs hopefully helped you getting started with Hibernate "
+"Search. You should by now have a file system based index and be able to "
+"search and retrieve a list of managed objects via Hibernate Search. The next "
+"step is to get more familiar with the overall architecture (<xref linkend="
+"\"Hibernate_Search-Architecture\"/>) and explore the basic features in more "
+"detail."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:233
+#, no-c-format
+msgid ""
+"Two topics which where only briefly touched in this tutorial were analyzer "
+"configuration (<xref linkend=\"Hibernate_Search-Entity-Analyzer\"/>) and "
+"field bridges (<xref linkend=\"Hibernate_Search-Mapping-Bridge\"/>), both "
+"important features required for more fine-grained indexing."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:238
+#, no-c-format
+msgid ""
+"More advanced topics cover clustering (<xref linkend=\"Hibernate_Search-"
+"Configuration-JMS_Backend\"/>) and large indexes handling (<xref linkend="
+"\"Hibernate_Search-Configuration-Index_Sharding\"/>)."
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Hibernate_Search_Reference_Guide_CP05_FP01.pot
===================================================================

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Introduction.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Introduction.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Introduction.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,45 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Introduction.xml:6
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:8
+#, no-c-format
+msgid ""
+"Full text search engines like <productname>Apache Lucene</productname> are "
+"powerful technologies that add efficient free text search capabilities to "
+"applications. However, they suffer several mismatches when dealing with "
+"object domain models. Amongst other things, indexes have to be kept up to "
+"date and mismatches between index structure and domain model as well as "
+"query mismatches need to be avoided."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:15
+#, no-c-format
+msgid ""
+"Hibernate Search indexes your domain model with the help of a few "
+"annotations, takes care of database/index synchronization and brings back "
+"regular managed objects from free text queries. To achieve this Hibernate "
+"Search combines the power of <ulink url=\"http://www.hibernate.org"
+"\">Hibernate</ulink> and <ulink url=\"http://lucene.apache.org\">Apache "
+"Lucene</ulink>."
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Lucene_Native.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Lucene_Native.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Lucene_Native.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,162 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Lucene_Native.xml:6
+#, no-c-format
+msgid "Accessing Lucene natively"
+msgstr ""
+
+#. Tag: title
+#: Lucene_Native.xml:9
+#, no-c-format
+msgid "SearchFactory"
+msgstr ""
+
+#. Tag: para
+#: Lucene_Native.xml:11
+#, no-c-format
+msgid ""
+"The <classname>SearchFactory</classname> object keeps track of the "
+"underlying Lucene resources for Hibernate Search, it's also a convenient way "
+"to access Lucene natively. The <classname>SearchFactory</classname> can be "
+"accessed from a <classname>FullTextSession</classname>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Lucene_Native.xml:16
+#, no-c-format
+msgid ""
+"FullTextSession fullTextSession = Search.createFullTextSession"
+"(regularSession);\n"
+"                        SearchFactory searchFactory = fullTextSession."
+"getSearchFactory();"
+msgstr ""
+
+#. Tag: title
+#: Lucene_Native.xml:20
+#, no-c-format
+msgid "Accessing a Lucene Directory"
+msgstr ""
+
+#. Tag: para
+#: Lucene_Native.xml:22
+#, no-c-format
+msgid ""
+"You can always access the Lucene directories through plain Lucene, the "
+"Directory structure is in no way different with or without Hibernate Search. "
+"However there are some more convenient ways to access a given Directory. The "
+"<classname>SearchFactory</classname> keeps track of the "
+"<classname>DirectoryProvider</classname>s per indexed class. One directory "
+"provider can be shared amongst several indexed classes if the classes share "
+"the same underlying index directory. While usually not the case, a given "
+"entity can have several <classname>DirectoryProvider</classname>s is the "
+"index is sharded (see <xref linkend=\"Hibernate_Search-Configuration-"
+"Index_Sharding\"/>)."
+msgstr ""
+
+#. Tag: programlisting
+#: Lucene_Native.xml:32
+#, no-c-format
+msgid ""
+"DirectoryProvider[] provider = searchFactory.getDirectoryProviders(Order."
+"class);\n"
+"                        org.apache.lucene.store.Directory directory = "
+"provider[0].getDirectory();"
+msgstr ""
+
+#. Tag: para
+#: Lucene_Native.xml:34
+#, no-c-format
+msgid ""
+"In this example, directory points to the lucene index storing "
+"<classname>Order</classname>s information. Note that the obtained Lucene "
+"directory must not be closed (this is Hibernate Search responsibility)."
+msgstr ""
+
+#. Tag: title
+#: Lucene_Native.xml:41
+#, no-c-format
+msgid "Using an IndexReader"
+msgstr ""
+
+#. Tag: para
+#: Lucene_Native.xml:43
+#, no-c-format
+msgid ""
+"Queries in Lucene are executed on an <literal>IndexReader</literal>. "
+"Hibernate Search caches such index readers to maximize performances. Your "
+"code can access such cached / shared resources. You will just have to follow "
+"some \"good citizen\" rules."
+msgstr ""
+
+#. Tag: programlisting
+#: Lucene_Native.xml:48
+#, no-c-format
+msgid ""
+"DirectoryProvider orderProvider = searchFactory.getDirectoryProviders(Order."
+"class)[0];\n"
+"                        DirectoryProvider clientProvider = searchFactory."
+"getDirectoryProviders(Client.class)[0];\n"
+"                        \n"
+"                        ReaderProvider readerProvider = searchFactory."
+"getReaderProvider();\n"
+"                        IndexReader reader = readerProvider.openReader"
+"(orderProvider, clientProvider);\n"
+"                        \n"
+"                        try {\n"
+"                        //do read-only operations on the reader\n"
+"                        }\n"
+"                        finally {\n"
+"                        readerProvider.closeReader(reader);\n"
+"                        }"
+msgstr ""
+
+#. Tag: para
+#: Lucene_Native.xml:50
+#, no-c-format
+msgid ""
+"The ReaderProvider (described in <xref linkend=\"Hibernate_Search-"
+"Architecture-Reader_Strategy\"/>), will open an IndexReader on top of the "
+"index(es) referenced by the directory providers. This IndexReader being "
+"shared amongst several clients, you must adhere to the following rules:"
+msgstr ""
+
+#. Tag: para
+#: Lucene_Native.xml:57
+#, no-c-format
+msgid ""
+"Never call indexReader.close(), but always call readerProvider.closeReader"
+"(reader); (a finally block is the best area)."
+msgstr ""
+
+#. Tag: para
+#: Lucene_Native.xml:63
+#, no-c-format
+msgid ""
+"This indexReader must not be used for modification operations (especially "
+"delete), if you want to use an read/write index reader, open one from the "
+"Lucene Directory object."
+msgstr ""
+
+#. Tag: para
+#: Lucene_Native.xml:69
+#, no-c-format
+msgid ""
+"Aside from those rules, you can use the IndexReader freely, especially to do "
+"native queries. Using the shared <literal>IndexReader</literal>s will make "
+"most queries more efficient."
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Mapping.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Mapping.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Mapping.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,1285 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mapping.xml:6
+#, no-c-format
+msgid "Mapping Entities to the Index Structure"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:8
+#, no-c-format
+msgid ""
+"All the metadata information needed to index entities is described through "
+"some Java annotations. There is no need for xml mapping files nor a list of "
+"indexed entities. The list is discovered at startup by scanning the "
+"Hibernate mapped entities."
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:14
+#, no-c-format
+msgid "Mapping an entity"
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:17
+#, no-c-format
+msgid "Basic mapping"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:19
+#, no-c-format
+msgid ""
+"First, we must declare a persistent class as indexable. This is done by "
+"annotating the class with <literal>@Indexed</literal> (all entities not "
+"annotated with <literal>@Indexed</literal> will be ignored by the indexing "
+"process):"
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:24
+#, no-c-format
+msgid ""
+"@Entity\n"
+"                                <emphasis role=\"bold\">@Indexed(index="
+"\"indexes/essays\")</emphasis>\n"
+"                                public class Essay {\n"
+"                                ...\n"
+"                                }"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:26
+#, no-c-format
+msgid ""
+"The <literal>index</literal> attribute tells Hibernate what the Lucene "
+"directory name is (usually a directory on your file system). If you wish to "
+"define a base directory for all Lucene indexes, you can use the "
+"<literal>hibernate.search.default.indexBase</literal> property in your "
+"configuration file. Each entity instance will be represented by a Lucene "
+"<classname>Document</classname> inside the given index (aka Directory)."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:34
+#, no-c-format
+msgid ""
+"For each property (or attribute) of your entity, you have the ability to "
+"describe how it will be indexed. The default (i.e. no annotation) means that "
+"the property is completely ignored by the indexing process. <literal>@Field</"
+"literal> does declare a property as indexed. When indexing an element to a "
+"Lucene document you can specify how it is indexed:"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:43
+#, no-c-format
+msgid ""
+"<literal>name</literal> : describe under which name, the property should be "
+"stored in the Lucene Document. The default value is the property name "
+"(following the JavaBeans convention)"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:49
+#, no-c-format
+msgid ""
+"<literal>store</literal> : describe whether or not the property is stored in "
+"the Lucene index. You can store the value <literal>Store.YES</literal> "
+"(consuming more space in the index but allowing projection, see <xref "
+"linkend=\"Hibernate_Search-Query-Projections\"/> for more information), "
+"store it in a compressed way <literal>Store.COMPRESS</literal> (this does "
+"consume more CPU), or avoid any storage <literal>Store.NO</literal> (this is "
+"the default value). When a property is stored, you can retrieve it from the "
+"Lucene Document (note that this is not related to whether the element is "
+"indexed or not)."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:62
+#, no-c-format
+msgid ""
+"index: describe how the element is indexed (i.e. the process used to index "
+"the property and the type of information store). The different values are "
+"<literal>Index.NO</literal> (no indexing, i.e. cannot be found by a query), "
+"<literal>Index.TOKENIZED</literal> (use an analyzer to process the "
+"property), <literal>Index.UN_TOKENISED</literal> (no analyzer pre-"
+"processing), <literal>Index.NO_NORM</literal> (do not store the "
+"normalization data). The default value is <literal>TOKENIZED</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:73
+#, no-c-format
+msgid "These attributes are part of the <literal>@Field</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:76
+#, no-c-format
+msgid ""
+"Whether or not you want to store the data depends on how you wish to use the "
+"index query result. For a regular Hibernate Search usage, storing is not "
+"necessary. However you might want to store some fields to subsequently "
+"project them (see <xref linkend=\"Hibernate_Search-Query-Projections\"/> for "
+"more information)."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:82
+#, no-c-format
+msgid ""
+"Whether or not you want to tokenize a property depends on whether you wish "
+"to search the element as is, or by the words it contains. It make sense to "
+"tokenize a text field, but it does not to do it for a date field (or an id "
+"field). Note that fields used for sorting must not be tokenized."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:88
+#, no-c-format
+msgid ""
+"Finally, the id property of an entity is a special property used by "
+"Hibernate Search to ensure index unicity of a given entity. By design, an id "
+"has to be stored and must not be tokenized. To mark a property as index id, "
+"use the <literal>@DocumentId</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:94
+#, no-c-format
+msgid ""
+"@Entity\n"
+"                                @Indexed(index=\"indexes/essays\")\n"
+"                                public class Essay {\n"
+"                                ...\n"
+"                                \n"
+"                                @Id\n"
+"                                <emphasis role=\"bold\">@DocumentId</"
+"emphasis>\n"
+"                                public Long getId() { return id; }\n"
+"                                \n"
+"                                <emphasis role=\"bold\">@Field(name="
+"\"Abstract\", index=Index.TOKENIZED, store=Store.YES)</emphasis>\n"
+"                                public String getSummary() { return "
+"summary; }\n"
+"                                \n"
+"                                @Lob\n"
+"                                <emphasis role=\"bold\">@Field(index=Index."
+"TOKENIZED)</emphasis>\n"
+"                                public String getText() { return text; }\n"
+"                                }"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:96
+#, no-c-format
+msgid ""
+"These annotations define an index with three fields: <literal>id</literal> , "
+"<literal>Abstract</literal> and <literal>text</literal> . Note that by "
+"default the field name is decapitalized, following the JavaBean "
+"specification."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:102
+#, no-c-format
+msgid ""
+"You <emphasis>must</emphasis> specify <literal>@DocumentId</literal> on the "
+"identifier property of your entity class."
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:109
+#, no-c-format
+msgid "Mapping properties multiple times"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:111
+#, no-c-format
+msgid ""
+"It is sometimes needed to map a property multiple times per index, with "
+"slightly different indexing strategies. Especially, sorting a query by field "
+"requires the field to be <literal>UN_TOKENIZED</literal>. If one want to "
+"search by words in this property and still sort it, one need to index it "
+"twice, once tokenized, once untokenized. @Fields allows to achieve this goal."
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:118
+#, no-c-format
+msgid ""
+"@Entity\n"
+"                                @Indexed(index = \"Book\" )\n"
+"                                public class Book {\n"
+"                                @Fields( {\n"
+"                                @Field(index = Index.TOKENIZED),\n"
+"                                @Field(name = \"summary_forSort\", index = "
+"Index.UN_TOKENIZED, store = Store.YES)\n"
+"                                } )\n"
+"                                public String getSummary() {\n"
+"                                return summary;\n"
+"                                }\n"
+"                                \n"
+"                                ...\n"
+"                                }"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:120
+#, no-c-format
+msgid ""
+"The field summary is indexed twice, once as <literal>summary</literal> in a "
+"tokenized way, and once as <literal>summary_forSort</literal> in an "
+"untokenized way. @Field supports 2 attributes useful when @Fields is used:"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:127
+#, no-c-format
+msgid ""
+"analyzer: defines a @Analyzer annotation per field rather than per property"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:132
+#, no-c-format
+msgid ""
+"bridge: defines a @FieldBridge annotation per field rather than per property"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:137
+#, no-c-format
+msgid "See below for more information about analyzers and field bridges."
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:142
+#, no-c-format
+msgid "Embedded and Associated Objects"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:144
+#, no-c-format
+msgid ""
+"Associated objects as well as embedded objects can be indexed as part of the "
+"root entity index. It is necessary if you expect to search a given entity "
+"based on properties of the associated object(s). In the following example, "
+"the use case is to return the places whose city is Atlanta (In the Lucene "
+"query parser language, it would translate into <code>address.city:Atlanta</"
+"code>)."
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:151
+#, no-c-format
+msgid ""
+"@Entity\n"
+"                                @Indexed\n"
+"                                public class Place {\n"
+"                                @Id\n"
+"                                @GeneratedValue\n"
+"                                @DocumentId\n"
+"                                private Long id;\n"
+"                                \n"
+"                                @Field( index = Index.TOKENIZED )\n"
+"                                private String name;\n"
+"                                \n"
+"                                @OneToOne( cascade = { CascadeType.PERSIST, "
+"CascadeType.REMOVE } )\n"
+"                                <emphasis role=\"bold\">@IndexedEmbedded</"
+"emphasis>\n"
+"                                private Address address;\n"
+"                                ....\n"
+"                                }\n"
+"                                \n"
+"                                @Entity\n"
+"                                @Indexed\n"
+"                                public class Address {\n"
+"                                @Id\n"
+"                                @GeneratedValue\n"
+"                                @DocumentId\n"
+"                                private Long id;\n"
+"                                \n"
+"                                @Field(index=Index.TOKENIZED)\n"
+"                                private String street;\n"
+"                                \n"
+"                                @Field(index=Index.TOKENIZED)\n"
+"                                private String city;\n"
+"                                \n"
+"                                <emphasis role=\"bold\">@ContainedIn</"
+"emphasis>\n"
+"                                @OneToMany(mappedBy=\"address\")\n"
+"                                private Set&lt;Place&gt; places;\n"
+"                                ...\n"
+"                                }"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:153
+#, no-c-format
+msgid ""
+"In this example, the place fields will be indexed in the <literal>Place</"
+"literal> index. The <literal>Place</literal> index documents will also "
+"contain the fields <literal>address.id</literal>, <literal>address.street</"
+"literal>, and <literal>address.city</literal> which you will be able to "
+"query. This is enabled by the <literal>@IndexedEmbedded</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:162
+#, no-c-format
+msgid ""
+"Be careful. Because the data is denormalized in the Lucene index when using "
+"the <classname>@IndexedEmbedded</classname> technique, Hibernate Search "
+"needs to be aware of any change in the Place object and any change in the "
+"Address object to keep the index up to date. To make sure the Place Lucene "
+"document is updated when it's Address changes, you need to mark the other "
+"side of the bidirectional relationship with <classname>@ContainedIn</"
+"classname>."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:172
+#, no-c-format
+msgid ""
+"<literal>@ContainedIn</literal> is only useful on associations pointing to "
+"entities as opposed to embedded (collection of) objects."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:176
+#, no-c-format
+msgid "Let's make our example a bit more complex:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:178
+#, no-c-format
+msgid ""
+"@Entity\n"
+"                                @Indexed\n"
+"                                public class Place {\n"
+"                                @Id\n"
+"                                @GeneratedValue\n"
+"                                @DocumentId\n"
+"                                private Long id;\n"
+"                                \n"
+"                                @Field( index = Index.TOKENIZED )\n"
+"                                private String name;\n"
+"                                \n"
+"                                @OneToOne( cascade = { CascadeType.PERSIST, "
+"CascadeType.REMOVE } )\n"
+"                                <emphasis role=\"bold\">@IndexedEmbedded</"
+"emphasis>\n"
+"                                private Address address;\n"
+"                                ....\n"
+"                                }\n"
+"                                \n"
+"                                @Entity\n"
+"                                @Indexed\n"
+"                                public class Address {\n"
+"                                @Id\n"
+"                                @GeneratedValue\n"
+"                                @DocumentId\n"
+"                                private Long id;\n"
+"                                \n"
+"                                @Field(index=Index.TOKENIZED)\n"
+"                                private String street;\n"
+"                                \n"
+"                                @Field(index=Index.TOKENIZED)\n"
+"                                private String city;\n"
+"                                \n"
+"                                <emphasis role=\"bold\">@IndexedEmbedded"
+"(depth = 1, prefix = \"ownedBy_\")</emphasis>\n"
+"                                private Owner ownedBy;\n"
+"                                \n"
+"                                <emphasis role=\"bold\">@ContainedIn</"
+"emphasis>\n"
+"                                @OneToMany(mappedBy=\"address\")\n"
+"                                private Set&lt;Place&gt; places;\n"
+"                                ...\n"
+"                                }\n"
+"                                \n"
+"                                @Embeddable\n"
+"                                public class Owner {\n"
+"                                @Field(index = Index.TOKENIZED)\n"
+"                                private String name;\n"
+"                                ...\n"
+"                                }"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:180
+#, no-c-format
+msgid ""
+"Any <literal>@*ToOne</literal> and <literal>@Embedded</literal> attribute "
+"can be annotated with <literal>@IndexedEmbedded</literal>. The attributes of "
+"the associated class will then be added to the main entity index. In the "
+"previous example, the index will contain the following fields"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:188
+#, no-c-format
+msgid "<para>id</para>"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:192
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:196
+#, no-c-format
+msgid "address.street"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:200
+#, no-c-format
+msgid "address.city"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:204
+#, no-c-format
+msgid "addess.ownedBy_name"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:208
+#, no-c-format
+msgid ""
+"The default prefix is <literal>propertyName.</literal>, following the "
+"traditional object navigation convention. You can override it using the "
+"<literal>prefix</literal> attribute as it is shown on the <literal>ownedBy</"
+"literal> property."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:213
+#, no-c-format
+msgid ""
+"<literal>depth</literal> is necessary when the object graph contains a "
+"cyclic dependency of classes (not instances). For example, if "
+"<classname>Owner</classname> points to <classname>Place</classname>. "
+"Hibernate Search will stop including Indexed embedded attributes after "
+"reaching the expected depth (or the object graph boundaries are reached). A "
+"class having a self reference is an example of cyclic dependency. In our "
+"example, because <literal>depth</literal> is set to 1, any "
+"<literal>@IndexedEmbedded</literal> attribute in Owner (if any) will be "
+"ignored."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:223
+#, no-c-format
+msgid ""
+"Such a feature (<literal>@IndexedEmbedded</literal>) is very useful to "
+"express queries referring to associated objects, such as:"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:229
+#, no-c-format
+msgid ""
+"Return places where name contains JBoss and where address city is Atlanta. "
+"In Lucene query this would be"
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:232
+#, no-c-format
+msgid "+name:jboss +address.city:atlanta"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:236
+#, no-c-format
+msgid ""
+"Return places where name contains JBoss and where owner's name contain Joe. "
+"In Lucene query this would be"
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:239
+#, no-c-format
+msgid "+name:jboss +address.orderBy_name:joe"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:243
+#, no-c-format
+msgid ""
+"In a way it mimics the relational join operation in a more efficient way (at "
+"the cost of data duplication). Remember that, out of the box, Lucene indexes "
+"have no notion of association, the join operation is simply non-existent. It "
+"might help to keep the relational model normalized while benefiting from the "
+"full text index speed and feature richness."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:251
+#, no-c-format
+msgid ""
+"An associated object can itself be (but don't have to) <literal>@Indexed</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:255
+#, no-c-format
+msgid ""
+"When @IndexedEmbedded points to an entity, the association has to be "
+"directional and the other side has to be annotated <literal>@ContainedIn</"
+"literal> (as see in the previous example). If not, Hibernate Search has no "
+"way to update the root index when the associated entity is updated (in our "
+"example, a <literal>Place</literal> index document has to be updated when "
+"the associated <classname>Address</classname> instance is updated."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:263
+#, no-c-format
+msgid ""
+"Sometimes, the object type annotated by <classname>@IndexedEmbedded</"
+"classname> is not the object type targeted by Hibernate and Hibernate Search "
+"especially when interface are used in lieu of their implementation. You can "
+"override the object type targeted by Hibernate Search using the "
+"<command>targetElement</command> parameter."
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:270
+#, no-c-format
+msgid ""
+"@Entity\n"
+"                                @Indexed\n"
+"                                public class Address {\n"
+"                                @Id\n"
+"                                @GeneratedValue\n"
+"                                @DocumentId\n"
+"                                private Long id;\n"
+"                                \n"
+"                                @Field(index= Index.TOKENIZED)\n"
+"                                private String street;\n"
+"                                \n"
+"                                @IndexedEmbedded(depth = 1, prefix = "
+"\"ownedBy_\", <emphasis role=\"bold\">targetElement = Owner.class</"
+"emphasis>)\n"
+"                                @Target(Owner.class)\n"
+"                                private Person ownedBy;\n"
+"                                \n"
+"                                \n"
+"                                ...\n"
+"                                }\n"
+"                                \n"
+"                                @Embeddable\n"
+"                                public class Owner implements Person { ... }"
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:274
+#, no-c-format
+msgid "Boost factor"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:276
+#, no-c-format
+msgid ""
+"Lucene has the notion of <emphasis>boost factor</emphasis> . It's a way to "
+"give more weight to a field or to an indexed element over an other during "
+"the indexation process. You can use <literal>@Boost</literal> at the field "
+"or the class level."
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:281
+#, no-c-format
+msgid ""
+"@Entity\n"
+"                                @Indexed(index=\"indexes/essays\")\n"
+"                                <emphasis role=\"bold\">@Boost(2)</"
+"emphasis>\n"
+"                                public class Essay {\n"
+"                                ...\n"
+"                                \n"
+"                                @Id\n"
+"                                @DocumentId\n"
+"                                public Long getId() { return id; }\n"
+"                                \n"
+"                                @Field(name=\"Abstract\", index=Index."
+"TOKENIZED, store=Store.YES)\n"
+"                                <emphasis role=\"bold\">@Boost(2.5f)</"
+"emphasis>\n"
+"                                public String getSummary() { return "
+"summary; }\n"
+"                                \n"
+"                                @Lob\n"
+"                                @Field(index=Index.TOKENIZED)\n"
+"                                public String getText() { return text; }\n"
+"                                }"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:283
+#, no-c-format
+msgid ""
+"In our example, Essay's probability to reach the top of the search list will "
+"be multiplied by 2 and the summary field will be 2.5 more important than the "
+"test field. Note that this explanation is actually wrong, but it is simple "
+"and close enough to the reality. Please check the Lucene documentation or "
+"the excellent <citetitle>Lucene In Action </citetitle> from Otis Gospodnetic "
+"and Erik Hatcher."
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:292
+#, no-c-format
+msgid "Analyzer"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:294
+#, no-c-format
+msgid ""
+"The default analyzer class used to index the elements is configurable "
+"through the <literal>hibernate.search.analyzer</literal> property. If none "
+"is defined, <classname>org.apache.lucene.analysis.standard.StandardAnalyzer</"
+"classname> is used as the default."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:300
+#, no-c-format
+msgid ""
+"You can also define the analyzer class per entity, per property and even per "
+"@Field (useful when multiple fields are indexed from a single property)."
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:304
+#, no-c-format
+msgid ""
+"@Entity\n"
+"                                @Indexed\n"
+"                                @Analyzer(impl = EntityAnalyzer.class)\n"
+"                                public class MyEntity {\n"
+"                                @Id\n"
+"                                @GeneratedValue\n"
+"                                @DocumentId\n"
+"                                private Integer id;\n"
+"                                \n"
+"                                @Field(index = Index.TOKENIZED)\n"
+"                                private String name;\n"
+"                                \n"
+"                                @Field(index = Index.TOKENIZED)\n"
+"                                @Analyzer(impl = PropertyAnalyzer.class)\n"
+"                                private String summary;\n"
+"                                \n"
+"                                @Field(index = Index.TOKENIZED, analyzer = "
+"@Analyzer(impl = FieldAnalyzer.class)\n"
+"                                private String body;\n"
+"                                \n"
+"                                ...\n"
+"                                }"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:306
+#, no-c-format
+msgid ""
+"In this example, <classname>EntityAnalyzer</classname> is used index all "
+"tokenized properties (e.g. <literal>name</literal>), except for "
+"<literal>summary</literal> and <literal>body</literal> which are indexed "
+"with <classname>PropertyAnalyzer</classname> and <classname>FieldAnalyzer</"
+"classname> respectively."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:313
+#, no-c-format
+msgid ""
+"Mixing different analyzers in the same entity is most of the time a bad "
+"practice. It makes query building more complex and results less predictable "
+"(for the novice), especially if you are using a QueryParser (which uses the "
+"same analyzer for the whole query). As a thumb rule, the same analyzer "
+"should be used for both the indexing and the query for a given field."
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:326
+#, no-c-format
+msgid "Property/Field Bridge"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:328
+#, no-c-format
+msgid ""
+"In Lucene all index fields have to be represented as Strings. For this "
+"reason all entity properties annotated with <literal>@Field</literal> have "
+"to be indexed in a String form. For most of your properties, Hibernate "
+"Search does the translation job for you thanks to a built-in set of bridges. "
+"In some cases, though you need a more fine grain control over the "
+"translation process."
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:336
+#, no-c-format
+msgid "Built-in bridges"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:338
+#, no-c-format
+msgid ""
+"<literal>Hibernate Search</literal> comes bundled with a set of built-in "
+"bridges between a Java property type and its full text representation."
+msgstr ""
+
+#. Tag: term
+#: Mapping.xml:344
+#, no-c-format
+msgid "null"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:347
+#, no-c-format
+msgid ""
+"null elements are not indexed. Lucene does not support null elements and "
+"this does not make much sense either."
+msgstr ""
+
+#. Tag: term
+#: Mapping.xml:353
+#, no-c-format
+msgid "java.lang.String"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:356
+#, no-c-format
+msgid "String are indexed as is"
+msgstr ""
+
+#. Tag: term
+#: Mapping.xml:361
+#, no-c-format
+msgid ""
+"short, Short, integer, Integer, long, Long, float, Float, double, Double, "
+"BigInteger, BigDecimal"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:365
+#, no-c-format
+msgid ""
+"Numbers are converted in their String representation. Note that numbers "
+"cannot be compared by Lucene (i.e. used in ranged queries) out of the box: "
+"they have to be padded"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:368
+#, no-c-format
+msgid ""
+"Using a Range query is debatable and has drawbacks, an alternative approach "
+"is to use a Filter query which will filter the result query to the "
+"appropriate range."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:372
+#, no-c-format
+msgid "Hibernate Search will support a padding mechanism"
+msgstr ""
+
+#. Tag: term
+#: Mapping.xml:378
+#, no-c-format
+msgid "java.util.Date"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:381
+#, no-c-format
+msgid ""
+"Dates are stored as yyyyMMddHHmmssSSS in GMT time (200611072203012 for Nov "
+"7th of 2006 4:03PM and 12ms EST). You shouldn't really bother with the "
+"internal format. What is important is that when using a DateRange Query, you "
+"should know that the dates have to be expressed in GMT time."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:387
+#, no-c-format
+msgid ""
+"Usually, storing the date up to the millisecond is not necessary. "
+"<literal>@DateBridge</literal> defines the appropriate resolution you are "
+"willing to store in the index ( <literal> <literal>@DateBridge"
+"(resolution=Resolution.DAY)</literal> </literal> ). The date pattern will "
+"then be truncated accordingly."
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:394
+#, no-c-format
+msgid ""
+"@Entity \n"
+"                                                        @Indexed\n"
+"                                                        public class Meeting "
+"{\n"
+"                                                        @Field(index=Index."
+"UN_TOKENIZED)\n"
+"                                                        <emphasis role=\"bold"
+"\">@DateBridge(resolution=Resolution.MINUTE)</emphasis>\n"
+"                                                        private Date date;\n"
+"                                                        ..."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:397
+#, no-c-format
+msgid ""
+"A Date whose resolution is lower than <literal>MILLISECOND</literal> cannot "
+"be a <literal>@DocumentId</literal>"
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:408
+#, no-c-format
+msgid "Custom Bridge"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:410
+#, no-c-format
+msgid ""
+"It can happen that the built-in bridges of Hibernate Search do not cover "
+"some of your property types, or that the String representation used is not "
+"what you expect. The following paragraphs several solutions for this problem."
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:416
+#, no-c-format
+msgid "StringBridge"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:418
+#, no-c-format
+msgid ""
+"The simplest custom solution is to give <productname>Hibernate Search </"
+"productname> an implementation of your expected <emphasis>object to String</"
+"emphasis> bridge. To do so you need to implements the <literal>org.hibernate."
+"search.bridge.StringBridge</literal> interface"
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:425
+#, no-c-format
+msgid ""
+"/**\n"
+"                                        * Padding Integer bridge.\n"
+"                                        * All numbers will be padded with 0 "
+"to match 5 digits\n"
+"                                        *\n"
+"                                        * @author Emmanuel Bernard\n"
+"                                        */\n"
+"                                        public class PaddedIntegerBridge "
+"implements <emphasis role=\"bold\">StringBridge</emphasis> {\n"
+"                                        \n"
+"                                        private int PADDING = 5;\n"
+"                                        \n"
+"                                        <emphasis role=\"bold\">public "
+"String objectToString(Object object)</emphasis> {\n"
+"                                        String rawInteger = ( (Integer) "
+"object ).toString();\n"
+"                                        if (rawInteger.length() &gt; "
+"PADDING) \n"
+"                                        throw new IllegalArgumentException"
+"( \"Try to pad on a number too big\" );\n"
+"                                        StringBuilder paddedInteger = new "
+"StringBuilder( );\n"
+"                                        for ( int padIndex = rawInteger."
+"length() ; padIndex &lt; PADDING ; padIndex++ ) {\n"
+"                                        paddedInteger.append('0');\n"
+"                                        }\n"
+"                                        return paddedInteger.append"
+"( rawInteger ).toString();\n"
+"                                        }\n"
+"                                        }"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:427
+#, no-c-format
+msgid ""
+"Then any property or field can use this bridge thanks to the "
+"<literal>@FieldBridge</literal> annotation"
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:430
+#, no-c-format
+msgid ""
+"<emphasis role=\"bold\">@FieldBridge(impl = PaddedIntegerBridge.class)</"
+"emphasis>\n"
+"                                        private Integer length;"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:432
+#, no-c-format
+msgid ""
+"Parameters can be passed to the Bridge implementation making it more "
+"flexible. The Bridge implementation implements a "
+"<classname>ParameterizedBridge</classname> interface, and the parameters are "
+"passed through the <literal>@FieldBridge</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:438
+#, no-c-format
+msgid ""
+"public class PaddedIntegerBridge implements StringBridge, <emphasis\n"
+"                                                                                role="
+"\"bold\">ParameterizedBridge</emphasis> {\n"
+"                                        \n"
+"                                        public static String "
+"PADDING_PROPERTY = \"padding\";\n"
+"                                        private int padding = 5; //default\n"
+"                                        \n"
+"                                        <emphasis role=\"bold\">public void "
+"setParameterValues(Map parameters)</emphasis> {\n"
+"                                        Object padding = parameters.get"
+"( PADDING_PROPERTY );\n"
+"                                        if (padding != null) this.padding = "
+"(Integer) padding;\n"
+"                                        }\n"
+"                                        \n"
+"                                        public String objectToString(Object "
+"object) {\n"
+"                                        String rawInteger = ( (Integer) "
+"object ).toString();\n"
+"                                        if (rawInteger.length() &gt; "
+"padding) \n"
+"                                        throw new IllegalArgumentException"
+"( \"Try to pad on a number too big\" );\n"
+"                                        StringBuilder paddedInteger = new "
+"StringBuilder( );\n"
+"                                        for ( int padIndex = rawInteger."
+"length() ; padIndex &lt; padding ; padIndex++ ) {\n"
+"                                        paddedInteger.append('0');\n"
+"                                        }\n"
+"                                        return paddedInteger.append"
+"( rawInteger ).toString();\n"
+"                                        }\n"
+"                                        }\n"
+"                                        \n"
+"                                        \n"
+"                                        //property\n"
+"                                        @FieldBridge(impl = "
+"PaddedIntegerBridge.class,\n"
+"                                        <emphasis role=\"bold\">params = "
+"@Parameter(name=\"padding\", value=\"10\")</emphasis>\n"
+"                                        )\n"
+"                                        private Integer length;"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:440
+#, no-c-format
+msgid ""
+"The <classname>ParameterizedBridge</classname> interface can be implemented "
+"by <classname>StringBridge</classname> , <classname>TwoWayStringBridge</"
+"classname> , <classname>FieldBridge</classname> implementations (see bellow)."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:446
+#, no-c-format
+msgid ""
+"If you expect to use your bridge implementation on for an id property (i.e. "
+"annotated with <literal>@DocumentId</literal> ), you need to use a slightly "
+"extended version of <literal>StringBridge</literal> named "
+"<classname>TwoWayStringBridge</classname> . <literal>Hibernate Search </"
+"literal> needs to read the string representation of the identifier and "
+"generate the object out of it. There is not difference in the way the "
+"<literal>@FieldBridge</literal> annotation is used."
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:455
+#, no-c-format
+msgid ""
+"public class PaddedIntegerBridge implements TwoWayStringBridge, "
+"ParameterizedBridge {\n"
+"                                        \n"
+"                                        public static String "
+"PADDING_PROPERTY = \"padding\";\n"
+"                                        private int padding = 5; //default\n"
+"                                        \n"
+"                                        public void setParameterValues(Map "
+"parameters) {\n"
+"                                        Object padding = parameters.get"
+"( PADDING_PROPERTY );\n"
+"                                        if (padding != null) this.padding = "
+"(Integer) padding;\n"
+"                                        }\n"
+"                                        \n"
+"                                        public String objectToString(Object "
+"object) {\n"
+"                                        String rawInteger = ( (Integer) "
+"object ).toString();\n"
+"                                        if (rawInteger.length() &gt; "
+"padding) \n"
+"                                        throw new IllegalArgumentException"
+"( \"Try to pad on a number too big\" );\n"
+"                                        StringBuilder paddedInteger = new "
+"StringBuilder( );\n"
+"                                        for ( int padIndex = rawInteger."
+"length() ; padIndex &lt; padding ; padIndex++ ) {\n"
+"                                        paddedInteger.append('0');\n"
+"                                        }\n"
+"                                        return paddedInteger.append"
+"( rawInteger ).toString();\n"
+"                                        }\n"
+"                                        \n"
+"                                        <emphasis role=\"bold\">public "
+"Object stringToObject(String stringValue)</emphasis> {\n"
+"                                        return new Integer(stringValue);\n"
+"                                        }\n"
+"                                        }\n"
+"                                        \n"
+"                                        \n"
+"                                        //id property\n"
+"                                        @DocumentId\n"
+"                                        @FieldBridge(impl = "
+"PaddedIntegerBridge.class,\n"
+"                                        params = @Parameter(name=\"padding"
+"\", value=\"10\") \n"
+"                                        private Integer id;"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:457
+#, no-c-format
+msgid ""
+"It is critically important for the two-way process to be idempotent (i.e. "
+"object = stringToObject( objectToString( object ) ) )."
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:465
+#, no-c-format
+msgid "FieldBridge"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:467
+#, no-c-format
+msgid ""
+"Some usecases requires more than a simple object to string translation when "
+"mapping a property to a Lucene index. To give you most of the flexibility "
+"you can also implement a bridge as a <classname>FieldBridge</classname> . "
+"This interface give you a property value and let you map it the way you want "
+"in your Lucene <classname>Document</classname> .This interface is very "
+"similar in its concept to the <productname>Hibernate</productname> "
+"<classname>UserType</classname> ."
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:476
+#, no-c-format
+msgid ""
+"You can for example store a given property in two different document fields"
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:479
+#, no-c-format
+msgid ""
+"/**\n"
+"                                        * Store the date in 3 different "
+"field year, month, day\n"
+"                                        * to ease Range Query per year, "
+"month or day\n"
+"                                        * (e.g. get all the elements of "
+"December for the last 5 years)\n"
+"                                        *\n"
+"                                        * @author Emmanuel Bernard\n"
+"                                        */\n"
+"                                        public class DateSplitBridge "
+"implements FieldBridge {\n"
+"                                        private final static TimeZone GMT = "
+"TimeZone.getTimeZone(\"GMT\");\n"
+"                                        \n"
+"                                        <emphasis role=\"bold\">public void "
+"set(String name, Object value, Document document, Field.Store\n"
+"                                                store, Field.Index index, "
+"Float boost) {\n"
+"                                        </emphasis>\n"
+"                                        Date date = (Date) value;\n"
+"                                        Calendar cal = GregorianCalendar."
+"getInstance( GMT );\n"
+"                                        cal.setTime( date );\n"
+"                                        int year = cal.get( Calendar."
+"YEAR );\n"
+"                                        int month = cal.get( Calendar."
+"MONTH ) + 1;\n"
+"                                        int day = cal.get( Calendar."
+"DAY_OF_MONTH );\n"
+"                                        //set year\n"
+"                                        Field field = new Field( name + \"."
+"year\", String.valueOf(year), store, index );\n"
+"                                        if ( boost != null ) field.setBoost"
+"( boost );\n"
+"                                        document.add( field );\n"
+"                                        //set month and pad it if needed\n"
+"                                        field = new Field( name + \".month"
+"\", month &lt; 10 ? \"0\" : \"\" + String.valueOf(month), store, index);\n"
+"                                        if ( boost != null ) field.setBoost"
+"( boost );\n"
+"                                        document.add( field );\n"
+"                                        //set day and pad it if needed\n"
+"                                        field = new Field( name + \".day\", "
+"day &lt; 10 ? \"0\" : \"\" + String.valueOf(day), store, index );\n"
+"                                        if ( boost != null ) field.setBoost"
+"( boost );\n"
+"                                        document.add( field );\n"
+"                                        }\n"
+"                                        }\n"
+"                                        \n"
+"                                        \n"
+"                                        //property\n"
+"                                        <emphasis role=\"bold\">@FieldBridge"
+"(impl = DateSplitBridge.class)</emphasis>\n"
+"                                        private Integer length;"
+msgstr ""
+
+#. Tag: title
+#: Mapping.xml:484
+#, no-c-format
+msgid "@ClassBridge"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:486
+#, no-c-format
+msgid ""
+"It is sometimes useful to combine more than one property of a given entity "
+"and index this combination in a specific way into the Lucene index. The "
+"<classname>@ClassBridge</classname> and <classname>@ClassBridges</classname> "
+"annotations can be defined at the class level (as opposed to the property "
+"level). In this case the custom field bridge implementation receives the "
+"entity instance as the value parameter instead of a particular property."
+msgstr ""
+
+#. Tag: programlisting
+#: Mapping.xml:494
+#, no-c-format
+msgid ""
+"@Entity\n"
+"                                        @Indexed\n"
+"                                        <emphasis role=\"bold"
+"\">@ClassBridge</emphasis>(name=\"branchnetwork\",\n"
+"                                        index=Index.TOKENIZED,\n"
+"                                        store=Store.YES,\n"
+"                                        impl = <emphasis role=\"bold"
+"\">CatFieldsClassBridge.class</emphasis>,\n"
+"                                        params = @Parameter( name=\"sepChar"
+"\", value=\" \" ) )\n"
+"                                        public class Department {\n"
+"                                        private int id;\n"
+"                                        private String network;\n"
+"                                        private String branchHead;\n"
+"                                        private String branch;\n"
+"                                        private Integer maxEmployees;\n"
+"                                        ...\n"
+"                                        }\n"
+"                                        \n"
+"                                        public class CatFieldsClassBridge "
+"implements FieldBridge, ParameterizedBridge {\n"
+"                                        \n"
+"                                        private String sepChar;\n"
+"                                        \n"
+"                                        public void setParameterValues(Map "
+"parameters) {\n"
+"                                        this.sepChar = (String) parameters."
+"get( \"sepChar\" );\n"
+"                                        }\n"
+"                                        \n"
+"                                        public void set(String name, \n"
+"                                        Object value, //the department "
+"instance (entity) in this case\n"
+"                                        Document document, //the Lucene "
+"document \n"
+"                                        Field.Store store, Field.Index "
+"index, Float boost) {\n"
+"                                        // In this particular class the name "
+"of the new field was passed\n"
+"                                        // from the name field of the "
+"ClassBridge Annotation. This is not\n"
+"                                        // a requirement. It just works that "
+"way in this instance. The\n"
+"                                        // actual name could be supplied by "
+"hard coding it below.\n"
+"                                        Department dep = (Department) "
+"value;\n"
+"                                        String fieldValue1 = dep.getBranch"
+"();\n"
+"                                        if ( fieldValue1 == null ) {\n"
+"                                        fieldValue1 = \"\";\n"
+"                                        }\n"
+"                                        String fieldValue2 = dep.getNetwork"
+"();\n"
+"                                        if ( fieldValue2 == null ) {\n"
+"                                        fieldValue2 = \"\";\n"
+"                                        }\n"
+"                                        String fieldValue = fieldValue1 + "
+"sepChar + fieldValue2;\n"
+"                                        Field field = new Field( name, "
+"fieldValue, store, index );\n"
+"                                        if ( boost != null ) field.setBoost"
+"( boost );\n"
+"                                        document.add( field );\n"
+"                                        }\n"
+"                                        }"
+msgstr ""
+
+#. Tag: para
+#: Mapping.xml:496
+#, no-c-format
+msgid ""
+"In this example, the particular <classname>CatFieldsClassBridge</classname> "
+"is applied to the <literal>department</literal> instance, the field bridge "
+"then concatenate both branch and network and index the concatenation."
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Optimize.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Optimize.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Optimize.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,211 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Optimize.xml:6
+#, no-c-format
+msgid "Index Optimization"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:8
+#, no-c-format
+msgid ""
+"From time to time, the Lucene index needs to be optimized. The process is "
+"essentially a defragmentation: until the optimization occurs, deleted "
+"documents are just marked as such, no physical deletion is applied, the "
+"optimization can also adjust the number of files in the Lucene Directory."
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:16
+#, no-c-format
+msgid ""
+"The optimization speeds up searches but in no way speeds up indexation "
+"(update). During an optimization, searches can be performed (but will most "
+"likely be slowed down), and all index updates will be stopped. Prefer "
+"optimizing:"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:25
+#, no-c-format
+msgid "on an idle system or when the searches are less frequent"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:29
+#, no-c-format
+msgid ""
+"after a lot of index modifications (doing so before will not speed up the "
+"indexation process)"
+msgstr ""
+
+#. Tag: title
+#: Optimize.xml:35
+#, no-c-format
+msgid "Automatic optimization"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:37
+#, no-c-format
+msgid "Hibernate Search can optimize automatically an index after:"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:41
+#, no-c-format
+msgid "a certain amount of operations have been applied (insertion, deletion)"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:46
+#, no-c-format
+msgid "or a certain amount of transactions have been applied"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:50
+#, no-c-format
+msgid "The configuration can be global or defined at the index level:"
+msgstr ""
+
+#. Tag: programlisting
+#: Optimize.xml:53
+#, no-c-format
+msgid ""
+"hibernate.search.default.optimizer.operation_limit.max = 1000\n"
+"                        hibernate.search.default.optimizer.transaction_limit."
+"max = 100\n"
+"                        \n"
+"                        hibernate.search.Animal.optimizer.transaction_limit."
+"max = 50"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:55
+#, no-c-format
+msgid ""
+"An optimization will be triggered to the <literal>Animal</literal> index as "
+"soon as either:"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:60
+#, no-c-format
+msgid "the number of addition and deletion reaches 1000"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:64
+#, no-c-format
+msgid ""
+"the number of transactions reaches 50 (<command>hibernate.search.Animal."
+"optimizer.transaction_limit.max</command> having priority over "
+"<command>hibernate.search.default.optimizer.transaction_limit.max</command>)"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:71
+#, no-c-format
+msgid ""
+"If none of these parameters are defined, not optimization is processed "
+"automatically."
+msgstr ""
+
+#. Tag: title
+#: Optimize.xml:76
+#, no-c-format
+msgid "Manual optimization"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:78
+#, no-c-format
+msgid ""
+"You can programmatically optimize (defragment) a Lucene index from Hibernate "
+"Search through the <classname>SearchFactory</classname>"
+msgstr ""
+
+#. Tag: programlisting
+#: Optimize.xml:81
+#, no-c-format
+msgid ""
+"searchFactory.optimize(Order.class);\n"
+"                        \n"
+"                        searchFactory.optimize();"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:83
+#, no-c-format
+msgid ""
+"The first example re-index the Lucene index holding <classname>Order</"
+"classname>s, the second, optimize all indexes."
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:86
+#, no-c-format
+msgid ""
+"The <classname>SearchFactory</classname> can be accessed from a "
+"<classname>FullTextSession</classname>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Optimize.xml:89
+#, no-c-format
+msgid ""
+"FullTextSession fullTextSession = Search.createFullTextSession"
+"(regularSession);\n"
+"                        SearchFactory searchFactory = fullTextSession."
+"getSearchFactory();"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:91
+#, no-c-format
+msgid ""
+"Note that <literal>searchFactory.optimize()</literal> has no effect on a JMS "
+"backend. You must apply the optimize operation on the Master node."
+msgstr ""
+
+#. Tag: title
+#: Optimize.xml:97
+#, no-c-format
+msgid "Adjusting optimization"
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:99
+#, no-c-format
+msgid ""
+"Apache Lucene has a few parameters to influence how optimization is "
+"performed. Hibernate Search expose those parameters."
+msgstr ""
+
+#. Tag: para
+#: Optimize.xml:102
+#, no-c-format
+msgid ""
+"Further index optimization parameters include <literal>hibernate.search."
+"[default|&lt;indexname&gt;].merge_factor</literal>, <literal>hibernate."
+"search.[default|&lt;indexname&gt;].max_merge_docs</literal> and "
+"<literal>hibernate.search.[default|&lt;indexname&gt;].max_buffered_docs</"
+"literal> - see <xref linkend=\"Hibernate_Search-Configuration-"
+"Lucene_Index_Performance\"/> for more details."
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Preface.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Preface.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Preface.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Query.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Query.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Query.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,1059 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Query.xml:6
+#, no-c-format
+msgid "Query"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:8
+#, no-c-format
+msgid ""
+"The second most important capability of Hibernate Search is the ability to "
+"execute a Lucene query and retrieve entities managed by an Hibernate "
+"session, providing the power of Lucene without living the Hibernate "
+"paradigm, and giving another dimension to the Hibernate classic search "
+"mechanisms (HQL, Criteria query, native SQL query)."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:14
+#, no-c-format
+msgid ""
+"To access the <productname>Hibernate Search</productname> querying "
+"facilities, you have to use an Hibernate <classname>FullTextSession</"
+"classname> . A Search Session wraps a regular <classname>org.hibernate."
+"Session</classname> to provide query and indexing capabilities."
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:20
+#, no-c-format
+msgid ""
+"Session session = sessionFactory.openSession();\n"
+"                ...\n"
+"                FullTextSession fullTextSession = Search."
+"createFullTextSession(session);"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:22
+#, no-c-format
+msgid "The search facility is built on native Lucene queries."
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:24
+#, no-c-format
+msgid ""
+"org.apache.lucene.queryParser.QueryParser parser = new QueryParser(\"title"
+"\", new StopAnalyzer() );\n"
+"                \n"
+"                org.apache.lucene.search.Query luceneQuery = parser.parse"
+"( \"summary:Festina Or brand:Seiko\" );\n"
+"                <emphasis role=\"bold\">org.hibernate.Query fullTextQuery = "
+"fullTextSession.createFullTextQuery( luceneQuery );\n"
+"                </emphasis>\n"
+"                \n"
+"                List result = fullTextQuery.list(); //return a list of "
+"managed objects"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:26
+#, no-c-format
+msgid ""
+"The Hibernate query built on top of the Lucene query is a regular "
+"<literal>org.hibernate.Query</literal> , you are in the same paradigm as the "
+"other Hibernate query facilities (HQL, Native or Criteria). The regular "
+"<literal>list()</literal> , <literal>uniqueResult()</literal> , "
+"<literal>iterate()</literal> and <literal>scroll()</literal> can be used."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:33
+#, no-c-format
+msgid ""
+"For people using Java Persistence (aka EJB 3.0 Persistence) APIs of "
+"Hibernate, the same extensions exist:"
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:36
+#, no-c-format
+msgid ""
+"EntityManager em = entityManagerFactory.createEntityManager();\n"
+"                \n"
+"                FullTextEntityManager fullTextEntityManager = \n"
+"                org.hibernate.hibernate.search.jpa.Search."
+"createFullTextEntityManager(em);\n"
+"                \n"
+"                ...\n"
+"                org.apache.lucene.queryParser.QueryParser parser = new "
+"QueryParser(\"title\", new StopAnalyzer() );\n"
+"                \n"
+"                org.apache.lucene.search.Query luceneQuery = parser.parse"
+"( \"summary:Festina Or brand:Seiko\" );\n"
+"                <emphasis role=\"bold\">javax.persistence.Query "
+"fullTextQuery = fullTextEntityManager.createFullTextQuery( luceneQuery );</"
+"emphasis>\n"
+"                \n"
+"                List result = fullTextQuery.getResultList(); //return a list "
+"of managed objects"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:38
+#, no-c-format
+msgid ""
+"The following examples show the Hibernate APIs but the same example can be "
+"easily rewritten with the Java Persistence API by just adjusting the way the "
+"FullTextQuery is retrieved."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:43
+#, no-c-format
+msgid "Building queries"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:45
+#, no-c-format
+msgid ""
+"Hibernate Search queries are built on top of Lucene queries. It gives you a "
+"total freedom on the kind of Lucene queries you are willing to execute. "
+"However, once built, Hibernate Search abstract the query processing from "
+"your application using org.hibernate.Query as your primary query "
+"manipulation API."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:52
+#, no-c-format
+msgid "Building a Lucene query"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:54
+#, no-c-format
+msgid ""
+"This subject is generally speaking out of the scope of this documentation. "
+"Please refer to the Lucene documentation or Lucene In Action."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:60
+#, no-c-format
+msgid "Building a Hibernate Search query"
+msgstr ""
+
+#. Tag: title
+#: Query.xml:63
+#, no-c-format
+msgid "Generality"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:65
+#, no-c-format
+msgid ""
+"Once the Lucene query is built, it needs to be wrapped into an Hibernate "
+"Query."
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:68
+#, no-c-format
+msgid ""
+"FullTextSession fullTextSession = Search.createFullTextSession( session );\n"
+"                                        org.hibernate.Query fullTextQuery = "
+"fullTextSession.createFullTextQuery( luceneQuery );"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:70
+#, no-c-format
+msgid ""
+"If not specified otherwise, the query will be executed against all indexed "
+"entities, potentially returning all types of indexed classes. It is advised, "
+"from a performance point of view, to restrict the returned types:"
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:75
+#, no-c-format
+msgid ""
+"org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery"
+"( luceneQuery, Customer.class );\n"
+"                                        //or\n"
+"                                        fullTextQuery = fullTextSession."
+"createFullTextQuery( luceneQuery, Item.class, Actor.class );"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:77
+#, no-c-format
+msgid ""
+"The first example returns only matching customers, the second returns "
+"matching actors and items."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:82
+#, no-c-format
+msgid "Pagination"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:84
+#, no-c-format
+msgid ""
+"It is recommended to restrict the number of returned objects per query. It "
+"is a very common use case as well, the user usually navigate from one page "
+"to an other. The way to define pagination is exactly the way you would "
+"define pagination in a plain HQL or Criteria query."
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:90
+#, no-c-format
+msgid ""
+"org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery"
+"( luceneQuery, Customer.class );\n"
+"                                        fullTextQuery.setFirstResult(15); //"
+"start from the 15th element\n"
+"                                        fullTextQuery.setMaxResults(10); //"
+"return 10 elements"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:93
+#, no-c-format
+msgid ""
+"It is still possible to get the total number of matching elements regardless "
+"of the pagination. See <command>getResultSize()</command> below"
+msgstr ""
+
+#. Tag: title
+#: Query.xml:100
+#, no-c-format
+msgid "Sorting"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:102
+#, no-c-format
+msgid ""
+"Apache Lucene provides a very flexible and powerful way to sort results. "
+"While the default sorting (by relevance) is appropriate most of the time, it "
+"can interesting to sort by one or several properties."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:107
+#, no-c-format
+msgid ""
+"Inject the Lucene Sort object to apply a Lucene sorting strategy to an "
+"Hibernate Search."
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:110
+#, no-c-format
+msgid ""
+"org.hibernate.search.FullTextQuery query = s.createFullTextQuery( query, "
+"Book.class );\n"
+"                                        org.apache.lucene.search.Sort sort = "
+"new Sort(new SortField(\"title\"));\n"
+"                                        <emphasis role=\"bold\">query.setSort"
+"(sort);</emphasis>\n"
+"                                        List results = query.list();"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:112
+#, no-c-format
+msgid ""
+"One can notice the <classname>FullTextQuery</classname> interface which is a "
+"sub interface of <classname>org.hibernate.Query</classname>."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:116
+#, no-c-format
+msgid "Fields used for sorting must not be tokenized."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:120
+#, no-c-format
+msgid "Fetching strategy"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:122
+#, no-c-format
+msgid ""
+"When you restrict the return types to one class, Hibernate Search loads the "
+"objects using a single query. It also respects the static fetching strategy "
+"defined in your domain model."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:126
+#, no-c-format
+msgid ""
+"It is often useful, however, to refine the fetching strategy for a specific "
+"use case."
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:129
+#, no-c-format
+msgid ""
+"Criteria criteria = s.createCriteria( Book.class ).setFetchMode( \"authors"
+"\", FetchMode.JOIN );\n"
+"                                        s.createFullTextQuery( luceneQuery )."
+"setCriteriaQuery( criteria );"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:131
+#, no-c-format
+msgid ""
+"In this example, the query will return all Books matching the luceneQuery. "
+"The authors collection will be loaded from the same query using an SQL outer "
+"join."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:135
+#, no-c-format
+msgid ""
+"When defining a criteria query, it is not needed to restrict the entity "
+"types returned while creating the Hibernate Search query from the full text "
+"session: the type is guessed from the criteria query itself. Only fetch mode "
+"can be adjusted, refrain from applying any other restriction."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:141
+#, no-c-format
+msgid ""
+"One cannot use <command>setCriteriaQuery</command> if more than one entity "
+"type is expected to be returned."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:146
+#, no-c-format
+msgid "Projection"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:148
+#, no-c-format
+msgid ""
+"For some use cases, returning the domain object (graph) is overkill. Only a "
+"small subset of the properties is necessary. Hibernate Search allows you to "
+"return a subset of properties:"
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:152
+#, no-c-format
+msgid ""
+"org.hibernate.search.FullTextQuery query = s.createFullTextQuery"
+"( luceneQuery, Book.class );\n"
+"                                        query.<emphasis role=\"bold"
+"\">setProjection( \"id\", \"summary\", \"body\", \"mainAuthor.name\" )</"
+"emphasis>;\n"
+"                                        List results = query.list();\n"
+"                                        Object[] firstResult = (Object[]) "
+"results.get(0);\n"
+"                                        Integer id = firstResult[0];\n"
+"                                        String summary = firstResult[1];\n"
+"                                        String body = firstResult[2];\n"
+"                                        String authorName = firstResult[3];"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:154
+#, no-c-format
+msgid ""
+"Hibernate Search extracts the properties from the Lucene index and convert "
+"them back to their object representation, returning a list of "
+"<classname>Object[]</classname>. Projections avoid a potential database "
+"round trip (useful if the query response time is critical), but has some "
+"constraints:"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:162
+#, no-c-format
+msgid ""
+"the properties projected must be stored in the index (<literal>@Field"
+"(store=Store.YES)</literal>), which increase the index size"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:168
+#, no-c-format
+msgid ""
+"the properties projected must use a <literal>FieldBridge</literal> "
+"implementing <classname>org.hibernate.search.bridge.TwoWayFieldBridge</"
+"classname> or <literal>org.hibernate.search.bridge.TwoWayStringBridge</"
+"literal>, the latter being the simpler version. All Hibernate Search built-"
+"in types are two-way."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:178
+#, no-c-format
+msgid ""
+"Projection is useful for another kind of usecases. Lucene provides some "
+"metadata information to the user about the results. By using some special "
+"placeholders, the projection mechanism can retrieve them:"
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:183
+#, no-c-format
+msgid ""
+"org.hibernate.search.FullTextQuery query = s.createFullTextQuery"
+"( luceneQuery, Book.class );\n"
+"                                        query.<emphasis role=\"bold"
+"\">setProjection( FullTextQuery.SCORE, FullTextQuery.BOOST, FullTextQuery."
+"THIS, \"mainAuthor.name\" )</emphasis>;\n"
+"                                        List results = query.list();\n"
+"                                        Object[] firstResult = (Object[]) "
+"results.get(0);\n"
+"                                        float score = firstResult[0];\n"
+"                                        float boost = firstResult[1];\n"
+"                                        Book book = firstResult[2];\n"
+"                                        String authorName = firstResult[3];"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:185
+#, no-c-format
+msgid ""
+"You can mix and match regular fields and special placeholders. Here is the "
+"list of available placeholders:"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:190
+#, no-c-format
+msgid ""
+"FullTextQuery.THIS: returns the initialized and managed entity (as a non "
+"projected query would have done)"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:195
+#, no-c-format
+msgid ""
+"FullTextQuery.DOCUMENT: returns the Lucene Document related to the object "
+"projected"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:200
+#, no-c-format
+msgid ""
+"FullTextQuery.SCORE: returns the document score in the query. The score is "
+"guaranteed to be between 0 and 1 but the highest score is not necessarily "
+"equals to 1. Scores are handy to compare one result against an other for a "
+"given query but are useless when comparing the result of different queries."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:208
+#, no-c-format
+msgid "FullTextQuery.BOOST: the boost value of the Lucene Document"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:213
+#, no-c-format
+msgid "FullTextQuery.ID: the id property value of the projected object"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:218
+#, no-c-format
+msgid ""
+"FullTextQuery.DOCUMENT_ID: the Lucene document id. Careful, Lucene document "
+"id can change overtime between two different IndexReader opening (this "
+"feature is experimental)"
+msgstr ""
+
+#. Tag: title
+#: Query.xml:228
+#, no-c-format
+msgid "Retrieving the results"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:230
+#, no-c-format
+msgid ""
+"Once the Hibernate Search query is built, executing it is in no way "
+"different than executing a HQL or Criteria query. The same paradigm and "
+"object semantic apply. All the common operations are available: <command>list"
+"()</command>, <command>uniqueResult()</command>, <command>iterate()</"
+"command>, <command>scroll()</command>."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:238
+#, no-c-format
+msgid "Performance considerations"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:240
+#, no-c-format
+msgid ""
+"If you expect a reasonable number of results (for example using pagination) "
+"and expect to work on all of them, <command>list()</command> or "
+"<command>uniqueResult()</command> are recommended. <command>list()</command> "
+"work best if the entity <literal>batch-size</literal> is set up properly. "
+"Note that Hibernate Search has to process all Lucene Hits elements (within "
+"the pagination) when using <command>list()</command> , <command>uniqueResult"
+"()</command> and <command>iterate()</command>."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:251
+#, no-c-format
+msgid ""
+"If you wish to minimize Lucene document loading, <command>scroll()</command> "
+"is more appropriate. Don't forget to close the <classname>ScrollableResults</"
+"classname> object when you're done, since it keeps Lucene resources. If you "
+"expect to use <command>scroll</command> but wish to load objects in batch, "
+"you can use <command>query.setFetchSize()</command>: When an object is "
+"accessed, and if not already loaded, Hibernate Search will load the next "
+"<literal>fetchSize</literal> objects in one pass."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:260
+#, no-c-format
+msgid "Pagination is a preferred method over scrolling though."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:264
+#, no-c-format
+msgid "Result size"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:266
+#, no-c-format
+msgid "It is sometime useful to know the total number of matching documents:"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:271
+#, no-c-format
+msgid "for the Google-like feature 1-10 of about 888,000,000"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:275
+#, no-c-format
+msgid "to implement a fast pagination navigation"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:279
+#, no-c-format
+msgid ""
+"to implement a multi step search engine (adding approximation if the "
+"restricted query return no or not enough results)"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:284
+#, no-c-format
+msgid "But it would be costly to retrieve all the matching documents."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:287
+#, no-c-format
+msgid ""
+"Hibernate Search allows you to retrieve the total number of matching "
+"documents regardless of the pagination parameters. Even more interesting, "
+"you can retrieve the number of matching elements without triggering a single "
+"object load."
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:292
+#, no-c-format
+msgid ""
+"org.hibernate.search.FullTextQuery query = s.createFullTextQuery"
+"( luceneQuery, Book.class );\n"
+"                                assert 3245 == <emphasis role=\"bold\">query."
+"getResultSize()</emphasis>; //return the number of matching books without "
+"loading a single one\n"
+"                                \n"
+"                                org.hibernate.search.FullTextQuery query = s."
+"createFullTextQuery( luceneQuery, Book.class );\n"
+"                                query.setMaxResult(10);\n"
+"                                List results = query.list();\n"
+"                                assert 3245 == <emphasis role=\"bold\">query."
+"getResultSize()</emphasis>; //return the total number of matching books "
+"regardless of pagination"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:295
+#, no-c-format
+msgid ""
+"Like Google, the number of results is approximate if the index is not fully "
+"up-to-date with the database (asynchronous cluster for example)."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:302
+#, no-c-format
+msgid "ResultTransformer"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:304
+#, no-c-format
+msgid ""
+"Especially when using projection, the data structure returned by a query (an "
+"object array in this case), is not always matching the application needs. It "
+"is possible to apply a <classname>ResultTransformer</classname> operation "
+"post query to match the targeted data structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:310
+#, no-c-format
+msgid ""
+"org.hibernate.search.FullTextQuery query = s.createFullTextQuery"
+"( luceneQuery, Book.class );\n"
+"                                query.setProjection( \"title\", \"mainAuthor."
+"name\" );\n"
+"                                \n"
+"                                <emphasis role=\"bold\">query."
+"setResultTransformer( \n"
+"                                        new "
+"StaticAliasToBeanResultTransformer( BookView.class, \"title\", \"author"
+"\" ) \n"
+"                                        );</emphasis>\n"
+"                                List&lt;BookView&gt; results = (List&lt;"
+"BookView&gt;) query.list();\n"
+"                                for(BookView view : results) {\n"
+"                                log.info( \"Book: \" + view.getTitle() + \", "
+"\" + view.getAuthor() );\n"
+"                                }"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:312
+#, no-c-format
+msgid ""
+"Examples of <classname>ResultTransformer</classname> implementations can be "
+"found in the Hibernate Core codebase."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:318
+#, no-c-format
+msgid "Filters"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:320
+#, no-c-format
+msgid ""
+"Apache Lucene has a powerful feature that allows to filters results from a "
+"query according to a custom filtering process. This is a very powerful way "
+"to apply some data restrictions after a query, especially since filters can "
+"be cached and reused. Some interesting usecases are:"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:328
+#, no-c-format
+msgid "security"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:332
+#, no-c-format
+msgid "temporal data (e.g.. view only last month's data)"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:336
+#, no-c-format
+msgid "population filter (e.g. search limited to a given category)"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:341
+#, no-c-format
+msgid "and many more"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:345
+#, no-c-format
+msgid ""
+"Hibernate Search pushes the concept further by introducing the notion of "
+"parameterizable named filters which are transparently cached. For people "
+"familiar with the notion of Hibernate Core filters, the API is very similar."
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:350
+#, no-c-format
+msgid ""
+"fullTextQuery = s.createFullTextQuery( query, Driver.class );\n"
+"                        fullTextQuery.enableFullTextFilter(\"bestDriver\");\n"
+"                        fullTextQuery.enableFullTextFilter(\"security\")."
+"setParameter( \"login\", \"andre\" );\n"
+"                        fullTextQuery.list(); //returns only best drivers "
+"where andre has credentials"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:352
+#, no-c-format
+msgid ""
+"In this example we enabled 2 filters on top of this query. You can enable "
+"(or disable) as many filters as you want."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:355
+#, no-c-format
+msgid ""
+"Declaring filters is done through the <classname>@FullTextFilterDef</"
+"classname> annotation. This annotation can be on any <literal>@Indexed</"
+"literal> entity regardless of the filter operation."
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:360
+#, no-c-format
+msgid ""
+"@Entity\n"
+"                        @Indexed\n"
+"                        @FullTextFilterDefs( {\n"
+"                        <emphasis role=\"bold\">@FullTextFilterDef(name = "
+"\"bestDriver\", impl = BestDriversFilter.class, cache=false)</emphasis>, //"
+"actual Filter implementation\n"
+"                        <emphasis role=\"bold\">@FullTextFilterDef(name = "
+"\"security\", impl = SecurityFilterFactory.class)</emphasis> //Filter "
+"factory with parameters\n"
+"                        })\n"
+"                        public class Driver { ... }"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:362
+#, no-c-format
+msgid "Each named filter points to an actual filter implementation."
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:364
+#, no-c-format
+msgid ""
+"public class BestDriversFilter extends <emphasis\n"
+"                                                                                role="
+"\"bold\">org.apache.lucene.search.Filter</emphasis> {\n"
+"                        \n"
+"                        public BitSet bits(IndexReader reader) throws "
+"IOException {\n"
+"                        BitSet bitSet = new BitSet( reader.maxDoc() );\n"
+"                        TermDocs termDocs = reader.termDocs( new Term(\"score"
+"\", \"5\") );\n"
+"                        while ( termDocs.next() ) {\n"
+"                        bitSet.set( termDocs.doc() );\n"
+"                        }\n"
+"                        return bitSet;\n"
+"                        }\n"
+"                        }"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:366
+#, no-c-format
+msgid ""
+"<classname>BestDriversFilter</classname> is an example of a simple Lucene "
+"filter that will filter all results to only return drivers whose score is 5. "
+"The filters must have a no-arg constructor when referenced in a "
+"<literal>FulltextFilterDef.impl</literal>."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:371
+#, no-c-format
+msgid ""
+"The <literal>cache</literal> flag, defaulted to <literal>true</literal>, "
+"tells Hibernate Search to search the filter in its internal cache and reuses "
+"it if found."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:375
+#, no-c-format
+msgid ""
+"Note that, usually, filter using the <classname>IndexReader</classname> are "
+"wrapped in a Lucene <classname>CachingWrapperFilter</classname> to benefit "
+"from some caching speed improvement. If your Filter creation requires "
+"additional steps or if the filter you are willing to use does not have a no-"
+"arg constructor, you can use the factory pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:382
+#, no-c-format
+msgid ""
+"@Entity\n"
+"                        @Indexed\n"
+"                        @FullTextFilterDef(name = \"bestDriver\", impl = "
+"BestDriversFilterFactory.class) //Filter factory\n"
+"                        public class Driver { ... }\n"
+"                        \n"
+"                        public class BestDriversFilterFactory {\n"
+"                        \n"
+"                        <emphasis role=\"bold\">@Factory</emphasis>\n"
+"                        public Filter getFilter() {\n"
+"                        //some additional steps to cache the filter results "
+"per IndexReader\n"
+"                        Filter bestDriversFilter = new BestDriversFilter();\n"
+"                        return new CachingWrapperFilter(bestDriversFilter);\n"
+"                        }\n"
+"                        }"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:384
+#, no-c-format
+msgid ""
+"Hibernate Search will look for a <literal>@Factory</literal> annotated "
+"method and use it to build the filter instance. The factory must have a no-"
+"arg constructor. For people familiar with JBoss Seam, this is similar to the "
+"component factory pattern, but the annotation is different!"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:390
+#, no-c-format
+msgid ""
+"Named filters comes in handy where the filters have parameters. For example "
+"a security filter needs to know which credentials you are willing to filter "
+"by:"
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:394
+#, no-c-format
+msgid ""
+"fullTextQuery = s.createFullTextQuery( query, Driver.class );\n"
+"                        fullTextQuery.enableFullTextFilter(\"security\")"
+"<emphasis role=\"bold\">.setParameter( \"level\", 5 )</emphasis>;"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:396
+#, no-c-format
+msgid ""
+"Each parameter name should have an associated setter on either the filter or "
+"filter factory of the targeted named filter definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Query.xml:399
+#, no-c-format
+msgid ""
+"public class SecurityFilterFactory {\n"
+"                        private Integer level;\n"
+"                        \n"
+"                        /**\n"
+"                        * injected parameter\n"
+"                        */\n"
+"                        <emphasis role=\"bold\">public void setLevel(Integer "
+"level)</emphasis> {\n"
+"                        this.level = level;\n"
+"                        }\n"
+"                        \n"
+"                        <emphasis role=\"bold\">@Key\n"
+"                                public FilterKey getKey()</emphasis> {\n"
+"                        StandardFilterKey key = new StandardFilterKey();\n"
+"                        key.addParameter( level );\n"
+"                        return key;\n"
+"                        }\n"
+"                        \n"
+"                        @Factory\n"
+"                        public Filter getFilter() {\n"
+"                        Query query = new TermQuery( new Term(\"level\", "
+"level.toString() ) );\n"
+"                        return new CachingWrapperFilter( new "
+"QueryWrapperFilter(query) );\n"
+"                        }\n"
+"                        }"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:401
+#, no-c-format
+msgid ""
+"Note the method annotated <classname>@Key</classname> and returning a "
+"<classname>FilterKey</classname> object. The returned object has a special "
+"contract: the key object must implement equals / hashcode so that 2 keys are "
+"equals if and only if the given Filter types are the same and the set of "
+"parameters are the same. In other words, 2 filter keys are equal if and only "
+"if the filters from which the keys are generated can be interchanged. The "
+"key object is used as a key in the cache mechanism."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:410
+#, no-c-format
+msgid "<classname>@Key</classname> methods are needed only if:"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:414
+#, no-c-format
+msgid "you enabled the filter caching system (enabled by default)"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:419
+#, no-c-format
+msgid "your filter has parameters"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:423
+#, no-c-format
+msgid ""
+"In most cases, using the <literal>StandardFilterKey</literal> implementation "
+"will be good enough. It delegates the equals/hashcode implementation to each "
+"of the parameters equals and hashcode methods."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:428
+#, no-c-format
+msgid ""
+"Why should filters be cached? There are two area where filter caching shines:"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:433
+#, no-c-format
+msgid ""
+"the system does not update the targeted entity index often (in other words, "
+"the IndexReader is reused a lot)"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:438
+#, no-c-format
+msgid ""
+"the Filter BitSet is expensive to compute (compared to the time spent to "
+"execute the query)"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:443
+#, no-c-format
+msgid ""
+"Cache is enabled by default and use the notion of SoftReferences to dispose "
+"memory when needed. To adjust the size of the hard reference cache, use "
+"<literal>hibernate.search.filter.cache_strategy.size</literal> (defaults to "
+"128). Don't forget to use a <classname>CachingWrapperFilter</classname> when "
+"the filter is cacheable and the Filter's bits methods makes use of "
+"IndexReader."
+msgstr ""
+
+#. Tag: para
+#: Query.xml:450
+#, no-c-format
+msgid ""
+"For advance use of filter caching, you can implement your own "
+"<classname>FilterCachingStrategy</classname>. The classname is defined by "
+"<literal>hibernate.search.filter.cache_strategy</literal>."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:456
+#, no-c-format
+msgid "Optimizing the query process"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:458
+#, no-c-format
+msgid "Query performance depends on several criteria:"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:462
+#, no-c-format
+msgid "the Lucene query itself: read the literature on this subject"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:467
+#, no-c-format
+msgid ""
+"the number of object loaded: use pagination (always ;-) ) or index "
+"projection (if needed)"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:472
+#, no-c-format
+msgid ""
+"the way Hibernate Search interacts with the Lucene readers: defines the "
+"appropriate <xref linkend=\"Hibernate_Search-Architecture-Reader_Strategy\"/"
+">."
+msgstr ""
+
+#. Tag: title
+#: Query.xml:480
+#, no-c-format
+msgid "Native Lucene Queries"
+msgstr ""
+
+#. Tag: para
+#: Query.xml:482
+#, no-c-format
+msgid ""
+"If you wish to use some specific features of Lucene, you can always run "
+"Lucene specific queries. Check <xref linkend=\"Hibernate_Search-Lucene_Native"
+"\"/> for more informations."
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Revision_History.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Revision_History.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Search/pot/Revision_History.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,34 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:01+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Revision_History.xml:6
+#, no-c-format
+msgid "Revision History"
+msgstr ""
+
+#. Tag: author
+#: Revision_History.xml:12
+#, no-c-format
+msgid ""
+"<firstname>Danielle</firstname> <surname>Coulson</surname> <email></email>"
+msgstr ""
+
+#. Tag: member
+#: Revision_History.xml:19
+#, no-c-format
+msgid "Content reformat"
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/Makefile
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/Makefile	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/Makefile	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,14 @@
+#Makefile for Hibernate_Validator
+
+XML_LANG	= en-US
+DOCNAME		= Hibernate_Validator
+BRAND		= JBoss
+
+#OTHER_LANGS	= as-IN bn-IN de-DE es-ES fr-FR gu-IN hi-IN it-IT ja-JP kn-IN ko-KR ml-IN mr-IN or-IN pa-IN pt-BR ru-RU si-LK ta-IN te-IN zh-CN zh-TW
+
+# Extra Parameters start here
+
+# Extra Parameters stop here
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Author_Group.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Author_Group.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Author_Group.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,14 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+	<author>
+		<firstname>Hibernate Development Team</firstname>
+		<surname></surname>
+	</author>
+	<editor>
+		<firstname>Red Hat Inc. Engineering Content Services</firstname>
+		<surname></surname>
+	</editor>
+</authorgroup>

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Book_Info.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Book_Info.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Book_Info.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,35 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<bookinfo id="Hibernate_Validator">
+	<title>Hibernate Validator Reference Guide CP05</title>
+	<subtitle>For use with JBoss Enterprise Application Platform 4.3.0 Cumulative Patch 5</subtitle>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.3</productnumber>
+	<edition>1.0</edition>
+	<pubsnumber>3</pubsnumber>
+<!--	<pubdate>November, 2008</pubdate> -->
+	<abstract>
+		<para>	
+			This book is a Reference Guide to Hibernate Validator for JBoss Enterprise Application Platform 4.3.0 CP05
+		</para>
+	</abstract>
+	<corpauthor>
+		<inlinemediaobject>
+			<imageobject>
+				<imagedata format='SVG' fileref="Common_Content/images/title_logo.svg" />
+			</imageobject>
+			<textobject><phrase>Logo</phrase></textobject>
+		</inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+
+
+

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Checkconstraints.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Checkconstraints.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Checkconstraints.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,170 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Validator-Checkconstraints">
+	<title>Using the Validator framework</title>
+	
+	<para>Hibernate Validator is intended to be used to implement multi-layered
+		data validation, where constraints are expressed in a single place (the
+		annotated domain model) and checked in various different layers of the
+		application.</para>
+	
+	<para>This chapter will cover Hibernate Validator usage for different
+		layers</para>
+	
+	<section id="Hibernate_Validator-checkconstraints-db">
+		<title>Database schema-level validation</title>
+		
+		<para>Out of the box, Hibernate Annotations will translate the constraints
+			you have defined for your entities into mapping metadata. For example, if
+			a property of your entity is annotated <literal>@NotNull</literal>, its
+			columns will be declared as <literal>not null</literal> in the DDL schema
+			generated by Hibernate.</para>
+		
+		<para>Using hbm2ddl, domain model constraints will be expressed into the
+			database schema.</para>
+		
+		<para>If, for some reason, the feature needs to be disabled, set
+			<literal>hibernate.validator.apply_to_ddl</literal> to
+			<literal>false</literal>.</para>
+	</section>
+	
+	<section id="Hibernate_Validator-Checkconstraints-orm">
+		<title>ORM integration</title>
+		
+		<para>Hibernate Validator integrates with both Hibernate and all pure Java
+			Persistence providers</para>
+		
+		<section id="Hibernate_Validator-Checkconstraints-orm-hibernateevent">
+			<title>Hibernate event-based validation</title>
+			
+			<para>Hibernate Validator has two built-in Hibernate event listeners.
+				Whenever a <literal>PreInsertEvent</literal> or
+				<literal>PreUpdateEvent</literal> occurs, the listeners will verify all
+				constraints of the entity instance and throw an exception if any
+				constraint is violated. Objects will be checked before any
+				inserts and before any updates made by Hibernate. This includes changes
+				applied by cascade. This is the most convenient and the easiest way to
+				activate the validation process. On constraint violation, the event will
+				raise a runtime <classname>InvalidStateException</classname>, which
+				contains an array of <literal>InvalidValue</literal>s describing each
+				failure.</para>
+			
+			<para>If Hibernate Validator is present in the classpath, Hibernate
+				Annotations (or Hibernate EntityManager) will use it transparently. If,
+				for some reason, you want to disable this integration, set
+				<literal>hibernate.validator.autoregister_listeners</literal> to
+				false.</para>
+			
+			<para><note>
+					<para>If the beans are not annotated with validation annotations,
+						there is no runtime performance cost.</para>
+				</note></para>
+			
+			<para>In case you need to manually set the event listeners for Hibernate
+				Core, use the following configuration in
+				<literal>hibernate.cfg.xml</literal>:</para>
+			
+			<programlisting language="xml"><xi:include href="extras/hibernate_config.xmlt" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+		</section>
+		
+		<section id="Hibernate_Validator-Checkconstraints-orm-jpaevent">
+			<title>Java Persistence event-based validation</title>
+			
+			<para>Hibernate Validator is not tied to Hibernate for event based
+				validation: a Java Persistence entity listener is available. Whenever an
+				listened entity is persisted or updated, Hibernate Validator will verify
+				all constraints of the entity instance and throw an exception if any
+				constraint is violated. Basically, objects will be checked before any
+				inserts and before any updates made by the Java Persistence provider.
+				This includes changes applied by cascade! On constraint violation, the
+				event will raise a runtime <classname>InvalidStateException</classname>
+				which contains an array of <literal>InvalidValue</literal>s describing
+				each failure.</para>
+			
+			<para>Here is how to make a class validatable:</para>
+			
+			<programlisting language="java"><xi:include href="extras/class_validate.javat" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+			
+			<para><note>
+					<para>Compared to the Hibernate event, the Java Persistence listener
+						has two drawbacks. You need to define the entity listener on every
+						validatable entity. The DDL generated by your provider will not
+						reflect the constraints.</para>
+				</note></para>
+		</section>
+	</section>
+	
+	<section id="Hibernate_Validator-Checkconstraints-application">
+		<title>Application-level validation</title>
+		
+		<para>Hibernate Validator can be applied anywhere in your application
+			code.</para>
+		
+		<programlisting language="java"><xi:include href="extras/app_validate.javat" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+		
+		<para>The first two lines prepare the Hibernate Validator for class
+			checking. The first one relies upon the error messages embedded in
+			Hibernate Validator (see <xref linkend="Hibernate_Validator-Defineconstraints-error" />), the second one uses a resource bundle for these messages. It is considered a good practice to
+			execute these lines once and cache the validator instances.</para>
+		
+		<para>The third line actually validates the <literal>Address</literal>
+			instance and returns an array of <literal>InvalidValue</literal>s. Your
+			application logic will then be able to react to the failure.</para>
+		
+		<para>You can also check a particular property instead of the whole bean.
+			This might be useful for property per property user interaction</para>
+		
+		<programlisting language="java"><xi:include href="extras/check_property.javat" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+	</section>
+	
+	<section id="Hibernate_Validator-Checkconstraints-presentationlayer">
+		<title>Presentation layer validation</title>
+		
+		<para>When working with JSF and <productname>JBoss Seam</productname>, one
+			can triggers the validation process at the presentation layer using Seam's
+			JSF tags <literal>&lt;s:validate&gt;</literal> and
+			<literal>&lt;s:validateAll/&gt;</literal>, letting the constraints be
+			expressed on the model, and the violations presented in the view.</para>
+		
+		<programlisting language="java"><xi:include href="extras/pres_validation.javat" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+		
+		<para>Going even further, and adding <productname>Ajax4JSF</productname>
+			to the loop will bring client side validation with just a couple of
+			additional JSF tags, again without validation definition
+			duplication.</para>
+		
+		<para>Check the <ulink url="http://www.jboss.com/products/seam">JBoss
+				Seam</ulink> documentation for more information.</para>
+	</section>
+	
+	<section id="Hibernate_Validator-Checkconstraints-validationinfo">
+		<title>Validation information</title>
+		
+		<para>As a validation information carrier, Hibernate provides an array of
+			<classname>InvalidValue</classname>. Each <literal>InvalidValue</literal>
+			has a range of methods describing the individual issues.</para>
+		
+		<para><methodname>getBeanClass()</methodname> retrieves the failing bean
+			type</para>
+		
+		<para><methodname>getBean()</methodname>retrieves the failing instance (if
+			any i.e. not when using
+			<methodname>getPotentianInvalidValues()</methodname>)</para>
+		
+		<para><methodname>getValue()</methodname> retrieves the failing
+			value</para>
+		
+		<para><methodname>getMessage()</methodname> retrieves the proper
+			internationalized error message</para>
+		
+		<para><methodname>getRootBean()</methodname> retrieves the root bean
+			instance generating the issue (useful in conjunction with
+			<literal>@Valid</literal>), is null if getPotentianInvalidValues() is
+			used.</para>
+		
+		<para><literal>getPropertyPath()</literal> retrieves the dotted path of
+			the failing property starting from the root bean</para>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Defineconstraints.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Defineconstraints.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Defineconstraints.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,358 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Validator-Defineconstraints">
+	<title>Defining constraints</title>
+	
+	<section id="Hibernate_Validator-Defineconstraints-definition">
+		<title>What is a constraint?</title>
+		
+		<para>A constraint is a rule that a given element (field, property or
+			bean) has to comply to. The rule semantic is expressed by an annotation. A
+			constraint usually has some attributes used to parameterize the
+			constraints limits. The constraint applies to the annotated
+			element.</para>
+	</section>
+	
+	<section id="Hibernate_Validator-Defineconstraints-builtin">
+		<title>Built in constraints</title>
+		
+		<para>Hibernate Validator comes with some built-in constraints, which
+			covers most basic data checks. As we'll see later, you're not limited to
+			them, you can literally in a minute write your own constraints.</para>
+		
+		<table>
+			<title>Built-in constraints</title>
+			
+			<tgroup cols="4">
+				<colspec align="center" />
+				
+				<thead>
+					<row>
+						<entry>Annotation</entry>
+						
+						<entry>Apply on</entry>
+						
+						<entry>Runtime checking</entry>
+						
+						<entry>Hibernate Metadata impact</entry>
+					</row>
+				</thead>
+				
+				<tbody>
+					<row>
+						<entry>@Length(min=, max=)</entry>
+						
+						<entry>property (String)</entry>
+						
+						<entry>check if the string length match the range</entry>
+						
+						<entry>Column length will be set to max</entry>
+					</row>
+					
+					<row>
+						<entry>@Max(value=)</entry>
+						
+						<entry>property (numeric or string representation of a
+							numeric)</entry>
+						
+						<entry>check if the value is less than or equals to max</entry>
+						
+						<entry>Add a check constraint on the column</entry>
+					</row>
+					
+					<row>
+						<entry>@Min(value=)</entry>
+						
+						<entry>property (numeric or string representation of a
+							numeric)</entry>
+						
+						<entry>check if the value is more than or equals to min</entry>
+						
+						<entry>Add a check constraint on the column</entry>
+					</row>
+					
+					<row>
+						<entry>@NotNull</entry>
+						
+						<entry>property</entry>
+						
+						<entry>check if the value is not null</entry>
+						
+						<entry>Column(s) are not null</entry>
+					</row>
+					
+					<row>
+						<entry>@NotEmpty</entry>
+						
+						<entry>property</entry>
+						
+						<entry>check if the string is not null nor empty. Check if the
+							connection is not null nor empty</entry>
+						
+						<entry>Column(s) are not null (for String)</entry>
+					</row>
+					
+					<row>
+						<entry>@Past</entry>
+						
+						<entry>property (date or calendar)</entry>
+						
+						<entry>check if the date is in the past</entry>
+						
+						<entry>Add a check constraint on the column</entry>
+					</row>
+					
+					<row>
+						<entry>@Future</entry>
+						
+						<entry>property (date or calendar)</entry>
+						
+						<entry>check if the date is in the future</entry>
+						
+						<entry>none</entry>
+					</row>
+					
+					<row>
+						<entry>@Pattern(regex="regexp", flag=) or @Patterns(
+							{@Pattern(...)} )</entry>
+						
+						<entry>property (string)</entry>
+						
+						<entry>check if the property match the regular expression given a
+							match flag (see <classname>java.util.regex.Pattern </classname>
+							)</entry>
+						
+						<entry>none</entry>
+					</row>
+					
+					<row>
+						<entry>@Range(min=, max=)</entry>
+						
+						<entry>property (numeric or string representation of a
+							numeric)</entry>
+						
+						<entry>check if the value is between min and max
+							(included)</entry>
+						
+						<entry>Add a check constraint on the column</entry>
+					</row>
+					
+					<row>
+						<entry>@Size(min=, max=)</entry>
+						
+						<entry>property (array, collection, map)</entry>
+						
+						<entry>check if the element size is between min and max
+							(included)</entry>
+						
+						<entry>none</entry>
+					</row>
+					
+					<row>
+						<entry>@AssertFalse</entry>
+						
+						<entry>property</entry>
+						
+						<entry>check that the method evaluates to false (useful for
+							constraints expressed in code rather than annotations)</entry>
+						
+						<entry>none</entry>
+					</row>
+					
+					<row>
+						<entry>@AssertTrue</entry>
+						
+						<entry>property</entry>
+						
+						<entry>check that the method evaluates to true (useful for
+							constraints expressed in code rather than annotations)</entry>
+						
+						<entry>none</entry>
+					</row>
+					
+					<row>
+						<entry>@Valid</entry>
+						
+						<entry>property (object)</entry>
+						
+						<entry>perform validation recursively on the associated object. If
+							the object is a Collection or an array, the elements are validated
+							recursively. If the object is a Map, the value elements are
+							validated recursively.</entry>
+						
+						<entry>none</entry>
+					</row>
+					
+					<row>
+						<entry>@Email</entry>
+						
+						<entry>property (String)</entry>
+						
+						<entry>check whether the string is conform to the email address
+							specification</entry>
+						
+						<entry>none</entry>
+					</row>
+					
+					<row>
+						<entry>@CreditCardNumber</entry>
+						
+						<entry>property (String)</entry>
+						
+						<entry>check whether the string is a well formated credit card
+							number (derivative of the Luhn algorithm)</entry>
+						
+						<entry>none</entry>
+					</row>
+					
+					<row>
+						<entry>@Digits</entry>
+						
+						<entry>property (numeric or string representation of a
+							numeric)</entry>
+						
+						<entry>check whether the property is a number having up to
+							<literal>integerDigits</literal> integer digits and
+							<literal>fractionalDigits</literal> fractonal digits</entry>
+						
+						<entry>define column precision and scale</entry>
+					</row>
+					
+					<row>
+						<entry>@EAN</entry>
+						
+						<entry>property (string)</entry>
+						
+						<entry>check whether the string is a properly formated EAN or
+							UPC-A code</entry>
+						
+						<entry>none</entry>
+					</row>
+					
+					<row>
+						<entry>@Digits</entry>
+						
+						<entry>property (numeric or string representation of a
+							numeric)</entry>
+						
+						<entry>check whether the property is a number having up to
+							<literal>integerDigits</literal> integer digits and
+							<literal>fractionalDigits</literal> fractonal digits</entry>
+						
+						<entry>define column precision and scale</entry>
+					</row>
+				</tbody>
+			</tgroup>
+		</table>
+	</section>
+	
+	<section id="Hibernate_Validator-Defineconstraints-error">
+		<title>Error messages</title>
+		
+		<para>Hibernate Validator comes with a default set of error messages
+			translated in about ten languages (if yours is not part of it, please sent
+			us a patch). You can override those messages by creating a
+			<filename>ValidatorMessages.properties</filename> or (
+			<filename>ValidatorMessages_loc.properties</filename> ) and override the
+			needed keys. You can even add your own additional set of messages while
+			writing your validator annotations. If Hibernate Validator cannot resolve
+			a key from your resourceBundle nor from ValidatorMessage, it falls back to
+			the default built-in values.</para>
+		
+		<para>Alternatively you can provide a
+			<classname>ResourceBundle</classname> while checking programmatically the
+			validation rules on a bean or if you want a completly different
+			interpolation mechanism, you can provide an implementation of
+			<literal>org.hibernate.validator.MessageInterpolator</literal> (check the
+			JavaDoc for more informations).</para>
+	</section>
+	
+	<section id="Hibernate_Validator-Defineconstraints-own">
+		<title>Writing your own constraints</title>
+		
+		<para>Extending the set of built-in constraints is extremely easy. Any
+			constraint consists of two pieces: the constraint
+			<emphasis>descriptor</emphasis> (the annotation) and the constraint
+			<emphasis>validator</emphasis> (the implementation class). Here is a
+			simple user-defined descriptor:</para>
+		
+		<programlisting language="java"><xi:include href="extras/define_descriptor.javat" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+		
+		<para><literal>type</literal> is a parameter describing how the property
+			should to be capitalized. This is a user parameter fully dependant on the
+			annotation business.</para>
+		
+		<para><literal>message</literal> is the default string used to describe
+			the constraint violation and is mandatory. You can hard code the string or
+			you can externalize part/all of it through the Java ResourceBundle
+			mechanism. Parameters values are going to be injected inside the message
+			when the <literal>{parameter}</literal> string is found (in our example
+			<literal>Capitalization is not {type}</literal> would generate
+			<literal>Capitalization is not FIRST</literal> ), externalizing the whole
+			string in <filename>ValidatorMessages.properties</filename> is considered
+			good practice. See <xref linkend="Hibernate_Validator-Defineconstraints-error" />
+			.</para>
+		
+		<programlisting language="java"><xi:include href="extras/validator_capitalized.javat" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+		
+		<para>As you can see the {} notation is recursive.</para>
+		
+		<para>To link a descriptor to its validator implementation, we use the
+			<literal>@ValidatorClass</literal> meta-annotation. The validator class
+			parameter must name a class which implements
+			<literal>Validator&lt;ConstraintAnnotation&gt;</literal> .</para>
+		
+		<para>We now have to implement the validator (ie. the rule checking
+			implementation). A validation implementation can check the value of the a
+			property (by implementing <literal>PropertyConstraint</literal> ) and/or
+			can modify the hibernate mapping metadata to express the constraint at the
+			database level (by implementing
+			<literal>PersistentClassConstraint</literal> )</para>
+		
+		<programlisting language="java"><xi:include href="extras/validator_implementation.javat" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+		
+		<para>The <literal>isValid()</literal> method should return false if the
+			constraint has been violated. For more examples, refer to the built-in
+			validator implementations.</para>
+		
+		<para>We only have seen property level validation, but you can write a
+			Bean level validation annotation. Instead of receiving the return instance
+			of a property, the bean itself will be passed to the validator. To
+			activate the validation checking, just annotated the bean itself instead.
+			A small sample can be found in the unit test suite.</para>
+		
+		<para>If your constraint can be applied multiple times (with different
+			parameters) on the same property or type, you can use the following
+			annotation form:</para>
+		
+		<programlisting language="java"><xi:include href="extras/constraint_annotation.javat" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+		
+		<para>Basically an annotation containing the value attribute as an array
+			of validator annotations.</para>
+	</section>
+	
+	<section id="Hibernate_Validator-Defineconstraints-domainmodel">
+		<title>Annotating your domain model</title>
+		
+		<para>Since you are already familiar with annotations now, the syntax
+			should be very familiar.</para>
+		
+		<programlisting language="java"><xi:include href="extras/annotation_syntax.javat" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+		
+		<para>While the example only shows public property validation, you can
+			also annotate fields of any kind of visibility.</para>
+		
+		<programlisting language="java"><xi:include href="extras/annotate_constraint.javat" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+		
+		<para>You can also annotate interfaces. Hibernate Validator will check all
+			superclasses and interfaces extended or implemented by a given bean to
+			read the appropriate validator annotations.</para>
+		
+		<programlisting language="java"><xi:include href="extras/annotate_interface.javat" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include></programlisting>
+		
+		<para>The name property will be checked for nullity when the Dog bean is
+			validated.</para>
+	</section>
+</chapter>
\ No newline at end of file

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Feedback.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Feedback.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Feedback.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,11 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+]>
+
+
+<section id="Feedback">
+	<title>Feedback</title>
+	<para>
+			If you spot a typo in this guide, or if you have thought of a way to make this manual better, we would love to hear from you! Submit a report in <ulink url="http://jira.jboss.com/jira/browse/JBPAPP">JIRA</ulink> against the Product: JBoss Enterprise Application Platform, Version: <replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</emphasis>. If you have a suggestion for improving the documentation, try to be as specific as possible. If you have found an error, include the section number and some of the surrounding text so we can find it easily.
+	</para>
+</section>

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Hibernate_Validator_Reference_Guide_CP05.ent
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Hibernate_Validator_Reference_Guide_CP05.ent	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Hibernate_Validator_Reference_Guide_CP05.ent	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,3 @@
+<!ENTITY PRODUCT "Documentation">
+<!ENTITY BOOKID "Hibernate_Validator">
+<!ENTITY YEAR "2009">

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Hibernate_Validator_Reference_Guide_CP05.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Hibernate_Validator_Reference_Guide_CP05.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Hibernate_Validator_Reference_Guide_CP05.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,13 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Defineconstraints.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Checkconstraints.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</book>
+

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Introduction.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Introduction.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Introduction.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,42 @@
+<?xml version='1.0'?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Hibernate_Validator-Introduction">
+		<title>Introduction</title>
+	   <para>
+		   Annotations are a very convenient and elegant way to specify
+		   invariant constraints for a domain model. You can, for example, express
+		   that a property should never be null, that the account balance should be
+		   strictly positive, etc. These domain model constraints are declared in the
+		   bean itself by annotating its properties. A validator can then read them
+		   and check for constraint violations. The validation mechanism can be
+		   executed in different layers in your application without having to
+		   duplicate any of these rules (presentation layer, data access layer).
+		   Following the DRY principle, Hibernate Validator has been designed for
+		   that purpose.
+	   </para>
+	   
+	   <para>	Hibernate Validator works at two levels. First, it is able to check
+		   in-memory instances of a class for constraint violations. Second, it can
+		   apply the constraints to the Hibernate metamodel and incorporate them into
+		   the generated database schema.</para>
+	   
+	   <para>	Each constraint annotation is associated to a validator
+		   implementation responsible for checking the constraint on the entity
+		   instance. A validator can also (optionally) apply the constraint to the
+		   Hibernate metamodel, allowing Hibernate to generate DDL that expresses the
+		   constraint. With the appropriate event listener, you can execute the
+		   checking operation on inserts and updates done by Hibernate. Hibernate
+		   Validator is not limited to use with Hibernate. You can easily use it
+		   anywhere in your application as well as with any Java Persistence provider
+		   (entity listener provided).</para>
+	   
+	   <para>	When checking instances at runtime, Hibernate Validator returns
+		   information about constraint violations in an array of
+		   <classname>InvalidValue</classname> s. Among other information, the
+		   <classname>InvalidValue</classname> contains an error description message
+		   that can embed the parameter values bundle with the annotation (eg. length
+		   limit), and message strings that may be externalized to a <classname>ResourceBundle</classname> .</para>
+   	
+</chapter>  

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Preface.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Preface.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Preface.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,11 @@
+<?xml version='1.0'?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<preface id="JDK6_Compatibility_Notes-Preface">
+	<title>Preface</title>
+	<para>
+	</para>
+	<xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</preface>

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Revision_History.xml
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Revision_History.xml	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/Revision_History.xml	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname>Danielle</firstname>
+					<surname>Coulson</surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member>Content reformat</member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotate_constraint.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotate_constraint.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotate_constraint.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,6 @@
+ at MyBeanConstraint(max=45
+public class Dog {
+ at AssertTrue private boolean isMale;
+ at NotNull protected String getName() { ... };
+...
+}

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotate_interface.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotate_interface.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotate_interface.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,9 @@
+public interface Named {
+ at NotNull String getName();
+...
+}
+
+public class Dog implements Named {
+ at AssertTrue private boolean isMale;
+public String getName() { ... };
+}

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotation_syntax.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotation_syntax.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/annotation_syntax.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,55 @@
+public class Address {
+private String line1;
+private String line2;
+private String zip;
+private String state;
+private String country;
+private long id;
+
+// a not null string of 20 characters maximum
+ at Length(max=20)
+ at NotNull
+public String getCountry() {
+return country;
+}
+
+// a non null string
+ at NotNull
+public String getLine1() {
+return line1;
+}
+
+//no constraint
+public String getLine2() {
+return line2;
+}
+
+// a not null string of 3 characters maximum
+ at Length(max=3) @NotNull
+public String getState() {
+return state;
+}
+
+// a not null numeric string of 5 characters maximum
+// if the string is longer, the message will
+//be searched in the resource bundle at key 'long'
+ at Length(max=5, message="{long}")
+ at Pattern(regex="[0-9]+")
+ at NotNull
+public String getZip() {
+return zip;
+}
+
+// should always be true
+ at AssertTrue
+public boolean isValid() {
+return true;
+}
+
+// a numeric between 1 and 2000
+ at Id @Min(1)
+ at Range(max=2000)
+public long getId() {
+return id;
+}
+}

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/app_validate.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/app_validate.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/app_validate.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,5 @@
+ClassValidator personValidator = new ClassValidator( Person.class );
+ClassValidator addressValidator = new ClassValidator( Address.class,
+ResourceBundle.getBundle("messages", Locale.ENGLISH) );
+InvalidValue[] validationMessages =
+addressValidator.getInvalidValues(address);

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/check_property.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/check_property.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/check_property.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,10 @@
+ClassValidator addressValidator = new ClassValidator( Address.class,
+ResourceBundle.getBundle("messages", Locale.ENGLISH) );
+
+//only get city property invalid values
+InvalidValue[] validationMessages =
+addressValidator.getInvalidValues(address, "city");
+
+//only get potential city property invalid values
+InvalidValue[] validationMessages =
+addressValidator.getPotentialInvalidValues("city", "Paris")

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/class_validate.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/class_validate.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/class_validate.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,5 @@
+ at Entity
+    @EntityListeners( JPAValidateListener.class )
+    public class Submarine {
+    ...
+    }

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/constraint_annotation.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/constraint_annotation.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/constraint_annotation.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,14 @@
+ at Target(METHOD)
+ at Retention(RUNTIME)
+ at Documented
+public @interface Patterns {
+Pattern[] value();
+}
+
+ at Target(METHOD)
+ at Retention(RUNTIME)
+ at Documented
+ at ValidatorClass(PatternValidator.class)
+public @interface Pattern {
+String regexp();
+}

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/define_descriptor.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/define_descriptor.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/define_descriptor.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,8 @@
+ at ValidatorClass(CapitalizedValidator.class)
+ at Target(METHOD)
+ at Retention(RUNTIME)
+ at Documented
+public @interface Capitalized {
+CapitalizeType type() default Capitalize.FIRST;
+String message() default "has incorrect capitalization"
+}

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/hibernate_config.xmlt
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/hibernate_config.xmlt	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/hibernate_config.xmlt	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,11 @@
+<hibernate-configuration>
+...
+<event type="pre-update">
+<listener
+class="org.hibernate.validator.event.ValidateEventListener"/>
+</event>
+<event type="pre-insert">
+<listener
+class="org.hibernate.validator.event.ValidateEventListener"/>
+</event>
+</hibernate-configuration>

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/pres_validation.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/pres_validation.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/pres_validation.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,18 @@
+<h:form>
+<div>
+<h:messages/>
+</div>
+<s:validateAll>
+<div>
+Country:
+<h:inputText value="#{location.country}" required="true"/>
+</div>
+<div>
+Zip code:
+<h:inputText value="#{location.zip}" required="true"/>
+</div>
+<div>
+<h:commandButton/>
+</div>
+</s:validateAll>
+</h:form>

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/userdefined_descriptor.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/userdefined_descriptor.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/userdefined_descriptor.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,8 @@
+ at ValidatorClass(CapitalizedValidator.class)
+   @Target(METHOD)
+   @Retention(RUNTIME)
+   @Documented
+   public @interface Capitalized {
+   CapitalizeType type() default Capitalize.FIRST;
+   String message() default "has incorrect capitalization"
+   }

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/validator_capitalized.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/validator_capitalized.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/validator_capitalized.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,12 @@
+ at ValidatorClass(CapitalizedValidator.class)
+ at Target(METHOD)
+ at Retention(RUNTIME)
+ at Documented
+public @interface Capitalized {
+CapitalizeType type() default Capitalize.FIRST;
+String message() default "{validator.capitalized}";
+}
+
+
+#in ValidatorMessages.properties
+validator.capitalized = Capitalization is not {type}

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/validator_implementation.javat
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/validator_implementation.javat	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/extras/validator_implementation.javat	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,24 @@
+public class CapitalizedValidator
+implements Validator<Capitalized>, PropertyConstraint {
+private CapitalizeType type;
+
+//part of the Validator<Annotation> contract,
+//allows to get and use the annotation values
+public void initialize(Capitalized parameters) {
+type = parameters.type();
+}
+
+//part of the property constraint contract
+public boolean isValid(Object value) {
+if (value==null) return true;
+if ( !(value instanceof String) ) return false;
+String string = (String) value;
+if (type == CapitalizeType.ALL) {
+return string.equals( string.toUpperCase() );
+}
+else {
+String first = string.substring(0,1);
+return first.equals( first.toUpperCase();
+}
+}
+}

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/images/hibernate_logo_a.png
===================================================================
(Binary files differ)


Property changes on: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/images/hibernate_logo_a.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/images/icon.svg
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/images/icon.svg	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/en-US/images/icon.svg	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Author_Group.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Author_Group.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Author_Group.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,29 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:03+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:6
+#, no-c-format
+msgid "<firstname>Hibernate Development Team</firstname> <surname></surname>"
+msgstr ""
+
+#. Tag: editor
+#: Author_Group.xml:10
+#, no-c-format
+msgid ""
+"<firstname>Red Hat Inc. Engineering Content Services</firstname> <surname></"
+"surname>"
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Book_Info.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Book_Info.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Book_Info.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,49 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:03+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "Hibernate Validator Reference Guide CP05 FP01"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid ""
+"For use with JBoss Enterprise Application Platform 4.3.0 Cumulative Patch 5 "
+"Feature Pack 1"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:14
+#, no-c-format
+msgid ""
+"This book is a Reference Guide to Hibernate Validator for JBoss Enterprise "
+"Application Platform 4.3.0 CP05 FP01"
+msgstr ""
+
+#. Tag: phrase
+#: Book_Info.xml:23
+#, no-c-format
+msgid "Logo"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:28
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Checkconstraints.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Checkconstraints.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Checkconstraints.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,341 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:03+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Checkconstraints.xml:6
+#, no-c-format
+msgid "Using the Validator framework"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:8
+#, no-c-format
+msgid ""
+"Hibernate Validator is intended to be used to implement multi-layered data "
+"validation, where constraints are expressed in a single place (the annotated "
+"domain model) and checked in various different layers of the application."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:13
+#, no-c-format
+msgid "This chapter will cover Hibernate Validator usage for different layers"
+msgstr ""
+
+#. Tag: title
+#: Checkconstraints.xml:17
+#, no-c-format
+msgid "Database schema-level validation"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:19
+#, no-c-format
+msgid ""
+"Out of the box, Hibernate Annotations will translate the constraints you "
+"have defined for your entities into mapping metadata. For example, if a "
+"property of your entity is annotated <literal>@NotNull</literal>, its "
+"columns will be declared as <literal>not null</literal> in the DDL schema "
+"generated by Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:25
+#, no-c-format
+msgid ""
+"Using hbm2ddl, domain model constraints will be expressed into the database "
+"schema."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:28
+#, no-c-format
+msgid ""
+"If, for some reason, the feature needs to be disabled, set "
+"<literal>hibernate.validator.apply_to_ddl</literal> to <literal>false</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Checkconstraints.xml:34
+#, no-c-format
+msgid "ORM integration"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:36
+#, no-c-format
+msgid ""
+"Hibernate Validator integrates with both Hibernate and all pure Java "
+"Persistence providers"
+msgstr ""
+
+#. Tag: title
+#: Checkconstraints.xml:40
+#, no-c-format
+msgid "Hibernate event-based validation"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:42
+#, no-c-format
+msgid ""
+"Hibernate Validator has two built-in Hibernate event listeners. Whenever a "
+"<literal>PreInsertEvent</literal> or <literal>PreUpdateEvent</literal> "
+"occurs, the listeners will verify all constraints of the entity instance and "
+"throw an exception if any constraint is violated. Objects will be checked "
+"before any inserts and before any updates made by Hibernate. This includes "
+"changes applied by cascade. This is the most convenient and the easiest way "
+"to activate the validation process. On constraint violation, the event will "
+"raise a runtime <classname>InvalidStateException</classname>, which contains "
+"an array of <literal>InvalidValue</literal>s describing each failure."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:54
+#, no-c-format
+msgid ""
+"If Hibernate Validator is present in the classpath, Hibernate Annotations "
+"(or Hibernate EntityManager) will use it transparently. If, for some reason, "
+"you want to disable this integration, set <literal>hibernate.validator."
+"autoregister_listeners</literal> to false."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:61
+#, no-c-format
+msgid ""
+"If the beans are not annotated with validation annotations, there is no "
+"runtime performance cost."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:65
+#, no-c-format
+msgid ""
+"In case you need to manually set the event listeners for Hibernate Core, use "
+"the following configuration in <literal>hibernate.cfg.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Checkconstraints.xml:69
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/hibernate_config.xmlt\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: title
+#: Checkconstraints.xml:73
+#, no-c-format
+msgid "Java Persistence event-based validation"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:75
+#, no-c-format
+msgid ""
+"Hibernate Validator is not tied to Hibernate for event based validation: a "
+"Java Persistence entity listener is available. Whenever an listened entity "
+"is persisted or updated, Hibernate Validator will verify all constraints of "
+"the entity instance and throw an exception if any constraint is violated. "
+"Basically, objects will be checked before any inserts and before any updates "
+"made by the Java Persistence provider. This includes changes applied by "
+"cascade! On constraint violation, the event will raise a runtime "
+"<classname>InvalidStateException</classname> which contains an array of "
+"<literal>InvalidValue</literal>s describing each failure."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:86
+#, no-c-format
+msgid "Here is how to make a class validatable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Checkconstraints.xml:88
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/class_validate.javat\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:91
+#, no-c-format
+msgid ""
+"Compared to the Hibernate event, the Java Persistence listener has two "
+"drawbacks. You need to define the entity listener on every validatable "
+"entity. The DDL generated by your provider will not reflect the constraints."
+msgstr ""
+
+#. Tag: title
+#: Checkconstraints.xml:100
+#, no-c-format
+msgid "Application-level validation"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:102
+#, no-c-format
+msgid "Hibernate Validator can be applied anywhere in your application code."
+msgstr ""
+
+#. Tag: programlisting
+#: Checkconstraints.xml:105
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/app_validate.javat\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:107
+#, no-c-format
+msgid ""
+"The first two lines prepare the Hibernate Validator for class checking. The "
+"first one relies upon the error messages embedded in Hibernate Validator "
+"(see <xref linkend=\"Hibernate_Validator-Defineconstraints-error\"/>), the "
+"second one uses a resource bundle for these messages. It is considered a "
+"good practice to execute these lines once and cache the validator instances."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:112
+#, no-c-format
+msgid ""
+"The third line actually validates the <literal>Address</literal> instance "
+"and returns an array of <literal>InvalidValue</literal>s. Your application "
+"logic will then be able to react to the failure."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:116
+#, no-c-format
+msgid ""
+"You can also check a particular property instead of the whole bean. This "
+"might be useful for property per property user interaction"
+msgstr ""
+
+#. Tag: programlisting
+#: Checkconstraints.xml:119
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/check_property.javat\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: title
+#: Checkconstraints.xml:123
+#, no-c-format
+msgid "Presentation layer validation"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:125
+#, no-c-format
+msgid ""
+"When working with JSF and <productname>JBoss Seam</productname>, one can "
+"triggers the validation process at the presentation layer using Seam's JSF "
+"tags <literal>&lt;s:validate&gt;</literal> and <literal>&lt;s:validateAll/"
+"&gt;</literal>, letting the constraints be expressed on the model, and the "
+"violations presented in the view."
+msgstr ""
+
+#. Tag: programlisting
+#: Checkconstraints.xml:131
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/pres_validation.javat\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:133
+#, no-c-format
+msgid ""
+"Going even further, and adding <productname>Ajax4JSF</productname> to the "
+"loop will bring client side validation with just a couple of additional JSF "
+"tags, again without validation definition duplication."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:138
+#, no-c-format
+msgid ""
+"Check the <ulink url=\"http://www.jboss.com/products/seam\">JBoss Seam</"
+"ulink> documentation for more information."
+msgstr ""
+
+#. Tag: title
+#: Checkconstraints.xml:143
+#, no-c-format
+msgid "Validation information"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:145
+#, no-c-format
+msgid ""
+"As a validation information carrier, Hibernate provides an array of "
+"<classname>InvalidValue</classname>. Each <literal>InvalidValue</literal> "
+"has a range of methods describing the individual issues."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:149
+#, no-c-format
+msgid "<methodname>getBeanClass()</methodname> retrieves the failing bean type"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:152
+#, no-c-format
+msgid ""
+"<methodname>getBean()</methodname>retrieves the failing instance (if any i."
+"e. not when using <methodname>getPotentianInvalidValues()</methodname>)"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:156
+#, no-c-format
+msgid "<methodname>getValue()</methodname> retrieves the failing value"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:159
+#, no-c-format
+msgid ""
+"<methodname>getMessage()</methodname> retrieves the proper internationalized "
+"error message"
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:162
+#, no-c-format
+msgid ""
+"<methodname>getRootBean()</methodname> retrieves the root bean instance "
+"generating the issue (useful in conjunction with <literal>@Valid</literal>), "
+"is null if getPotentianInvalidValues() is used."
+msgstr ""
+
+#. Tag: para
+#: Checkconstraints.xml:167
+#, no-c-format
+msgid ""
+"<literal>getPropertyPath()</literal> retrieves the dotted path of the "
+"failing property starting from the root bean"
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Defineconstraints.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Defineconstraints.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Defineconstraints.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,618 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:03+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Defineconstraints.xml:6
+#, no-c-format
+msgid "Defining constraints"
+msgstr ""
+
+#. Tag: title
+#: Defineconstraints.xml:9
+#, no-c-format
+msgid "What is a constraint?"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:11
+#, no-c-format
+msgid ""
+"A constraint is a rule that a given element (field, property or bean) has to "
+"comply to. The rule semantic is expressed by an annotation. A constraint "
+"usually has some attributes used to parameterize the constraints limits. The "
+"constraint applies to the annotated element."
+msgstr ""
+
+#. Tag: title
+#: Defineconstraints.xml:19
+#, no-c-format
+msgid "Built in constraints"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:21
+#, no-c-format
+msgid ""
+"Hibernate Validator comes with some built-in constraints, which covers most "
+"basic data checks. As we'll see later, you're not limited to them, you can "
+"literally in a minute write your own constraints."
+msgstr ""
+
+#. Tag: title
+#: Defineconstraints.xml:26
+#, no-c-format
+msgid "Built-in constraints"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:33
+#, no-c-format
+msgid "Annotation"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:35
+#, no-c-format
+msgid "Apply on"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:37
+#, no-c-format
+msgid "Runtime checking"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:39
+#, no-c-format
+msgid "Hibernate Metadata impact"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:45
+#, no-c-format
+msgid "@Length(min=, max=)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:47 Defineconstraints.xml:191
+#: Defineconstraints.xml:202
+#, no-c-format
+msgid "property (String)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:49
+#, no-c-format
+msgid "check if the string length match the range"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:51
+#, no-c-format
+msgid "Column length will be set to max"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:55
+#, no-c-format
+msgid "@Max(value=)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:57 Defineconstraints.xml:68 Defineconstraints.xml:133
+#: Defineconstraints.xml:213 Defineconstraints.xml:237
+#, no-c-format
+msgid "property (numeric or string representation of a numeric)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:60
+#, no-c-format
+msgid "check if the value is less than or equals to max"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:62 Defineconstraints.xml:73 Defineconstraints.xml:104
+#: Defineconstraints.xml:139
+#, no-c-format
+msgid "Add a check constraint on the column"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:66
+#, no-c-format
+msgid "@Min(value=)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:71
+#, no-c-format
+msgid "check if the value is more than or equals to min"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:77
+#, no-c-format
+msgid "@NotNull"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:79 Defineconstraints.xml:89 Defineconstraints.xml:156
+#: Defineconstraints.xml:167
+#, no-c-format
+msgid "property"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:81
+#, no-c-format
+msgid "check if the value is not null"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:83
+#, no-c-format
+msgid "Column(s) are not null"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:87
+#, no-c-format
+msgid "@NotEmpty"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:91
+#, no-c-format
+msgid ""
+"check if the string is not null nor empty. Check if the connection is not "
+"null nor empty"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:94
+#, no-c-format
+msgid "Column(s) are not null (for String)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:98
+#, no-c-format
+msgid "@Past"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:100 Defineconstraints.xml:110
+#, no-c-format
+msgid "property (date or calendar)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:102
+#, no-c-format
+msgid "check if the date is in the past"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:108
+#, no-c-format
+msgid "@Future"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:112
+#, no-c-format
+msgid "check if the date is in the future"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:114 Defineconstraints.xml:127
+#: Defineconstraints.xml:150 Defineconstraints.xml:161
+#: Defineconstraints.xml:172 Defineconstraints.xml:185
+#: Defineconstraints.xml:196 Defineconstraints.xml:207
+#: Defineconstraints.xml:231
+#, no-c-format
+msgid "none"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:118
+#, no-c-format
+msgid "@Pattern(regex=\"regexp\", flag=) or @Patterns( {@Pattern(...)} )"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:121 Defineconstraints.xml:226
+#, no-c-format
+msgid "property (string)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:123
+#, no-c-format
+msgid ""
+"check if the property match the regular expression given a match flag (see "
+"<classname>java.util.regex.Pattern </classname> )"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:131
+#, no-c-format
+msgid "@Range(min=, max=)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:136
+#, no-c-format
+msgid "check if the value is between min and max (included)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:143
+#, no-c-format
+msgid "@Size(min=, max=)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:145
+#, no-c-format
+msgid "property (array, collection, map)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:147
+#, no-c-format
+msgid "check if the element size is between min and max (included)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:154
+#, no-c-format
+msgid "@AssertFalse"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:158
+#, no-c-format
+msgid ""
+"check that the method evaluates to false (useful for constraints expressed "
+"in code rather than annotations)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:165
+#, no-c-format
+msgid "@AssertTrue"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:169
+#, no-c-format
+msgid ""
+"check that the method evaluates to true (useful for constraints expressed in "
+"code rather than annotations)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:176
+#, no-c-format
+msgid "@Valid"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:178
+#, no-c-format
+msgid "property (object)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:180
+#, no-c-format
+msgid ""
+"perform validation recursively on the associated object. If the object is a "
+"Collection or an array, the elements are validated recursively. If the "
+"object is a Map, the value elements are validated recursively."
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:189
+#, no-c-format
+msgid "@Email"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:193
+#, no-c-format
+msgid "check whether the string is conform to the email address specification"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:200
+#, no-c-format
+msgid "@CreditCardNumber"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:204
+#, no-c-format
+msgid ""
+"check whether the string is a well formated credit card number (derivative "
+"of the Luhn algorithm)"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:211 Defineconstraints.xml:235
+#, no-c-format
+msgid "@Digits"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:216 Defineconstraints.xml:240
+#, no-c-format
+msgid ""
+"check whether the property is a number having up to <literal>integerDigits</"
+"literal> integer digits and <literal>fractionalDigits</literal> fractonal "
+"digits"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:220 Defineconstraints.xml:244
+#, no-c-format
+msgid "define column precision and scale"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:224
+#, no-c-format
+msgid "@EAN"
+msgstr ""
+
+#. Tag: entry
+#: Defineconstraints.xml:228
+#, no-c-format
+msgid "check whether the string is a properly formated EAN or UPC-A code"
+msgstr ""
+
+#. Tag: title
+#: Defineconstraints.xml:252
+#, no-c-format
+msgid "Error messages"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:254
+#, no-c-format
+msgid ""
+"Hibernate Validator comes with a default set of error messages translated in "
+"about ten languages (if yours is not part of it, please sent us a patch). "
+"You can override those messages by creating a <filename>ValidatorMessages."
+"properties</filename> or ( <filename>ValidatorMessages_loc.properties</"
+"filename> ) and override the needed keys. You can even add your own "
+"additional set of messages while writing your validator annotations. If "
+"Hibernate Validator cannot resolve a key from your resourceBundle nor from "
+"ValidatorMessage, it falls back to the default built-in values."
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:264
+#, no-c-format
+msgid ""
+"Alternatively you can provide a <classname>ResourceBundle</classname> while "
+"checking programmatically the validation rules on a bean or if you want a "
+"completly different interpolation mechanism, you can provide an "
+"implementation of <literal>org.hibernate.validator.MessageInterpolator</"
+"literal> (check the JavaDoc for more informations)."
+msgstr ""
+
+#. Tag: title
+#: Defineconstraints.xml:273
+#, no-c-format
+msgid "Writing your own constraints"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:275
+#, no-c-format
+msgid ""
+"Extending the set of built-in constraints is extremely easy. Any constraint "
+"consists of two pieces: the constraint <emphasis>descriptor</emphasis> (the "
+"annotation) and the constraint <emphasis>validator</emphasis> (the "
+"implementation class). Here is a simple user-defined descriptor:"
+msgstr ""
+
+#. Tag: programlisting
+#: Defineconstraints.xml:281
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/define_descriptor.javat\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:283
+#, no-c-format
+msgid ""
+"<literal>type</literal> is a parameter describing how the property should to "
+"be capitalized. This is a user parameter fully dependant on the annotation "
+"business."
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:287
+#, no-c-format
+msgid ""
+"<literal>message</literal> is the default string used to describe the "
+"constraint violation and is mandatory. You can hard code the string or you "
+"can externalize part/all of it through the Java ResourceBundle mechanism. "
+"Parameters values are going to be injected inside the message when the "
+"<literal>{parameter}</literal> string is found (in our example "
+"<literal>Capitalization is not {type}</literal> would generate "
+"<literal>Capitalization is not FIRST</literal> ), externalizing the whole "
+"string in <filename>ValidatorMessages.properties</filename> is considered "
+"good practice. See <xref linkend=\"Hibernate_Validator-Defineconstraints-"
+"error\"/> ."
+msgstr ""
+
+#. Tag: programlisting
+#: Defineconstraints.xml:298
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/validator_capitalized.javat\" parse=\"text\" xmlns:"
+"xi=\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:300
+#, no-c-format
+msgid "As you can see the {} notation is recursive."
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:302
+#, no-c-format
+msgid ""
+"To link a descriptor to its validator implementation, we use the "
+"<literal>@ValidatorClass</literal> meta-annotation. The validator class "
+"parameter must name a class which implements <literal>Validator&lt;"
+"ConstraintAnnotation&gt;</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:307
+#, no-c-format
+msgid ""
+"We now have to implement the validator (ie. the rule checking "
+"implementation). A validation implementation can check the value of the a "
+"property (by implementing <literal>PropertyConstraint</literal> ) and/or can "
+"modify the hibernate mapping metadata to express the constraint at the "
+"database level (by implementing <literal>PersistentClassConstraint</"
+"literal> )"
+msgstr ""
+
+#. Tag: programlisting
+#: Defineconstraints.xml:314
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/validator_implementation.javat\" parse=\"text\" "
+"xmlns:xi=\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:316
+#, no-c-format
+msgid ""
+"The <literal>isValid()</literal> method should return false if the "
+"constraint has been violated. For more examples, refer to the built-in "
+"validator implementations."
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:320
+#, no-c-format
+msgid ""
+"We only have seen property level validation, but you can write a Bean level "
+"validation annotation. Instead of receiving the return instance of a "
+"property, the bean itself will be passed to the validator. To activate the "
+"validation checking, just annotated the bean itself instead. A small sample "
+"can be found in the unit test suite."
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:326
+#, no-c-format
+msgid ""
+"If your constraint can be applied multiple times (with different parameters) "
+"on the same property or type, you can use the following annotation form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Defineconstraints.xml:330
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/constraint_annotation.javat\" parse=\"text\" xmlns:"
+"xi=\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:332
+#, no-c-format
+msgid ""
+"Basically an annotation containing the value attribute as an array of "
+"validator annotations."
+msgstr ""
+
+#. Tag: title
+#: Defineconstraints.xml:337
+#, no-c-format
+msgid "Annotating your domain model"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:339
+#, no-c-format
+msgid ""
+"Since you are already familiar with annotations now, the syntax should be "
+"very familiar."
+msgstr ""
+
+#. Tag: programlisting
+#: Defineconstraints.xml:342
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/annotation_syntax.javat\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:344
+#, no-c-format
+msgid ""
+"While the example only shows public property validation, you can also "
+"annotate fields of any kind of visibility."
+msgstr ""
+
+#. Tag: programlisting
+#: Defineconstraints.xml:347
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/annotate_constraint.javat\" parse=\"text\" xmlns:"
+"xi=\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:349
+#, no-c-format
+msgid ""
+"You can also annotate interfaces. Hibernate Validator will check all "
+"superclasses and interfaces extended or implemented by a given bean to read "
+"the appropriate validator annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Defineconstraints.xml:353
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/annotate_interface.javat\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Defineconstraints.xml:355
+#, no-c-format
+msgid ""
+"The name property will be checked for nullity when the Dog bean is validated."
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Feedback.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Feedback.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Feedback.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,35 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:03+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Feedback.xml:7
+#, no-c-format
+msgid "Feedback"
+msgstr ""
+
+#. Tag: para
+#: Feedback.xml:8
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Hibernate_Validator_Reference_Guide_CP05_FP01.pot
===================================================================

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Introduction.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Introduction.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Introduction.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,72 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:03+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Introduction.xml:6
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:7
+#, no-c-format
+msgid ""
+"Annotations are a very convenient and elegant way to specify invariant "
+"constraints for a domain model. You can, for example, express that a "
+"property should never be null, that the account balance should be strictly "
+"positive, etc. These domain model constraints are declared in the bean "
+"itself by annotating its properties. A validator can then read them and "
+"check for constraint violations. The validation mechanism can be executed in "
+"different layers in your application without having to duplicate any of "
+"these rules (presentation layer, data access layer). Following the DRY "
+"principle, Hibernate Validator has been designed for that purpose."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:20
+#, no-c-format
+msgid ""
+"Hibernate Validator works at two levels. First, it is able to check in-"
+"memory instances of a class for constraint violations. Second, it can apply "
+"the constraints to the Hibernate metamodel and incorporate them into the "
+"generated database schema."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:25
+#, no-c-format
+msgid ""
+"Each constraint annotation is associated to a validator implementation "
+"responsible for checking the constraint on the entity instance. A validator "
+"can also (optionally) apply the constraint to the Hibernate metamodel, "
+"allowing Hibernate to generate DDL that expresses the constraint. With the "
+"appropriate event listener, you can execute the checking operation on "
+"inserts and updates done by Hibernate. Hibernate Validator is not limited to "
+"use with Hibernate. You can easily use it anywhere in your application as "
+"well as with any Java Persistence provider (entity listener provided)."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:35
+#, no-c-format
+msgid ""
+"When checking instances at runtime, Hibernate Validator returns information "
+"about constraint violations in an array of <classname>InvalidValue</"
+"classname> s. Among other information, the <classname>InvalidValue</"
+"classname> contains an error description message that can embed the "
+"parameter values bundle with the annotation (eg. length limit), and message "
+"strings that may be externalized to a <classname>ResourceBundle</classname> ."
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Preface.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Preface.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Preface.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:03+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr ""

Added: projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Revision_History.pot
===================================================================
--- projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Revision_History.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.5/Hibernate/Hibernate_Validator/pot/Revision_History.pot	2009-07-09 01:36:28 UTC (rev 90972)
@@ -0,0 +1,34 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-03-23 03:03+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Revision_History.xml:6
+#, no-c-format
+msgid "Revision History"
+msgstr ""
+
+#. Tag: author
+#: Revision_History.xml:12
+#, no-c-format
+msgid ""
+"<firstname>Danielle</firstname> <surname>Coulson</surname> <email></email>"
+msgstr ""
+
+#. Tag: member
+#: Revision_History.xml:19
+#, no-c-format
+msgid "Content reformat"
+msgstr ""




More information about the jboss-cvs-commits mailing list