Author: bpoussin Date: 2010-11-16 16:36:57 +0100 (Tue, 16 Nov 2010) New Revision: 474 Url: http://nuiton.org/repositories/revision/wikitty/474 Log: Evolution #1024: We must can delete extension if not used Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2010-11-16 15:36:57 UTC (rev 474) @@ -241,6 +241,16 @@ public WikittyEvent storeExtension( String securityToken, Collection<WikittyExtension> exts); + /** + * Delete all extension if id exists and no wikitty used this extension. + * extension name must be just the name (extName) + * + * @param securityToken security token + * @param ids extension's ids to remove + */ + public WikittyEvent deleteExtension( + String securityToken, Collection<String> extNames); + /** * Load extension from id. Id is 'name[version]'. * Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyCache.java 2010-11-16 15:36:57 UTC (rev 474) @@ -193,6 +193,11 @@ } + @Override + public void removeExtension(WikittyEvent event) { + + } + /* * @see org.nuiton.wikitty.WikittyListener#clearExtension() */ Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyEvent.java 2010-11-16 15:36:57 UTC (rev 474) @@ -31,7 +31,9 @@ import java.util.EventObject; import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.Map; +import java.util.Set; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.entities.WikittyExtension; @@ -63,8 +65,7 @@ REMOVE_WIKITTY(WikittyListener.REMOVE_WIKITTY_METHOD), CLEAR_WIKITTY(WikittyListener.CLEAR_WIKITTY_METHOD), PUT_EXTENSION(WikittyListener.PUT_EXTENSION_METHOD), - // il est impossible actuellement de supprimer des extensions -// REMOVE_EXTENSION(WikittyListener.REMOVE_EXTENSION_METHOD), + REMOVE_EXTENSION(WikittyListener.REMOVE_EXTENSION_METHOD), CLEAR_EXTENSION(WikittyListener.CLEAR_EXTENSION_METHOD); /** le nom de la methode du listener a appeler pour ce type d'event */ @@ -98,6 +99,9 @@ /** Use by PUT_EXTENSION, all extensions added */ protected Map<String, WikittyExtension> extensions; + /** Use by REMOVE_EXTENSION, all extensions name deleted */ + protected Set<String> deletedExtensions; + /** * Constructor with source {@link WikittyService}. * @@ -205,6 +209,20 @@ extensions.put(extension.getId(), extension); } + public Set<String> getDeletedExtensions() { + return deletedExtensions; + } + + public void addDeletedExtension(String extName) { + if (deletedExtensions == null) { + deletedExtensions = new LinkedHashSet<String>(); + addType(WikittyEventType.REMOVE_EXTENSION); + } + deletedExtensions.add(extName); + } + + + /** * Merge this event with event passed in arguement. Merged datas are: * <li> type Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyListener.java 2010-11-16 15:36:57 UTC (rev 474) @@ -52,6 +52,7 @@ /** toto[1.0] */ public void putExtension(WikittyEvent event); + public void removeExtension(WikittyEvent event); public void clearExtension(WikittyEvent event); } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceCached.java 2010-11-16 15:36:57 UTC (rev 474) @@ -370,6 +370,13 @@ } @Override + public WikittyEvent deleteExtension( + String securityToken, Collection<String> extNames) { + // TODO poussin 20101115: perhaps use cache for extension ? + return ws.deleteExtension(securityToken, extNames); + } + + @Override public WikittyExtension restoreExtension(String securityToken, String id) { // TODO poussin 20101029: perhaps use cache for extension ? return ws.restoreExtension(securityToken, id); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java 2010-11-16 15:36:57 UTC (rev 474) @@ -131,6 +131,12 @@ } @Override + public WikittyEvent deleteExtension( + String securityToken, Collection<String> extNames) { + return delegate.deleteExtension(securityToken, extNames); + } + + @Override public WikittyExtension restoreExtension(String securityToken, String id) { return delegate.restoreExtension(securityToken, id); } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceImpl.java 2010-11-16 15:36:57 UTC (rev 474) @@ -55,7 +55,9 @@ import org.nuiton.wikitty.entities.WikittyTreeNodeHelper; import org.nuiton.wikitty.entities.WikittyTreeNodeImpl; import org.nuiton.wikitty.WikittyUtil; +import org.nuiton.wikitty.entities.ExtensionFactory; import org.nuiton.wikitty.search.Search; +import org.nuiton.wikitty.search.operators.Element; /** * WikittyService is main service @@ -299,6 +301,13 @@ return result; } + @Override + public WikittyEvent deleteExtension( + String securityToken, Collection<String> extNames) { + WikittyEvent result = deleteExtension(securityToken, null, extNames); + return result; + } + protected WikittyEvent storeExtension(String securityToken, WikittyTransaction transaction, Collection<WikittyExtension> exts) { boolean txCreated = false; @@ -329,6 +338,52 @@ } } + protected WikittyEvent deleteExtension(String securityToken, + WikittyTransaction transaction, Collection<String> extNames) { + boolean txCreated = false; + try { + if (transaction == null) { + transaction = new WikittyTransaction(); + txCreated = true; + transaction.begin(); + } + + // check that all extensions are not used + for(String name : extNames) { + // only name are stored in index, search only on name + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, name).criteria(); + criteria.setEndIndex(0); // result is not use, just numFound + PagedResult<String> wikittyWithExt = findAllByCriteria( + securityToken, transaction, criteria); + int numFound = wikittyWithExt.getNumFound(); + if (numFound > 0) { + throw new WikittyException(String.format( + "Can't delete %s extension, this extension" + + " is in used by %s wikitty", + name, numFound)); + } + } + + WikittyEvent result = + getExtensionStorage().delete(transaction, extNames); + + if (txCreated) { + transaction.commit(); + } + return result; + } catch (WikittyException ex) { + if (transaction != null) { + transaction.rollback(); + } + throw ex; + } catch (Exception eee) { + if (transaction != null) { + transaction.rollback(); + } + throw new WikittyException("Can't delete extensions", eee); + } + } + @Override public WikittyExtension restoreExtension( String securityToken, String extensionId) { @@ -1004,6 +1059,8 @@ // toutes les extensions a sauver Set<WikittyExtension> toAddExt = new LinkedHashSet<WikittyExtension>(); + // toutes les extensions a supprimer + Set<String> toDeleteExt = new LinkedHashSet<String>(); // recherche un event avec un clear pour ne pas jouer des events inutiles // recherche un store + delete du meme wikitty @@ -1036,14 +1093,17 @@ toAddExt.add(ext); } } + if (e.getType().contains(WikittyEvent.WikittyEventType.REMOVE_EXTENSION)) { + for (String extName : e.getDeletedExtensions()) { + toDeleteExt.add(extName); + } + } } WikittyTransaction tx = new WikittyTransaction(); try { tx.begin(); - // Actuellement il n'y a pas moyen de supprimer une extension (par surete) - // donc on ne fait rien avec toRemoveExt WikittyEvent result = new WikittyEvent(this); if (mustClear) { WikittyEvent eventClear = clear(securityToken, tx); @@ -1053,6 +1113,10 @@ storeExtension(securityToken, tx, toAddExt); result.add(eventStoreExtension); + WikittyEvent eventDeleteExtension = + deleteExtension(securityToken, tx, toDeleteExt); + result.add(eventDeleteExtension); + WikittyEvent eventStoreWikitty = store(securityToken, tx, toAddWikitty.values(), false); result.add(eventStoreWikitty); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceNotifier.java 2010-11-16 15:36:57 UTC (rev 474) @@ -224,6 +224,14 @@ } @Override + public WikittyEvent deleteExtension( + String securityToken, Collection<String> extNames) { + WikittyEvent result = ws.deleteExtension(securityToken, extNames); + fireEvent(result); + return result; + } + + @Override public WikittyExtension restoreExtension(String securityToken, String id) { // no notification return ws.restoreExtension(securityToken, id); @@ -693,6 +701,17 @@ } } + @Override + public void removeExtension(WikittyEvent event) { + if (propagateEvent) { + sendMessage(event); + } else { + if (log.isDebugEnabled()) { + log.debug("Not master cache, do not propagate putExtension event"); + } + } + } + /* * @see org.nuiton.wikitty.WikittyListener#clearExtension() */ Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2010-11-16 15:36:57 UTC (rev 474) @@ -167,6 +167,9 @@ if (e.getType().contains(WikittyEvent.WikittyEventType.PUT_EXTENSION)) { checkStoreExtension(securityToken, e.getExtensions().values()); } + if (e.getType().contains(WikittyEvent.WikittyEventType.REMOVE_EXTENSION)) { + checkDeleteExtension(securityToken, e.getDeletedExtensions()); + } } WikittyEvent result = ws.replay(securityToken, events); return result; @@ -483,7 +486,11 @@ } } } - + + protected void checkDeleteExtension (String securityToken, Collection<String> extNames) { + // FIXME 20101115 poussin check security for extension deletion + } + @Override public WikittyEvent storeExtension(String securityToken, Collection<WikittyExtension> exts) { @@ -492,6 +499,13 @@ } @Override + public WikittyEvent deleteExtension( + String securityToken, Collection<String> extNames) { + checkDeleteExtension(securityToken, extNames); + return ws.deleteExtension(securityToken, extNames); + } + + @Override public WikittyExtension restoreExtension(String securityToken, String id) { // All people can read extension return ws.restoreExtension(securityToken, id); 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 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2010-11-16 15:36:57 UTC (rev 474) @@ -187,6 +187,14 @@ } @Override + public WikittyEvent deleteExtension( + String securityToken, Collection<String> extNames) { + WikittyEvent e = tx.deleteExtension(securityToken, extNames); + addEvent(securityToken, e); + return e; + } + + @Override public WikittyExtension restoreExtension( String securityToken, String extensionId) { WikittyExtension result = tx.restoreExtension(securityToken, extensionId); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorage.java 2010-11-16 15:36:57 UTC (rev 474) @@ -53,6 +53,15 @@ Collection<WikittyExtension> extensions); /** + * delete extensions + * + * @param transaction transaction + * @param extNames extension name (extName) + */ + public WikittyEvent delete( + WikittyTransaction transaction, Collection<String> extNames); + + /** * Return true if id exists in storage. * * @param transaction the current transaction 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 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittyExtensionStorageInMemory.java 2010-11-16 15:36:57 UTC (rev 474) @@ -3,6 +3,8 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -14,6 +16,7 @@ public class WikittyExtensionStorageInMemory implements WikittyExtensionStorage { + /** key: extName[version], value: extension object */ protected Map<String, WikittyExtension> extensions; public WikittyExtensionStorageInMemory() { @@ -42,6 +45,21 @@ } @Override + public WikittyEvent delete(WikittyTransaction transaction, Collection<String> extNames) { + WikittyEvent result = new WikittyEvent(this); + Set<String> extToDelete = new HashSet<String>(extNames); + for (Iterator<Map.Entry<String, WikittyExtension>> i = extensions.entrySet().iterator(); i.hasNext();) { + Map.Entry<String, WikittyExtension> entry = i.next(); + String name = WikittyExtension.computeName(entry.getKey()); + if (extToDelete.contains(name)) { + i.remove(); + result.addDeletedExtension(name); + } + } + return result; + } + + @Override public boolean exists(WikittyTransaction transaction, String id) { boolean result = extensions.containsKey(id); return result; 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 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-11-16 15:36:57 UTC (rev 474) @@ -90,6 +90,11 @@ assertEquals(EXT_TEST.getName(), ext.getName()); assertEquals(EXT_TEST.getVersion(), ext.getVersion()); assertEquals(EXT_TEST, ext); + + // test de la suppression de l'extension + ws.deleteExtension(null, Collections.singleton(EXT_TEST.getName())); + extIds = ws.getAllExtensionIds(null); + assertEquals(0, extIds.size()); } @Test Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/notification/WikittyServiceNotificationTest.java 2010-11-16 15:36:57 UTC (rev 474) @@ -47,7 +47,7 @@ sendEvent(wsn, false); // donc au total seulement 5 events on du etre envoye - Assert.assertEquals(5, nbEvent); + Assert.assertEquals(6, nbEvent); } @@ -117,6 +117,20 @@ } { WikittyEvent event = new WikittyEvent("test"); + event.addType(WikittyEvent.WikittyEventType.REMOVE_EXTENSION); + wsn.processRemoteEvent(event); + wsn.getEventThread().waitFor(event.getTime()); + if (hasListener) { + Assert.assertEquals( + EnumSet.of(WikittyEvent.WikittyEventType.REMOVE_EXTENSION), + lastEvent); + } else { + Assert.assertEquals(null, lastEvent); + } + lastEvent = null; + } + { + WikittyEvent event = new WikittyEvent("test"); event.addType(WikittyEvent.WikittyEventType.CLEAR_EXTENSION); wsn.processRemoteEvent(event); wsn.getEventThread().waitFor(event.getTime()); @@ -173,6 +187,15 @@ } @Override + public void removeExtension(WikittyEvent event) { + nbEvent++; + Assert.assertEquals( + EnumSet.of(WikittyEvent.WikittyEventType.REMOVE_EXTENSION), + event.getType()); + lastEvent = event.getType(); + } + + @Override public void clearExtension(WikittyEvent event) { nbEvent++; Assert.assertEquals( Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java =================================================================== --- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2010-11-16 15:36:57 UTC (rev 474) @@ -31,6 +31,8 @@ import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.COL_TAGVALUES; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.COL_VERSION; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CLEAR_EXTENSION; +import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_DELETE_EXTENSION_ADMIN; +import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_DELETE_EXTENSION_DATA; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_EXTENSION_ADMIN_TEST; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_EXTENSION_ADMIN; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_CREATION_EXTENSION_DATA_TEST; @@ -179,6 +181,33 @@ } @Override + public WikittyEvent delete(WikittyTransaction transaction, Collection<String> extNames) { + Connection connection = WikittyJDBCUtil.getConnection(config); + try { + WikittyEvent result = new WikittyEvent(this); + + for (String name : extNames) { + // # is ESCAPE caractere (see wikitty-jdbc-query file) + // we escape [ and ] because some database use it as special char + name = name + "#[%#]"; + // delete extension in admin and data + WikittyJDBCUtil.doQuery(connection, jdbcQuery.getProperty( + QUERY_DELETE_EXTENSION_DATA), name); + WikittyJDBCUtil.doQuery(connection, jdbcQuery.getProperty( + QUERY_DELETE_EXTENSION_ADMIN), name); + result.addDeletedExtension(name); + + } + + return result; + } catch (SQLException eee) { + throw new WikittyException("Can't delete extension", eee); + } finally { + WikittyJDBCUtil.closeQuietly(connection); + } + } + + @Override public boolean exists(WikittyTransaction transaction, String id) { Connection connection = WikittyJDBCUtil.getConnection(config); try { Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java =================================================================== --- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2010-11-16 15:36:57 UTC (rev 474) @@ -130,6 +130,10 @@ /** clear wikitty query property name */ static final public String QUERY_CLEAR_WIKITTY = "jdbc.queries.clear.wikitty"; + /** clear extension query property name */ + static final public String QUERY_DELETE_EXTENSION_ADMIN = "jdbc.queries.delete.extension.admin"; + static final public String QUERY_DELETE_EXTENSION_DATA = "jdbc.queries.delete.extension.data"; + /** extension_admin table creation query property name */ static final public String QUERY_CREATION_EXTENSION_ADMIN_TEST = "jdbc.queries.creation.extension.admin.test"; Modified: trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties =================================================================== --- trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties 2010-11-15 17:04:29 UTC (rev 473) +++ trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties 2010-11-16 15:36:57 UTC (rev 474) @@ -83,6 +83,11 @@ #wikitty deletion in the data table query jdbc.queries.delete.wikitty.data=DELETE FROM wikitty_data WHERE id = ?; +#extension delete admin and data (ESCAPE is needed for [ and ] because some +# database use it like sqlserver) +jdbc.queries.delete.extension.data=DELETE FROM extension_data WHERE id LIKE ? ESCAPE '#'; +jdbc.queries.delete.extension.admin=DELETE FROM extension_admin WHERE id LIKE ? ESCAPE '#'; + #wikitty insertion in the admin table query jdbc.queries.insert.wikitty.admin=INSERT INTO wikitty_admin\ (id, version, extension_list) VALUES (?, ?, ?);