Author: bpoussin Date: 2012-01-12 21:00:00 +0100 (Thu, 12 Jan 2012) New Revision: 1320 Url: http://nuiton.org/repositories/revision/wikitty/1320 Log: Evolution #1867: Delete all deprecated API (criteria, ...) suppression de l'utilisation partout ou c'est possible Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ExportQueryTask.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyI18nUtil.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyImportExportService.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyLabelUtil.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ExportTask.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/ImportExportMethod.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportXML.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportTask.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/services/WikittySecurityHelper.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceHook.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -123,6 +123,16 @@ * @param wikittyService */ public WikittyClient(ApplicationConfig config, WikittyService wikittyService) { + this(config, wikittyService, null); + } + + /** + * Creation du client en forcant le wikittyService + * + * @param config + * @param wikittyService + */ + public WikittyClient(ApplicationConfig config, WikittyService wikittyService, String securityToken) { if (config != null) { this.config = config; long timeToLogInfo = config.getOptionAsInt(WikittyConfigOption. @@ -134,6 +144,7 @@ } setWikittyService(wikittyService); + setSecurityToken(securityToken); } static public TimeLog getTimeTrace() { Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyI18nUtil.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyI18nUtil.java 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyI18nUtil.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -27,6 +27,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.wikitty.WikittyClient; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.entities.WikittyExtension; import org.nuiton.wikitty.entities.WikittyI18n; @@ -55,7 +56,9 @@ * @param proxy * @param extension * @return + * @deprecated since 3.4 use {@link #getI18n(org.nuiton.wikitty.WikittyClient, org.nuiton.wikitty.entities.WikittyExtension) } */ + @Deprecated static public WikittyI18n getI18n(WikittyProxy proxy, WikittyExtension extension) { String id = WikittyMetaExtensionUtil.generateId( WikittyI18n.EXT_WIKITTYI18N, @@ -71,4 +74,26 @@ return result; } + /** + * Create or load WikittyExtensionTranslation for given extension. + * If created you must call store if you want keep it in storage + * @param proxy + * @param extension + * @return + */ + static public WikittyI18n getI18n(WikittyClient proxy, WikittyExtension extension) { + String id = WikittyMetaExtensionUtil.generateId( + WikittyI18n.EXT_WIKITTYI18N, + extension.getName()); + + WikittyI18n result; + Wikitty w = proxy.restore(id); + if (w == null) { + w = new WikittyImpl(id); + } + result = new WikittyI18nImpl(w); + + return result; + } + } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyImportExportService.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyImportExportService.java 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyImportExportService.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -40,12 +40,14 @@ import java.util.concurrent.Future; import java.util.concurrent.FutureTask; import org.nuiton.util.ApplicationConfig; +import org.nuiton.wikitty.WikittyClient; import org.nuiton.wikitty.entities.BusinessEntityImpl; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyConfig; import org.nuiton.wikitty.WikittyConfigOption; import org.nuiton.wikitty.WikittyException; import org.nuiton.wikitty.WikittyService; +import org.nuiton.wikitty.addons.importexport.ExportQueryTask; import org.nuiton.wikitty.addons.importexport.ExportTask; import org.nuiton.wikitty.addons.importexport.ImportExportCSV; @@ -53,6 +55,8 @@ import org.nuiton.wikitty.addons.importexport.ImportExportXML; import org.nuiton.wikitty.addons.importexport.ImportTask; import org.nuiton.wikitty.addons.importexport.JobState; +import org.nuiton.wikitty.query.WikittyQuery; +import org.nuiton.wikitty.query.WikittyQueryMaker; import org.nuiton.wikitty.search.Search; /** @@ -81,7 +85,7 @@ } }; - ApplicationConfig config = null; + WikittyClient client; /** directory path where export asynchronous file are stored */ protected String exportDirectory = "/tmp/"; /** url used by client to retrieve export file when job is ended */ @@ -94,28 +98,41 @@ protected Map<String, Future<String>> importExportTask = new HashMap<String, Future<String>>(); - protected WikittyService ws; - protected String securityToken; - public WikittyImportExportService( - ApplicationConfig config, String securityToken, WikittyService ws) { - this.config = config; - this.securityToken = securityToken; - this.ws = ws; + public WikittyImportExportService(WikittyClient client) { + this.client = client; + ApplicationConfig config = client.getConfig(); exportDirectory = config.getOption( WikittyConfigOption.WIKITTY_EXPORT_DIRECTORY.getKey()); exportPublicURL = config.getOption( WikittyConfigOption.WIKITTY_EXPORT_PUBLICURL.getKey()); - + int maxThread = config.getOptionAsInt( WikittyConfigOption.WIKITTY_EXPORT_THREADNUMBER.getKey()); this.importExportExecutor = Executors.newFixedThreadPool(maxThread); } + /** + * + * @param config + * @param securityToken + * @param ws + * @deprecated since 3.2 use {@link #WikittyImportExportService(org.nuiton.wikitty.WikittyClient) } + */ + @Deprecated + public WikittyImportExportService( + ApplicationConfig config, String securityToken, WikittyService ws) { + this(new WikittyClient(config, ws, securityToken)); + } + + public WikittyClient getClient() { + return client; + } + public WikittyService getWikittyService() { - return ws; + return getClient().getWikittyService(); } public String getExportDirectory() { @@ -132,7 +149,7 @@ } public void syncImport(FORMAT format, Reader reader) { - ImportTask task = new ImportTask(securityToken, config, ws, format, reader); + ImportTask task = new ImportTask(client, format, reader); task.run(); } @@ -140,7 +157,7 @@ try { URL url = new URL(uri); Reader reader = new InputStreamReader(url.openStream()); - ImportTask task = new ImportTask(securityToken, config, ws, format, reader); + ImportTask task = new ImportTask(client, format, reader); task.run(); } catch (Exception eee) { throw new WikittyException(String.format( @@ -152,7 +169,7 @@ try { URL url = new URL(uri); Reader reader = new InputStreamReader(url.openStream()); - ImportTask task = new ImportTask(securityToken, config, ws, format, reader); + ImportTask task = new ImportTask(client, format, reader); FutureTask<String> future = new FutureTask<String>(task, null); importExportExecutor.submit(future); @@ -173,8 +190,8 @@ * @return job id */ public String asyncExportAllByExample(FORMAT format, BusinessEntityImpl e) { - Criteria criteria = Search.query(e.getWikitty()).criteria(); - String result = asyncExportAllByCriteria(format, criteria); + WikittyQuery query = new WikittyQueryMaker().wikitty(e).end(); + String result = asyncExportAllByQuery(format, query); return result; } @@ -186,8 +203,8 @@ * @return export string */ public String syncExportAllByExample(FORMAT format, BusinessEntityImpl e) { - Criteria criteria = Search.query(e.getWikitty()).criteria(); - String result = syncExportAllByCriteria(format, criteria); + WikittyQuery query = new WikittyQueryMaker().wikitty(e).end(); + String result = syncExportAllByQuery(format, query); return result; } @@ -200,17 +217,70 @@ */ public void syncExportAllByExample(FORMAT format, BusinessEntityImpl e, Writer writer) { - Criteria criteria = Search.query(e.getWikitty()).criteria(); - syncExportAllByCriteria(format, criteria, writer); + WikittyQuery query = new WikittyQueryMaker().wikitty(e).end(); + syncExportAllByQuery(format, query, writer); } /** * Asynchronous export by criteria. * * @param format export format + * @param query criteria + * @return export as string + */ + public String asyncExportAllByQuery(FORMAT format, WikittyQuery query) { + try { + String jobId = UUID.randomUUID().toString(); + + File file = new File(exportDirectory, jobId); + String url = exportPublicURL + jobId; + Writer result = new FileWriter(file); + ExportQueryTask task = new ExportQueryTask(client, format, query, result); + FutureTask<String> future = new FutureTask<String>(task, url); + importExportExecutor.submit(future); + + importExportTask.put(jobId, future); + return jobId; + } catch (Exception eee) { + throw new WikittyException(String.format( + "Can't export in format %s", format), eee); + } + } + + /** + * Synchronous export by criteria. + * + * @param format export format + * @param query criteria + * @return export as string + */ + public String syncExportAllByQuery(FORMAT format, WikittyQuery query) { + StringWriter result = new StringWriter(); + syncExportAllByQuery(format, query, result); + return result.toString(); + } + + /** + * Synchronous export by criteria. + * + * @param format export format + * @param query criteria + * @return export as string + */ + public void syncExportAllByQuery(FORMAT format, WikittyQuery query, Writer writer) { + ExportQueryTask task = new ExportQueryTask(client, format, query, writer); + task.run(); + } + + /** + * Asynchronous export by criteria. + * + * @param format export format * @param criteria criteria * @return export as string + * @deprecated since 3.4 user {@link #asyncExportAllByQuery(org.nuiton.wikitty.addons.WikittyImportExportService.FORMAT, org.nuiton.wikitty.query.WikittyQuery) } */ + @Deprecated public String asyncExportAllByCriteria(FORMAT format, Criteria criteria) { try { String jobId = UUID.randomUUID().toString(); @@ -218,8 +288,8 @@ File file = new File(exportDirectory, jobId); String url = exportPublicURL + jobId; Writer result = new FileWriter(file); - ExportTask task = new ExportTask( - securityToken, ws, format, criteria, result); + ExportTask task = new ExportTask(client.getSecurityToken(), + client.getWikittyService(), format, criteria, result); FutureTask<String> future = new FutureTask<String>(task, url); importExportExecutor.submit(future); @@ -233,11 +303,13 @@ /** * Synchronous export by criteria. - * + * * @param format export format * @param criteria criteria * @return export as string + * @deprecated since 3.4 user {@link #syncExportAllByQuery(org.nuiton.wikitty.addons.WikittyImportExportService.FORMAT, org.nuiton.wikitty.query.WikittyQuery) } */ + @Deprecated public String syncExportAllByCriteria(FORMAT format, Criteria criteria) { StringWriter result = new StringWriter(); syncExportAllByCriteria(format, criteria, result); @@ -250,10 +322,12 @@ * @param format export format * @param criteria criteria * @return export as string + * @deprecated since 3.4 user {@link #syncExportAllByQuery(org.nuiton.wikitty.addons.WikittyImportExportService.FORMAT, org.nuiton.wikitty.query.WikittyQuery, java.io.Writer) } */ + @Deprecated public void syncExportAllByCriteria(FORMAT format, Criteria criteria, Writer writer) { - ExportTask task = new ExportTask( - securityToken, ws, format, criteria, writer); + ExportTask task = new ExportTask(client.getSecurityToken(), + client.getWikittyService(), format, criteria, writer); task.run(); } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyLabelUtil.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyLabelUtil.java 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/WikittyLabelUtil.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -28,14 +28,19 @@ import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.wikitty.search.Criteria; -import org.nuiton.wikitty.search.PagedResult; +import org.nuiton.wikitty.query.WikittyQuery; +import org.nuiton.wikitty.query.WikittyQueryMaker; +import org.nuiton.wikitty.query.WikittyQueryResult; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.entities.WikittyLabelHelper; import org.nuiton.wikitty.entities.WikittyLabelImpl; +import org.nuiton.wikitty.WikittyClient; import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.entities.BusinessEntity; import org.nuiton.wikitty.entities.BusinessEntityImpl; +import org.nuiton.wikitty.entities.WikittyLabel; +import org.nuiton.wikitty.query.conditions.Element; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.search.Search; /** @@ -85,7 +90,9 @@ * @param proxy * @param wikittyId object'id * @param label label to add + * @deprecated since 3.4 use {@link #addLabel(org.nuiton.wikitty.WikittyClient, java.lang.String, java.lang.String) } */ + @Deprecated static public void addLabel(WikittyProxy proxy, String wikittyId, String label) { Wikitty w = proxy.restore(wikittyId); WikittyLabelImpl l = new WikittyLabelImpl(w); @@ -94,6 +101,25 @@ } /** + * Add new lable to the wikitty object. You must only used this method, if + * you don't have the Wikitty Object because this method restore and save + * version in WikittyService. If you have Wikitty present in your space, your + * wikitty become obsolete and you lose your change :( + * + * If you have wikitty or business entity you must used {@link #} + * + * @param client + * @param wikittyId object'id + * @param label label to add + */ + static public void addLabel(WikittyClient client, String wikittyId, String label) { + Wikitty w = client.restore(wikittyId); + WikittyLabelImpl l = new WikittyLabelImpl(w); + l.addLabels(label); + client.store(l); + } + + /** * Recherche tous les objets qui ont ce label * * @param proxy @@ -101,7 +127,9 @@ * @param firstIndex * @param endIndex * @return + * @deprecated since 3.4 use {@link #findAllByLabel(org.nuiton.wikitty.WikittyClient, java.lang.String, int, int) } */ + @Deprecated static public PagedResult<Wikitty> findAllByLabel(WikittyProxy proxy, String label, int firstIndex, int endIndex) { WikittyLabelImpl l = new WikittyLabelImpl(); @@ -115,11 +143,33 @@ } /** + * Recherche tous les objets qui ont ce label + * + * @param client + * @param label + * @param first + * @param limit + * @return + */ + static public WikittyQueryResult<Wikitty> findAllByLabel(WikittyClient client, + String label, int firstIndex, int limit) { + + WikittyQuery query = new WikittyQueryMaker() + .eq(WikittyLabel.ELEMENT_FIELD_WIKITTYLABEL_LABELS, label).end() + .setFirst(firstIndex).setLimit(limit); + WikittyQueryResult<Wikitty> result = client.findAllByQuery(Wikitty.class, query); + + return result; + } + + /** * Recherche le premier objet qui a ce label * @param proxy * @param label * @return + * @deprecated since 3.4 use {@link #findByLabel(org.nuiton.wikitty.WikittyClient, java.lang.String) } */ + @Deprecated static public Wikitty findByLabel(WikittyProxy proxy, String label) { WikittyLabelImpl l = new WikittyLabelImpl(); l.addLabels(label); @@ -130,12 +180,27 @@ } /** + * Recherche le premier objet qui a ce label + * @param proxy + * @param label + * @return + */ + static public Wikitty findByLabel(WikittyClient proxy, String label) { + WikittyQuery query = new WikittyQueryMaker() + .eq(WikittyLabel.ELEMENT_FIELD_WIKITTYLABEL_LABELS, label).end(); + Wikitty result = proxy.findByQuery(Wikitty.class, query); + return result; + } + + /** * Retrieve all labels applied on a wikitty object. * * @param proxy * @param wikittyId * @return set of label + * @deprecated since 3.4 use {@link #findAllAppliedLabels(org.nuiton.wikitty.WikittyClient, java.lang.String) } */ + @Deprecated static public Set<String> findAllAppliedLabels(WikittyProxy proxy, String wikittyId) { Wikitty w = proxy.restore(wikittyId); Set<String> result = WikittyLabelHelper.getLabels(w); @@ -143,4 +208,18 @@ return result; } + /** + * Retrieve all labels applied on a wikitty object. + * + * @param client + * @param wikittyId + * @return set of label + */ + static public Set<String> findAllAppliedLabels(WikittyClient proxy, String wikittyId) { + Wikitty w = proxy.restore(wikittyId); + Set<String> result = WikittyLabelHelper.getLabels(w); + + return result; + } + } Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ExportQueryTask.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ExportQueryTask.java (rev 0) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ExportQueryTask.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -0,0 +1,82 @@ +/* + * #%L + * Wikitty :: api + * + * $Id: ExportTask.java 1136 2011-08-12 14:24:03Z tchemit $ + * $HeadURL: http://svn.nuiton.org/svn/wikitty/trunk/wikitty-api/src/main/java/org/nuiton... $ + * %% + * Copyright (C) 2009 - 2010 CodeLutin, Benjamin Poussin + * %% + * 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.addons.importexport; + +import java.io.Writer; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.wikitty.WikittyClient; +import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.WikittyException; +import org.nuiton.wikitty.addons.WikittyImportExportService.FORMAT; +import org.nuiton.wikitty.query.WikittyQuery; +import org.nuiton.wikitty.query.WikittyQueryResult; +import org.nuiton.wikitty.query.conditions.Element; + +public class ExportQueryTask implements Runnable { + + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(ImportTask.class); + + protected WikittyClient client; + protected FORMAT format; + protected WikittyQuery query; + protected Writer writer; + + public ExportQueryTask(WikittyClient client, FORMAT format, WikittyQuery query, Writer writer) { + this.client = client; + this.format = format; + this.query = query; + this.writer = writer; + } + + @Override + public void run() { + try { + + // use a facet to get only extension used in export + // used for CSV export + query.addFacetField(Element.EXTENSION); + + WikittyQueryResult<Wikitty> queryResult = client.findAllByQuery( + Wikitty.class, query); + + long time = 0; + if (log.isInfoEnabled()) { + time = System.currentTimeMillis(); + log.info("Export started"); + } + + ImportExportMethod exporter = format.ieporter(); + exporter.exportWriter(client, writer, queryResult); + if (log.isInfoEnabled()) { + time = System.currentTimeMillis() - time; + log.info("Export in (ms)" + time); + } + } catch (Exception eee) { + throw new WikittyException("Error during export task", eee); + } + } +} Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ExportTask.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ExportTask.java 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ExportTask.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -36,6 +36,12 @@ import org.nuiton.wikitty.addons.WikittyImportExportService.FORMAT; import org.nuiton.wikitty.search.operators.Element; +/** + * + * @author poussin + * @deprecated since 3.4 use ExportQueryTask with new query api + */ +@Deprecated public class ExportTask implements Runnable { /** to use log facility, just put in your code: log.info(\"...\"); */ 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 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportCSV.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -37,8 +37,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.StringUtil; -import org.nuiton.wikitty.search.Criteria; -import org.nuiton.wikitty.search.FacetTopic; import org.nuiton.wikitty.entities.FieldType; import org.nuiton.wikitty.entities.FieldType.TYPE; import org.nuiton.wikitty.search.PagedResult; @@ -48,12 +46,18 @@ import org.nuiton.wikitty.entities.WikittyImpl; import org.nuiton.wikitty.WikittyService; import org.nuiton.wikitty.WikittyUtil; -import org.nuiton.wikitty.search.operators.Element; -import org.nuiton.wikitty.search.Search; import au.com.bytecode.opencsv.CSVReader; import au.com.bytecode.opencsv.CSVWriter; -import org.nuiton.wikitty.services.WikittyServiceEnhanced; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import org.nuiton.wikitty.WikittyClient; +import org.nuiton.wikitty.query.FacetTopic; +import org.nuiton.wikitty.query.WikittyQuery; +import org.nuiton.wikitty.query.WikittyQueryMaker; +import org.nuiton.wikitty.query.WikittyQueryResult; +import org.nuiton.wikitty.query.conditions.Element; /** * @@ -78,8 +82,7 @@ protected Pattern queryPattern = Pattern.compile("^((\\w+)\\.(\\w+))=(\"(.+)\"|([^\"]+))$"); @Override - public void importReader(String securityToken, Reader reader, - WikittyService ws) throws Exception { + public void importReader(WikittyClient client, Reader reader) throws Exception { // get index of wikitty.id field int wikittyIdIndex = -1; @@ -135,7 +138,7 @@ for (String extension : extensions) { String extName = extension.trim(); addMissingExtension( - securityToken, ws, currentWikitty, extName); + client, currentWikitty, extName); } } } @@ -156,10 +159,10 @@ if (StringUtils.isNotEmpty(value)) { // extension must exists on wikitty to set a field value - addMissingExtension(securityToken, ws, currentWikitty, extName); + addMissingExtension(client, currentWikitty, extName); // convert link values (if necessary) - value = convertLinkValues(securityToken, ws, value); + value = convertLinkValues(client, value); // add value to correct field FieldType fieldType = currentWikitty.getFieldType(extName + "." + fieldName); @@ -174,11 +177,10 @@ // remove non existant wikitty on Wikitty type field if (fieldType.getType().equals(TYPE.WIKITTY)) { - + // restore works (database) but solr criteria won't - List<Wikitty> wikitties = ws.restore(securityToken, - Collections.singletonList(multiplesValue)); - if ( wikitties != null && wikitties.size() == 1 && wikitties.get(0) != null) { + Wikitty wikitty = client.restore(multiplesValue); + if ( wikitty != null) { currentWikitty.addToField(extName, fieldName, multiplesValue); } } @@ -189,11 +191,10 @@ } else { // remove non existant wikitty on Wikitty type field if (fieldType.getType().equals(TYPE.WIKITTY)) { - + // restore works (database) but solr criteria won't - List<Wikitty> wikitties = ws.restore(securityToken, - Collections.singletonList(value)); - if ( wikitties != null && wikitties.size() == 1 && wikitties.get(0) != null) { + Wikitty wikitty = client.restore(value); + if ( wikitty != null) { currentWikitty.setField(extName, fieldName, value); } } @@ -205,21 +206,30 @@ } // add it into datas - ws.store(securityToken, Collections.singleton(currentWikitty), true); + client.getWikittyService().store(client.getSecurityToken(), + Collections.singleton(currentWikitty), true); } } - + + + @Override + public void importReader(String securityToken, Reader reader, + WikittyService ws) throws Exception { + WikittyClient client = new WikittyClient(null, ws, securityToken); + importReader(client, reader); + } + /** * Recusively add missing extension of not exist and required extension too. * * @throws WikittyException if the extension does not exist in base */ - protected void addMissingExtension(String securityToken, WikittyService ws, + protected void addMissingExtension(WikittyClient client, Wikitty currentWikitty, String extName) { // extension must exists on wikitty to set a field value if (!currentWikitty.hasExtension(extName)) { - WikittyExtension extension = ws.restoreExtensionLastVersion( - securityToken, extName); + WikittyExtension extension = + client.restoreExtensionLastVersion(extName); if (extension != null) { List<String> requires = extension.getRequires(); @@ -227,7 +237,7 @@ // add required extensions BEFORE current for (String require : requires) { String localRequire = require.trim(); - addMissingExtension(securityToken, ws, currentWikitty, localRequire); + addMissingExtension(client, currentWikitty, localRequire); } } @@ -244,8 +254,7 @@ * @param value * @return */ - protected String convertLinkValues( - String securityToken, WikittyService ws, String value) { + protected String convertLinkValues(WikittyClient client, String value) { String originalValue = value; String resultValue = ""; @@ -256,8 +265,8 @@ try { String[] queries = StringUtil.split(value, ","); - for (String query : queries) { - Matcher m = queryPattern.matcher(query.trim()); + for (String queryString : queries) { + Matcher m = queryPattern.matcher(queryString.trim()); if (m.find()) { String fqField = m.group(1); String fValue = m.group(5); @@ -265,11 +274,9 @@ // quoted value fValue = m.group(6); } - Criteria criteria = Search.query().eq(fqField, fValue).criteria(); - String id = ws.findByCriteria(securityToken, - Collections.singletonList(criteria)).get(0); - Wikitty wikitty = WikittyServiceEnhanced.restore( - ws, securityToken, id); + WikittyQuery query = new WikittyQueryMaker() + .eq(fqField, fValue).end(); + Wikitty wikitty = client.findByQuery(Wikitty.class, query); if (wikitty == null) { correctQueries = false; } @@ -299,20 +306,19 @@ } @Override - public void exportWriter(String securityToken, Writer writer, - WikittyService ws, PagedResult<Wikitty> pagedResult) throws Exception { + public void exportWriter(WikittyClient client, Writer writer, + WikittyQueryResult<Wikitty> pagedResult) throws Exception { CSVWriter csvWriter = new CSVWriter(writer); - + // write all data into writer List<String> extensionHeader = new LinkedList<String>(); extensionHeader.add(FIELD_WIKITTY_ID); extensionHeader.add(FIELD_WIKITTY_EXT); - for (FacetTopic topic : pagedResult.getTopic(Element.ELT_EXTENSION)) { + for (FacetTopic topic : pagedResult.getTopic(Element.EXTENSION)) { String extName = topic.getTopicName(); - - WikittyExtension extension = ws.restoreExtensionLastVersion( - securityToken, extName); + + WikittyExtension extension = client.restoreExtensionLastVersion(extName); String ext = WikittyExtension.computeName(extName); for (String fieldName : extension.getFieldNames()) { extensionHeader.add(ext + "." + fieldName); @@ -357,14 +363,36 @@ String fqFieldValue = WikittyUtil.toStringForExport(type, w.getFqField(fieldName)); currentField = fqFieldValue; } - + wikittyField[extensionHeader.indexOf(fieldName)] = currentField; } - + csvWriter.writeNext(wikittyField); } - + csvWriter.close(); } + @Override + public void exportWriter(String securityToken, Writer writer, + WikittyService ws, PagedResult<Wikitty> pagedResult) throws Exception { + WikittyClient client = new WikittyClient(null, ws, securityToken); + + Map<String, List<FacetTopic>> facet = new HashMap<String, List<FacetTopic>>(); + for (Map.Entry<String, List<org.nuiton.wikitty.search.FacetTopic>> e : pagedResult.getFacets().entrySet()) { + String facetName = e.getKey(); + List<FacetTopic> topics = new ArrayList<FacetTopic>(); + facet.put(facetName, topics); + for (org.nuiton.wikitty.search.FacetTopic f : e.getValue()) { + topics.add(new FacetTopic(f.getFacetName(), f.getTopicName(), f.getCount())); + } + } + + WikittyQueryResult<Wikitty> queryResult = new WikittyQueryResult( + pagedResult.getCriteriaName(), pagedResult.getFirstIndice(), + pagedResult.getNumFound(), pagedResult.getQueryString(), facet, + pagedResult.getAll()); + exportWriter(client, writer, queryResult); + } + } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportMethod.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportMethod.java 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportMethod.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -27,10 +27,12 @@ import java.io.Reader; import java.io.Writer; +import org.nuiton.wikitty.WikittyClient; import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.WikittyService; +import org.nuiton.wikitty.query.WikittyQueryResult; import org.nuiton.wikitty.services.WikittyTransaction; /** @@ -46,29 +48,59 @@ /** * Import data from reader. - * + * * @param securityToken security token * @param reader reader * @param ws wikitty service * @param transaction current transaction * @param batchUpdate wikitty batch update helper - * + * * @throws Exception */ + public void importReader(WikittyClient client, Reader reader) throws Exception; + + /** + * Import data from reader. + * + * @param securityToken security token + * @param reader reader + * @param ws wikitty service + * @param transaction current transaction + * @param batchUpdate wikitty batch update helper + * + * @throws Exception + * @deprecated since 3.4 use {@link #importReader(org.nuiton.wikitty.WikittyClient, java.io.Reader) } + */ public void importReader( String securityToken, Reader reader, WikittyService ws) throws Exception; - + /** * Export data to writer. - * + * * @param securityToken security token * @param writer writer * @param ws wikitty service * @param transaction current transaction * @param pagedResult paged result - * + * * @throws Exception */ + public void exportWriter(WikittyClient client, Writer writer, + WikittyQueryResult<Wikitty> queryResult) throws Exception; + + /** + * Export data to writer. + * + * @param securityToken security token + * @param writer writer + * @param ws wikitty service + * @param transaction current transaction + * @param pagedResult paged result + * + * @throws Exception + * @deprecated since 3.4 use {@link #exportWriter(org.nuiton.wikitty.WikittyClient, java.io.Writer, org.nuiton.wikitty.query.WikittyQueryResult) } + */ + @Deprecated public void exportWriter(String securityToken, Writer writer, WikittyService ws, PagedResult<Wikitty> pagedResult) throws Exception; } 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 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportXML.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -40,6 +40,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.wikitty.WikittyClient; import org.nuiton.wikitty.entities.FieldType; import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.entities.Wikitty; @@ -47,8 +48,8 @@ import org.nuiton.wikitty.entities.WikittyExtension; import org.nuiton.wikitty.entities.WikittyImpl; import org.nuiton.wikitty.WikittyService; -import org.nuiton.wikitty.services.WikittyTransaction; import org.nuiton.wikitty.WikittyUtil; +import org.nuiton.wikitty.query.WikittyQueryResult; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; @@ -66,8 +67,7 @@ static private Log log = LogFactory.getLog(ImportExportXML.class); @Override - public void importReader(String securityToken, Reader reader, - WikittyService ws) throws Exception { + public void importReader(WikittyClient client, Reader reader) throws Exception { XmlPullParserFactory factory = XmlPullParserFactory.newInstance( System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null); factory.setNamespaceAware(true); @@ -103,7 +103,7 @@ String extName = WikittyExtension.computeName(extId); String extVersion = WikittyExtension.computeVersion(extId); extId = WikittyExtension.computeId(extName, extVersion); - WikittyExtension e = ws.restoreExtension(securityToken, extId); + WikittyExtension e = client.restoreExtension(extId); if (e == null) { throw new WikittyException("Extension not found : " + extId); } @@ -113,11 +113,12 @@ } else if (eventType == XmlPullParser.END_TAG) { String name = xpp.getName(); if ("extension".equals(name)) { - ws.storeExtension(securityToken, Collections.singleton(ext)); + client.storeExtension(Collections.singleton(ext)); ext = null; } else if ("object".equals(name)) { w.setVersion(objectVersion); - ws.store(securityToken, Collections.singleton(w), true); + client.getWikittyService().store(client.getSecurityToken(), + Collections.singleton(w), true); w = null; } else if (ext != null && "field".equals(name)) { FieldType type = new FieldType(); @@ -143,13 +144,13 @@ } @Override - public void exportWriter(String securityToken, Writer result, - WikittyService ws, PagedResult<Wikitty> pagedResult) throws Exception { + public void exportWriter(WikittyClient client, Writer result, + WikittyQueryResult<Wikitty> queryResult) throws Exception { // keep extension already done Set<String> extDone = new HashSet<String>(); result.write("<wikitty>\n"); - - List<Wikitty> wikitties = pagedResult.getAll(); + + List<Wikitty> wikitties = queryResult.getAll(); for (Wikitty w : wikitties) { String extensionList = ""; for (WikittyExtension ext : w.getExtensions()) { @@ -203,4 +204,25 @@ } result.write("</wikitty>\n"); } + + @Override + public void importReader(String securityToken, Reader reader, + WikittyService ws) throws Exception { + WikittyClient client = new WikittyClient(null, ws, securityToken); + importReader(client, reader); + } + + @Override + public void exportWriter(String securityToken, Writer result, + WikittyService ws, PagedResult<Wikitty> pagedResult) throws Exception { + + WikittyClient client = new WikittyClient(null, ws, securityToken); + + WikittyQueryResult<Wikitty> queryResult = new WikittyQueryResult( + pagedResult.getCriteriaName(), pagedResult.getFirstIndice(), + pagedResult.getNumFound(), pagedResult.getQueryString(), null, + pagedResult.getAll()); + exportWriter(client, result, queryResult); + + } } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportTask.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportTask.java 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportTask.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -28,6 +28,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationConfig; +import org.nuiton.wikitty.WikittyClient; import org.nuiton.wikitty.WikittyException; import org.nuiton.wikitty.WikittyService; import org.nuiton.wikitty.addons.WikittyImportExportService.FORMAT; @@ -38,26 +39,41 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(ImportTask.class); - protected ApplicationConfig config; - protected WikittyService ws; + WikittyClient client; protected FORMAT format; protected Reader reader; protected ImportExportMethod importerExporter; - protected String securityToken; - public ImportTask(String securityToken, ApplicationConfig config, - WikittyService ws, FORMAT format, Reader reader) { + public ImportTask(WikittyClient client, FORMAT format, Reader reader) { super(); - this.config = config; - this.securityToken = securityToken; - this.ws = ws; + this.client = client; this.format = format; this.reader = reader; } + /** + * + * @param securityToken + * @param config + * @param ws + * @param format + * @param reader + * @deprecated since 3.4 {@link #ImportTask(org.nuiton.wikitty.WikittyClient, org.nuiton.wikitty.addons.WikittyImportExportService.FORMAT, java.io.Reader) } + */ + @Deprecated + public ImportTask(String securityToken, ApplicationConfig config, + WikittyService ws, FORMAT format, Reader reader) { + this(new WikittyClient(config, ws, securityToken), format, reader); + } + + public WikittyClient getClient() { + return client; + } + @Override public void run() { - WikittyServiceTransaction tx = new WikittyServiceTransaction(config, ws); + WikittyServiceTransaction tx = new WikittyServiceTransaction( + client.getConfig(), client.getWikittyService()); // TODO poussin 20101029 rendre configurable le l'auto commit '1000' pour l'import tx.setAutoCommit(1000); try { @@ -66,19 +82,19 @@ time = System.currentTimeMillis(); log.info("Import in (ms)" + time); } + WikittyClient txClient = new WikittyClient( + client.getConfig(), tx, client.getSecurityToken()); ImportExportMethod importer = format.ieporter(); - importer.importReader(securityToken, reader, tx); + importer.importReader(txClient, reader); if (log.isInfoEnabled()) { time = System.currentTimeMillis() - time; log.info("Import in (ms)" + time); } - // don't forget to commit :) - // FIXME sletellier 24/12/10 : provoque an wikitty is obselete -// tx.commit(securityToken); - tx.commit(securityToken, true); + // don't forget to commit :) with true to force version + tx.commit(client.getSecurityToken(), true); } catch (Exception eee) { - tx.rollback(securityToken); + tx.rollback(client.getSecurityToken()); throw new WikittyException("Error during import task", eee); } } 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 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -265,7 +265,7 @@ return facetField; } - public WikittyQuery addFacetField(ElementField field) { + public WikittyQuery addFacetField(Element field) { getFacetField().add(field); return this; } 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 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -34,6 +34,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.wikitty.WikittyClient; +import org.nuiton.wikitty.query.conditions.Element; /** * Represente un resultat de requete {@link WikittyQuery}. Pour caster les @@ -133,6 +134,18 @@ } /** + * Return all topic for the specified facet. + * + * @param facetName name of the wanted facet + * @return facet's topics + * @since 3.4 + */ + public List<FacetTopic> getTopic(Element facetName) { + List<FacetTopic> result = getTopic(facetName.getValue()); + return result; + } + + /** * Return topic for the specified facet and topic name. * * @param facetName name of the wanted facet Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittySecurityHelper.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittySecurityHelper.java 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittySecurityHelper.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -26,13 +26,8 @@ package org.nuiton.wikitty.services; -import java.util.ArrayList; -import java.util.List; -import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.wikitty.WikittyService; -import org.nuiton.wikitty.entities.BusinessEntity; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.entities.WikittyAuthorisation; import org.nuiton.wikitty.entities.WikittyAuthorisationHelper; @@ -41,8 +36,11 @@ import org.nuiton.wikitty.entities.WikittyGroupImpl; import org.nuiton.wikitty.entities.WikittyImpl; import org.nuiton.wikitty.entities.WikittyMetaExtensionUtil; +import org.nuiton.wikitty.WikittyClient; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.entities.WikittyUser; +import org.nuiton.wikitty.query.WikittyQuery; +import org.nuiton.wikitty.query.WikittyQueryMaker; import org.nuiton.wikitty.search.Search; /** @@ -66,7 +64,9 @@ * * @param login the login of the user to search for * @return a wikitty id + * @deprecated since 3.4 {@link #getUserWikittyId(org.nuiton.wikitty.WikittyClient, java.lang.String) } */ + @Deprecated static public String getUserWikittyId(WikittyProxy proxy, String login) { String userWikittyId = null; Wikitty user = proxy.findByCriteria(Search.query().eq( @@ -78,6 +78,19 @@ } /** + * get the id of a user given his login. + * + * @param login the login of the user to search for + * @return a wikitty id + */ + static public String getUserWikittyId(WikittyClient client, String login) { + WikittyQuery query = new WikittyQueryMaker().eq( + WikittyUser.FQ_FIELD_WIKITTYUSER_LOGIN, login).end(); + String userWikittyId = client.findByQuery(query); + return userWikittyId; + } + + /** * create appAdminGroup and add current user as first member * * @deprecated Use #WikittySecurityUtil.createAppAdminGroup @@ -111,6 +124,14 @@ return result; } + /** + * + * @param proxy + * @param extension + * @return + * @deprecated since 3.4 use {@link #restoreExtensionAuthorisation(org.nuiton.wikitty.WikittyClient, org.nuiton.wikitty.entities.WikittyExtension) } + */ + @Deprecated static public Wikitty restoreExtensionAuthorisation( WikittyProxy proxy, WikittyExtension extension) { String wikittyAuthorisationId = WikittyMetaExtensionUtil.generateId( @@ -119,42 +140,12 @@ return result; } - -// /** -// * @param securityToken token with rights to modify extension -// * @param extensionRights a wikitty that has extension WikittyAuthorisation -// */ -// static public void storeExtensionAuthorisation(String securityToken, -// Wikitty extensionRights) { -// -// String userId = getUserId(securityToken); -// -// Wikitty oldVersion = ws.restore(securityToken, extensionRights.getId()); -// -// // check that the extensionRights does not have -// if (WikittyAuthorisationHelper.hasExtension(extensionRights)) { -// -// if (oldVersion == null) { -// // if this exception is raised, you should use addExtensionAuthorisation() -// throw new IllegalArgumentException("you can't store an authorisation for the fist time"); -// -// } else { -// -// if ( userIsAnonymousOrAppAdmin(securityToken, userId) || -// canAdmin(securityToken, userId, null, oldVersion) ) { -// -// ws.store(securityToken, extensionRights); -// -// } else { -// throw new SecurityException(String.format( -// "user %s can't admin rights for this extension", userId)); -// } -// } -// } else { -// throw new IllegalArgumentException(String.format( -// "extensionRights %s is not a wikittyAuthorisation. It misses the extension", -// extensionRights)); -// } -// } -// + static public Wikitty restoreExtensionAuthorisation( + WikittyClient client, WikittyExtension extension) { + String wikittyAuthorisationId = WikittyMetaExtensionUtil.generateId( + WikittyAuthorisation.EXT_WIKITTYAUTHORISATION, extension.getName()); + Wikitty result = client.restore(wikittyAuthorisationId); + return result; + } + } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceHook.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceHook.java 2012-01-12 17:24:58 UTC (rev 1319) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceHook.java 2012-01-12 20:00:00 UTC (rev 1320) @@ -39,9 +39,9 @@ import org.nuiton.wikitty.entities.WikittyExtension; import org.nuiton.wikitty.entities.WikittyHook; import org.nuiton.wikitty.entities.WikittyHookHelper; -import org.nuiton.wikitty.search.Criteria; -import org.nuiton.wikitty.search.PagedResult; -import org.nuiton.wikitty.search.Search; +import org.nuiton.wikitty.query.WikittyQuery; +import org.nuiton.wikitty.query.WikittyQueryMaker; +import org.nuiton.wikitty.query.WikittyQueryResult; /** * Cette classe permet d'intercepter les modifications faites via les differentes @@ -92,11 +92,13 @@ } protected Collection<Wikitty> getHook(String securityToken, String actionName) { - Criteria criteria = Search.query().exteq(WikittyHook.EXT_WIKITTYHOOK) - .and().eq(WikittyHook.FQ_FIELD_WIKITTYHOOK_ACTIONTOHOOK, actionName) - .criteria(); - PagedResult<String> ids = getDelegate().findAllByCriteria(securityToken, - Collections.singletonList(criteria)).get(0); + WikittyQuery query = new WikittyQueryMaker() + .and() + .exteq(WikittyHook.EXT_WIKITTYHOOK) + .eq(WikittyHook.FQ_FIELD_WIKITTYHOOK_ACTIONTOHOOK, actionName) + .end(); + WikittyQueryResult<String> ids = getDelegate().findAllByQuery(securityToken, + Collections.singletonList(query)).get(0); List<Wikitty> result = getDelegate().restore(securityToken, ids.getAll()); @@ -134,7 +136,7 @@ args = callHook(securityToken, PRE_STORE, args, null); securityToken = (String)args.get("securityToken"); - wikitties= (Collection<Wikitty>)args.get("wikitties"); + wikitties = (Collection<Wikitty>)args.get("wikitties"); force = (Boolean)args.get("force"); WikittyEvent result = super.store(securityToken, wikitties, force);