All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.glassfish.admingui.common.handlers.JdbcTempHandler Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

/*
 * JdbcHandler.java
 *
 * Created on August 10, 2006, 2:32 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
/**
 *
 * @author anilam
 */
package org.glassfish.admingui.common.handlers;

import com.sun.jsftemplating.annotation.Handler;
import com.sun.jsftemplating.annotation.HandlerInput;
import com.sun.jsftemplating.annotation.HandlerOutput;
import com.sun.jsftemplating.layout.descriptors.handler.HandlerContext;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.glassfish.admingui.common.util.GuiUtil;
import org.glassfish.admingui.common.util.RestUtil;

public class JdbcTempHandler {

    /** Creates a new instance of JdbcHandler */
    public JdbcTempHandler() {
    }

    /**
     * 

This handler gets the default values and resource type and puts them in session */ @Handler(id = "setJDBCPoolWizard", input = { @HandlerInput(name = "fromStep2", type = Boolean.class), @HandlerInput(name = "attrMap", type = Map.class)}, output = { @HandlerOutput(name = "ResTypeList", type = java.util.List.class), @HandlerOutput(name = "DBVendorList", type = java.util.List.class) }) public static void setJDBCPoolWizard(HandlerContext handlerCtx) { //We need to use 2 maps for JDBC Connection Pool creation because there are extra info we need to keep track in //the wizard, but cannot be passed to the creation API. Boolean fromStep2 = (Boolean) handlerCtx.getInputValue("fromStep2"); if ((fromStep2 != null) && fromStep2) { //wizardPool is already in session map } else { Map attrMap = (Map) handlerCtx.getInputValue("attrMap"); Map sessionMap = handlerCtx.getFacesContext().getExternalContext().getSessionMap(); sessionMap.put("wizardMap", attrMap); sessionMap.put("wizardPoolExtra", new HashMap()); //sessionMap.put("wizardPoolProperties", new HashMap()); } handlerCtx.setOutputValue("ResTypeList", resTypeList); handlerCtx.setOutputValue("DBVendorList", dbVendorList); } /** *

This handler gets the datasource classname and properties and sets them in session */ @Handler(id = "gf.updateJDBCPoolWizardStep1") public static void updateJDBCPoolWizardStep1(HandlerContext handlerCtx) { //Map pool = (Map) handlerCtx.getFacesContext().getExternalContext().getSessionMap().get("wizardPool"); Map extra = (Map) handlerCtx.getFacesContext().getExternalContext().getSessionMap().get("wizardPoolExtra"); String resType = (String) extra.get("resType"); String dbVendorBox = (String) extra.get("DBVendorBox"); String dbVendorField = (String) extra.get("DBVendorField"); String introspect = (String) extra.get("introspect"); if (introspect == null || introspect.isEmpty()) { introspect = Boolean.toString(false); } String dbVendor = (GuiUtil.isEmpty(dbVendorField)) ? dbVendorBox : dbVendorField; extra.put("DBVendor", dbVendor); String previousResType = (String) extra.get("PreviousResType"); String previousDB = (String) extra.get("PreviousDB"); String previousInstrospect = (String) extra.get("PreviousIntrospect"); if (resType.equals(previousResType) && dbVendor.equals(previousDB) && introspect.equals(previousInstrospect)) { //&& !GuiUtil.isEmpty((String) extra.get("DatasourceClassname"))) { //User didn't change type and DB, keep the datasource classname as the same. } else { if (!GuiUtil.isEmpty(resType) && !GuiUtil.isEmpty(dbVendor)) { try { List dsl = getJdbcDriverClassNames(dbVendor, resType, Boolean.valueOf(introspect)); if (guiLogger.isLoggable(Level.FINE)) { guiLogger.fine("======= getJdbcDriverClassNames(" + dbVendor + ", " + resType + ")"); guiLogger.fine("======= # of items for JDBC_DRIVER_CLASS_NAMES_KEY " + dsl.size()); for (int i = 0; i < dsl.size(); i++) { guiLogger.fine("classname[" + i + "] : " + dsl.get(i)); } } List> noprops = new ArrayList>(); String dslName = (dsl != null && (dsl.size() > 0)) ? (String) dsl.get(0) : ""; if (resType.equals(DRIVER)) { extra.put("DList", dsl); extra.put("DSList", ""); extra.put("DatasourceClassnameField", ""); extra.put("dsClassname", Boolean.FALSE); extra.put("driverClassname", dslName); } else { extra.put("DSList", dsl); extra.put("DList", ""); extra.put("DriverClassnameField", ""); extra.put("dsClassname", Boolean.TRUE); extra.put("datasourceClassname", dslName); } if (guiLogger.isLoggable(Level.FINE)) { guiLogger.fine("===== getConnectionDefinitionPropertiesAndDefaults(\"" + dslName + "\"," + resType + ")"); } Map props = getConnectionDefinitionPropertiesAndDefaults(dslName, resType); if (props.size() > 0) { if (guiLogger.isLoggable(Level.FINE)) { guiLogger.fine("======= getConnectionDefinitionPropertiesAndDefaults returns # of properties: " + props.size()); } handlerCtx.getFacesContext().getExternalContext().getSessionMap().put("wizardPoolProperties", GuiUtil.convertMapToListOfMap(props)); } else { if (guiLogger.isLoggable(Level.FINE)) { guiLogger.fine("======= getConnectionDefinitionPropertiesAndDefaults returns NULL"); } handlerCtx.getFacesContext().getExternalContext().getSessionMap().put("wizardPoolProperties", noprops); } } catch (Exception ex) { GuiUtil.getLogger().info(GuiUtil.getCommonMessage("log.error.updateJDBCPoolWizardStep1" + ex.getLocalizedMessage())); if (GuiUtil.getLogger().isLoggable(Level.FINE)){ ex.printStackTrace(); } } } else { // Allow user to provide DataSource ClassName when resourceType is not of type Driver // or is not selected. if (DRIVER.equals(resType)) { extra.put("DatasourceClassnameField", ""); extra.put("dsClassname", Boolean.FALSE); } else { extra.put("DatasourceClassnameField", ""); extra.put("dsClassname", Boolean.TRUE); } } extra.put("PreviousResType", resType); extra.put("PreviousDB", dbVendor); extra.put("PreviousIntrospect", introspect); } } /** *

updates the wizard map properties on step 2 */ @Handler(id = "gf.updateJdbcConnectionPoolPropertiesTable") public static void updateJdbcConnectionPoolPropertiesTable(HandlerContext handlerCtx) { Map extra = (Map) handlerCtx.getFacesContext().getExternalContext().getSessionMap().get("wizardPoolExtra"); String resType = (String) extra.get("resType"); String classname = (String) extra.get("datasourceClassname"); List> noprops = new ArrayList>(); if (guiLogger.isLoggable(Level.FINE)) { guiLogger.fine("===== getConnectionDefinitionPropertiesAndDefaults(\"" + classname + "\"," + resType + ")"); } Map props = getConnectionDefinitionPropertiesAndDefaults(classname, resType); if (props.size() != 0) { if (guiLogger.isLoggable(Level.FINE)) { guiLogger.fine("======= getConnectionDefinitionPropertiesAndDefaults returns # of properties: " + props.size()); } handlerCtx.getFacesContext().getExternalContext().getSessionMap().put("wizardPoolProperties", GuiUtil.convertMapToListOfMap(props)); } else { if (guiLogger.isLoggable(Level.FINE)) { guiLogger.fine("======= getConnectionDefinitionPropertiesAndDefaults returns NULL"); } handlerCtx.getFacesContext().getExternalContext().getSessionMap().put("wizardPoolProperties", noprops); } } /** *

updates the wizard map properties on step 2 */ @Handler(id = "updateJdbcConnectionPoolWizardStep2") public static void updateJdbcConnectionPoolWizardStep2(HandlerContext handlerCtx) { Map extra = (Map) handlerCtx.getFacesContext().getExternalContext().getSessionMap().get("wizardPoolExtra"); Map attrs = (Map) handlerCtx.getFacesContext().getExternalContext().getSessionMap().get("wizardMap"); String resType = (String) extra.get("resType"); String classname = (String) extra.get("datasourceClassname"); String driver = (String) extra.get("driverClassname"); String name = (String) extra.get("name"); String classnamefield = (String) extra.get("DatasourceClassnameField"); String driverfield = (String) extra.get("DriverClassnameField"); attrs.put("name", name); attrs.put("resType", resType); if ("".equals(attrs.get("transactionIsolationLevel"))) { attrs.remove("transactionIsolationLevel"); } if (!GuiUtil.isEmpty(classnamefield) || !GuiUtil.isEmpty(driverfield)) { attrs.put("datasourceClassname", classnamefield); attrs.put("driverClassname", driverfield); } else if (!GuiUtil.isEmpty(classname) || !GuiUtil.isEmpty(driver)) { attrs.put("datasourceClassname", classname); attrs.put("driverClassname", driver); } else { GuiUtil.handleError(handlerCtx, GuiUtil.getMessage("org.glassfish.jdbc.admingui.Strings", "msg.Error.classNameCannotBeEmpty")); return; } } /** *

This handler adds the class name table column depends on the resource type. */ @Handler(id = "gf.addClassNameColumn", input = { @HandlerInput(name = "poolsData", type = List.class)}, output = { @HandlerOutput(name = "result", type = java.util.List.class) }) public static void addClassNameColumn(HandlerContext handlerCtx) { List> poolsData = (List>) handlerCtx.getInputValue("poolsData"); if (poolsData != null) { for (Map poolData : poolsData) { String resType = poolData.get("resType"); String driverClassName = poolData.get("driverClassname"); String datasourceClassName = poolData.get("datasourceClassname"); if (!resType.isEmpty()) { if (resType.equals("java.sql.Driver")) { poolData.put("className", driverClassName); } else { poolData.put("className", datasourceClassName); } } else { if (!datasourceClassName.isEmpty()) { poolData.put("className", datasourceClassName); } if (!driverClassName.isEmpty()) { poolData.put("className", driverClassName); } } } } handlerCtx.setOutputValue("result", poolsData); } private static List getJdbcDriverClassNames(String dbVendor, String resType, boolean introspect) { String endpoint = (String) GuiUtil.getSessionValue("REST_URL"); endpoint = endpoint + "/resources/get-jdbc-driver-class-names"; Map attrs = new HashMap(); attrs.put("dbVendor", dbVendor); attrs.put("restype", resType); attrs.put("introspect", ((Boolean) introspect).toString()); List jdbcClassNames = new ArrayList(); try { Map responseMap = RestUtil.restRequest(endpoint, attrs, "GET", null, false); Map extraPropsMap = (Map) ((Map) responseMap.get("data")).get("extraProperties"); if ( extraPropsMap != null) { jdbcClassNames = (List) extraPropsMap.get("driverClassNames"); } } catch (Exception ex) { GuiUtil.getLogger().severe("Error in getJdbcDriverClassNames ; \nendpoint = " + endpoint + "attrs=" + attrs + "method=GET"); //we don't need to call GuiUtil.handleError() because thats taken care of in restRequest() when we pass in the handler. } return jdbcClassNames; } private static List getDatabaseVendorNames() { String endpoint = (String) GuiUtil.getSessionValue("REST_URL"); endpoint = endpoint + "/resources/get-database-vendor-names"; List vendorList = new ArrayList(); try { Map responseMap = RestUtil.restRequest(endpoint, null, "GET", null, false); Map extraPropsMap = (Map) ((Map) responseMap.get("data")).get("extraProperties"); if ( extraPropsMap != null) { vendorList = (List) extraPropsMap.get("vendorNames"); } } catch (Exception ex) { GuiUtil.getLogger().severe("Error in getDatabaseVendorNames ; \nendpoint = " + endpoint + "attrs=null method=GET"); //we don't need to call GuiUtil.handleError() because thats taken care of in restRequest() when we pass in the handler. } return vendorList; } private static Map getConnectionDefinitionPropertiesAndDefaults(String datasourceClassName, String resType) { String endpoint = (String) GuiUtil.getSessionValue("REST_URL"); endpoint = endpoint + "/resources/get-connection-definition-properties-and-defaults"; Map attrs = new HashMap(); attrs.put("connectionDefinitionClass", datasourceClassName); attrs.put("restype", resType); Map connDefProps = new HashMap(); try { Map responseMap = RestUtil.restRequest(endpoint, attrs, "GET", null, false); Map extraPropsMap = (Map) ((Map) responseMap.get("data")).get("extraProperties"); if ( extraPropsMap != null) { connDefProps = (Map) extraPropsMap.get("connectionDefinitionPropertiesAndDefaults"); } } catch (Exception ex) { GuiUtil.getLogger().severe("Error in getConnectionDefinitionPropertiesAndDefaults ; \nendpoint = " + endpoint + "attrs=" + attrs + "method=GET"); //we don't need to call GuiUtil.handleError() because thats taken care of in restRequest() when we pass in the handler. } return connDefProps; } public static final Logger guiLogger = GuiUtil.getLogger(); public static final String REASON_FAILED_KEY = "ReasonFailedKey"; //public static final String SET_KEY = "SetKey"; //public static final String BOOLEAN_KEY = "BooleanKey"; static private final String DATA_SOURCE = "javax.sql.DataSource"; static private final String XADATA_SOURCE = "javax.sql.XADataSource"; static private final String CCDATA_SOURCE = "javax.sql.ConnectionPoolDataSource"; static private final String DRIVER = "java.sql.Driver"; static private final String JAVADB = "JavaDB"; static private final String ORACLE = "Oracle"; static private final String DERBY = "Derby"; static private final String SYBASE = "Sybase"; static private final String DB2 = "DB2"; static private final String POINTBASE = "PointBase"; static private final String POSTGRESQL = "PostgreSQL"; static private final String INFORMIX = "Informix"; static private final String CLOUDSCAPE = "Cloudscape"; static private final String MSSQL = "Microsoft SQL Server"; static private final String MYSQL = "MySQL"; static private List resTypeList = new ArrayList(); static private List dbVendorList = new ArrayList(); static { dbVendorList = getDatabaseVendorNames(); dbVendorList.add(0, ""); resTypeList.add(""); resTypeList.add(DATA_SOURCE); resTypeList.add(XADATA_SOURCE); resTypeList.add(CCDATA_SOURCE); resTypeList.add(DRIVER); // dbVendorList.add(""); // dbVendorList.add(JAVADB); // dbVendorList.add(ORACLE); // dbVendorList.add(DERBY); // dbVendorList.add(SYBASE); // dbVendorList.add(DB2); // dbVendorList.add(POINTBASE); // dbVendorList.add(POSTGRESQL); // dbVendorList.add(INFORMIX); // dbVendorList.add(CLOUDSCAPE); // dbVendorList.add(MSSQL); // dbVendorList.add(MYSQL); // Collections.sort(dbVendorList); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy