Author: bpoussin Date: 2011-08-13 17:27:14 +0200 (Sat, 13 Aug 2011) New Revision: 1141 Url: http://nuiton.org/repositories/revision/wikitty/1141 Log: fix Anomalie #819: Support multiples requires on extension 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/ImportExportXML.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyExtensionMigrationRename.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java trunk/wikitty-jdbc/src/main/resources/wikitty-jdbc-query.properties trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 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 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportCSV.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -222,10 +222,10 @@ securityToken, extName); if (extension != null) { - String requires = extension.getRequires(); - if (StringUtils.isNotEmpty(requires)) { + List<String> requires = extension.getRequires(); + if (requires != null && !requires.isEmpty()) { // add required extensions BEFORE current - for (String require : requires.split(",")) { + for (String require : requires) { String localRequire = require.trim(); addMissingExtension(securityToken, ws, currentWikitty, localRequire); } 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 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportXML.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -37,6 +37,7 @@ import java.util.Set; import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.wikitty.entities.FieldType; @@ -145,7 +146,7 @@ WikittyService ws, PagedResult<Wikitty> pagedResult) throws Exception { // keep extension already done Set<String> extDone = new HashSet<String>(); - result.write("<wikengo>\n"); + result.write("<wikitty>\n"); List<Wikitty> wikitties = pagedResult.getAll(); for (Wikitty w : wikitties) { @@ -155,9 +156,15 @@ extensionList += "," + id; if (!extDone.contains(id)) { extDone.add(id); - result.write(" <extension name='" + ext.getName() + "' version='" + ext.getVersion() + (ext.getRequires() != null ? "' requires='" + ext.getRequires() : "") + "'>\n"); + String requires = StringUtils.join(ext.getRequires(), ","); + result.write(" <extension name='" + ext.getName() + + "' version='" + ext.getVersion() + + (StringUtils.isBlank(requires) ? "":"' requires='" + requires) + + "'>\n"); Map<String, String> tagValues = ext.getTagValues(); - result.write(" <tagvalues>" + WikittyUtil.tagValuesToString(tagValues) + "</tagvalues>\n"); + result.write(" <tagvalues>" + + WikittyUtil.tagValuesToString(tagValues) + + "</tagvalues>\n"); for (String fieldName : ext.getFieldNames()) { String def = ext.getFieldType(fieldName).toDefinition(fieldName); result.write(" <field>" + def + "</field>\n"); @@ -193,6 +200,6 @@ } result.write(" </object>\n"); } - result.write("</wikengo>\n"); + result.write("</wikitty>\n"); } } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/BusinessEntityImpl.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -52,7 +52,7 @@ * Warning, this transient field is null after deserialization. */ protected transient PropertyChangeSupport propertyChangeSupport; - + protected Wikitty wikitty; public BusinessEntityImpl(Wikitty wi) { Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -196,6 +196,15 @@ Collection<WikittyExtension> getExtensions(); + /** + * Recherche toutes les extensions de ce wikitty qui dependent d'une + * extension particuliere + * + * @param ext le nom d'une extension + * @param recursively si la dependance doit aussi etre recherche recursivement + * @return la liste des extensions de ce Wikitty qui depande de l'extension + * dont le nom est passé en parametre (de facon direct ou indirect) + */ Collection<WikittyExtension> getExtensionDependencies(String ext, boolean recursively); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -28,13 +28,19 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang.StringUtils; import org.nuiton.wikitty.WikittyUtil; /** @@ -51,6 +57,9 @@ private static final long serialVersionUID = -3598621577607442972L; /** Field name pattern only word character [a-zA-Z_0-9] is accepted */ + static protected Pattern NamePattern = Pattern.compile("^\\w+$"); + + /** Field name pattern only word character [a-zA-Z_0-9] is accepted */ static protected Pattern fieldNamePattern = Pattern.compile("^\\w+$"); /** @@ -64,12 +73,12 @@ protected String name; /** - * Name of other extension needed to put this extension to object. + * Name of others extensions needed to put this extension to object. * * Warning : Multiples extensions are not supported yet. * */ - protected String requires; + protected List<String> requires; /** * use to know version objet, when you change field number, type or other @@ -101,13 +110,30 @@ } public WikittyExtension(String name, String version, + LinkedHashMap<String, FieldType> fields) { + this(name, version, (List)null, fields); + } + + public WikittyExtension(String name, String version, String requires, LinkedHashMap<String, FieldType> fields) { + this(name, version, StringUtils.split(requires, ","), fields); + } + + public WikittyExtension(String name, String version, + String[] requires, LinkedHashMap<String, FieldType> fields) { + this(name, version, + ArrayUtils.isEmpty(requires)?(List)null:Arrays.asList(requires), + fields); + } + + public WikittyExtension(String name, String version, + List<String> requires, LinkedHashMap<String, FieldType> fields) { if (version == null) { throw new IllegalArgumentException("Version must not be null"); } setName(name); this.version = WikittyUtil.normalizeVersion(version); - this.requires = requires; + setRequires(requires); if (fields != null) { for (Map.Entry<String, FieldType> entry : fields.entrySet()) { String fieldName = entry.getKey(); @@ -275,7 +301,7 @@ if (name == null) { throw new IllegalArgumentException("Name must not be null"); } - if (!name.matches("\\w+")) { + if (!NamePattern.matcher(name).matches()) { throw new IllegalArgumentException("Name contains non alphanumeric characters"); } @@ -286,9 +312,17 @@ return version; } - public String getRequires() { + public List<String> getRequires() { return requires; } + + public void setRequires(List<String> requires) { + if (requires == null) { + requires = Collections.EMPTY_LIST; + } + this.requires = Collections.unmodifiableList(new ArrayList<String>(requires)); + getPropertyChangeSupport().firePropertyChange("requires", null, this.requires); + } public FieldType getFieldType(String fieldName) { return fields.get(fieldName); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -287,9 +287,9 @@ */ @Override public void addExtension(WikittyExtension ext) { - String required = ext.getRequires(); + List required = ext.getRequires(); if (required != null && !required.isEmpty() && - !extensions.containsKey(required)) { + !extensions.keySet().containsAll(required)) { throw new WikittyException(String.format( "You try to add extension '%s' that" + " required not available extension '%s' in this wikitty", @@ -415,12 +415,13 @@ Collection<WikittyExtension> result = new HashSet<WikittyExtension>(); Collection<WikittyExtension> all = extensions.values(); for (WikittyExtension dependency : all) { - String requires = dependency.getRequires(); - if(requires != null && !requires.isEmpty() && requires.equals(ext)) { + List<String> requires = dependency.getRequires(); + if(requires != null && !requires.isEmpty() && requires.contains(ext)) { result.add(dependency); if(recursively) { String dependencyName = dependency.getName(); - Collection<WikittyExtension> dependencies = getExtensionDependencies(dependencyName, recursively); + Collection<WikittyExtension> dependencies = + getExtensionDependencies(dependencyName, recursively); result.addAll(dependencies); } } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyExtensionMigrationRename.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyExtensionMigrationRename.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyExtensionMigrationRename.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -29,9 +29,9 @@ import org.nuiton.wikitty.entities.FieldType; import org.nuiton.wikitty.entities.WikittyImpl; import java.util.Collection; +import java.util.List; import java.util.Set; -import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.wikitty.WikittyService; @@ -59,7 +59,6 @@ * Security) * * @param service service - * @param transaction current transaction to use * @param wikitty wikitty to add extension to * @param newExt extension to add */ @@ -67,9 +66,9 @@ WikittyService service, Wikitty wikitty, WikittyExtension newExt) { // manage requires before current - String requires = newExt.getRequires(); - if (StringUtils.isNotEmpty(requires)) { - for (String require : requires.split(",")) { + List<String> requires = newExt.getRequires(); + if (requires != null && !requires.isEmpty()) { + for (String require : requires) { WikittyExtension newRequireExt = service.restoreExtensionLastVersion(null, require); addExtension(service, wikitty, newRequireExt); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -101,7 +101,7 @@ Collection<WikittyExtension> values = extensions.values(); if (values != null) { for (WikittyExtension extension : values) { - if (extensionName.equals(extension.getRequires())) { + if (extension.getRequires().contains(extensionName)) { ids.add(extension.getId()); } } Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -90,12 +90,12 @@ } protected static final WikittyExtension extensionClient = - new WikittyExtension("Client", "1.0", null, + new WikittyExtension("Client", "1.0", WikittyUtil.buildFieldMapExtension( "String name")); protected static final WikittyExtension extensionTag = - new WikittyExtension("Tag", "1.0", null, + new WikittyExtension("Tag", "1.0", WikittyUtil.buildFieldMapExtension( "String tags")); Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -78,18 +78,18 @@ Wikitty wikitty = new WikittyImpl(); // null extension should be ignored - WikittyExtension ext = new WikittyExtension( "invalidExt", "1", null, null ); + WikittyExtension ext = new WikittyExtension( "invalidExt", "1", null ); wikitty.addExtension(ext); // yes we want to handle empty extension Assert.assertTrue( wikitty.hasExtension("invalidExt") ); // empty extension should be ignored (?) - ext = new WikittyExtension( "invalideExt2", "1", null, new LinkedHashMap<String, FieldType>() ); + ext = new WikittyExtension( "invalideExt2", "1", new LinkedHashMap<String, FieldType>() ); wikitty.addExtension(ext); Assert.assertFalse( wikitty.hasExtension("invalidExt2") ); // test requires extension - ext = new WikittyExtension( "master", "1", null, null); + ext = new WikittyExtension( "master", "1", null); wikitty.addExtension(ext); Assert.assertTrue( wikitty.hasExtension("master") ); @@ -151,7 +151,7 @@ */ @Test(expected=IllegalArgumentException.class) public void testWikittyExtensionBadName() { - new WikittyExtension("invalid name", "1", null, null ); + new WikittyExtension("invalid name", "1", null ); } /** Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -448,7 +448,7 @@ Assert.assertNotNull(fields.get("amount")); Assert.assertNotNull(fields.get("buildDate")); - WikittyExtension ext = new WikittyExtension(extName, "1", null, fields); + WikittyExtension ext = new WikittyExtension(extName, "1", fields); Assert.assertNotNull(ext.getFieldType("name")); Assert.assertNotNull(ext.getFieldType("amount")); Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -100,7 +100,7 @@ Node rootNode = document.getChildNodes().item(0); // check root node ... - assertEquals("wikengo", rootNode.getNodeName()); + assertEquals("wikitty", rootNode.getNodeName()); // check childs ... acceptNodeList(rootNode.getChildNodes(), new NodeVisitor() { @@ -154,7 +154,7 @@ @Test public void testImport() throws Exception { String xml = - "<wikengo>" + + "<wikitty>" + " <extension name='wikittyExt' version='1.0' requires=''>" + " <field>STRING fieldName0[0-1]</field>" + " <field>NUMERIC fieldName1[1-1]</field>" + @@ -175,7 +175,7 @@ " <wikittyExt.fieldName1>223322</wikittyExt.fieldName1>" + " <wikittyExt.fieldName2>2029-12-24T23:00:00.000+0000Z</wikittyExt.fieldName2>" + " </object>" + - "</wikengo>"; + "</wikitty>"; getImportExportService().syncImport(WikittyImportExportService.FORMAT.XML, xml); Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -210,7 +210,7 @@ @Test public void testFieldConstraint() throws Exception { - WikittyExtension ext = new WikittyExtension("TestConstraint", "1", null, + WikittyExtension ext = new WikittyExtension("TestConstraint", "1", WikittyUtil.buildFieldMapExtension( "String id notNull=true", "String ext[0-n] unique=true", @@ -661,7 +661,6 @@ WikittyExtension BinaryExt = new WikittyExtension(extName, "1.0", // version - null, WikittyUtil.buildFieldMapExtension( // building field map "String name unique=\"true\"", "Binary content")); Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -126,7 +126,7 @@ @Test public void testRequire() throws Exception { - WikittyExtension extension = new WikittyExtension("Extension", "1", null, + WikittyExtension extension = new WikittyExtension("Extension", "1", WikittyUtil.buildFieldMapExtension("String value")); WikittyExtension extension1 = new WikittyExtension("Extension1", "1", "Extension", WikittyUtil.buildFieldMapExtension("String value")); Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/XMPPNotificationTest.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -84,7 +84,7 @@ System.out.println("pseudo: " + pseudo); DiscussionHistory history = new DiscussionHistory(); - history.setMaxStanzas(1); + history.setMaxStanzas(0); muc.join(pseudo, "", history, 4000); muc.addMessageListener(new PacketListener() { @@ -105,7 +105,7 @@ // System.out.println("Room Subject:" + info.getSubject()); // Thread t = new Thread(); -// t.sleep(1000*60); + Thread.currentThread().sleep(1000*60); } } Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java =================================================================== --- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -281,7 +281,7 @@ requiresSep = " + \",\" + "; } if (requires.isEmpty()) { - requires = null; + requires = "(List)null"; } String buildFieldMapExtensionParametersInLine = StringUtils.join(buildFieldMapExtensionParameters, ", \n"); Modified: trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java =================================================================== --- trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -40,6 +40,7 @@ import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_EXTENSION_ADMIN; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_WHERE; +import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_WHERE_REQUIRES; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.TABLE_EXTENSION_ADMIN; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.TABLE_EXTENSION_DATA; @@ -55,6 +56,7 @@ import java.util.List; import java.util.Map; import java.util.Properties; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -162,7 +164,7 @@ ext.getId(), ext.getName(), ext.getVersion(), - ext.getRequires(), + StringUtils.join(ext.getRequires(), ","), WikittyUtil.tagValuesToString(ext.getTagValues())); for (String fieldName : ext.getFieldNames()) { FieldType type = ext.getFieldType(fieldName); @@ -279,11 +281,10 @@ Connection connection = WikittyJDBCUtil.getConnection(tx, config); try { List<String> result = new ArrayList<String>(); - String q = String.format(jdbcQuery.getProperty(QUERY_SELECT_WHERE), - COL_ID, TABLE_EXTENSION_ADMIN, COL_REQUIRES); + String q = String.format(jdbcQuery.getProperty(QUERY_SELECT_WHERE_REQUIRES), + COL_ID, extensionName); PreparedStatement statement = connection.prepareStatement(q); - statement.setString(1, extensionName); ResultSet resultSet = statement.executeQuery(); while (resultSet.next()) { Modified: trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java =================================================================== --- trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -118,6 +118,8 @@ static final public String QUERY_SELECT_WHERE = "jdbc.queries.select.where"; /** basic selection with where clause query property name */ static final public String QUERY_SELECT_TWO_WHERE = "jdbc.queries.select.two.where"; + /** basic selection with where clause like for requires */ + static final public String QUERY_SELECT_WHERE_REQUIRES = "jdbc.queries.select.requires"; /** not deleted data selection with where clause query property name */ static final public String QUERY_SELECT_WHERE_NOTDELETED = "jdbc.queries.select.where.notdeleted"; Modified: trunk/wikitty-jdbc/src/main/resources/wikitty-jdbc-query.properties =================================================================== --- trunk/wikitty-jdbc/src/main/resources/wikitty-jdbc-query.properties 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-jdbc/src/main/resources/wikitty-jdbc-query.properties 2011-08-13 15:27:14 UTC (rev 1141) @@ -92,6 +92,10 @@ jdbc.queries.select.two.where=SELECT %s, %s FROM %s WHERE %s = ?; #not deleted data selection query with where clause jdbc.queries.select.where.notdeleted=SELECT %s FROM %s WHERE %s = ? AND deletionDate IS NULL; +# selection query with where clause and like for list element requires +# (ex: toto1,toto12,toto123 like toto1 must return only toto1 and not toto12) +# SELECT * from extension_admin where requires like 'toto1' or requires like 'toto1,%' or requires like ',toto1,' or requires like '%,toto1'; +jdbc.queries.select.requires=SELECT %s FROM extension_admin WHERE requires LIKE '%2$s' OR requires LIKE '%2$s,%%' OR requires LIKE '%%,%2$s,%%' OR requires LIKE '%%,%2$s'; #tables emptying query jdbc.queries.clear.extension=DELETE FROM extension_data; DELETE FROM extension_admin; Modified: trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java =================================================================== --- trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2011-08-12 16:26:07 UTC (rev 1140) +++ trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2011-08-13 15:27:14 UTC (rev 1141) @@ -76,7 +76,7 @@ @Before public void createTestData() throws Exception { - extCategory = new WikittyExtension("Category", "1", null, + extCategory = new WikittyExtension("Category", "1", WikittyUtil.buildFieldMapExtension( "String name") ); @@ -92,7 +92,7 @@ String hardwareCategoryId = wikitties[2].getId(); String staffCategoryId = wikitties[3].getId(); - extProduct = new WikittyExtension("Product", "1", null, + extProduct = new WikittyExtension("Product", "1", WikittyUtil.buildFieldMapExtension( "String name", "Numeric price", @@ -130,7 +130,7 @@ "category = " + hardwareCategoryId, }); - extTest = new WikittyExtension("Test", "1", null, + extTest = new WikittyExtension("Test", "1", WikittyUtil.buildFieldMapExtension( "String name", "String description",