Author: michiel
Date: 2010-03-18 19:04:13 +0100 (Thu, 18 Mar 2010)
New Revision: 41525
Added:
mmbase/trunk/core/src/main/java/org/mmbase/storage/util/Sql.java
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/util/xml/applicationdata/resources/application_1_1.dtd
Log:
small application of MMB-1837
Copied: mmbase/trunk/core/src/main/java/org/mmbase/storage/util/Sql.java (from
rev 41524,
mmbase/branches/MMBase-1_9/core/src/main/java/org/mmbase/storage/util/Sql.java)
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/storage/util/Sql.java
(rev 0)
+++ mmbase/trunk/core/src/main/java/org/mmbase/storage/util/Sql.java
2010-03-18 18:04:13 UTC (rev 41525)
@@ -0,0 +1,101 @@
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+package org.mmbase.storage.util;
+
+import java.util.*;
+import java.sql.*;
+import javax.sql.*;
+
+
+import org.mmbase.module.core.MMBase;
+import org.mmbase.storage.implementation.database.Attributes;
+import org.mmbase.util.logging.*;
+
+
+/**
+ * Meant to be used as an 'AfterDeployment' job of an app1 xml. Automaticly
execute some SQL.
+ * E.g.
+ <afterdeployment>
+ <runnable version="10" class="org.mmbase.storage.util.Sql">
+ <param name="query">alter table $PREFIX_blocks add refreshpolicy
TEXT</param>
+ </runnable>
+ <runnable version="10" class="org.mmbase.storage.util.Sql">
+ <param name="query">alter table $PREFIX_blocks add
refreshpolicyparam TEXT</param>
+ </runnable>
+ </afterdeployment>
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: StorageReader.java 36284 2009-06-22 20:58:09Z michiel $
+ * @since MMBase-1.9.3
+ */
+public class Sql implements Runnable {
+
+ private static final Logger log = Logging.getLoggerInstance(Sql.class);
+ private String query;
+ private int max = Integer.MAX_VALUE;
+
+ public void setQuery(String q) {
+ query = q;
+ }
+
+ public void run() {
+ Connection con = null;
+ Statement stmt = null;
+ try {
+ DataSource dataSource = (DataSource)
MMBase.getMMBase().getStorageManagerFactory().getAttribute(Attributes.DATA_SOURCE);
+ con = dataSource.getConnection();
+ stmt = con.createStatement();
+ query = query.replace("$PREFIX", MMBase.getMMBase().getBaseName());
+ ResultSet rs =
stmt.executeQuery(org.mmbase.util.transformers.Xml.XMLUnescape(query));
+ {
+ StringBuilder head = new StringBuilder();
+ for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
+ if (i > 1) {
+ head.append(",");
+ }
+ head.append(rs.getMetaData().getColumnName(i));
+ }
+ log.info(head);
+ }
+ int seq = 0;
+ while(true) {
+ boolean valid = rs.next();
+ seq ++;
+ if (seq >= max) break;
+ if (! valid) break;
+ StringBuilder line = new StringBuilder();
+ for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
+ if (i > 1) {
+ line.append(",");
+ }
+ line.append(rs.getString(i)).append(',');
+ }
+ }
+ } catch (SQLException sqe) {
+ throw new RuntimeException(sqe);
+ } finally {
+ try {
+ if (stmt != null) {
+ stmt.close();
+ }
+ } catch (Exception g) {}
+ try {
+ if (con != null) {
+ con.close();
+ }
+ } catch (Exception g) {}
+ }
+ }
+
+ @Override
+ public String toString() {
+ return getClass().getName() + ":" + query;
+ }
+}
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/util/xml/applicationdata/resources/application_1_1.dtd
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/util/xml/applicationdata/resources/application_1_1.dtd
2010-03-18 18:03:08 UTC (rev 41524)
+++
mmbase/trunk/core/src/main/java/org/mmbase/util/xml/applicationdata/resources/application_1_1.dtd
2010-03-18 18:04:13 UTC (rev 41525)
@@ -57,10 +57,14 @@
<!ELEMENT afterdeployment (runnable*)>
-<!ELEMENT runnable EMPTY>
+<!ELEMENT runnable (param*)>
<!ATTLIST runnable class CDATA #REQUIRED>
<!ATTLIST runnable version CDATA #IMPLIED>
+<!ELEMENT param (#PCDATA)>
+<!ATTLIST param name CDATA #REQUIRED>
+
+
<!ELEMENT description (#PCDATA)>
<!ELEMENT install-notice (#PCDATA)>
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs