| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| */ |
| |
| package org.apache.openaz.xacml.admin.view.components; |
| |
| import java.sql.Connection; |
| import java.sql.DriverManager; |
| import java.sql.SQLException; |
| import java.util.HashSet; |
| import java.util.Set; |
| |
| import javax.naming.Context; |
| import javax.naming.InitialContext; |
| import javax.naming.NamingException; |
| import javax.sql.DataSource; |
| |
| import org.apache.commons.logging.Log; |
| import org.apache.commons.logging.LogFactory; |
| |
| import org.apache.openaz.xacml.admin.jpa.PIPConfigParam; |
| import org.apache.openaz.xacml.admin.jpa.PIPConfiguration; |
| import org.apache.openaz.xacml.admin.view.events.FormChangedEventListener; |
| import org.apache.openaz.xacml.admin.view.events.FormChangedEventNotifier; |
| import com.vaadin.addon.jpacontainer.EntityItem; |
| import com.vaadin.annotations.AutoGenerated; |
| import com.vaadin.data.Buffered.SourceException; |
| import com.vaadin.data.Item; |
| import com.vaadin.data.Property.ValueChangeEvent; |
| import com.vaadin.data.Property.ValueChangeListener; |
| import com.vaadin.data.Validator.InvalidValueException; |
| import com.vaadin.server.Page; |
| import com.vaadin.ui.Alignment; |
| import com.vaadin.ui.Button; |
| import com.vaadin.ui.Button.ClickEvent; |
| import com.vaadin.ui.Button.ClickListener; |
| import com.vaadin.ui.ComboBox; |
| import com.vaadin.ui.CustomComponent; |
| import com.vaadin.ui.Notification; |
| import com.vaadin.ui.Notification.Type; |
| import com.vaadin.ui.PasswordField; |
| import com.vaadin.ui.TextField; |
| import com.vaadin.ui.VerticalLayout; |
| |
| public class SQLPIPConfigurationComponent extends CustomComponent implements FormChangedEventNotifier { |
| |
| @AutoGenerated |
| private VerticalLayout mainLayout; |
| |
| @AutoGenerated |
| private Button buttonTest; |
| |
| @AutoGenerated |
| private PasswordField textFieldPassword; |
| |
| @AutoGenerated |
| private TextField textFieldUser; |
| |
| @AutoGenerated |
| private TextField textFieldConnectionURL; |
| |
| @AutoGenerated |
| private ComboBox comboBoxSQLDriver; |
| |
| @AutoGenerated |
| private TextField textFieldDataSource; |
| |
| @AutoGenerated |
| private ComboBox comboBoxConnectionType; |
| |
| public static final String CLASSNAME = "org.apache.openaz.xacml.std.pip.engines.jdbc.JDBCEngine"; |
| |
| public static final String SQL_TYPE = "type"; |
| public static final String SQL_TYPE_JDBC = "jdbc"; |
| public static final String SQL_TYPE_JNDI = "jndi"; |
| public static final String SQL_DATASOURCE = "datasource"; |
| public static final String SQL_DRIVER = "jdbc.driver"; |
| public static final String SQL_URL = "jdbc.url"; |
| public static final String SQL_USER = "jdbc.conn.user"; |
| public static final String SQL_PASSWORD = "jdbc.conn.password"; |
| |
| // |
| // These are the drivers that we are initially supporting and testing. |
| // Other JDBC drivers may work fine, but we will wait until we test |
| // with those drivers before adding them to this list. |
| // |
| public static final String SQL_DRIVER_MYSQL = "com.mysql.jdbc.Driver"; |
| public static final String SQL_DRIVER_POSTGRESQL = "org.postgresql.Driver"; |
| public static final String SQL_DRIVER_H2 = "org.h2.Driver"; |
| public static final String SQL_DRIVER_HYPER = "org.hsqldb.jdbc.JDBCDriver"; |
| public static final String SQL_DRIVER_SQL_SERVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; |
| public static String[] SQL_DRIVERS = new String[] {SQL_DRIVER_MYSQL, SQL_DRIVER_POSTGRESQL, SQL_DRIVER_H2, SQL_DRIVER_HYPER, SQL_DRIVER_SQL_SERVER}; |
| |
| public static final String SQL_DRIVER_MYSQL_URL = "jdbc:mysql://localhost:3306/"; |
| public static final String SQL_DRIVER_POSTGRESQL_URL = "jdbc:postgresql://localhost:5432/"; |
| public static final String SQL_DRIVER_H2_URL = "jdbc:h2:file:/"; |
| public static final String SQL_DRIVER_HYPER_URL = "jdbc:hsqldb:file:/"; |
| public static final String SQL_DRIVER_SQL_SERVER_URL = "jdbc:sqlserver://localhost:1433/"; |
| |
| /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */ |
| |
| /** |
| * |
| */ |
| private static final long serialVersionUID = 1L; |
| private static final Log logger = LogFactory.getLog(SQLPIPConfigurationComponent.class); |
| |
| private final SQLPIPConfigurationComponent self = this; |
| private final BasicNotifier notifier = new BasicNotifier(); |
| private final EntityItem<PIPConfiguration> entity; |
| /** |
| * The constructor should first build the main layout, set the |
| * composition root and then do any custom initialization. |
| * |
| * The constructor will not be automatically regenerated by the |
| * visual editor. |
| * @param configParamField |
| */ |
| public SQLPIPConfigurationComponent(EntityItem<PIPConfiguration> entity) { |
| buildMainLayout(); |
| setCompositionRoot(mainLayout); |
| // |
| // Save |
| // |
| this.entity = entity; |
| // |
| // Initialize |
| // |
| this.initialize(); |
| // |
| // Finish |
| // |
| this.reset(); |
| } |
| |
| protected void initialize() { |
| if (logger.isDebugEnabled()) { |
| logger.debug("initializing " + this.entity.getEntity().toString()); |
| } |
| // |
| // Iterate any existing values, save them in the data field for each |
| // GUI object. |
| // |
| Set<PIPConfigParam> unneeded = new HashSet<PIPConfigParam>(); |
| for (PIPConfigParam param : this.entity.getEntity().getPipconfigParams()) { |
| // |
| // Sanity check |
| // |
| if (param.getParamName() == null) { |
| logger.warn("Null parameter name found."); |
| unneeded.add(param); |
| continue; |
| } |
| if (param.getParamName().equals(SQL_TYPE)) { |
| this.comboBoxConnectionType.setData(param); |
| } else if (param.getParamName().equals(SQL_DATASOURCE)) { |
| this.textFieldDataSource.setData(param); |
| } else if (param.getParamName().equals(SQL_DRIVER)) { |
| this.comboBoxSQLDriver.setData(param); |
| } else if (param.getParamName().equals(SQL_URL)) { |
| this.textFieldConnectionURL.setData(param); |
| } else if (param.getParamName().equals(SQL_USER)) { |
| this.textFieldUser.setData(param); |
| } else if (param.getParamName().equals(SQL_PASSWORD)) { |
| this.textFieldPassword.setData(param); |
| } else { |
| unneeded.add(param); |
| } |
| } |
| // |
| // Get rid of parameters that are not needed |
| // |
| if (unneeded.isEmpty() == false) { |
| this.entity.getEntity().getPipconfigParams().removeAll(unneeded); |
| } |
| // |
| // Now finish initializing the GUI objects |
| // |
| this.initializeEntity(); |
| this.initializeTypeCombo(); |
| this.initializeSQLDriverCombo(); |
| this.initializeText(); |
| this.initializeButtons(); |
| } |
| |
| protected void initializeEntity() { |
| // |
| // Initialize the entity |
| // |
| this.entity.getEntity().setClassname(CLASSNAME); |
| this.entity.getEntity().setRequiresResolvers(true); |
| } |
| |
| protected void initializeTypeCombo() { |
| // |
| // Setup GUI properties |
| // |
| this.comboBoxConnectionType.setImmediate(true); |
| this.comboBoxConnectionType.setNullSelectionAllowed(false); |
| this.comboBoxConnectionType.setRequired(true); |
| this.comboBoxConnectionType.setRequiredError("You must select a connection type."); |
| // |
| // Add the possible items |
| // |
| this.comboBoxConnectionType.addItem(SQL_TYPE_JDBC); |
| this.comboBoxConnectionType.addItem(SQL_TYPE_JNDI); |
| // |
| // Respond to events |
| // |
| this.comboBoxConnectionType.addValueChangeListener(new ValueChangeListener() { |
| private static final long serialVersionUID = 1L; |
| |
| @Override |
| public void valueChange(ValueChangeEvent event) { |
| PIPConfigParam param = (PIPConfigParam) self.comboBoxConnectionType.getData(); |
| if (param == null) { |
| param = new PIPConfigParam(SQL_TYPE); |
| self.entity.getEntity().addPipconfigParam(param); |
| self.comboBoxConnectionType.setData(param); |
| } |
| param.setParamValue(self.comboBoxConnectionType.getValue().toString()); |
| self.reset(); |
| self.fireFormChangedEvent(); |
| } |
| }); |
| // |
| // Set its default selection. If there isn't one, then we default to JDBC. |
| // |
| PIPConfigParam param = (PIPConfigParam) this.comboBoxConnectionType.getData(); |
| if (param == null) { |
| param = new PIPConfigParam(SQL_TYPE, SQL_TYPE_JDBC); |
| this.entity.getEntity().addPipconfigParam(param); |
| this.comboBoxConnectionType.setData(param); |
| } |
| this.comboBoxConnectionType.select(param.getParamValue()); |
| } |
| |
| protected void initializeSQLDriverCombo() { |
| // |
| // GUI properties |
| // |
| this.comboBoxSQLDriver.setImmediate(true); |
| this.comboBoxSQLDriver.setRequired(true); |
| this.comboBoxConnectionType.setRequiredError("You must select a JDBC Driver"); |
| this.comboBoxSQLDriver.setInputPrompt("Eg. com.mysql.jdbc.Driver"); |
| // |
| // Add some common driver values. These are the drivers we have tested with so far. |
| // |
| for (String driver : SQL_DRIVERS) { |
| this.comboBoxSQLDriver.addItem(driver); |
| } |
| // |
| // Setup the default selection |
| // |
| PIPConfigParam param = (PIPConfigParam) this.comboBoxSQLDriver.getData(); |
| if (param != null) { |
| this.comboBoxSQLDriver.setValue(param.getParamValue()); |
| // |
| // Check if its there (the value could be something other than what we |
| // have setup in our list of defaults.) |
| // |
| boolean bFound = false; |
| for (Object id : this.comboBoxSQLDriver.getItemIds()) { |
| Item item = this.comboBoxSQLDriver.getItem(id); |
| if (item.toString().equals(param.getParamValue())) { |
| bFound = true; |
| break; |
| } |
| } |
| if (! bFound) { |
| // |
| // It's not one of our defaults, no problem. Add it in. |
| // |
| this.comboBoxSQLDriver.addItem(param.getParamValue()); |
| this.comboBoxSQLDriver.setValue(param.getParamValue()); |
| } |
| } |
| // |
| // Allow new items |
| // |
| this.comboBoxSQLDriver.setNewItemsAllowed(true); |
| // |
| // Respond to selection changes |
| // |
| this.comboBoxSQLDriver.addValueChangeListener(new ValueChangeListener() { |
| private static final long serialVersionUID = 1L; |
| |
| @Override |
| public void valueChange(ValueChangeEvent event) { |
| PIPConfigParam param = (PIPConfigParam) self.comboBoxSQLDriver.getData(); |
| if (param == null) { |
| param = new PIPConfigParam(SQL_DRIVER, self.comboBoxSQLDriver.getValue().toString()); |
| self.entity.getEntity().addPipconfigParam(param); |
| self.comboBoxSQLDriver.setData(param); |
| } |
| // |
| // Was something unselected? |
| // |
| if (self.comboBoxSQLDriver.getValue() == null) { |
| param.setParamValue(null); |
| } else { |
| param.setParamValue(self.comboBoxSQLDriver.getValue().toString()); |
| // |
| // See if we should pre-populate the driver URL |
| // |
| self.setupDriverURL(self.comboBoxSQLDriver.getValue().toString()); |
| } |
| // |
| // Fire |
| // |
| self.fireFormChangedEvent(); |
| } |
| }); |
| } |
| |
| protected void initializeText() { |
| // |
| // GUI properties |
| // |
| this.textFieldDataSource.setImmediate(true); |
| this.textFieldDataSource.setNullRepresentation(""); |
| this.textFieldDataSource.setRequired(true); |
| this.textFieldDataSource.setRequiredError("The name of the JNDI Resource is needed."); |
| // |
| // Get its initial value |
| // |
| PIPConfigParam param = (PIPConfigParam) this.textFieldDataSource.getData(); |
| if (param != null) { |
| this.textFieldDataSource.setValue(param.getParamValue()); |
| } |
| // |
| // Respond to value changes |
| // |
| this.textFieldDataSource.addValueChangeListener(new ValueChangeListener() { |
| private static final long serialVersionUID = 1L; |
| |
| @Override |
| public void valueChange(ValueChangeEvent event) { |
| PIPConfigParam param = (PIPConfigParam) self.textFieldDataSource.getData(); |
| if (param == null) { |
| param = new PIPConfigParam(SQL_DATASOURCE, self.textFieldDataSource.getValue()); |
| self.entity.getEntity().addPipconfigParam(param); |
| self.textFieldDataSource.setData(param); |
| } |
| param.setParamValue(self.textFieldDataSource.getValue()); |
| self.fireFormChangedEvent(); |
| } |
| }); |
| // |
| // Setup GUI properties |
| // |
| this.textFieldConnectionURL.setImmediate(true); |
| this.textFieldConnectionURL.setNullRepresentation(""); |
| this.textFieldConnectionURL.setRequired(true); |
| this.textFieldConnectionURL.setRequiredError("A URL is needed to connect to the database."); |
| // |
| // Set its default value |
| // |
| param = (PIPConfigParam) this.textFieldConnectionURL.getData(); |
| if (param != null) { |
| this.textFieldConnectionURL.setValue(param.getParamValue()); |
| } |
| // |
| // Respond to value changes |
| // |
| this.textFieldConnectionURL.addValueChangeListener(new ValueChangeListener() { |
| private static final long serialVersionUID = 1L; |
| |
| @Override |
| public void valueChange(ValueChangeEvent event) { |
| PIPConfigParam param = (PIPConfigParam) self.textFieldConnectionURL.getData(); |
| if (param == null) { |
| param = new PIPConfigParam(SQL_URL); |
| self.entity.getEntity().addPipconfigParam(param); |
| self.textFieldConnectionURL.setData(param); |
| } |
| param.setParamValue(self.textFieldConnectionURL.getValue()); |
| self.fireFormChangedEvent(); |
| } |
| }); |
| // |
| // Set GUI properties |
| // |
| this.textFieldUser.setImmediate(true); |
| this.textFieldUser.setNullRepresentation(""); |
| this.textFieldUser.setRequired(true); |
| this.textFieldUser.setRequiredError("User name is required."); |
| // |
| // Setup its default value |
| // |
| param = (PIPConfigParam) self.textFieldUser.getData(); |
| if (param != null) { |
| this.textFieldUser.setValue(param.getParamValue()); |
| } |
| // |
| // Respond to value changes |
| // |
| this.textFieldUser.addValueChangeListener(new ValueChangeListener() { |
| private static final long serialVersionUID = 1L; |
| |
| @Override |
| public void valueChange(ValueChangeEvent event) { |
| PIPConfigParam param = (PIPConfigParam) self.textFieldUser.getData(); |
| if (param == null) { |
| param = new PIPConfigParam(SQL_USER); |
| self.entity.getEntity().addPipconfigParam(param); |
| self.textFieldUser.setData(param); |
| } |
| param.setParamValue(self.textFieldUser.getValue()); |
| self.fireFormChangedEvent(); |
| } |
| }); |
| // |
| // Initialize GUI properties |
| // |
| this.textFieldPassword.setImmediate(true); |
| this.textFieldPassword.setNullRepresentation(""); |
| // |
| // Set its default value |
| // |
| param = (PIPConfigParam) self.textFieldPassword.getData(); |
| if (param != null) { |
| this.textFieldPassword.setValue(param.getParamValue()); |
| } |
| // |
| // Respond to value change events |
| // |
| this.textFieldPassword.addValueChangeListener(new ValueChangeListener() { |
| private static final long serialVersionUID = 1L; |
| |
| @Override |
| public void valueChange(ValueChangeEvent event) { |
| PIPConfigParam param = (PIPConfigParam) self.textFieldPassword.getData(); |
| if (param == null) { |
| param = new PIPConfigParam(SQL_PASSWORD); |
| self.entity.getEntity().addPipconfigParam(param); |
| self.textFieldPassword.setData(param); |
| } |
| param.setParamValue(self.textFieldPassword.getValue()); |
| self.fireFormChangedEvent(); |
| } |
| }); |
| } |
| |
| protected void initializeButtons() { |
| this.buttonTest.setImmediate(true); |
| this.buttonTest.addClickListener(new ClickListener() { |
| private static final long serialVersionUID = 1L; |
| |
| @Override |
| public void buttonClick(ClickEvent event) { |
| Object id = self.comboBoxConnectionType.getValue(); |
| if (id == null) { |
| logger.warn("No combo box selection"); |
| return; |
| } |
| if (id.toString().equals(SQL_TYPE_JDBC)) { |
| self.testJDBCConnection(); |
| } else if (id.toString().equals(SQL_TYPE_JNDI)) { |
| self.testJNDIConnection(); |
| } |
| } |
| }); |
| } |
| |
| protected void setupDriverURL(String value) { |
| if (value.equals(SQL_DRIVER_MYSQL)) { |
| this.textFieldConnectionURL.setValue(SQL_DRIVER_MYSQL_URL); |
| } else if (value.equals(SQL_DRIVER_POSTGRESQL)) { |
| this.textFieldConnectionURL.setValue(SQL_DRIVER_POSTGRESQL_URL); |
| } else if (value.equals(SQL_DRIVER_H2)) { |
| this.textFieldConnectionURL.setValue(SQL_DRIVER_H2_URL); |
| } else if (value.equals(SQL_DRIVER_HYPER)) { |
| this.textFieldConnectionURL.setValue(SQL_DRIVER_HYPER_URL); |
| } else if (value.equals(SQL_DRIVER_SQL_SERVER)) { |
| this.textFieldConnectionURL.setValue(SQL_DRIVER_SQL_SERVER_URL); |
| } |
| } |
| |
| protected void testJNDIConnection() { |
| try { |
| Context initialContext = new InitialContext(); |
| DataSource dataSource = (DataSource) initialContext.lookup(this.textFieldDataSource.getValue()); |
| try (Connection connection = dataSource.getConnection()) { |
| new Notification("Success!", |
| "Connection Established!", |
| Type.HUMANIZED_MESSAGE, true) |
| .show(Page.getCurrent()); |
| } |
| } catch (NamingException e) { |
| logger.error(e); |
| new Notification("JNDI Naming Exception", |
| "<br/>" + e.getLocalizedMessage() + "<br/>Is the context defined in this J2EE Container instance?", |
| Type.ERROR_MESSAGE, true) |
| .show(Page.getCurrent()); |
| } catch (SQLException e) { |
| logger.error(e); |
| new Notification("SQL Exception", |
| "<br/>" + e.getLocalizedMessage() + "<br/>Are the configuration parameters correct?", |
| Type.ERROR_MESSAGE, true) |
| .show(Page.getCurrent()); |
| } |
| } |
| |
| protected void testJDBCConnection() { |
| try { |
| if (this.comboBoxSQLDriver.getValue() != null) { |
| Class.forName(this.comboBoxSQLDriver.getValue().toString()); |
| } else { |
| throw new ClassNotFoundException("Please select a JDBC driver to load."); |
| } |
| } catch (ClassNotFoundException e) { |
| logger.error(e); |
| new Notification("Driver Exception", |
| "<br/>" + e.getLocalizedMessage() + "<br/>Is the JDBC driver's jar in the J2EE container path?", |
| Type.ERROR_MESSAGE, true) |
| .show(Page.getCurrent()); |
| return; |
| } |
| Connection connection = null; |
| try { |
| connection = DriverManager.getConnection(this.textFieldConnectionURL.getValue(), this.textFieldUser.getValue(), this.textFieldPassword.getValue()); |
| new Notification("Success!", |
| "Connection Established!", |
| Type.HUMANIZED_MESSAGE, true) |
| .show(Page.getCurrent()); |
| } catch (SQLException e) { |
| logger.error(e); |
| new Notification("SQL Exception", |
| "<br/>" + e.getLocalizedMessage() + "<br/>Are the configuration parameters correct?", |
| Type.ERROR_MESSAGE, true) |
| .show(Page.getCurrent()); |
| } finally { |
| if (connection != null) { |
| try { |
| connection.close(); |
| } catch (SQLException idontcare) { //NOPMD |
| } |
| } |
| } |
| } |
| |
| protected void reset() { |
| Object id = this.comboBoxConnectionType.getValue(); |
| if (id == null) { |
| logger.warn("Can't reset combo hasn't selected anything."); |
| return; |
| } |
| if (id.toString().equals(SQL_TYPE_JDBC)) { |
| // |
| // |
| // |
| this.textFieldDataSource.setVisible(false); |
| this.textFieldDataSource.setRequired(false); |
| // |
| // |
| // |
| this.textFieldConnectionURL.setVisible(true); |
| this.textFieldConnectionURL.setRequired(true); |
| this.comboBoxSQLDriver.setVisible(true); |
| this.comboBoxSQLDriver.setRequired(true); |
| this.textFieldUser.setVisible(true); |
| this.textFieldUser.setRequired(true); |
| this.textFieldPassword.setVisible(true); |
| } else if (id.toString().equals(SQL_TYPE_JNDI)) { |
| // |
| // |
| // |
| this.textFieldDataSource.setVisible(true); |
| this.textFieldDataSource.setRequired(true); |
| // |
| // |
| // |
| this.textFieldConnectionURL.setVisible(false); |
| this.textFieldConnectionURL.setRequired(false); |
| this.comboBoxSQLDriver.setVisible(false); |
| this.comboBoxSQLDriver.setRequired(false); |
| this.textFieldUser.setVisible(false); |
| this.textFieldUser.setRequired(false); |
| this.textFieldPassword.setVisible(false); |
| } else { |
| logger.warn("Unknown SQL type selection: " + id); |
| } |
| } |
| |
| public void validate() throws InvalidValueException { |
| if (logger.isDebugEnabled()) { |
| logger.debug("validate"); |
| } |
| this.comboBoxConnectionType.validate(); |
| this.textFieldDataSource.validate(); |
| this.textFieldConnectionURL.validate(); |
| this.comboBoxSQLDriver.validate(); |
| this.textFieldPassword.validate(); |
| this.textFieldUser.validate(); |
| } |
| |
| public void commit() throws SourceException, InvalidValueException { |
| if (logger.isDebugEnabled()) { |
| logger.debug("commit"); |
| } |
| this.comboBoxConnectionType.commit(); |
| |
| Object id = this.comboBoxConnectionType.getValue(); |
| if (id == null) { |
| logger.warn("Can't reset combo hasn't selected anything."); |
| return; |
| } |
| if (id.toString().equals(SQL_TYPE_JDBC)) { |
| this.textFieldConnectionURL.commit(); |
| this.comboBoxSQLDriver.commit(); |
| this.textFieldPassword.commit(); |
| this.textFieldUser.commit(); |
| |
| this.textFieldDataSource.setData(null); |
| this.entity.getEntity().getPipconfigParams().remove(SQL_DATASOURCE); |
| |
| } else if (id.toString().equals(SQL_TYPE_JNDI)) { |
| |
| this.textFieldDataSource.commit(); |
| |
| this.textFieldConnectionURL.setData(null); |
| this.comboBoxSQLDriver.setData(null); |
| this.textFieldPassword.setData(null); |
| this.textFieldUser.setData(null); |
| /* ??? |
| this.entity.getEntity().getPipconfigParams().remove(SQL_TYPE); |
| this.entity.getEntity().getPipconfigParams().remove(SQL_DRIVER); |
| this.entity.getEntity().getPipconfigParams().remove(SQL_URL); |
| this.entity.getEntity().getPipconfigParams().remove(SQL_USER); |
| this.entity.getEntity().getPipconfigParams().remove(SQL_PASSWORD); |
| */ |
| } |
| } |
| |
| public void discard() throws SourceException { |
| if (logger.isDebugEnabled()) { |
| logger.debug("discard"); |
| } |
| this.textFieldDataSource.setData(null); |
| this.textFieldConnectionURL.setData(null); |
| this.comboBoxSQLDriver.setData(null); |
| this.textFieldPassword.setData(null); |
| this.textFieldUser.setData(null); |
| |
| this.entity.getEntity().getPipconfigParams().remove(SQL_TYPE); |
| this.entity.getEntity().getPipconfigParams().remove(SQL_DATASOURCE); |
| this.entity.getEntity().getPipconfigParams().remove(SQL_DRIVER); |
| this.entity.getEntity().getPipconfigParams().remove(SQL_URL); |
| this.entity.getEntity().getPipconfigParams().remove(SQL_USER); |
| this.entity.getEntity().getPipconfigParams().remove(SQL_PASSWORD); |
| } |
| |
| @Override |
| public boolean addListener(FormChangedEventListener listener) { |
| return this.notifier.addListener(listener); |
| } |
| |
| @Override |
| public boolean removeListener(FormChangedEventListener listener) { |
| return this.notifier.removeListener(listener); |
| } |
| |
| @Override |
| public void fireFormChangedEvent() { |
| this.notifier.fireFormChangedEvent(); |
| } |
| |
| @AutoGenerated |
| private VerticalLayout buildMainLayout() { |
| // common part: create layout |
| mainLayout = new VerticalLayout(); |
| mainLayout.setImmediate(false); |
| mainLayout.setWidth("-1px"); |
| mainLayout.setHeight("-1px"); |
| mainLayout.setMargin(false); |
| mainLayout.setSpacing(true); |
| |
| // top-level component properties |
| setWidth("-1px"); |
| setHeight("-1px"); |
| |
| // comboBoxConnectionType |
| comboBoxConnectionType = new ComboBox(); |
| comboBoxConnectionType.setCaption("Type of SQL Connection"); |
| comboBoxConnectionType.setImmediate(false); |
| comboBoxConnectionType.setWidth("-1px"); |
| comboBoxConnectionType.setHeight("-1px"); |
| mainLayout.addComponent(comboBoxConnectionType); |
| |
| // textFieldDataSource |
| textFieldDataSource = new TextField(); |
| textFieldDataSource.setCaption("Data Source"); |
| textFieldDataSource.setImmediate(false); |
| textFieldDataSource.setWidth("-1px"); |
| textFieldDataSource.setHeight("-1px"); |
| mainLayout.addComponent(textFieldDataSource); |
| mainLayout.setExpandRatio(textFieldDataSource, 1.0f); |
| |
| // comboBoxSQLDriver |
| comboBoxSQLDriver = new ComboBox(); |
| comboBoxSQLDriver.setCaption("JDBC Driver"); |
| comboBoxSQLDriver.setImmediate(false); |
| comboBoxSQLDriver.setWidth("-1px"); |
| comboBoxSQLDriver.setHeight("-1px"); |
| mainLayout.addComponent(comboBoxSQLDriver); |
| mainLayout.setExpandRatio(comboBoxSQLDriver, 1.0f); |
| |
| // textFieldConnectionURL |
| textFieldConnectionURL = new TextField(); |
| textFieldConnectionURL.setCaption("Connection URL"); |
| textFieldConnectionURL.setImmediate(false); |
| textFieldConnectionURL.setWidth("-1px"); |
| textFieldConnectionURL.setHeight("-1px"); |
| mainLayout.addComponent(textFieldConnectionURL); |
| mainLayout.setExpandRatio(textFieldConnectionURL, 1.0f); |
| |
| // textFieldUser |
| textFieldUser = new TextField(); |
| textFieldUser.setCaption("User"); |
| textFieldUser.setImmediate(false); |
| textFieldUser.setWidth("-1px"); |
| textFieldUser.setHeight("-1px"); |
| mainLayout.addComponent(textFieldUser); |
| mainLayout.setExpandRatio(textFieldUser, 1.0f); |
| |
| // textFieldPassword |
| textFieldPassword = new PasswordField(); |
| textFieldPassword.setCaption("Password"); |
| textFieldPassword.setImmediate(false); |
| textFieldPassword.setWidth("-1px"); |
| textFieldPassword.setHeight("-1px"); |
| mainLayout.addComponent(textFieldPassword); |
| mainLayout.setExpandRatio(textFieldPassword, 1.0f); |
| |
| // buttonTest |
| buttonTest = new Button(); |
| buttonTest.setCaption("Test Connection"); |
| buttonTest.setImmediate(true); |
| buttonTest.setWidth("-1px"); |
| buttonTest.setHeight("-1px"); |
| mainLayout.addComponent(buttonTest); |
| mainLayout.setComponentAlignment(buttonTest, new Alignment(48)); |
| |
| return mainLayout; |
| } |
| } |