Wikitty-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- 1653 discussions
r1556 - in trunk: . wikitty-solr wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr wikitty-solr/src/main/resources
by bpoussin@users.nuiton.org 28 Feb '13
by bpoussin@users.nuiton.org 28 Feb '13
28 Feb '13
Author: bpoussin
Date: 2013-02-28 21:52:12 +0100 (Thu, 28 Feb 2013)
New Revision: 1556
Url: http://nuiton.org/projects/wikitty/repository/revisions/1556
Log:
migrate to solr 4.1 and cleaning solrconfig.xml
Removed:
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySolrQueryParser.java
Modified:
trunk/pom.xml
trunk/wikitty-solr/pom.xml
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySolrConstant.java
trunk/wikitty-solr/src/main/resources/schema.xml
trunk/wikitty-solr/src/main/resources/solrconfig.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-02-25 11:31:36 UTC (rev 1555)
+++ trunk/pom.xml 2013-02-28 20:52:12 UTC (rev 1556)
@@ -62,6 +62,7 @@
<javassistVersion>3.8.0.GA</javassistVersion>
<jspapiversion>2.1</jspapiversion>
<opencsvVersion>2.3</opencsvVersion>
+ <solrVersion>4.1.0</solrVersion>
<nuitonProcessessorVersion>1.2.2</nuitonProcessessorVersion>
<nuiton-struts2>1.3</nuiton-struts2>
@@ -205,7 +206,7 @@
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-core</artifactId>
- <version>3.5.0</version>
+ <version>${solrVersion}</version>
<scope>compile</scope>
<exclusions>
<exclusion>
@@ -218,7 +219,7 @@
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
- <version>3.5.0</version>
+ <version>${solrVersion}</version>
<scope>compile</scope>
<exclusions>
<exclusion>
@@ -229,20 +230,6 @@
</dependency>
<dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-core</artifactId>
- <version>3.5.0</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-analyzers</artifactId>
- <version>3.5.0</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
Modified: trunk/wikitty-solr/pom.xml
===================================================================
--- trunk/wikitty-solr/pom.xml 2013-02-25 11:31:36 UTC (rev 1555)
+++ trunk/wikitty-solr/pom.xml 2013-02-28 20:52:12 UTC (rev 1556)
@@ -53,14 +53,16 @@
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
+ <exclusions>
+ <exclusion>
+ <!-- https://issues.apache.org/jira/browse/SOLR-2487 -->
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-jdk14</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-core</artifactId>
- </dependency>
-
- <dependency>
<groupId>org.jboss.jbossts</groupId>
<artifactId>jbossjta</artifactId>
<scope>compile</scope>
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2013-02-25 11:31:36 UTC (rev 1555)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2013-02-28 20:52:12 UTC (rev 1556)
@@ -135,19 +135,19 @@
*/
private String fixSolrBug(String element2solr, String value) {
String result = value;
- if (element2solr.equals(WikittySolrConstant.SOLR_FULLTEXT) ||
- element2solr.startsWith(WikittySolrConstant.SOLR_FULLTEXT_ALL_EXTENSIONS) ||
- element2solr.endsWith(WikittySolrConstant.SUFFIX_STRING_FULLTEXT)||
- element2solr.endsWith(WikittySolrConstant.SUFFIX_STRING_LOWERCASE)) { // is string
- // TODO poussin 20120107 impossible de comprendre pourquoi il faut force
- // la chaine en lower case, ca devrait etre le role de solr/lucene via
- // la description du schema de mettre la chaine dans la bonne forme
- // pour la recheche en fonction du type du champs souhaite (ici fulltext)
- // tant que ca marche pas on force a la main
- // idem pour les accents :(
- result = StringUtils.stripAccents(result);
- result = result.toLowerCase();
- }
+// if (element2solr.equals(WikittySolrConstant.SOLR_FULLTEXT) ||
+// element2solr.startsWith(WikittySolrConstant.SOLR_FULLTEXT_ALL_EXTENSIONS) ||
+// element2solr.endsWith(WikittySolrConstant.SUFFIX_STRING_FULLTEXT)||
+// element2solr.endsWith(WikittySolrConstant.SUFFIX_STRING_LOWERCASE)) { // is string
+// // TODO poussin 20120107 impossible de comprendre pourquoi il faut force
+// // la chaine en lower case, ca devrait etre le role de solr/lucene via
+// // la description du schema de mettre la chaine dans la bonne forme
+// // pour la recheche en fonction du type du champs souhaite (ici fulltext)
+// // tant que ca marche pas on force a la main
+// // idem pour les accents :(
+// result = StringUtils.stripAccents(result);
+// result = result.toLowerCase();
+// }
return result;
}
@@ -723,7 +723,7 @@
@Override
public void visit(False o) {
- solrQuery += "( *:* - *:* )";
+ solrQuery += "NOT(*:*)";
}
@Override
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySolrConstant.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySolrConstant.java 2013-02-25 11:31:36 UTC (rev 1555)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySolrConstant.java 2013-02-28 20:52:12 UTC (rev 1556)
@@ -40,7 +40,7 @@
public interface WikittySolrConstant {
/** Precise the query parser to use, is allow leading wildcard */
- static final public String SOLR_QUERY_PARSER = "{!wikitty}";
+ static final public String SOLR_QUERY_PARSER = "{!lucene}"; // "{!wikitty}";
/**
* Prefix utiliser pour les champs ajouter lors de l'indexation. Ce prefix
Deleted: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySolrQueryParser.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySolrQueryParser.java 2013-02-25 11:31:36 UTC (rev 1555)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySolrQueryParser.java 2013-02-28 20:52:12 UTC (rev 1556)
@@ -1,102 +0,0 @@
-/*
- * #%L
- * Wikitty :: wikitty-solr-impl
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-package org.nuiton.wikitty.storage.solr;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.queryParser.ParseException;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.Query;
-import org.apache.solr.common.params.CommonParams;
-import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.search.LuceneQParserPlugin;
-import org.apache.solr.search.QParser;
-import org.apache.solr.search.QueryParsing;
-import org.apache.solr.search.SolrQueryParser;
-
-/**
- * Add allow leading wildcard
- * setAllowLeadingWildcard(true);
- * <br>Example: <code>{!wikitty q.op=AND df=text sort='price asc'}myfield:foo +bar -baz</code>
- * More information @see LuceneQParserPlugin
- */
-public class WikittySolrQueryParser extends LuceneQParserPlugin {
-
- public static String NAME = "wikitty";
-
- @Override
- public void init(NamedList args) {
- }
-
- @Override
- public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
- return new SolrQParser(qstr, localParams, params, req);
- }
-
- static public class SolrQParser extends QParser {
-
- static private Log log = LogFactory.getLog(SolrQParser.class);
- String sortStr;
- SolrQueryParser lparser;
-
- public SolrQParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
- super(qstr, localParams, params, req);
- }
-
- @Override
- public Query parse() throws ParseException {
-
- String defaultField = getParam(CommonParams.DF);
- if (defaultField == null) {
- // TODO poussin 20101216 normalement on devrait retrouver cette
- // valeur dans la config. Mais en fait a chaque fois on passe
- // ici car defaultField est null :( alors que dans schema.xml
- // on a bien defini le defaultField :(
- defaultField = WikittySolrConstant.SOLR_FULLTEXT;
- }
-
- lparser = new SolrQueryParser(this, defaultField);
- lparser.setAllowLeadingWildcard(true);
-
- String opParam = getParam(QueryParsing.OP);
- if (opParam != null) {
- lparser.setDefaultOperator("AND".equals(opParam) ? QueryParser.Operator.AND : QueryParser.Operator.OR);
- }
-
- String qstr = getString();
- if (log.isDebugEnabled()) {
- log.debug("Query parse : " + qstr);
- }
- return lparser.parse(qstr);
- }
-
- @Override
- public String[] getDefaultHighlightFields() {
- return new String[]{lparser.getField()};
- }
- }
-}
Modified: trunk/wikitty-solr/src/main/resources/schema.xml
===================================================================
--- trunk/wikitty-solr/src/main/resources/schema.xml 2013-02-25 11:31:36 UTC (rev 1555)
+++ trunk/wikitty-solr/src/main/resources/schema.xml 2013-02-28 20:52:12 UTC (rev 1556)
@@ -145,7 +145,7 @@
<field name="#tree.depth" type="int" indexed="true" stored="true" multiValued="false"/>
<field name="#tree.attached-all" type="string" indexed="true" stored="false" multiValued="true"/>
<!-- copy all field (except binary) in '#fulltext' field for fulltext search -->
- <field name="#fulltext" type="text" indexed="true" stored="false" multiValued="true"/>
+ <field name="#fulltext" type="text" indexed="true" stored="false" multiValued="true" compressed="true"/>
<!-- to prevent error if we try to sort on no sortable field (multivalued)
ATTENTION: solr ne prend pas l'ordre de definition, mais tri sur la longueur du
@@ -192,12 +192,6 @@
-->
<uniqueKey>#id</uniqueKey>
- <!-- field for the QueryParser to use when an explicit fieldname is absent -->
- <defaultSearchField>#fulltext</defaultSearchField>
-
- <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
- <solrQueryParser defaultOperator="AND"/>
-
<copyField source="#tree.attached.*" dest="#tree.attached-all"/>
<copyField source="*_b" dest="#fulltext"/>
@@ -219,4 +213,13 @@
<!-- copy String field for text indexed format version -->
<copyField source="*_s" dest="*_s_t"/>
+ <!--
+ | Suite passage solr 4.1.0
+ | Parametre plus support dans ce fichier, il faut qu'il soit dans la
+ | definition du parser (dans solrconfig.xml)
+ |
+ | defaultSearchField: #fulltext
+ | solrQueryParser defaultOperator: AND
+ +-->
+
</schema>
Modified: trunk/wikitty-solr/src/main/resources/solrconfig.xml
===================================================================
--- trunk/wikitty-solr/src/main/resources/solrconfig.xml 2013-02-25 11:31:36 UTC (rev 1555)
+++ trunk/wikitty-solr/src/main/resources/solrconfig.xml 2013-02-28 20:52:12 UTC (rev 1556)
@@ -26,88 +26,64 @@
<config>
- <luceneMatchVersion>LUCENE_35</luceneMatchVersion>
+ <luceneMatchVersion>LUCENE_41</luceneMatchVersion>
- <!-- Set this to 'false' if you want solr to continue working after it has
- encountered an severe configuration error. In a production environment,
- you may want solr to keep working even if one handler is mis-configured.
-
- You may also set this to false using by setting the system property:
- -Dsolr.abortOnConfigurationError=false
- -->
- <abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>
-
<!-- Used to specify an alternate directory to hold all index data
other than the default ./data under the Solr home.
If replication is in use, this should match the replication configuration. -->
<dataDir>${wikitty.searchengine.solr.directory.data:./solr/data}</dataDir>
<!-- The DirectoryFactory to use for indexes.
- solr.StandardDirectoryFactory, the default, is filesystem based.
- solr.RAMDirectoryFactory is memory based, not persistent, and doesn't work with replication.
- A prefix of "solr." for class names is an alias that
- causes solr to search appropriate packages, including
- org.apache.solr.(search|update|request|core|analysis)
+
+ solr.StandardDirectoryFactory is filesystem
+ based and tries to pick the best implementation for the current
+ JVM and platform. solr.NRTCachingDirectoryFactory, the default,
+ wraps solr.StandardDirectoryFactory and caches small files in memory
+ for better NRT performance.
+
+ One can force a particular implementation via solr.MMapDirectoryFactory,
+ solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.
+
+ solr.RAMDirectoryFactory is memory based, not
+ persistent, and doesn't work with replication.
-->
<directoryFactory name="DirectoryFactory" class="${wikitty.searchengine.solr.directory.factory:solr.StandardDirectoryFactory}"/>
<directoryFactory name="IndexReaderFactory" class="${wikitty.searchengine.solr.indexReader.factory:solr.StandardIndexReaderFactory}"/>
- <indexDefaults>
- <!-- Values here affect all index writers and act as a default unless overridden. -->
- <useCompoundFile>false</useCompoundFile>
+ <indexConfig>
+ <!-- LockFactory
- <mergeFactor>10</mergeFactor>
- <!--
- If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first.
+ This option specifies which Lucene LockFactory implementation
+ to use.
- -->
- <!--<maxBufferedDocs>1000</maxBufferedDocs>-->
- <!-- Tell Lucene when to flush documents to disk.
- Giving Lucene more memory for indexing means faster indexing at the cost of more RAM
+ single = SingleInstanceLockFactory - suggested for a
+ read-only index or when there is no possibility of
+ another process trying to modify the index.
+ native = NativeFSLockFactory - uses OS native file locking.
+ Do not use when multiple solr webapps in the same
+ JVM are attempting to share a single index.
+ simple = SimpleFSLockFactory - uses a plain file for locking
- If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first.
+ Defaults: 'native' is default for Solr3.6 and later, otherwise
+ 'simple' is the default
+ More details on the nuances of each LockFactory...
+ http://wiki.apache.org/lucene-java/AvailableLockFactories
-->
- <ramBufferSizeMB>32</ramBufferSizeMB>
- <maxMergeDocs>2147483647</maxMergeDocs>
- <maxFieldLength>10000</maxFieldLength>
- <writeLockTimeout>1000</writeLockTimeout>
- <commitLockTimeout>10000</commitLockTimeout>
+ <lockType>${wikitty.searchengine.solr.lockType:single}</lockType>
- <!--
- This option specifies which Lucene LockFactory implementation to use.
-
- single = SingleInstanceLockFactory - suggested for a read-only index
- or when there is no possibility of another process trying
- to modify the index.
- native = NativeFSLockFactory
- simple = SimpleFSLockFactory
+ <!-- Unlock On Startup
- (For backwards compatibility with Solr 1.2, 'simple' is the default
- if not specified.)
- -->
- <lockType>single</lockType>
- </indexDefaults>
-
- <mainIndex>
- <!-- options specific to the main on-disk lucene index -->
- <useCompoundFile>false</useCompoundFile>
- <ramBufferSizeMB>32</ramBufferSizeMB>
- <mergeFactor>10</mergeFactor>
- <!-- Deprecated -->
- <!--<maxBufferedDocs>1000</maxBufferedDocs>-->
- <maxMergeDocs>2147483647</maxMergeDocs>
- <maxFieldLength>10000</maxFieldLength>
-
- <!-- If true, unlock any held write or commit locks on startup.
+ If true, unlock any held write or commit locks on startup.
This defeats the locking mechanism that allows multiple
- processes to safely access a lucene index, and should be
- used with care.
- This is not needed if lock type is 'none' or 'single'
+ processes to safely access a lucene index, and should be used
+ with care. Default is "false".
+
+ This is not needed if lock type is 'single'
-->
- <unlockOnStartup>true</unlockOnStartup>
- </mainIndex>
+ <unlockOnStartup>${wikitty.searchengine.solr.unlockOnStartup:true}</unlockOnStartup>
+ </indexConfig>
<!-- Enables JMX if and only if an existing MBeanServer is found, use
this if you want to configure JMX through JVM parameters. Remove
@@ -132,60 +108,90 @@
<!-- Maximum number of clauses in a boolean query (default: 1024). can affect
range or prefix queries that expand to big boolean
queries. An exception is thrown if exceeded. -->
+ <!-- wikitty need large value to work -->
<maxBooleanClauses>2147483647</maxBooleanClauses>
- <!-- Cache used by SolrIndexSearcher for filters (DocSets),
- unordered sets of *all* documents that match a query.
- When a new searcher is opened, its caches may be prepopulated
- or "autowarmed" using data from caches in the old searcher.
- autowarmCount is the number of items to prepopulate. For LRUCache,
- the autowarmed items will be the most recently accessed items.
- Parameters:
- class - the SolrCache implementation (currently only LRUCache)
- size - the maximum number of entries in the cache
- initialSize - the initial capacity (number of entries) of
- the cache. (seel java.util.HashMap)
- autowarmCount - the number of entries to prepopulate from
- and old cache.
- -->
+ <!-- Solr Internal Query Caches
+
+ There are two implementations of cache available for Solr,
+ LRUCache, based on a synchronized LinkedHashMap, and
+ FastLRUCache, based on a ConcurrentHashMap.
+
+ FastLRUCache has faster gets and slower puts in single
+ threaded operation and thus is generally faster than LRUCache
+ when the hit ratio of the cache is high (> 75%), and may be
+ faster under other scenarios on multi-cpu systems.
+ -->
+
+ <!-- Filter Cache
+
+ Cache used by SolrIndexSearcher for filters (DocSets),
+ unordered sets of *all* documents that match a query. When a
+ new searcher is opened, its caches may be prepopulated or
+ "autowarmed" using data from caches in the old searcher.
+ autowarmCount is the number of items to prepopulate. For
+ LRUCache, the autowarmed items will be the most recently
+ accessed items.
+
+ Parameters:
+ class - the SolrCache implementation LRUCache or
+ (LRUCache or FastLRUCache)
+ size - the maximum number of entries in the cache
+ initialSize - the initial capacity (number of entries) of
+ the cache. (see java.util.HashMap)
+ autowarmCount - the number of entries to prepopulate from
+ and old cache.
+ -->
<filterCache
- class="solr.LRUCache"
+ class="solr.FastLRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
- <!-- queryResultCache caches results of searches - ordered lists of
- document ids (DocList) based on a query, a sort, and the range
- of documents requested. -->
+ <!-- Query Result Cache
+
+ Caches results of searches - ordered lists of document ids
+ (DocList) based on a query, a sort, and the range of documents requested.
+ -->
<queryResultCache
class="solr.LRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
- <!-- documentCache caches Lucene Document objects (the stored fields for each document).
- Since Lucene internal document ids are transient, this cache will not be autowarmed. -->
+ <!-- Document Cache
+
+ Caches Lucene Document objects (the stored fields for each
+ document). Since Lucene internal document ids are transient,
+ this cache will not be autowarmed.
+ -->
<documentCache
class="solr.LRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
- <!-- If true, stored fields that are not requested will be loaded lazily.
+ <!-- Lazy Field Loading
- This can result in a significant speed improvement if the usual case is to
- not load all stored fields, especially if the skipped fields are large compressed
- text fields.
+ If true, stored fields that are not requested will be loaded
+ lazily. This can result in a significant speed improvement
+ if the usual case is to not load all stored fields,
+ especially if the skipped fields are large compressed text
+ fields.
-->
+ -->
<enableLazyFieldLoading>true</enableLazyFieldLoading>
- <!-- An optimization for use with the queryResultCache. When a search
- is requested, a superset of the requested number of document ids
- are collected. For example, if a search for a particular query
- requests matching documents 10 through 19, and queryWindowSize is 50,
- then documents 0 through 49 will be collected and cached. Any further
- requests in that range can be satisfied via the cache. -->
+ <!-- Result Window Size
+
+ An optimization for use with the queryResultCache. When a search
+ is requested, a superset of the requested number of document ids
+ are collected. For example, if a search for a particular query
+ requests matching documents 10 through 19, and queryWindowSize is 50,
+ then documents 0 through 49 will be collected and cached. Any further
+ requests in that range can be satisfied via the cache.
+ -->
<!--
| Code Lutin
| 1 si Wikitty est plus utilise pour de l'ecriture que de la lecture
@@ -217,11 +223,25 @@
</query>
- <!--
- Let the dispatch filter handler /select?qt=XXX
- handleSelect=true will use consistent error handling for /select and /update
- handleSelect=false will use solr1.1 style error formatting
- -->
+ <!-- Request Dispatcher
+
+ This section contains instructions for how the SolrDispatchFilter
+ should behave when processing requests for this SolrCore.
+
+ handleSelect is a legacy option that affects the behavior of requests
+ such as /select?qt=XXX
+
+ handleSelect="true" will cause the SolrDispatchFilter to process
+ the request and dispatch the query to a handler specified by the
+ "qt" param, assuming "/select" isn't already registered.
+
+ handleSelect="false" will cause the SolrDispatchFilter to
+ ignore "/select" requests, resulting in a 404 unless a handler
+ is explicitly registered with the name "/select"
+
+ handleSelect="true" is not recommended for new users, but is the default
+ for backwards compatibility
+ -->
<requestDispatcher handleSelect="true" >
<!--Make sure your system has some authentication before enabling remote streaming! -->
<requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
@@ -241,10 +261,13 @@
If no qt is defined, the requestHandler that declares default="true"
will be used.
-->
- <requestHandler name="standard" class="solr.SearchHandler" default="true">
+ <requestHandler name="/select" class="solr.SearchHandler" default="true">
<!-- default values for query parameters -->
<lst name="defaults">
<str name="echoParams">explicit</str>
+ <str name="defType">lucene</str>
+ <str name="q.op">AND</str>
+ <str name="df">#fulltext</str>
<!--
<int name="rows">10</int>
<str name="fl">*</str>
@@ -253,205 +276,6 @@
</lst>
</requestHandler>
-
- <!-- DisMaxRequestHandler allows easy searching across multiple fields
- for simple user-entered phrases. It's implementation is now
- just the standard SearchHandler with a default query type
- of "dismax".
- see http://wiki.apache.org/solr/DisMaxRequestHandler
- -->
- <requestHandler name="dismax" class="solr.SearchHandler" >
- <lst name="defaults">
- <str name="defType">dismax</str>
- <str name="echoParams">explicit</str>
- <float name="tie">0.01</float>
- <str name="qf">
- text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
- </str>
- <str name="pf">
- text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9
- </str>
- <str name="bf">
- ord(popularity)^0.5 recip(rord(price),1,1000,1000)^0.3
- </str>
- <str name="fl">
- id,name,price,score
- </str>
- <str name="mm">
- 2<-1 5<-2 6<90%
- </str>
- <int name="ps">100</int>
- <str name="q.alt">*:*</str>
- <!-- example highlighter config, enable per-query with hl=true -->
- <str name="hl.fl">text features name</str>
- <!-- for this field, we want no fragmenting, just highlighting -->
- <str name="f.name.hl.fragsize">0</str>
- <!-- instructs Solr to return the field itself if no query terms are
- found -->
- <str name="f.name.hl.alternateField">name</str>
- <str name="f.text.hl.fragmenter">regex</str> <!-- defined below -->
- </lst>
- </requestHandler>
-
- <!-- Note how you can register the same handler multiple times with
- different names (and different init parameters)
- -->
- <!--
- poussin 20101224
- je ne vois pas trop a quoi ca sert. Je pense que c juste un exemple
- <requestHandler name="partitioned" class="solr.SearchHandler" >
- <lst name="defaults">
- <str name="defType">dismax</str>
- <str name="echoParams">explicit</str>
- <str name="qf">text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0</str>
- <str name="mm">2<-1 5<-2 6<90%</str>
- < ! - - This is an example of using Date Math to specify a constantly
- moving date range in a config...
- - - >
- <str name="bq">incubationdate_dt:[* TO NOW/DAY-1MONTH]^2.2</str>
- </lst>
- < ! - - In addition to defaults, "appends" params can be specified
- to identify values which should be appended to the list of
- multi-val params from the query (or the existing "defaults").
-
- In this example, the param "fq=instock:true" will be appended to
- any query time fq params the user may specify, as a mechanism for
- partitioning the index, independent of any user selected filtering
- that may also be desired (perhaps as a result of faceted searching).
-
- NOTE: there is *absolutely* nothing a client can do to prevent these
- "appends" values from being used, so don't use this mechanism
- unless you are sure you always want it.
- - - >
- <lst name="appends">
- <str name="fq">inStock:true</str>
- </lst>
- <! - - "invariants" are a way of letting the Solr maintainer lock down
- the options available to Solr clients. Any params values
- specified here are used regardless of what values may be specified
- in either the query, the "defaults", or the "appends" params.
-
- In this example, the facet.field and facet.query params are fixed,
- limiting the facets clients can use. Faceting is not turned on by
- default - but if the client does specify facet=true in the request,
- these are the only facets they will be able to see counts for;
- regardless of what other facet.field or facet.query params they
- may specify.
-
- NOTE: there is *absolutely* nothing a client can do to prevent these
- "invariants" values from being used, so don't use this mechanism
- unless you are sure you always want it.
- - - >
- <lst name="invariants">
- <str name="facet.field">cat</str>
- <str name="facet.field">manu_exact</str>
- <str name="facet.query">price:[* TO 500]</str>
- <str name="facet.query">price:[500 TO *]</str>
- </lst>
- </requestHandler>
- -->
-
-
- <!--
- Search components are registered to SolrCore and used by Search Handlers
-
- By default, the following components are avaliable:
-
- <searchComponent name="query" class="org.apache.solr.handler.component.QueryComponent" />
- <searchComponent name="facet" class="org.apache.solr.handler.component.FacetComponent" />
- <searchComponent name="mlt" class="org.apache.solr.handler.component.MoreLikeThisComponent" />
- <searchComponent name="highlight" class="org.apache.solr.handler.component.HighlightComponent" />
- <searchComponent name="debug" class="org.apache.solr.handler.component.DebugComponent" />
-
- Default configuration in a requestHandler would look like:
- <arr name="components">
- <str>query</str>
- <str>facet</str>
- <str>mlt</str>
- <str>highlight</str>
- <str>debug</str>
- </arr>
-
- If you register a searchComponent to one of the standard names, that will be used instead.
- To insert handlers before or after the 'standard' components, use:
-
- <arr name="first-components">
- <str>myFirstComponentName</str>
- </arr>
-
- <arr name="last-components">
- <str>myLastComponentName</str>
- </arr>
- -->
-
- <!-- The spell check component can return a list of alternative spelling
- suggestions. -->
- <!--
- poussin 20101224
- pas besoin du spell check, et surtout il cree des repertoires, donc
- pour le in memory c'est pas super. Si on ne veut pas qu'il cree de repertoire
- il faut que les *Dir soit null. Dans ce cas il utilise des RAMDirectory
- <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
-
- <str name="queryAnalyzerFieldType">textSpell</str>
-
- <lst name="spellchecker">
- <str name="name">default</str>
- <str name="field">spell</str>
- <str name="spellcheckIndexDir">./spellchecker1</str>
-
- </lst>
- <lst name="spellchecker">
- <str name="name">jarowinkler</str>
- <str name="field">spell</str>
- <str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
- <str name="spellcheckIndexDir">./spellchecker2</str>
-
- </lst>
-
- <lst name="spellchecker">
- <str name="classname">solr.FileBasedSpellChecker</str>
- <str name="name">file</str>
- <str name="sourceLocation">spellings.txt</str>
- <str name="characterEncoding">UTF-8</str>
- <str name="spellcheckIndexDir">./spellcheckerFile</str>
- </lst>
- </searchComponent>
-
- < ! - - a request handler utilizing the spellcheck component - - >
- <requestHandler name="/spellCheckCompRH" class="solr.SearchHandler">
- <lst name="defaults">
- <str name="spellcheck.onlyMorePopular">false</str>
- <str name="spellcheck.extendedResults">false</str>
- <str name="spellcheck.count">1</str>
- </lst>
- <arr name="last-components">
- <str>spellcheck</str>
- </arr>
- </requestHandler>
- -->
-
- <!-- a search component that enables you to configure the top results for
- a given query regardless of the normal lucene scoring.-->
-
-<!-- poussin 20090902 remove elevate this file is empty, what need ?
- <searchComponent name="elevator" class="solr.QueryElevationComponent" >
- <str name="queryFieldType">string</str>
- <str name="config-file">elevate.xml</str>
- </searchComponent>
- -->
- <!-- a request handler utilizing the elevator component -->
-<!--
- <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">
- <lst name="defaults">
- <str name="echoParams">explicit</str>
- </lst>
- <arr name="last-components">
- <str>elevator</str>
- </arr>
- </requestHandler>
- -->
-
<!-- Update request handler.
Note: Since solr1.1 requestHandlers requires a valid content type header if posted in
@@ -462,37 +286,19 @@
-->
<requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
- <!--
- Analysis request handler. Since Solr 1.3. Use to returnhow a document is analyzed. Useful
- for debugging and as a token server for other types of applications
- -->
- <requestHandler name="/analysis" class="solr.AnalysisRequestHandler" />
+ <!-- Admin Handlers
+ Admin Handlers - This will register all the standard admin
+ RequestHandlers.
- <!-- CSV update handler, loaded on demand -->
- <requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy" />
-
-
- <!--
- Admin Handlers - This will register all the standard admin RequestHandlers. Adding
- this single handler is equivolent to registering:
-
- <requestHandler name="/admin/luke" class="org.apache.solr.handler.admin.LukeRequestHandler" />
- <requestHandler name="/admin/system" class="org.apache.solr.handler.admin.SystemInfoHandler" />
- <requestHandler name="/admin/plugins" class="org.apache.solr.handler.admin.PluginInfoHandler" />
- <requestHandler name="/admin/threads" class="org.apache.solr.handler.admin.ThreadDumpHandler" />
- <requestHandler name="/admin/properties" class="org.apache.solr.handler.admin.PropertiesRequestHandler" />
- <requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" >
-
- If you wish to hide files under ${solr.home}/conf, explicitly register the ShowFileRequestHandler using:
- <requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" >
- <lst name="invariants">
- <str name="hidden">synonyms.txt</str>
- <str name="hidden">anotherfile.txt</str>
- </lst>
- </requestHandler>
+ "/admin/luke"
+ "/admin/system"
+ "/admin/plugins"
+ "/admin/threads"
+ "/admin/properties"
+ "/admin/file"
-->
- <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
+ <requestHandler name="/admin/" class="solr.admin.AdminHandlers" />
<!-- ping/healthcheck -->
<requestHandler name="/admin/ping" class="PingRequestHandler">
@@ -503,47 +309,10 @@
</lst>
</requestHandler>
- <!-- Echo the request contents back to the client -->
- <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
- <lst name="defaults">
- <str name="echoParams">explicit</str> <!-- for all params (including the default etc) use: 'all' -->
- <str name="echoHandler">true</str>
- </lst>
- </requestHandler>
-
-
-
-
-
-
-
-
-<!-- TODO JC 2011-04-12 Commented when migrating to solr 3.1.0. Is this useful ? -->
-<!--Highlighting should be moved to searchComponents-->
- <!-- <highlighting>
- <!– Configure the standard fragmenter –>
- <!– This could most likely be commented out in the "default" case –>
- <fragmenter name="gap" class="org.apache.solr.highlight.GapFragmenter" default="true">
- <lst name="defaults">
- <int name="hl.fragsize">100</int>
- </lst>
- </fragmenter>
-
- <!– A regular-expression-based fragmenter (f.i., for sentence extraction) –>
- <fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter">
- <lst name="defaults">
- <!– slightly smaller fragsizes work better because of slop –>
- <int name="hl.fragsize">70</int>
- <!– allow 50% slop on fragment sizes –>
- <float name="hl.regex.slop">0.5</float>
- <!– a basic sentence pattern –>
- <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str>
- </lst>
- </fragmenter>
- </highlighting>-->
-
+<!--
<queryParser name="lucene" class="org.nuiton.wikitty.storage.solr.WikittySolrQueryParser"/>
<queryParser name="wikitty" class="org.nuiton.wikitty.storage.solr.WikittySolrQueryParser"/>
+-->
<!-- example of registering a query parser
<queryParser name="lucene" class="org.apache.solr.search.LuceneQParserPlugin"/>
1
0
r1555 - in trunk: wikitty-api/src/main/java/org/nuiton/wikitty/query wikitty-api/src/main/java/org/nuiton/wikitty/services wikitty-api/src/main/java/org/nuiton/wikitty/storage wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr
by bpoussin@users.nuiton.org 25 Feb '13
by bpoussin@users.nuiton.org 25 Feb '13
25 Feb '13
Author: bpoussin
Date: 2013-02-25 12:31:36 +0100 (Mon, 25 Feb 2013)
New Revision: 1555
Url: http://nuiton.org/projects/wikitty/repository/revisions/1555
Log:
factorisation de la recuperation d'une copie de query sans select
et utilisation pour WikittyServiceTransaction
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java 2013-02-25 00:57:54 UTC (rev 1554)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java 2013-02-25 11:31:36 UTC (rev 1555)
@@ -249,6 +249,21 @@
return result;
}
+ /**
+ * retourne une copie de cette query sans la clause select. Si cette
+ * query n'avait pas de select la query retournee est strictement equivalente.
+ *
+ * @return
+ * @since 3.10
+ */
+ public WikittyQuery getWhereQuery() {
+ Condition newCond = getWhere();
+ // copy de la query sans le select
+ WikittyQuery result = this.copy();
+ result.setCondition(newCond);
+ return result;
+ }
+
public void accept(WikittyQueryVisitor visitor) {
boolean walk = visitor.visitEnter(this);
if (walk && condition != null) {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2013-02-25 00:57:54 UTC (rev 1554)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2013-02-25 11:31:36 UTC (rev 1555)
@@ -399,18 +399,36 @@
@Override
public List<WikittyQueryResult<Map<String, Object>>> findAllByQuery(
String securityToken, List<WikittyQuery> queries) {
+
+ // on recree une liste avec seulement les clause where
+ List<WikittyQuery> queriesWhere = new ArrayList<WikittyQuery>();
+ for (WikittyQuery q : queries) {
+ if (q.isSelectQuery()) {
+ queriesWhere.add(q.getWhereQuery());
+ } else {
+ queriesWhere.add(q);
+ }
+ }
+
+ // on ne joue que les clauses where car le select sera rejouer completement
List<WikittyQueryResult<Map<String, Object>>> resultTxList =
- tx.findAllByQuery(securityToken, queries);
+ tx.findAllByQuery(securityToken, queriesWhere);
List<WikittyQueryResult<Map<String, Object>>> resultWsList =
- ws.findAllByQuery(securityToken, queries);
+ ws.findAllByQuery(securityToken, queriesWhere);
List<WikittyQueryResult<Map<String, Object>>> result =
- new ArrayList<WikittyQueryResult<Map<String, Object>>>(resultWsList.size());
+ new ArrayList<WikittyQueryResult<Map<String, Object>>>(queries.size());
for (int i=0; i<queries.size(); i++) {
+ long timeStart = System.currentTimeMillis();
+
WikittyQuery query = queries.get(i);
WikittyQueryResult<Map<String, Object>> resultTx = resultTxList.get(i);
WikittyQueryResult<Map<String, Object>> resultWs = resultWsList.get(i);
+
+ //
// Il faut fusionner les deux resultats
+ //
+
// - ne pas avoir de doublon
// - ne pas retenir ceux supprimer dans la transaction
// en respectant l'ordre de tri demande (comment faire?)
@@ -429,20 +447,30 @@
}
List<String> wikittyId = new ArrayList<String>(ids);
+ //
+ // il faut calculer le select
+ //
List<Map<String, Object>> selectFusion = null;
if (query.isSelectQuery()) {
List<Map<String, Object>> values = new ArrayList<Map<String, Object>>(wikittyId.size());
+ // recuperation des wikitties pour pouvoir jouer le select
List<Wikitty> wikitties = restore(securityToken, wikittyId);
+ // transformation des wikitties en Map avec l'id dans la map
+ String idKey = Element.ID.getValue();
for (Wikitty w : wikitties) {
Map<String, Object> map = new LinkedHashMap<String, Object>(w.getFieldValue());
- map.put(org.nuiton.wikitty.entities.Element.ID.getValue(), w.getWikittyId());
+ map.put(idKey, w.getWikittyId());
values.add(map);
}
+ // rejoue du select
Select select = (Select)query.getCondition();
selectFusion = select.getFunction().call(query, values);
}
+ //
+ // il faut assigner le resultat principal (select ou wikittyId)
+ //
List<Map<String, Object>> results;
if (query.isSelectQuery()) {
// on met selectFusion dans result
@@ -450,9 +478,9 @@
} else {
// on met les ids dans results
results = new ArrayList<Map<String, Object>>(ids.size());
- String key = Element.ID.getValue();
+ String idKey = Element.ID.getValue();
for (String id : ids) {
- results.add(WikittyUtil.singletonMap(key, id));
+ results.add(WikittyUtil.singletonMap(idKey, id));
}
}
@@ -463,8 +491,10 @@
String queryString = resultWs.getQueryString();
// FIXME les facettes sont fausses :(
Map<String, List<org.nuiton.wikitty.query.FacetTopic>> facets = resultWs.getFacets();
- long timeQuery = resultTx.getTimeQuery() + resultWs.getTimeQuery();
+ long timeEnd = System.currentTimeMillis();
+ long timeQuery = resultTx.getTimeQuery() + resultWs.getTimeQuery() + timeEnd - timeStart;
+
result.add(new WikittyQueryResult<Map<String, Object>>(
queryName, firstIndice, numFound, query, queryString,
results, selectFusion, wikittyId, facets,
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java 2013-02-25 00:57:54 UTC (rev 1554)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java 2013-02-25 11:31:36 UTC (rev 1555)
@@ -324,20 +324,17 @@
Select select = null;
WikittyQuery queryWithoutSelect = query;
- if (query.getCondition() instanceof Select) {
- select = (Select)query.getCondition();
- Condition newCond = select.getSubCondition();
- if (newCond == null) {
- newCond = new org.nuiton.wikitty.query.conditions.True();
+ if (query.isSelectQuery()) {
+ select = query.getSelect();
+ // copy de la query sans le select
+ queryWithoutSelect = query.getWhereQuery();
+ if (queryWithoutSelect.getCondition() == null) {
+ queryWithoutSelect.setCondition(new org.nuiton.wikitty.query.conditions.True());
+ }
+
}
- // copy de la query sans le select
- queryWithoutSelect = query.copy();
- queryWithoutSelect.setCondition(newCond);
- }
-
-
int offset = queryWithoutSelect.getOffset();
int limit = queryWithoutSelect.getLimit();
List<String> ids = new LinkedList<String>();
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2013-02-25 00:57:54 UTC (rev 1554)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2013-02-25 11:31:36 UTC (rev 1555)
@@ -67,6 +67,7 @@
import org.nuiton.wikitty.query.WikittyQueryResultTreeNode;
import org.nuiton.wikitty.query.conditions.Condition;
import org.nuiton.wikitty.query.conditions.Select;
+import org.nuiton.wikitty.query.conditions.True;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.Search;
@@ -691,14 +692,12 @@
if (query.isSelectQuery()) {
select = query.getSelect();
- Condition newCond = select.getSubCondition();
- if (newCond == null) {
- newCond = new org.nuiton.wikitty.query.conditions.True();
+ // copy de la query sans le select
+ queryWithoutSelect = query.getWhereQuery();
+ if (queryWithoutSelect.getCondition() == null) {
+ queryWithoutSelect.setCondition(new True());
}
- // copy de la query sans le select
- queryWithoutSelect = query.copy();
- queryWithoutSelect.setCondition(newCond);
}
// Create querySolr
1
0
25 Feb '13
Author: bpoussin
Date: 2013-02-25 01:57:54 +0100 (Mon, 25 Feb 2013)
New Revision: 1554
Url: http://nuiton.org/projects/wikitty/repository/revisions/1554
Log:
fixes #2544: Improve WikittyQueryResult, result must have wikitty id and select result in same time
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportCSV.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportXML.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionAvg.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionCount.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionDistinct.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionFieldValue.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionFusion.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionMax.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionMin.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionSum.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionValue.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/WikittyQueryFunction.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/WikittyQueryFunctionWrapper.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -37,6 +37,7 @@
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
@@ -775,7 +776,7 @@
if (queries != null) {
if (clazz != null && BusinessEntity.class.isAssignableFrom(clazz)) {
// on demande un business entity donc on modifie
- // pas les criteres pour ajouter les contraintes sur les
+ // les criteres pour ajouter les contraintes sur les
// extensions
// newInstance only return BusinessEntityWikittyImpl
@@ -1010,7 +1011,7 @@
long start = TimeLog.getTime();
List<WikittyQueryResult<Map<String, Object>>> result = null;
if (query != null) {
- result = wikittyService.<Map<String, Object>>findAllByQuery(securityToken, query);
+ result = wikittyService.findAllByQuery(securityToken, query);
}
timeLog.log(start, "findAllByQuery(List)");
return result;
@@ -1757,214 +1758,6 @@
return user;
}
-
-// /**
-// * Convert all objects in list parameter to the wanted type and return
-// * new List.
-// * For business object transformation, if some
-// * result don't have the right extension (clazz) this extension is
-// * automatically added.
-// *
-// * If possible this method don't instanciated new Object. If e is Wikitty
-// * and wanted target is Wikitty a simple cast is done.
-// *
-// * @param target to cast into.
-// * Can be Wikitty, BusinessEntity, String, Date, Number (returned is BigDecimal), Boolean, byte[]
-// * @param objects objects to convert
-// * @return List objects in right class or Exception.
-// * if conversion is impossible
-// * @since 3.4
-// */
-// public <E, F> List<E> castTo(Class<E> target, List<F> objects) {
-// List<E> result;
-//
-// if (objects == null) {
-// result = null;
-// } else if (target.isAssignableFrom(Object.class)) {
-// // on demande la conversion en Object, donc aucune conversion
-// result = new ArrayList<E>((List<E>)objects);
-// }else if (objects.size() == 0) {
-// // on ne fait rien on met juste une nouvelle liste vide
-// result = new ArrayList<E>();
-// } else if (Wikitty.class.isAssignableFrom(target)) {
-// // On veut des Wikitties en sortie
-//
-// Object first = objects.get(0);
-// if (first instanceof Wikitty) {
-// // W, rien a faire
-// result = (List<E>)objects;
-// } else if (first instanceof BusinessEntityImpl) {
-// // BusinessEntityImpl, il faut recuperer les wikitty
-// result = new ArrayList<E>(objects.size());
-// for (BusinessEntityImpl e : (List<BusinessEntityImpl>)objects) {
-// result.add((E)e.getWikitty());
-// }
-// } else if (first instanceof BusinessEntity) {
-// // BusinessEntity, il faut faire un restore puis remettre la
-// // valeur des champs dans les wikitties recuperes
-//
-// // on collecte tous les ids
-// List<String> ids = new ArrayList(objects.size());
-// for (BusinessEntity e : (List<BusinessEntity>)objects) {
-// ids.add(e.getWikittyId());
-// }
-//
-// List<BusinessEntity> business = (List<BusinessEntity>)objects;
-// List<Wikitty> wikitties = restore(ids);
-// Class entityClass = first.getClass();
-//
-// result = (List<E>)createWikittyFromBusinessEntity(entityClass, business, wikitties);
-// } else if (first instanceof String) {
-// // String, il faut faire un restore
-// // le queryResult courant contient des Ids
-// // Si ce n'est pas le cas, ca veut dire que le developpeur utilisant
-// // ce queryResult ne sait pas ce qu'il fait :)
-// List<String> ids = (List<String>) objects;
-// result = (List<E>)restore(ids);
-// } else {
-// throw new ClassCastException("WikittyQueryResult don't contains"
-// + " object convertible to Wikitty"
-// + " (accepted Wikitty, BusinessEntityImpl, String id) but not "
-// + first.getClass());
-// }
-// } else if (BusinessEntity.class.isAssignableFrom(target)) {
-// // on commence par tout mettre en Wikitty, en utilisant le if du dessus
-// List<Wikitty> resultTmp = castTo(Wikitty.class, objects);
-// result = (List<E>)WikittyUtil.newInstance((Class<BusinessEntity>)target, resultTmp);
-// } else if (Number.class.isAssignableFrom(target)) {
-// result = new ArrayList<E>(objects.size());
-// for (Object o : objects) {
-// BigDecimal v = WikittyUtil.toBigDecimal(o);
-// Number n = WikittyUtil.toNumber(target, v);
-// result.add((E)n);
-// }
-// } else if (Date.class.isAssignableFrom(target)) {
-// result = new ArrayList<E>(objects.size());
-// for (Object o : objects) {
-// Date v = WikittyUtil.toDate(o);
-// result.add((E)v);
-// }
-// } else if (Boolean.class.isAssignableFrom(target)) {
-// result = new ArrayList<E>(objects.size());
-// for (Object o : objects) {
-// Boolean v = WikittyUtil.toBoolean(o);
-// result.add((E)v);
-// }
-// } else if (byte[].class.isAssignableFrom(target)) {
-// result = new ArrayList<E>(objects.size());
-// for (Object o : objects) {
-// byte[] v = WikittyUtil.toBinary(o);
-// result.add((E)v);
-// }
-// } else if (String.class.isAssignableFrom(target)) {
-// result = new ArrayList<E>(objects.size());
-// for (Object o : objects) {
-// String v = WikittyUtil.toString(o);
-// result.add((E)v);
-// }
-// }else {
-// throw new ClassCastException(String.format(
-// "Object list don't contains"
-// + " object convertible to %s"
-// + " (accepted Wikitty, BusinessEntityImpl, String id, Date,"
-// + " BigDecimal, Boolean, byte[]) but not '%s'",
-// target.getName(), objects.get(0).getClass()));
-// }
-//
-// return result;
-// }
-//
-// /**
-// * Convert all objects in list parameter to the wanted type and return
-// * new List.
-// * For business object transformation, if some
-// * result don't have the right extension (clazz) this extension is
-// * automatically added.
-// *
-// * If possible this method don't instanciated new Object. If e is Wikitty
-// * and wanted target is Wikitty a simple cast is done.
-// *
-// * @param target to cast into.
-// * Can be Wikitty, BusinessEntity, String, Date, Number (returned is BigDecimal), Boolean, byte[]
-// * @param objects objects to convert
-// * @return List objects in right class or Exception.
-// * if conversion is impossible
-// * @since 3.4
-// */
-// public <E, F> List<Map<String, E>> castToMap(Class<E> target, List<Map> objects) {
-// List<Map<String, E>> result;
-//
-// if (objects == null) {
-// result = null;
-// } else if (target.isAssignableFrom(Object.class)) {
-// // on demande la conversion en Object, donc aucune conversion
-// result = new ArrayList(objects);
-// } else if (objects.size() == 0) {
-// // on ne fait rien on met juste une nouvelle liste vide
-// result = new ArrayList<Map<String, E>>();
-// } else {
-// for (Map map : objects) {
-// if (map != null) {
-// Set<Map.Entry> s = map.entrySet();
-// for (Map.Entry entry : s) {
-// Object value = entry.getValue();
-// if (Wikitty.class.isAssignableFrom(target)) {
-// // On veut des Wikitties en sortie
-// if (value == null) {
-// // rien a faire
-// } else if (value instanceof Wikitty) {
-// // W, rien a faire
-// } else if (value instanceof String) {
-// // String, il faut faire un restore
-// // le queryResult courant contient des Ids
-// // Si ce n'est pas le cas, ca veut dire que le developpeur utilisant
-// // ce queryResult ne sait pas ce qu'il fait :)
-// entry.setValue((E)restore((String)value));
-// } else {
-// throw new ClassCastException("WikittyQueryResult don't contains"
-// + " object convertible to Wikitty"
-// + " (accepted Wikitty, String id) but not "
-// + value.getClass());
-// }
-// } else if (BusinessEntity.class.isAssignableFrom(target)) {
-// // on commence par tout mettre en Wikitty, en utilisant le if du dessus
-// Wikitty resultTmp = castTo(Wikitty.class, value);
-// E business = (E)WikittyUtil.newInstance((Class<BusinessEntity>)target, resultTmp);
-// entry.setValue(business);
-// } else if (Number.class.isAssignableFrom(target)) {
-// BigDecimal v = WikittyUtil.toBigDecimal(value);
-// Number n = WikittyUtil.toNumber(target, v);
-// entry.setValue((E)n);
-// } else if (Date.class.isAssignableFrom(target)) {
-// Date v = WikittyUtil.toDate(value);
-// entry.setValue((E)v);
-// } else if (Boolean.class.isAssignableFrom(target)) {
-// Boolean v = WikittyUtil.toBoolean(value);
-// entry.setValue((E)v);
-// } else if (byte[].class.isAssignableFrom(target)) {
-// byte[] v = WikittyUtil.toBinary(value);
-// entry.setValue((E)v);
-// } else if (String.class.isAssignableFrom(target)) {
-// String v = WikittyUtil.toString(value);
-// entry.setValue((E)v);
-// }else {
-// throw new ClassCastException(String.format(
-// "Object list don't contains"
-// + " object convertible to %s"
-// + " (accepted Wikitty, BusinessEntityImpl, String id, Date,"
-// + " BigDecimal, Boolean, byte[]) but not '%s'",
-// target.getName(), objects.get(0).getClass()));
-// }
-// }
-// }
-// }
-// // tous les objets ont ete converti, on force le cast
-// result = (List)objects;
-// }
-//
-// return result;
-// }
-
/**
* Convert e parameter to the wanted type and return it.
* For business object transformation, if some
@@ -2008,24 +1801,7 @@
*/
public <E> WikittyQueryResult<E> castTo(Class<E> target,
WikittyQueryResult queryResult) {
- WikittyQueryResult<E> result;
-
- if (target == null || Map.class.isAssignableFrom(target)) {
- result = (WikittyQueryResult<E>)queryResult;
- } else {
- long startTime = System.nanoTime();
- WikittyQueryResult queryResultFlated = queryResult.convertMapToSimple();
-
- List<E> castedResult = castTo(target, queryResultFlated.getAll());
- long estimatedTime = System.nanoTime() - startTime;
-
- result = new WikittyQueryResult<E>(
- queryResult.getQueryName(),
- queryResult.getOffset(), queryResult.getTotalResult(),
- queryResult.getQueryString(), queryResult.getFacets(),
- castedResult, queryResult.getTimeQuery(), estimatedTime);
- }
-
+ WikittyQueryResult<E> result = queryResult.castTo(this, target);
return result;
}
@@ -2041,28 +1817,12 @@
* @return new WikittyQueryResult with element in right class or Exception
* if conversion is impossible
*/
- public <E> WikittyQueryResult<Map<String, E>> castToMap(Class<E> target,
- WikittyQueryResult<Map> queryResult) {
- WikittyQueryResult<Map<String, E>> result;
-
- long startTime = System.nanoTime();
-
- List<Map<String, E>> castedResult = castToMap(target, queryResult.getAll());
- long estimatedTime = System.nanoTime() - startTime;
-
- result = new WikittyQueryResult<Map<String, E>>(
- queryResult.getQueryName(),
- queryResult.getOffset(), queryResult.getTotalResult(),
- queryResult.getQueryString(), queryResult.getFacets(),
- castedResult,
- queryResult.getTimeQuery(), estimatedTime);
-
+ public <E, F> WikittyQueryResult<Map<String, E>> castToMap(Class<E> target,
+ WikittyQueryResult<Map<String, F>> queryResult) {
+ WikittyQueryResult<Map<String, E>> result = queryResult.castToMap(this, target);
return result;
}
-
-
-
public <O, N, E extends Map<String, O>, F extends Map<String, N>> List<E> castToMap(Class<O> target, List<F> objects) {
List result = castTo(target, objects);
return result;
@@ -2160,54 +1920,4 @@
return result;
}
-
-
-
-
-//
-// protected List<Wikitty> createWikittyFromBusinessEntity(Class entityClass, List<BusinessEntity> objects, List<Wikitty> w) {
-// // on copie les champs des entities dans les wikitties recuperes
-// // try settings all fields except version
-// try {
-// // les entites a mettre dans les wikitties
-// BusinessEntity[] entities = objects.toArray(new BusinessEntity[objects.size()]);
-// // les wikitties qui seront les resultats
-// Wikitty[] wikitties = w.toArray(new Wikitty[w.size()]);
-//
-// //get all fields
-// Field[] fields = entityClass.getDeclaredFields();
-//
-// for(Field field:fields){
-// //for each field that got WikittyField annotation
-// if (field.isAnnotationPresent(WikittyField.class)){
-//
-// //get the attribute's wikitty fqn
-// WikittyField annotation = field.getAnnotation(WikittyField.class);
-// String fieldFQN = annotation.fqn();
-//
-// //set the value
-// Method m = entityClass.getMethod("get" + StringUtils.capitalize(field.getName()));
-//
-// for(int i=0; i<entities.length; i++) {
-// if (wikitties[i] != null) {
-// // le wikitty peut etre null, par exemple a cause de la security
-// Object value = m.invoke(entities[i]);
-// wikitties[i].setFqField(fieldFQN, value);
-// }
-// }
-// }
-// }
-// //manually set version
-// for(int i=0; i<entities.length; i++) {
-// if (wikitties[i] != null) {
-// // le wikitty peut etre null, par exemple a cause de la security
-// wikitties[i].setWikittyVersion(entities[i].getWikittyVersion());
-// }
-// }
-// return w;
-// } catch (Exception eee) {
-// throw new WikittyException("Could not transform entity to Wikitty", eee);
-// }
-//
-// }
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -366,7 +366,10 @@
* @param queries
* @return wikitty id object or null
* @since 3.3
+ * @deprecated since 3.10 use {@link #findAllByQuery(java.lang.String, java.util.List)}
+ * with singleton list or encapsulate WikittyService in {@link WikittyClient} to use findBy method
*/
+ @Deprecated
public List<Map<String, Object>> findByQuery(String securityToken, List<WikittyQuery> queries);
/*
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportCSV.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportCSV.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportCSV.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -399,8 +399,8 @@
WikittyQueryResult<Wikitty> queryResult = new WikittyQueryResult(
pagedResult.getCriteriaName(), pagedResult.getFirstIndice(),
- pagedResult.getNumFound(), pagedResult.getQueryString(), facet,
- pagedResult.getAll(), 0, 0);
+ pagedResult.getNumFound(), null, pagedResult.getQueryString(),
+ pagedResult.getAll(), null, null, facet, 0, 0);
exportWriter(client, writer, queryResult);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportXML.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportXML.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportXML.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -221,8 +221,8 @@
WikittyQueryResult<Wikitty> queryResult = new WikittyQueryResult(
pagedResult.getCriteriaName(), pagedResult.getFirstIndice(),
- pagedResult.getNumFound(), pagedResult.getQueryString(), null,
- pagedResult.getAll(), 0, 0);
+ pagedResult.getNumFound(), null, pagedResult.getQueryString(),
+ pagedResult.getAll(), null, null,null, 0, 0);
exportWriter(client, result, queryResult);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -215,12 +215,40 @@
/**
* Indique si la query commence par une clause Select
* @return
+ * @since 3.9
*/
public boolean isSelectQuery() {
boolean result = condition instanceof Select;
return result;
}
+ /**
+ * Retourne la clause Select de la Query, ou null si la query n'a pas de select
+ * @return
+ * @since 3.10
+ */
+ public Select getSelect() {
+ Select result = null;
+ if (isSelectQuery()) {
+ result = (Select)getCondition();
+ }
+ return result;
+ }
+
+ /**
+ * retourne la clause where de la query, la clause where peut-etre la meme
+ * chose que le {@link #getCondition} si la clause n'a pas de select
+ * @return
+ * @since 3.10
+ */
+ public Condition getWhere() {
+ Condition result = getCondition();
+ if (isSelectQuery()) {
+ result = getSelect().getSubCondition();
+ }
+ return result;
+ }
+
public void accept(WikittyQueryVisitor visitor) {
boolean walk = visitor.visitEnter(this);
if (walk && condition != null) {
@@ -323,8 +351,9 @@
return this;
}
- public void setFacetSort(FacetSortType facetSort) {
+ public WikittyQuery setFacetSort(FacetSortType facetSort) {
this.facetSort = facetSort;
+ return this;
}
public FacetSortType getFacetSort() {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -32,10 +32,12 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.wikitty.WikittyClient;
import org.nuiton.wikitty.WikittyUtil;
+import org.nuiton.wikitty.entities.BusinessEntity;
import org.nuiton.wikitty.entities.Element;
/**
@@ -65,15 +67,24 @@
protected int totalResult;
/** query really executed (internal representation depend of search engine used */
protected String queryString;
+ /** query used to produce initial WikittyQueryResult */
+ protected WikittyQuery query;
+
/** list of result in the wanted interval */
protected List<T> results;
+ /** Wikitty ids resulting of where clause */
+ protected List<String> wikittyIdResult;
+ /** if query contains select clause, contains select result */
+ protected List<Map<String, Object>> selectResult;
/** facet asked or null if no facet */
protected Map<String, List<FacetTopic>> facets;
+
/** facet asked of null if no facet, FacetTopic are put in map with key topic name,
* To use this variable, you must used getter, because, this variable is
* lazy loaded from facets variable.
*/
- protected Map<String, Map<String, FacetTopic>> facetsAsMap = null;
+ transient protected Map<String, Map<String, FacetTopic>> facetsAsMap = null;
+
/** temps (nanoseconde) mis pour faire la requete (calcul cote serveur)*/
protected long timeQuery;
/** temps (nanoseconde) de transformation des resultats bruts en un autre type(calcul cote client)*/
@@ -92,15 +103,21 @@
* @param results list of result in the wanted interval
*/
public WikittyQueryResult(String queryName,
- int offset, int totalResult, String queryString,
- Map<String, List<FacetTopic>> facets, List<T> results,
+ int offset, int totalResult, WikittyQuery query, String queryString,
+ List<T> results,
+ List<Map<String, Object>> selectResult,
+ List<String> wikittyIdResult,
+ Map<String, List<FacetTopic>> facets,
long timeQuery, long timeConvertion) {
this.queryName = queryName;
this.offset = offset;
this.totalResult = totalResult;
+ this.query = query;
this.queryString = queryString;
+ this.results = Collections.unmodifiableList(results);
+ this.selectResult = selectResult;
+ this.wikittyIdResult = wikittyIdResult;
this.facets = facets;
- this.results = Collections.unmodifiableList(results);
this.timeQuery = timeQuery;
this.timeConvertion = timeConvertion;
}
@@ -131,8 +148,9 @@
}
result = new WikittyQueryResult<E>(
- queryName, offset, totalResult, queryString, facets,
- data, timeQuery, timeConvertion);
+ queryName, offset, totalResult, query, queryString,
+ data, selectResult, wikittyIdResult, facets,
+ timeQuery, timeConvertion);
}
return result;
@@ -147,12 +165,14 @@
}
WikittyQueryResult<String> result = new WikittyQueryResult<String>(
- queryName, offset, totalResult, queryString, facets,
- data, timeQuery, timeConvertion);
+ queryName, offset, totalResult, query, queryString,
+ data, selectResult, wikittyIdResult, facets,
+ timeQuery, timeConvertion);
return result;
}
+ /** nom du critere qui a ete uitilise (peut-etre null) si le critete n'avait pas de nom */
public String getQueryName() {
return queryName;
}
@@ -166,19 +186,176 @@
return offset;
}
+ /** indice of offset result in global search result */
public int getOffset() {
return offset;
}
+ /** total number of result if we call the query for all possible result */
public int getTotalResult() {
return totalResult;
}
+ /** query really executed (internal representation depend of search engine used */
public String getQueryString() {
return queryString;
}
/**
+ * Return query used to initialise the first WikittyQueryResult (before
+ * some transformation with getSelect or getWikitties). This query is
+ * query realy send to server after some modification by WikittyClient if
+ * necessary
+ * @return
+ * @since 3.10
+ */
+ public WikittyQuery getQuery() {
+ return query;
+ }
+
+ /**
+ * retourne le nombre de wikitty actuellement disponible dans le resultat
+ * @return
+ * @since 3.10
+ */
+ public int getWikittyResultSize() {
+ int result = 0;
+ if (wikittyIdResult != null) {
+ result = wikittyIdResult.size();
+ }
+ return result;
+ }
+
+ /**
+ * Retourne un nouveau WikittyQueryResult avec comme resultat la liste
+ * des ids des wikitties selectionnes par la Query initiale
+ * @return
+ * @since 3.10
+ */
+ public WikittyQueryResult<String> getWikittyResult() {
+ WikittyQueryResult<String> result = new WikittyQueryResult<String>(
+ queryName, offset, totalResult, query, queryString,
+ wikittyIdResult, selectResult, wikittyIdResult, facets,
+ timeQuery, timeConvertion);
+ return result;
+ }
+
+ /**
+ * Retourne un nouveau WikittyQueryResult avec comme resultat une liste
+ * de BusinessEntity du type de la class passee en parametre a partir
+ * des ids des wikitties selectionnes par la Query initiale
+ * @return
+ * @since 3.10
+ */
+ public <E extends BusinessEntity> WikittyQueryResult<E> getWikittyResult(
+ WikittyClient client, Class<E> clazz) {
+ WikittyQueryResult<E> result = getWikittyResult().castTo(client, clazz);
+ return result;
+ }
+
+ /**
+ * Indique s'il y a des resultats de select on non
+ * @return
+ * @since 3.10
+ */
+ public boolean hasSelectResult() {
+ boolean result = CollectionUtils.isNotEmpty(selectResult);
+ return result;
+ }
+
+ /**
+ * Le nombre de map contenu dans le resultat de select
+ * @return
+ * @since 3.10
+ */
+ public int selectResultSize() {
+ int result = 0;
+ if (hasSelectResult()) {
+ result = selectResult.size();
+ }
+ return result;
+ }
+
+ /**
+ * Retourne la liste liste des noms disponible comme resulat de select
+ * @return
+ * @since 3.10
+ */
+ public List<String> getSelectResultName() {
+ List<String> result = null;
+ if (hasSelectResult()) {
+ Map<String, Object> first = selectResult.get(0);
+ result = new ArrayList<String>(first.keySet());
+ }
+ return result;
+ }
+
+ /**
+ * Retourne les resultats de select
+ * @return
+ * @since 3.10
+ */
+ public WikittyQueryResult<Map<String, Object>> getSelectResult() {
+ WikittyQueryResult<Map<String, Object>> result = null;
+ if (hasSelectResult()) {
+ result = new WikittyQueryResult<Map<String, Object>>(
+ queryName, offset, totalResult, query, queryString,
+ selectResult, selectResult, wikittyIdResult, facets,
+ timeQuery, timeConvertion);
+ }
+ return result;
+ }
+
+ /**
+ * Retourne les resultats de select transforme en objet de type clazz
+ *
+ * @param <E>
+ * @param client
+ * @param clazz
+ * @return
+ * @since 3.10
+ */
+ public <E> WikittyQueryResult<Map<String, E>> getSelectResult(
+ WikittyClient client, Class<E> clazz) {
+ WikittyQueryResult<Map<String, E>> result = getSelectResult().castToMap(client, clazz);
+ return result;
+ }
+
+ /**
+ * Retourne les resultats de select pour le champs demande
+ *
+ * @param resultName
+ * @return
+ * @since 3.10
+ */
+ public WikittyQueryResult<Object> getSelectResult(String resultName) {
+ List<Object> data = new ArrayList(selectResultSize());
+ for (Map<String, Object> m : selectResult) {
+ data.add(m.get(resultName));
+ }
+ WikittyQueryResult<Object> result = new WikittyQueryResult<Object>(
+ queryName, offset, totalResult, query, queryString,
+ data, selectResult, wikittyIdResult, facets,
+ timeQuery, timeConvertion);
+ return result;
+ }
+
+ /**
+ * Retourne les resultats de select pour le champs demande et le transforme
+ * en objet de type clazz
+ *
+ * @param resultName
+ * @return
+ * @since 3.10
+ */
+ public <E> WikittyQueryResult<E> getSelectResult(
+ WikittyClient client, Class<E> clazz, String resultName) {
+ WikittyQueryResult<E> result = getSelectResult(resultName).castTo(client, clazz);
+ return result;
+ }
+
+
+ /**
* Return name of all facet used in query.
*
* @return result's facets names
@@ -376,4 +553,70 @@
return result;
}
+
+ /**
+ * Convert all result to the wanted type and return new WikittyQueryResult
+ * with this new result list. For business object transformation, if some
+ * result don't have the right extension (clazz) this extension is
+ * automatically added.
+ *
+ * @param queryResult result to convert
+ * @param target to cast into.
+ * Can be Wikitty, BusinessEntity, String, Date, Number (returned is BigDecimal), Boolean, byte[]
+ * @return new WikittyQueryResult with element in right class or Exception
+ * if conversion is impossible
+ * @since 3.10
+ */
+ public <E> WikittyQueryResult<E> castTo(WikittyClient client, Class<E> target) {
+ WikittyQueryResult<E> result;
+
+ if (target == null || Map.class.isAssignableFrom(target)) {
+ result = (WikittyQueryResult<E>)this;
+ } else {
+ long startTime = System.nanoTime();
+ WikittyQueryResult queryResultFlated = convertMapToSimple();
+
+ List<E> castedResult = client.castTo(target, queryResultFlated.getAll());
+ long estimatedTime = System.nanoTime() - startTime;
+
+ result = new WikittyQueryResult<E>(
+ queryName, offset, totalResult, query, queryString,
+ castedResult, selectResult, wikittyIdResult, facets,
+ timeQuery, estimatedTime);
+ }
+
+ return result;
+ }
+
+ /**
+ * Convert all result to the wanted type and return new WikittyQueryResult
+ * with this new result list. For business object transformation, if some
+ * result don't have the right extension (clazz) this extension is
+ * automatically added.
+ *
+ * @param queryResult result to convert
+ * @param target to cast into.
+ * Can be Wikitty, BusinessEntity, String, Date, Number (returned is BigDecimal), Boolean, byte[]
+ * @return new WikittyQueryResult with element in right class or Exception
+ * if conversion is impossible
+ * @since 3.10
+ */
+ public <E, F> WikittyQueryResult<Map<String, E>> castToMap(
+ WikittyClient client, Class<E> target) {
+ WikittyQueryResult<Map<String, E>> result;
+
+ long startTime = System.nanoTime();
+
+ List<Map<String, E>> castedResult = client.castToMap(target,
+ (List<Map<String, F>>)this.getAll());
+ long estimatedTime = System.nanoTime() - startTime;
+
+ result = new WikittyQueryResult<Map<String, E>>(
+ queryName, offset, totalResult, query, queryString,
+ castedResult, selectResult, wikittyIdResult, facets,
+ timeQuery, estimatedTime);
+
+ return result;
+ }
+
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionAvg.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionAvg.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionAvg.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -73,11 +73,10 @@
@Override
public List<Map<String, Object>> call(
- WikittySearchEngine searchEngine, WikittyTransaction tx,
WikittyQuery query, List<Map<String, Object>> data) {
WikittyQueryFunction f = getArgs().get(0);
- data = f.call(searchEngine, tx, query, data);
+ data = f.call(query, data);
BigDecimal total = new BigDecimal(0);
int cpt = 0;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionCount.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionCount.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionCount.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -70,11 +70,10 @@
@Override
public List<Map<String, Object>> call(
- WikittySearchEngine searchEngine, WikittyTransaction tx,
WikittyQuery query, List<Map<String, Object>> data) {
WikittyQueryFunction f = getArgs().get(0);
- data = f.call(searchEngine, tx, query, data);
+ data = f.call(query, data);
int cpt = 0;
for (Map<String, Object> o : data) {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionDistinct.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionDistinct.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionDistinct.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -61,14 +61,13 @@
@Override
public List<Map<String, Object>> call(
- WikittySearchEngine searchEngine, WikittyTransaction tx,
WikittyQuery query, List<Map<String, Object>> data) {
List<List<Map<String, Object>>> extractedData =
new ArrayList<List<Map<String, Object>>>();
for (WikittyQueryFunction f : getArgs()) {
- List<Map<String, Object>> r = f.call(searchEngine, tx, query, data);
+ List<Map<String, Object>> r = f.call(query, data);
extractedData.add(r);
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionFieldValue.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionFieldValue.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionFieldValue.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -74,11 +74,10 @@
@Override
public List<Map<String, Object>> call(
- WikittySearchEngine searchEngine, WikittyTransaction tx,
WikittyQuery query, List<Map<String, Object>> data) {
WikittyQueryFunction f = getArgs().get(0);
- List<Map<String, Object>> fieldName = f.call(searchEngine, tx, query, data);
+ List<Map<String, Object>> fieldName = f.call(query, data);
String field = getUniqueValue(fieldName).toString();
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionFusion.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionFusion.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionFusion.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -63,13 +63,12 @@
@Override
public List<Map<String, Object>> call(
- WikittySearchEngine searchEngine, WikittyTransaction tx,
WikittyQuery query, List<Map<String, Object>> data) {
try {
List<List<Map<String, Object>>> all = new ArrayList<List<Map<String, Object>>>();
for (WikittyQueryFunction f : getArgs()) {
- all.add(f.call(searchEngine, tx, query, data));
+ all.add(f.call(query, data));
}
List<Map<String, Object>> result = fusion(all);
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionMax.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionMax.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionMax.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -70,11 +70,10 @@
@Override
public List<Map<String, Object>> call(
- WikittySearchEngine searchEngine, WikittyTransaction tx,
WikittyQuery query, List<Map<String, Object>> data) {
WikittyQueryFunction f = getArgs().get(0);
- data = f.call(searchEngine, tx, query, data);
+ data = f.call(query, data);
Comparable candidate = null;
for (Map<String, Object> m : data) {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionMin.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionMin.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionMin.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -70,11 +70,10 @@
@Override
public List<Map<String, Object>> call(
- WikittySearchEngine searchEngine, WikittyTransaction tx,
WikittyQuery query, List<Map<String, Object>> data) {
WikittyQueryFunction f = getArgs().get(0);
- data = f.call(searchEngine, tx, query, data);
+ data = f.call(query, data);
Comparable candidate = null;
for (Map<String, Object> m : data) {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionSum.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionSum.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionSum.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -72,11 +72,10 @@
@Override
public List<Map<String, Object>> call(
- WikittySearchEngine searchEngine, WikittyTransaction tx,
WikittyQuery query, List<Map<String, Object>> data) {
WikittyQueryFunction f = getArgs().get(0);
- data = f.call(searchEngine, tx, query, data);
+ data = f.call(query, data);
BigDecimal total = new BigDecimal(0);
for (Map<String, Object> o : data) {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionValue.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionValue.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/FunctionValue.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -69,7 +69,6 @@
@Override
public List<Map<String, Object>> call(
- WikittySearchEngine searchEngine, WikittyTransaction tx,
WikittyQuery query, List<Map<String, Object>> data) {
ListObjectOrMap result = new ListObjectOrMap();
result.add(getName(), getValue());
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/WikittyQueryFunction.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/WikittyQueryFunction.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/WikittyQueryFunction.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -31,9 +31,6 @@
import java.util.List;
import java.util.Map;
import java.util.UUID;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.apache.commons.lang3.ClassUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.reflect.ConstructorUtils;
@@ -73,6 +70,8 @@
/** le nombre d'argument que la function peut prendre. Integer.MAX_VALUE = infini */
protected int numArg = Integer.MAX_VALUE;
+ abstract public List<Map<String, Object>> call(
+ WikittyQuery query, List<Map<String, Object>> data);
static public WikittyQueryFunction createFusionIfNeeded(List<WikittyQueryFunction> args) {
WikittyQueryFunction result;
@@ -226,10 +225,6 @@
return result;
}
- abstract public List<Map<String, Object>> call(
- WikittySearchEngine searchEngine, WikittyTransaction tx,
- WikittyQuery query, List<Map<String, Object>> data);
-
@Override
public String toString() {
WikittyQueryVisitorToString v = new WikittyQueryVisitorToString();
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/WikittyQueryFunctionWrapper.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/WikittyQueryFunctionWrapper.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/function/WikittyQueryFunctionWrapper.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -65,13 +65,12 @@
@Override
public List<Map<String, Object>> call(
- WikittySearchEngine searchEngine, WikittyTransaction tx,
WikittyQuery query, List<Map<String, Object>> data) {
List<List<Map<String, Object>>> param = new ArrayList<List<Map<String, Object>>>();
// on evalue les parametres que l'on passera a la fonction
for (WikittyQueryFunction f : getArgs()) {
- param.add(f.call(searchEngine, tx, query, data));
+ param.add(f.call(query, data));
}
// on recherche la fonction et on instancie si besoin un objet pour l'executer
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -25,11 +25,11 @@
package org.nuiton.wikitty.services;
-import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
@@ -45,10 +45,13 @@
import org.nuiton.wikitty.entities.WikittyExtension;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyServiceFactory;
+import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.entities.Element;
+import org.nuiton.wikitty.query.ListObjectOrMap;
import org.nuiton.wikitty.query.WikittyQuery;
import org.nuiton.wikitty.query.WikittyQueryResult;
import org.nuiton.wikitty.query.WikittyQueryResultTreeNode;
+import org.nuiton.wikitty.query.conditions.Select;
import org.nuiton.wikitty.search.Search;
import org.nuiton.wikitty.search.TreeNodeResult;
@@ -392,7 +395,7 @@
throw new UnsupportedOperationException("Not supported yet.");
}
- // FIXME poussin 20130218 a revoir car, lorsqu'elle a ete implanter, on ne retournait que des ids. Il est maintenantes possible de retourner des Maps
+ // FIXME poussin 20130218 a revoir car les order by, les facets, limit et offset ne sont pas respecte :(
@Override
public List<WikittyQueryResult<Map<String, Object>>> findAllByQuery(
String securityToken, List<WikittyQuery> queries) {
@@ -404,6 +407,7 @@
List<WikittyQueryResult<Map<String, Object>>> result =
new ArrayList<WikittyQueryResult<Map<String, Object>>>(resultWsList.size());
for (int i=0; i<queries.size(); i++) {
+ WikittyQuery query = queries.get(i);
WikittyQueryResult<Map<String, Object>> resultTx = resultTxList.get(i);
WikittyQueryResult<Map<String, Object>> resultWs = resultWsList.get(i);
// Il faut fusionner les deux resultats
@@ -412,19 +416,46 @@
// en respectant l'ordre de tri demande (comment faire?)
// - fusionner les facettes (comment faire ?)
// - respecter le range demander (comment faire, avec les suppressions possible ?)
- LinkedHashSet<Map<String, Object>> ids =
- new LinkedHashSet<Map<String, Object>>(resultTx.size() + resultWs.size());
- ids.addAll(resultTx.getAll());
- for (Map<String, Object> map : resultWs.getAll()) {
- String id = (String)map.get(Element.ID.getValue());
+ LinkedHashSet<String> ids =
+ new LinkedHashSet<String>(resultTx.getWikittyResultSize() + resultWs.getWikittyResultSize());
+ ids.addAll(resultTx.getWikittyResult().getAll());
+ for (String id : resultWs.getWikittyResult().getAll()) {
if ((!tx.exists(securityToken, id) || !tx.isDeleted(securityToken, id))) {
- ids.add(map);
+ ids.add(id);
} else {
// pas un id, donc on ne sais pas encore comment faire :(. On l'ajoute
- ids.add(map);
+ ids.add(id);
}
}
+ List<String> wikittyId = new ArrayList<String>(ids);
+ List<Map<String, Object>> selectFusion = null;
+ if (query.isSelectQuery()) {
+ List<Map<String, Object>> values = new ArrayList<Map<String, Object>>(wikittyId.size());
+ List<Wikitty> wikitties = restore(securityToken, wikittyId);
+ for (Wikitty w : wikitties) {
+ Map<String, Object> map = new LinkedHashMap<String, Object>(w.getFieldValue());
+ map.put(org.nuiton.wikitty.entities.Element.ID.getValue(), w.getWikittyId());
+ values.add(map);
+ }
+
+ Select select = (Select)query.getCondition();
+ selectFusion = select.getFunction().call(query, values);
+ }
+
+ List<Map<String, Object>> results;
+ if (query.isSelectQuery()) {
+ // on met selectFusion dans result
+ results = selectFusion;
+ } else {
+ // on met les ids dans results
+ results = new ArrayList<Map<String, Object>>(ids.size());
+ String key = Element.ID.getValue();
+ for (String id : ids) {
+ results.add(WikittyUtil.singletonMap(key, id));
+ }
+ }
+
String queryName = resultWs.getQueryName();
int firstIndice = resultWs.getOffset();
// FIXME le resultat est faux, le nombre total n'est pas la somme des deux :(
@@ -432,11 +463,12 @@
String queryString = resultWs.getQueryString();
// FIXME les facettes sont fausses :(
Map<String, List<org.nuiton.wikitty.query.FacetTopic>> facets = resultWs.getFacets();
- List<Map<String, Object>> results = new ArrayList<Map<String, Object>>(ids);
long timeQuery = resultTx.getTimeQuery() + resultWs.getTimeQuery();
- result.add(new WikittyQueryResult<Map<String, Object>>(queryName,
- firstIndice, numFound, queryString, facets, results, timeQuery, 0));
+ result.add(new WikittyQueryResult<Map<String, Object>>(
+ queryName, firstIndice, numFound, query, queryString,
+ results, selectFusion, wikittyId, facets,
+ timeQuery, 0));
}
if (queries.size() != result.size()) {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -370,6 +370,7 @@
}
List<Map<String, Object>> values = new ArrayList<Map<String, Object>>(ids.size());
+ List<Map<String, Object>> selectResult = null;
if (select == null) {
String idTag = org.nuiton.wikitty.entities.Element.ID.getValue();
for (Object id : ids) {
@@ -384,13 +385,16 @@
values.add(map);
}
- values = select.getFunction().call(this, transaction, query, values);
+ values = select.getFunction().call(query, values);
+ selectResult = values;
}
- WikittyQueryResult<Map<String, Object>> result = new WikittyQueryResult<Map<String, Object>>(queryWithoutSelect.getName(),
- offset, totalResult, queryWithoutSelect.getCondition().toString(),
- facets.getFacets(), values, 0, 0);
+ WikittyQueryResult<Map<String, Object>> result =
+ new WikittyQueryResult<Map<String, Object>>(
+ queryWithoutSelect.getName(), offset, totalResult,
+ query, queryWithoutSelect.getCondition().toString(),
+ values, selectResult, ids, facets.getFacets(), 0, 0);
return result;
}
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2013-02-24 13:10:11 UTC (rev 1553)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2013-02-25 00:57:54 UTC (rev 1554)
@@ -75,6 +75,8 @@
import org.nuiton.wikitty.storage.WikittyExtensionStorage;
import org.nuiton.wikitty.storage.WikittySearchEngine;
+import static org.nuiton.wikitty.storage.solr.WikittySolrConstant.SOLR_ID;
+
/**
*
* @author poussin
@@ -679,15 +681,16 @@
}
@Override
- public WikittyQueryResult<Map<String, Object>> findAllByQuery(WikittyTransaction transaction, WikittyQuery query) {
+ public WikittyQueryResult<Map<String, Object>> findAllByQuery(
+ WikittyTransaction transaction, WikittyQuery query) {
try {
// la condition select du query, sera traite a la fin
Select select = null;
WikittyQuery queryWithoutSelect = query;
- if (query.getCondition() instanceof Select) {
- select = (Select)query.getCondition();
+ if (query.isSelectQuery()) {
+ select = query.getSelect();
Condition newCond = select.getSubCondition();
if (newCond == null) {
newCond = new org.nuiton.wikitty.query.conditions.True();
@@ -818,13 +821,20 @@
// Get total num found
int numFound = (int)resp.getResults().getNumFound();
+ // collecte des id
+ List<String> wikittyId = new ArrayList<String>(solrResults.size());
+ for (SolrDocument doc : solrResults) {
+ String id = SolrUtil.getStringFieldValue(doc, SOLR_ID);
+ wikittyId.add(id);
+ }
+
+ List<Map<String, Object>> selectResult = null;
List<Map<String, Object>> values =
- new ArrayList<Map<String, Object>>(solrResults.size());
+ new ArrayList<Map<String, Object>>(wikittyId.size());
if (select == null) {
// Extract ids
String idTag = org.nuiton.wikitty.entities.Element.ID.getValue();
- for (SolrDocument doc : solrResults) {
- Object id = SolrUtil.getStringFieldValue(doc, SOLR_ID);
+ for (Object id : wikittyId) {
values.add(WikittyUtil.singletonMap(idTag, id));
}
} else {
@@ -834,14 +844,16 @@
values.add(map);
}
- values = select.getFunction().call(this, transaction, query, values);
-
+ values = select.getFunction().call(query, values);
+ selectResult = values;
}
// Build paged result
- WikittyQueryResult result = new WikittyQueryResult(query.getName(),
- offset, numFound, queryString, facets, values, 0, 0);
+ WikittyQueryResult result = new WikittyQueryResult(
+ query.getName(), offset, numFound, query, queryString,
+ values, selectResult, wikittyId, facets,
+ 0, 0);
return result;
} catch (SolrServerException eee) {
1
0
r1553 - trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query
by bpoussin@users.nuiton.org 24 Feb '13
by bpoussin@users.nuiton.org 24 Feb '13
24 Feb '13
Author: bpoussin
Date: 2013-02-24 14:10:11 +0100 (Sun, 24 Feb 2013)
New Revision: 1553
Url: http://nuiton.org/projects/wikitty/repository/revisions/1553
Log:
ajout javadoc
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java 2013-02-24 09:24:29 UTC (rev 1552)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java 2013-02-24 13:10:11 UTC (rev 1553)
@@ -248,12 +248,26 @@
/**
* Get map represent facets.
*
+ * return map of list
+ * <li>key is facet name
+ * <li>value is topic liste une this facet
+ *
* @return all facets
*/
public Map<String, List<FacetTopic>> getFacets() {
return facets;
}
+ /**
+ * Get map represent facets.
+ *
+ * return map of map
+ * <li>primary key is facet name
+ * <li>secondary key is topic name
+ * <li>value is topic
+ *
+ * @return
+ */
public Map<String, Map<String, FacetTopic>> getFacetsAsMap() {
if (facetsAsMap == null && facets != null) {
// use local variable to prevent multi-thread problem (multiple add)
1
0
r1552 - in tags/wikitty-3.9: src/site/en/rst src/site/rst/user wikitty-hessian-client/src/site/en/rst wikitty-hessian-client/src/site/rst
by maven-release@users.nuiton.org 24 Feb '13
by maven-release@users.nuiton.org 24 Feb '13
24 Feb '13
Author: maven-release
Date: 2013-02-24 10:24:29 +0100 (Sun, 24 Feb 2013)
New Revision: 1552
Url: http://nuiton.org/projects/wikitty/repository/revisions/1552
Log:
fix rst files
Modified:
tags/wikitty-3.9/src/site/en/rst/HowTo.rst
tags/wikitty-3.9/src/site/en/rst/hessian.rst
tags/wikitty-3.9/src/site/en/rst/index.rst
tags/wikitty-3.9/src/site/en/rst/migration.rst
tags/wikitty-3.9/src/site/rst/user/query.rst
tags/wikitty-3.9/wikitty-hessian-client/src/site/en/rst/index.rst
tags/wikitty-3.9/wikitty-hessian-client/src/site/rst/index.rst
Modified: tags/wikitty-3.9/src/site/en/rst/HowTo.rst
===================================================================
--- tags/wikitty-3.9/src/site/en/rst/HowTo.rst 2013-02-24 09:24:18 UTC (rev 1551)
+++ tags/wikitty-3.9/src/site/en/rst/HowTo.rst 2013-02-24 09:24:29 UTC (rev 1552)
@@ -22,8 +22,9 @@
.. * <http://www.gnu.org/licenses/lgpl-3.0.html>.
.. * #L%
.. -
+
How to work Translation
-======================
+=======================
Add extension field translation
-------------------------------
Modified: tags/wikitty-3.9/src/site/en/rst/hessian.rst
===================================================================
--- tags/wikitty-3.9/src/site/en/rst/hessian.rst 2013-02-24 09:24:18 UTC (rev 1551)
+++ tags/wikitty-3.9/src/site/en/rst/hessian.rst 2013-02-24 09:24:29 UTC (rev 1552)
@@ -22,6 +22,7 @@
.. * <http://www.gnu.org/licenses/lgpl-3.0.html>.
.. * #L%
.. -
+
Hessian
=======
Modified: tags/wikitty-3.9/src/site/en/rst/index.rst
===================================================================
--- tags/wikitty-3.9/src/site/en/rst/index.rst 2013-02-24 09:24:18 UTC (rev 1551)
+++ tags/wikitty-3.9/src/site/en/rst/index.rst 2013-02-24 09:24:29 UTC (rev 1552)
@@ -22,6 +22,7 @@
.. * <http://www.gnu.org/licenses/lgpl-3.0.html>.
.. * #L%
.. -
+
Wikitty
=======
Modified: tags/wikitty-3.9/src/site/en/rst/migration.rst
===================================================================
--- tags/wikitty-3.9/src/site/en/rst/migration.rst 2013-02-24 09:24:18 UTC (rev 1551)
+++ tags/wikitty-3.9/src/site/en/rst/migration.rst 2013-02-24 09:24:29 UTC (rev 1552)
@@ -22,6 +22,7 @@
.. * <http://www.gnu.org/licenses/lgpl-3.0.html>.
.. * #L%
.. -
+
Manage data migration using Wikitty
-----------------------------------
Modified: tags/wikitty-3.9/src/site/rst/user/query.rst
===================================================================
--- tags/wikitty-3.9/src/site/rst/user/query.rst 2013-02-24 09:24:18 UTC (rev 1551)
+++ tags/wikitty-3.9/src/site/rst/user/query.rst 2013-02-24 09:24:29 UTC (rev 1552)
@@ -725,7 +725,7 @@
---------------------------------
Date
-~~~~
+++++
Pour simplifier l'écriture des dates, il est possible d'utiliser la fonction date,
ce qui évite de devoir écrire les dates dans un format spécifique.::
@@ -737,7 +737,7 @@
dont l'âge est tout de même avant l'an 2000.
Alias
-~~~~~
++++++
Vous pouvez ajouter des alias pour simplifier l'écriture de certaines requêtes.
Modified: tags/wikitty-3.9/wikitty-hessian-client/src/site/en/rst/index.rst
===================================================================
--- tags/wikitty-3.9/wikitty-hessian-client/src/site/en/rst/index.rst 2013-02-24 09:24:18 UTC (rev 1551)
+++ tags/wikitty-3.9/wikitty-hessian-client/src/site/en/rst/index.rst 2013-02-24 09:24:29 UTC (rev 1552)
@@ -22,6 +22,7 @@
.. * <http://www.gnu.org/licenses/lgpl-3.0.html>.
.. * #L%
.. -
+
Wikitty Hessian Client
======================
Modified: tags/wikitty-3.9/wikitty-hessian-client/src/site/rst/index.rst
===================================================================
--- tags/wikitty-3.9/wikitty-hessian-client/src/site/rst/index.rst 2013-02-24 09:24:18 UTC (rev 1551)
+++ tags/wikitty-3.9/wikitty-hessian-client/src/site/rst/index.rst 2013-02-24 09:24:29 UTC (rev 1552)
@@ -22,6 +22,7 @@
.. * <http://www.gnu.org/licenses/lgpl-3.0.html>.
.. * #L%
.. -
+
Wikitty Hessian Client
======================
1
0
Author: maven-release
Date: 2013-02-24 10:24:18 +0100 (Sun, 24 Feb 2013)
New Revision: 1551
Url: http://nuiton.org/projects/wikitty/repository/revisions/1551
Log:
fix dependencies (GAV has changed)
Modified:
tags/wikitty-3.9/pom.xml
Modified: tags/wikitty-3.9/pom.xml
===================================================================
--- tags/wikitty-3.9/pom.xml 2013-02-24 02:18:33 UTC (rev 1550)
+++ tags/wikitty-3.9/pom.xml 2013-02-24 09:24:18 UTC (rev 1551)
@@ -635,7 +635,7 @@
<dependency>
<groupId>org.nuiton</groupId>
- <artifactId>maven-helper-plugin</artifactId>
+ <artifactId>helper-maven-plugin</artifactId>
<version>${helperPluginVersion}</version>
<exclusions>
<exclusion>
1
0
Author: bpoussin
Date: 2013-02-24 03:18:33 +0100 (Sun, 24 Feb 2013)
New Revision: 1550
Url: http://nuiton.org/projects/wikitty/repository/revisions/1550
Log:
petite mise a jour de la doc sur les select
petite correction de syntaxe
Modified:
trunk/src/site/rst/index.rst
trunk/src/site/rst/user/generation.rst
trunk/src/site/rst/user/query.rst
Modified: trunk/src/site/rst/index.rst
===================================================================
--- trunk/src/site/rst/index.rst 2013-02-24 01:55:17 UTC (rev 1549)
+++ trunk/src/site/rst/index.rst 2013-02-24 02:18:33 UTC (rev 1550)
@@ -102,7 +102,7 @@
Pour plus d'informations sur les différentes fonctionnalités, référez-vous à la
`page correspondante`_
-.. _page correspondante:features.html
+.. _page correspondante: features.html
Technologies
------------
Modified: trunk/src/site/rst/user/generation.rst
===================================================================
--- trunk/src/site/rst/user/generation.rst 2013-02-24 01:55:17 UTC (rev 1549)
+++ trunk/src/site/rst/user/generation.rst 2013-02-24 02:18:33 UTC (rev 1550)
@@ -120,7 +120,7 @@
.. image:: wikittyTree.png
-.. _EUGene:http://maven-site.nuiton.org/eugene/
+.. _EUGene: http://maven-site.nuiton.org/eugene/
Tag Value disponible
====================
Modified: trunk/src/site/rst/user/query.rst
===================================================================
--- trunk/src/site/rst/user/query.rst 2013-02-24 01:55:17 UTC (rev 1549)
+++ trunk/src/site/rst/user/query.rst 2013-02-24 02:18:33 UTC (rev 1550)
@@ -477,10 +477,10 @@
Retourne une liste sans doublon::
WikittyQuery q = new WikittyQueryMaker()
- .select("Person.age", true).eq("Person.firstname", "Jean").end();
+ .select().distinct("Person.age").where().eq("Person.firstname", "Jean").end();
WikittyQuery q = WikittyQueryParser.parse(
- "SELECT DISTINCT Person.age WHERE Person.firstname=Jean");
+ "SELECT DISTINCT(Person.age) WHERE Person.firstname=Jean");
Dans ces exemples si plusieurs personnes portant le prénom 'Jean' ont le même
âge, cet âge n'est retourné qu'une seule fois. Par exemple si la liste dans le
@@ -489,10 +489,10 @@
Il est possible de couplé DISTINCT est une fonction d'aggrégat::
WikittyQuery q = new WikittyQueryMaker()
- .select("Person.age", Aggregate.AVG, true).eq("Person.firstname", "Jean").end();
+ .select().avg().distinct("Person.age").where().eq("Person.firstname", "Jean").end();
WikittyQuery q = WikittyQueryParser.parse(
- "SELECT DISTINCT AVG Person.age WHERE Person.firstname=Jean");
+ "SELECT AVG(DISTINCT(Person.age)) WHERE Person.firstname=Jean");
Dans cette exemple la moyenne est fait sur: 12, 18, 33 soit 21
@@ -503,10 +503,10 @@
un Numeric::
WikittyQuery q = new WikittyQueryMaker()
- .select("Person.age", Aggregate.AVG).eq("Person.firstname", "Jean").end();
+ .select().avg("Person.age").where().eq("Person.firstname", "Jean").end();
WikittyQuery q = WikittyQueryParser.parse(
- "SELECT AVG Person.age WHERE Person.firstname=Jean");
+ "SELECT AVG(Person.age) WHERE Person.firstname=Jean");
COUNT
~~~~~
@@ -514,10 +514,10 @@
Retourne le nombre d'élément retourné::
WikittyQuery q = new WikittyQueryMaker()
- .select("Person.age", Aggregate.COUNT).eq("Person.firstname", "Jean").end();
+ .select().count("Person.age").where().eq("Person.firstname", "Jean").end();
WikittyQuery q = WikittyQueryParser.parse(
- "SELECT COUNT Person.age WHERE Person.firstname=Jean");
+ "SELECT COUNT(Person.age) WHERE Person.firstname=Jean");
MAX
~~~
@@ -527,10 +527,10 @@
// on recherche le plus jeune (plus grande date) des personnes s'appelant Jean
WikittyQuery q = new WikittyQueryMaker()
- .select("Person.birthday", Aggregate.MAX).eq("Person.firstname", "Jean").end();
+ .select().max("Person.birthday").where().eq("Person.firstname", "Jean").end();
WikittyQuery q = WikittyQueryParser.parse(
- "SELECT MAX Person.birthday WHERE Person.firstname=Jean");
+ "SELECT MAX(Person.birthday) WHERE Person.firstname=Jean");
MIN
~~~
@@ -540,10 +540,10 @@
// on recherche le plus agé (plus petite date) des personnes s'appelant Jean
WikittyQuery q = new WikittyQueryMaker()
- .select("Person.birthday", Aggregate.MIN).eq("Person.firstname", "Jean").end();
+ .select().min("Person.birthday").where().eq("Person.firstname", "Jean").end();
WikittyQuery q = WikittyQueryParser.parse(
- "SELECT MIN Person.birthday WHERE Person.firstname=Jean");
+ "SELECT MIN(Person.birthday) WHERE Person.firstname=Jean");
SUM
~~~
@@ -553,10 +553,10 @@
// fait la somme des facture depuis le début d'année
WikittyQuery q = new WikittyQueryMaker()
- .select("Invoice.amount", Aggregate.SUM).ge("Invoice.date", "01/01/2012").end();
+ .select().sum("Invoice.amount").where().ge("Invoice.date", "01/01/2012").end();
WikittyQuery q = WikittyQueryParser.parse(
- "SELECT SUM Invoice.amount WHERE Invoice.date>=01/01/2012");
+ "SELECT SUM(Invoice.amount) WHERE Invoice.date>=date(01/01/2012)");
Recherche sur les arbres
------------------------
@@ -574,10 +574,10 @@
WikittyQuery q = new WikittyQueryMaker()
.containsOne(Element.ID)
- .select(WikittyTreeNode.ELEMENT_FIELD_WIKITTYTREENODE_ATTACHMENT).end();
+ .select(WikittyTreeNode.ELEMENT_FIELD_WIKITTYTREENODE_ATTACHMENT).where().exteq(WikittyTreeNode.EXT_WIKITTY_TREE_NODE).end();
WikittyQuery q = WikittyQueryParser.parse(
- "id={SELECT WikittyTreeNode.attachment}");
+ "id={SELECT WikittyTreeNode.attachment where extension=WikittyTreeNode}");
Pour avoir tous les attachments de tous les noeuds d'un arbre ayant le nom 'MyTree'::
@@ -725,19 +725,19 @@
---------------------------------
Date
-~~~~
+++++
Pour simplifier l'écriture des dates, il est possible d'utiliser la fonction date,
ce qui évite de devoir écrire les dates dans un format spécifique.::
WikittyQuery q = WikittyQueryParser.parse(
- "SELECT MIN Person.birthday WHERE Person.firstname=Jean and Person.birthday < date(01/01/2000)");
+ "SELECT MIN(Person.birthday) WHERE Person.firstname=Jean and Person.birthday < date(01/01/2000)");
Ici on recherche une personne s'appelant 'Jean' ayant l'âge le plus petit, mais
dont l'âge est tout de même avant l'an 2000.
Alias
-~~~~~
++++++
Vous pouvez ajouter des alias pour simplifier l'écriture de certaines requêtes.
1
0
r1549 - in trunk: . wikitty-api wikitty-dto wikitty-generators wikitty-hessian-client wikitty-hessian-server wikitty-jdbc wikitty-perf-test wikitty-solr wikitty-struts
by maven-release@users.nuiton.org 24 Feb '13
by maven-release@users.nuiton.org 24 Feb '13
24 Feb '13
Author: maven-release
Date: 2013-02-24 02:55:17 +0100 (Sun, 24 Feb 2013)
New Revision: 1549
Url: http://nuiton.org/projects/wikitty/repository/revisions/1549
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
trunk/pom.xml
trunk/wikitty-api/pom.xml
trunk/wikitty-dto/pom.xml
trunk/wikitty-generators/pom.xml
trunk/wikitty-hessian-client/pom.xml
trunk/wikitty-hessian-server/pom.xml
trunk/wikitty-jdbc/pom.xml
trunk/wikitty-perf-test/pom.xml
trunk/wikitty-solr/pom.xml
trunk/wikitty-struts/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-02-24 01:55:14 UTC (rev 1548)
+++ trunk/pom.xml 2013-02-24 01:55:17 UTC (rev 1549)
@@ -15,7 +15,7 @@
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9</version>
+ <version>3.10-SNAPSHOT</version>
<modules>
@@ -802,10 +802,10 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/wikitty/tags/wikitty-3.9</connection>
- <developerConnection>scm:svn:http://svn.nuiton.org/svn/wikitty/tags/wikitty-3.9
+ <connection>scm:svn:http://svn.nuiton.org/svn/wikitty/trunk</connection>
+ <developerConnection>scm:svn:http://svn.nuiton.org/svn/wikitty/trunk
</developerConnection>
- <url>http://www.nuiton.org/repositories/browse/wikitty/tags/wikitty-3.9</url>
+ <url>http://www.nuiton.org/repositories/browse/wikitty/trunk</url>
</scm>
<distributionManagement>
Modified: trunk/wikitty-api/pom.xml
===================================================================
--- trunk/wikitty-api/pom.xml 2013-02-24 01:55:14 UTC (rev 1548)
+++ trunk/wikitty-api/pom.xml 2013-02-24 01:55:17 UTC (rev 1549)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9</version>
+ <version>3.10-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-dto/pom.xml
===================================================================
--- trunk/wikitty-dto/pom.xml 2013-02-24 01:55:14 UTC (rev 1548)
+++ trunk/wikitty-dto/pom.xml 2013-02-24 01:55:17 UTC (rev 1549)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9</version>
+ <version>3.10-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-generators/pom.xml
===================================================================
--- trunk/wikitty-generators/pom.xml 2013-02-24 01:55:14 UTC (rev 1548)
+++ trunk/wikitty-generators/pom.xml 2013-02-24 01:55:17 UTC (rev 1549)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9</version>
+ <version>3.10-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-hessian-client/pom.xml
===================================================================
--- trunk/wikitty-hessian-client/pom.xml 2013-02-24 01:55:14 UTC (rev 1548)
+++ trunk/wikitty-hessian-client/pom.xml 2013-02-24 01:55:17 UTC (rev 1549)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9</version>
+ <version>3.10-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-hessian-server/pom.xml
===================================================================
--- trunk/wikitty-hessian-server/pom.xml 2013-02-24 01:55:14 UTC (rev 1548)
+++ trunk/wikitty-hessian-server/pom.xml 2013-02-24 01:55:17 UTC (rev 1549)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9</version>
+ <version>3.10-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-jdbc/pom.xml
===================================================================
--- trunk/wikitty-jdbc/pom.xml 2013-02-24 01:55:14 UTC (rev 1548)
+++ trunk/wikitty-jdbc/pom.xml 2013-02-24 01:55:17 UTC (rev 1549)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9</version>
+ <version>3.10-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.wikitty</groupId>
Modified: trunk/wikitty-perf-test/pom.xml
===================================================================
--- trunk/wikitty-perf-test/pom.xml 2013-02-24 01:55:14 UTC (rev 1548)
+++ trunk/wikitty-perf-test/pom.xml 2013-02-24 01:55:17 UTC (rev 1549)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9</version>
+ <version>3.10-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.wikitty</groupId>
Modified: trunk/wikitty-solr/pom.xml
===================================================================
--- trunk/wikitty-solr/pom.xml 2013-02-24 01:55:14 UTC (rev 1548)
+++ trunk/wikitty-solr/pom.xml 2013-02-24 01:55:17 UTC (rev 1549)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9</version>
+ <version>3.10-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-struts/pom.xml
===================================================================
--- trunk/wikitty-struts/pom.xml 2013-02-24 01:55:14 UTC (rev 1548)
+++ trunk/wikitty-struts/pom.xml 2013-02-24 01:55:17 UTC (rev 1549)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9</version>
+ <version>3.10-SNAPSHOT</version>
</parent>
<!-- ************************************************************* -->
1
0
Author: maven-release
Date: 2013-02-24 02:55:14 +0100 (Sun, 24 Feb 2013)
New Revision: 1548
Url: http://nuiton.org/projects/wikitty/repository/revisions/1548
Log:
[maven-release-plugin] copy for tag wikitty-3.9
Added:
tags/wikitty-3.9/
Property changes on: tags/wikitty-3.9
___________________________________________________________________
Added: svn:ignore
+ .settings
.project
target
*.iml
*.ipr
*.iws
Added: svn:mergeinfo
+ /branches/2.0-eugene2:164-179
1
0
r1547 - in trunk: . wikitty-api wikitty-dto wikitty-generators wikitty-hessian-client wikitty-hessian-server wikitty-jdbc wikitty-perf-test wikitty-solr wikitty-struts
by maven-release@users.nuiton.org 24 Feb '13
by maven-release@users.nuiton.org 24 Feb '13
24 Feb '13
Author: maven-release
Date: 2013-02-24 02:55:12 +0100 (Sun, 24 Feb 2013)
New Revision: 1547
Url: http://nuiton.org/projects/wikitty/repository/revisions/1547
Log:
[maven-release-plugin] prepare release wikitty-3.9
Modified:
trunk/pom.xml
trunk/wikitty-api/pom.xml
trunk/wikitty-dto/pom.xml
trunk/wikitty-generators/pom.xml
trunk/wikitty-hessian-client/pom.xml
trunk/wikitty-hessian-server/pom.xml
trunk/wikitty-jdbc/pom.xml
trunk/wikitty-perf-test/pom.xml
trunk/wikitty-solr/pom.xml
trunk/wikitty-struts/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-02-24 01:51:13 UTC (rev 1546)
+++ trunk/pom.xml 2013-02-24 01:55:12 UTC (rev 1547)
@@ -15,7 +15,7 @@
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9-SNAPSHOT</version>
+ <version>3.9</version>
<modules>
@@ -802,10 +802,10 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/wikitty/trunk</connection>
- <developerConnection>scm:svn:http://svn.nuiton.org/svn/wikitty/trunk
+ <connection>scm:svn:http://svn.nuiton.org/svn/wikitty/tags/wikitty-3.9</connection>
+ <developerConnection>scm:svn:http://svn.nuiton.org/svn/wikitty/tags/wikitty-3.9
</developerConnection>
- <url>http://www.nuiton.org/repositories/browse/wikitty/trunk</url>
+ <url>http://www.nuiton.org/repositories/browse/wikitty/tags/wikitty-3.9</url>
</scm>
<distributionManagement>
Modified: trunk/wikitty-api/pom.xml
===================================================================
--- trunk/wikitty-api/pom.xml 2013-02-24 01:51:13 UTC (rev 1546)
+++ trunk/wikitty-api/pom.xml 2013-02-24 01:55:12 UTC (rev 1547)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9-SNAPSHOT</version>
+ <version>3.9</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-dto/pom.xml
===================================================================
--- trunk/wikitty-dto/pom.xml 2013-02-24 01:51:13 UTC (rev 1546)
+++ trunk/wikitty-dto/pom.xml 2013-02-24 01:55:12 UTC (rev 1547)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9-SNAPSHOT</version>
+ <version>3.9</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-generators/pom.xml
===================================================================
--- trunk/wikitty-generators/pom.xml 2013-02-24 01:51:13 UTC (rev 1546)
+++ trunk/wikitty-generators/pom.xml 2013-02-24 01:55:12 UTC (rev 1547)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9-SNAPSHOT</version>
+ <version>3.9</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-hessian-client/pom.xml
===================================================================
--- trunk/wikitty-hessian-client/pom.xml 2013-02-24 01:51:13 UTC (rev 1546)
+++ trunk/wikitty-hessian-client/pom.xml 2013-02-24 01:55:12 UTC (rev 1547)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9-SNAPSHOT</version>
+ <version>3.9</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-hessian-server/pom.xml
===================================================================
--- trunk/wikitty-hessian-server/pom.xml 2013-02-24 01:51:13 UTC (rev 1546)
+++ trunk/wikitty-hessian-server/pom.xml 2013-02-24 01:55:12 UTC (rev 1547)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9-SNAPSHOT</version>
+ <version>3.9</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-jdbc/pom.xml
===================================================================
--- trunk/wikitty-jdbc/pom.xml 2013-02-24 01:51:13 UTC (rev 1546)
+++ trunk/wikitty-jdbc/pom.xml 2013-02-24 01:55:12 UTC (rev 1547)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9-SNAPSHOT</version>
+ <version>3.9</version>
</parent>
<groupId>org.nuiton.wikitty</groupId>
Modified: trunk/wikitty-perf-test/pom.xml
===================================================================
--- trunk/wikitty-perf-test/pom.xml 2013-02-24 01:51:13 UTC (rev 1546)
+++ trunk/wikitty-perf-test/pom.xml 2013-02-24 01:55:12 UTC (rev 1547)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9-SNAPSHOT</version>
+ <version>3.9</version>
</parent>
<groupId>org.nuiton.wikitty</groupId>
Modified: trunk/wikitty-solr/pom.xml
===================================================================
--- trunk/wikitty-solr/pom.xml 2013-02-24 01:51:13 UTC (rev 1546)
+++ trunk/wikitty-solr/pom.xml 2013-02-24 01:55:12 UTC (rev 1547)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9-SNAPSHOT</version>
+ <version>3.9</version>
</parent>
<!-- ************************************************************* -->
Modified: trunk/wikitty-struts/pom.xml
===================================================================
--- trunk/wikitty-struts/pom.xml 2013-02-24 01:51:13 UTC (rev 1546)
+++ trunk/wikitty-struts/pom.xml 2013-02-24 01:55:12 UTC (rev 1547)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>wikitty</artifactId>
- <version>3.9-SNAPSHOT</version>
+ <version>3.9</version>
</parent>
<!-- ************************************************************* -->
1
0