1 package org.jahia.clipbuilder.sql.struts; 2 3 import org.jahia.clipbuilder.sql.SessionManager; 4 import java.util.Map ; 5 import java.util.HashMap ; 6 import org.apache.struts.action.ActionForward; 7 import javax.servlet.http.HttpServletRequest ; 8 import org.apache.struts.action.ActionMapping; 9 import javax.servlet.http.*; 10 import org.apache.struts.action.ActionForm; 11 import org.jahia.clipbuilder.sql.config.DbProps; 12 import java.util.*; 13 import org.jahia.clipbuilder.sql.bean.*; 14 import org.jahia.clipbuilder.sql.util.DeployUtilities; 15 import java.io.File ; 16 import org.jahia.clipbuilder.sql.database.hibernate.model.*; 17 import org.apache.struts.action.*; 18 import org.apache.commons.beanutils.RowSetDynaClass; 19 20 25 public class EditQueryAction extends BaseAction { 26 29 public static String DATABASE_MYSQL = "mysql"; 30 33 public static String DATABASE_ORACLE = "oracle"; 34 37 public static String DATABASE_POSTGRE = "postgre"; 38 41 public static String DATABASE_HSQL = "hsql"; 42 43 44 45 50 public Map getKeyMethodMap() { 51 Map map = new HashMap (); 52 map.put("init", "init"); 53 map.put("sql.button.executeQuery", "executeQuery"); 54 map.put("sql.button.executeQueryForLink", "executeQuery"); 55 map.put("sql.button.deploy", "deploy"); 56 map.put("sql.button.saveAsDefault", "saveOrUpdate"); 57 map.put("menu.back", "backToMenuBuilder"); 58 return map; 59 } 60 61 62 68 public String getClippersDirectoryPath(HttpServletRequest request) { 69 return getServlet().getServletContext().getRealPath("/") + 70 getResources(request).getMessage("clippers.repository.path"); 71 } 72 73 74 80 public String getClippersDirectoryPathDeploy(HttpServletRequest request) { 81 String path = org.jahia.clipbuilder.util.JahiaUtils.getPortletDiretcoryPath(request); 82 if (path == null) { 83 path = getResources(request).getMessage("clippers.repository.deploy.path"); 85 } 86 return path; 87 } 88 89 90 99 public ActionForward executeQuery(ActionMapping actionMapping, 100 ActionForm actionForm, 101 HttpServletRequest request, 102 HttpServletResponse response) { 103 EditQueryForm form = (EditQueryForm) actionForm; 104 HttpSession session = request.getSession(); 105 String title = form.getTitle(); 107 String database = form.getDatabase(); 108 String databaseName = form.getDatabaseName(); 109 String databaseUrl = form.getDatabaseUrl(); 110 String userName = form.getUserName(); 111 String password = form.getUserPassword(); 112 String sql = form.getSqlQuery(); 113 String tableSize = form.getTableSize(); 114 115 String driverAndUrl[] = buildDriverAndUrl(database, databaseName, databaseUrl); 116 117 DbProps.DRIVER = driverAndUrl[0]; 119 DbProps.URL = driverAndUrl[1]; 120 DbProps.PASSWORD = password; 121 DbProps.USERNAME = userName; 122 123 try { 124 log.info("Executing Query method."); 125 126 if (log.isDebugEnabled()) { 127 log.debug("Execute query method. sql : " + sql); 128 } 129 130 QueryBean qb = new QueryBean(); 132 qb.executeQuery(sql); 133 134 String [] queryColumns = (String []) qb.getQueryColumns(); 136 List queryData = (List) qb.getQueryData(); 137 RowSetDynaClass resultSet = qb.getResultSet(); 138 139 session.setAttribute("title", title); 140 session.setAttribute("queryColumns", queryColumns); 141 session.setAttribute("queryData", queryData); 142 session.setAttribute("tableSize", tableSize); 143 session.setAttribute("resultSet", resultSet); 144 145 return actionMapping.getInputForward(); 146 } 147 catch (Exception ex) { 148 log.error("Cant execute query due to an exception",ex); 149 } 150 151 return actionMapping.getInputForward(); 152 } 153 154 155 164 public ActionForward deploy(ActionMapping actionMapping, 165 ActionForm actionForm, 166 HttpServletRequest request, 167 HttpServletResponse response) { 168 EditQueryForm form = (EditQueryForm) actionForm; 169 170 String title = form.getTitle(); 172 String database = form.getDatabase(); 173 String databaseName = form.getDatabaseName(); 174 String databaseUrl = form.getDatabaseUrl(); 175 String userName = form.getUserName(); 176 String password = form.getUserPassword(); 177 String sqlQuery = form.getSqlQuery(); 178 String portletName = form.getPortletname(); 179 String portletDescription = form.getPortletdescription(); 180 181 String sqlPatternDrirectoryPath = getClippersDirectoryPath(request) + File.separator + "sqlPattern" + File.separator + "sqlClipperPortletPattern.war"; 183 184 String driverAndUrl[] = buildDriverAndUrl(database, databaseName, databaseUrl); 186 String driver = driverAndUrl[0]; 187 String url = driverAndUrl[1]; 188 String patternWar = sqlPatternDrirectoryPath; 189 String warTarget = getClippersDirectoryPathDeploy(request) + File.separator + "sql_clip_" + title + ".war".replaceAll(" ","_"); 190 try { 191 DeployUtilities.getInstance().deploy(patternWar, warTarget, portletName, portletDescription, driver, url, databaseName, userName, password, title, sqlQuery); 192 } 193 catch (Exception ex) { 194 ex.printStackTrace(); 195 log.error("Error has occured during deuploy step: " + ex.toString()); 196 } 197 198 return actionMapping.getInputForward(); 199 } 200 201 202 211 public ActionForward backToMenuBuilder(ActionMapping actionMapping,ActionForm actionForm,HttpServletRequest request,HttpServletResponse response) { 212 return actionMapping.findForward("menuBuilder"); 213 } 214 215 216 217 226 public ActionForward init(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { 227 EditQueryForm form = (EditQueryForm) actionForm; 228 229 DatabaseConfiguration dConf = getDefaultConfigurationManager(). 231 getDefaultConfiguration(); 232 if (dConf != null) { 233 form.setDatabase(dConf.getDatabaseType()); 234 form.setDatabaseName(dConf.getDatabaseName()); 235 form.setDatabaseUrl(dConf.getDatabaseUrl()); 236 form.setUserName(dConf.getUserName()); 237 form.setUserPassword(dConf.getUserPassword()); 238 } 239 else { 240 241 ActionMessages messages = new ActionMessages(); 243 messages.add("msg", new ActionMessage("sql.messages.database.empty")); 244 245 saveMessages(request, messages); 246 } 247 return actionMapping.getInputForward(); 248 } 249 250 251 252 261 public ActionForward saveOrUpdate(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { 262 EditQueryForm form = (EditQueryForm) actionForm; 263 264 DatabaseConfiguration dConf = getDefaultConfigurationManager().getDefaultConfiguration(); 266 if (dConf == null) { 267 dConf = new DatabaseConfiguration(); 268 } 269 dConf.setDatabaseType(form.getDatabase()); 270 dConf.setDatabaseName(form.getDatabaseName()); 271 dConf.setDatabaseUrl(form.getDatabaseUrl()); 272 dConf.setUserName(form.getUserName()); 273 dConf.setUserPassword(form.getUserPassword()); 274 275 getDefaultConfigurationManager().saveOrUpdateDefaultConfiguration(dConf); 277 278 return actionMapping.getInputForward(); 279 } 280 281 282 290 private String [] buildDriverAndUrl(String database, String databaseName, 291 String databaseUrl) { 292 String driver = null; 294 String url = null; 295 if (database.equalsIgnoreCase(DATABASE_MYSQL)) { 296 driver = "com.mysql.jdbc.Driver"; 297 url = "jdbc:mysql://" + databaseUrl + "/" + databaseName; 298 } 299 else if (database.equalsIgnoreCase(DATABASE_ORACLE)) { 300 driver = "oracle.jdbc.driver.OracleDriver"; 301 url = "jdbc:oracle:thin:@" + databaseUrl + ":" + databaseName; 302 } 303 else if (database.equalsIgnoreCase(DATABASE_POSTGRE)) { 304 driver = "org.postgresql.Driver"; 305 url = "jdbc:postgresql://" + databaseUrl + "/" + databaseName; 306 } 307 else if (database.equalsIgnoreCase(DATABASE_HSQL)) { 308 driver = "org.hsqldb.jdbcDriver"; 309 url = "jdbc:hsqldb:" + databaseUrl + "/" + databaseName; 310 } 311 312 String [] result = {driver, url}; 313 return result; 314 } 315 316 317 } 318 | Popular Tags |