com.hangum.tadpole.rdb.core.dialog.dbconnect.composite.IRISLoginComposite.java Source code

Java tutorial

Introduction

Here is the source code for com.hangum.tadpole.rdb.core.dialog.dbconnect.composite.IRISLoginComposite.java

Source

/*******************************************************************************
 * Copyright (c) 2013 hangum.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Lesser Public License v2.1
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * 
 * Contributors:
 *     hangum - initial API and implementation
 ******************************************************************************/
package com.hangum.tadpole.rdb.core.dialog.dbconnect.composite;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

import com.hangum.tadpold.commons.libs.core.define.PublicTadpoleDefine;
import com.hangum.tadpole.commons.util.ApplicationArgumentUtils;
import com.hangum.tadpole.engine.define.DBDefine;
import com.hangum.tadpole.engine.query.dao.system.UserDBDAO;
import com.hangum.tadpole.rdb.core.Messages;
import com.hangum.tadpole.rdb.core.dialog.dbconnect.sub.PreConnectionInfoGroup;
import com.hangum.tadpole.rdb.core.dialog.dbconnect.sub.others.OthersConnectionBigDataGroup;
import com.hangum.tadpole.rdb.core.dialog.dbconnect.sub.others.dao.OthersConnectionInfoDAO;

/**
 * Apache Tajo connect dialog
 * 
 * @author hangum
 *
 */
public class IRISLoginComposite extends AbstractLoginComposite {
    /**
     * Logger for this class
     */
    private static final Logger logger = Logger.getLogger(IRISLoginComposite.class);
    protected Text textHost;
    protected Text textUser;
    protected Text textPassword;
    //protected Text textDatabase;
    protected Text textPort;

    protected Text textJDBCOptions;

    protected OthersConnectionBigDataGroup othersConnectionInfo;

    /**
     * @wbp.parser.constructor
     */
    public IRISLoginComposite(Composite parent, int style, List<String> listGroupName, String selGroupName,
            UserDBDAO userDB) {
        super("Sample IRIS", DBDefine.IRIS_DEFAULT, parent, style, listGroupName, selGroupName, userDB);
    }

    public IRISLoginComposite(String strDisplayName, DBDefine selectDB, Composite parent, int style,
            List<String> listGroupName, String selGroupName, UserDBDAO userDB) {
        super(strDisplayName, selectDB, parent, style, listGroupName, selGroupName, userDB);
    }

    @Override
    public void crateComposite() {
        GridLayout gridLayout = new GridLayout(1, false);
        gridLayout.verticalSpacing = 2;
        gridLayout.horizontalSpacing = 2;
        gridLayout.marginHeight = 2;
        gridLayout.marginWidth = 0;
        setLayout(gridLayout);
        setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

        Composite compositeBody = new Composite(this, SWT.NONE);
        GridLayout gl_compositeBody = new GridLayout(1, false);
        gl_compositeBody.verticalSpacing = 2;
        gl_compositeBody.horizontalSpacing = 2;
        gl_compositeBody.marginHeight = 2;
        gl_compositeBody.marginWidth = 2;
        compositeBody.setLayout(gl_compositeBody);
        compositeBody.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));

        preDBInfo = new PreConnectionInfoGroup(compositeBody, SWT.NONE, listGroupName);
        preDBInfo.setText(Messages.MSSQLLoginComposite_preDBInfo_text);
        preDBInfo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));

        Group grpConnectionType = new Group(compositeBody, SWT.NONE);
        grpConnectionType.setLayout(new GridLayout(5, false));
        grpConnectionType.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
        grpConnectionType.setText(Messages.MSSQLLoginComposite_grpConnectionType_text);

        Label lblHost = new Label(grpConnectionType, SWT.NONE);
        lblHost.setText(Messages.DBLoginDialog_1);

        textHost = new Text(grpConnectionType, SWT.BORDER);
        textHost.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

        Label lblNewLabelPort = new Label(grpConnectionType, SWT.NONE);
        lblNewLabelPort.setText(Messages.DBLoginDialog_5);

        textPort = new Text(grpConnectionType, SWT.BORDER);
        textPort.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

        Button btnPing = new Button(grpConnectionType, SWT.NONE);
        btnPing.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                String host = StringUtils.trimToEmpty(textHost.getText());
                String port = StringUtils.trimToEmpty(textPort.getText());

                if ("".equals(host) || "".equals(port)) { //$NON-NLS-1$ //$NON-NLS-2$
                    MessageDialog.openError(null, Messages.DBLoginDialog_10, Messages.DBLoginDialog_11);
                    return;
                }

                try {
                    if (isPing(host, port)) {
                        MessageDialog.openInformation(null, Messages.DBLoginDialog_12, Messages.DBLoginDialog_13);
                    } else {
                        MessageDialog.openError(null, Messages.DBLoginDialog_14, Messages.DBLoginDialog_15);
                    }
                } catch (NumberFormatException nfe) {
                    MessageDialog.openError(null, Messages.MySQLLoginComposite_3, Messages.MySQLLoginComposite_4);
                }
            }
        });
        btnPing.setText(Messages.DBLoginDialog_btnPing_text);

        //Label lblNewLabelDatabase = new Label(grpConnectionType, SWT.NONE);
        //lblNewLabelDatabase.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, false, false, 1, 1));
        //lblNewLabelDatabase.setText(Messages.DBLoginDialog_4);

        //textDatabase = new Text(grpConnectionType, SWT.BORDER);
        //textDatabase.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 4, 1));

        Label lblUser = new Label(grpConnectionType, SWT.NONE);
        lblUser.setText(Messages.DBLoginDialog_2);

        textUser = new Text(grpConnectionType, SWT.BORDER);
        textUser.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
        new Label(grpConnectionType, SWT.NONE);

        Label lblPassword = new Label(grpConnectionType, SWT.NONE);
        lblPassword.setText(Messages.DBLoginDialog_3);

        textPassword = new Text(grpConnectionType, SWT.BORDER | SWT.PASSWORD);
        textPassword.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

        Label lblJdbcOptions = new Label(grpConnectionType, SWT.NONE);
        lblJdbcOptions.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
        lblJdbcOptions.setText(Messages.MySQLLoginComposite_lblJdbcOptions_text);

        textJDBCOptions = new Text(grpConnectionType, SWT.BORDER);
        textJDBCOptions.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 4, 1));

        othersConnectionInfo = new OthersConnectionBigDataGroup(this, SWT.NONE, getSelectDB());
        othersConnectionInfo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

        init();
    }

    @Override
    public void init() {

        if (oldUserDB != null) {

            selGroupName = oldUserDB.getGroup_name();
            preDBInfo.setTextDisplayName(oldUserDB.getDisplay_name());
            preDBInfo.getComboOperationType().setText(
                    PublicTadpoleDefine.DBOperationType.valueOf(oldUserDB.getOperation_type()).getTypeName());

            textHost.setText(oldUserDB.getHost());
            textPort.setText(oldUserDB.getPort());
            //textDatabase.setText(oldUserDB.getDb());         
            textUser.setText(oldUserDB.getUsers());
            textPassword.setText(oldUserDB.getPasswd());

            textJDBCOptions.setText(oldUserDB.getUrl_user_parameter());

        } else if (ApplicationArgumentUtils.isTestMode() || ApplicationArgumentUtils.isTestDBMode()) {

            preDBInfo.setTextDisplayName(getDisplayName());

            textHost.setText("192.168.0.31");
            textPort.setText("5050");
            //textDatabase.setText("default");
            textUser.setText("");
            textPassword.setText("");

        } else {
            textPort.setText("5050");
        }

        Combo comboGroup = preDBInfo.getComboGroup();
        if (comboGroup.getItems().length == 0) {
            comboGroup.add(strOtherGroupName);
            comboGroup.select(0);
        } else {
            if ("".equals(selGroupName)) {
                comboGroup.setText(strOtherGroupName);
            } else {
                //  ? 
                for (int i = 0; i < comboGroup.getItemCount(); i++) {
                    if (selGroupName.equals(comboGroup.getItem(i)))
                        comboGroup.select(i);
                }
            }
        }

        // Initialize otherConnectionComposite
        othersConnectionInfo.callBackUIInit(textHost.getText());

        textHost.setFocus();
    }

    /**
     * ? ?  .
     * 
     * @return
     */
    public boolean isValidateInput(boolean isTest) {
        if (!checkTextCtl(preDBInfo.getComboGroup(), "Group"))
            return false;
        if (!checkTextCtl(preDBInfo.getTextDisplayName(), "Display Name")) //$NON-NLS-1$
            return false;

        if (!checkTextCtl(textHost, "Host")) //$NON-NLS-1$
            return false;
        if (!checkTextCtl(textPort, "Port")) //$NON-NLS-1$
            return false;

        return true;
    }

    @Override
    public boolean makeUserDBDao(boolean isTest) {
        if (!isValidateInput(isTest))
            return false;

        String dbUrl = String.format(getSelectDB().getDB_URL_INFO(), StringUtils.trimToEmpty(textHost.getText()),
                StringUtils.trimToEmpty(textPort.getText())
        //StringUtils.trimToEmpty(textDatabase.getText())
        );
        if (!"".equals(textJDBCOptions.getText())) {
            dbUrl += "?" + textJDBCOptions.getText();
        }

        userDB = new UserDBDAO();
        userDB.setDbms_type(getSelectDB().getDBToString());
        userDB.setUrl(dbUrl);
        userDB.setUrl_user_parameter(textJDBCOptions.getText());
        //userDB.setDb(StringUtils.trimToEmpty(textDatabase.getText()));
        userDB.setGroup_name(StringUtils.trimToEmpty(preDBInfo.getComboGroup().getText()));
        userDB.setDisplay_name(StringUtils.trimToEmpty(preDBInfo.getTextDisplayName().getText()));
        userDB.setOperation_type(PublicTadpoleDefine.DBOperationType
                .getNameToType(preDBInfo.getComboOperationType().getText()).toString());
        userDB.setHost(StringUtils.trimToEmpty(textHost.getText()));
        userDB.setPort(StringUtils.trimToEmpty(textPort.getText()));
        userDB.setUsers(StringUtils.trimToEmpty(textUser.getText()));
        userDB.setPasswd(StringUtils.trimToEmpty(textPassword.getText()));

        // others connection  .
        OthersConnectionInfoDAO otherConnectionDAO = othersConnectionInfo.getOthersConnectionInfo();
        userDB.setIs_readOnlyConnect(
                otherConnectionDAO.isReadOnlyConnection() ? PublicTadpoleDefine.YES_NO.YES.name()
                        : PublicTadpoleDefine.YES_NO.NO.name());
        userDB.setIs_autocommit(otherConnectionDAO.isAutoCommit() ? PublicTadpoleDefine.YES_NO.YES.name()
                : PublicTadpoleDefine.YES_NO.NO.name());
        userDB.setIs_showtables(otherConnectionDAO.isShowTables() ? PublicTadpoleDefine.YES_NO.YES.name()
                : PublicTadpoleDefine.YES_NO.NO.name());

        //      userDB.setIs_table_filter(otherConnectionDAO.isTableFilter()?PublicTadpoleDefine.YES_NO.YES.name():PublicTadpoleDefine.YES_NO.NO.name());
        //      userDB.setTable_filter_include(otherConnectionDAO.getStrTableFilterInclude());
        //      userDB.setTable_filter_exclude(otherConnectionDAO.getStrTableFilterExclude());

        userDB.setIs_profile(otherConnectionDAO.isProfiling() ? PublicTadpoleDefine.YES_NO.YES.name()
                : PublicTadpoleDefine.YES_NO.NO.name());
        userDB.setQuestion_dml(otherConnectionDAO.isDMLStatement() ? PublicTadpoleDefine.YES_NO.YES.name()
                : PublicTadpoleDefine.YES_NO.NO.name());

        userDB.setIs_external_browser(otherConnectionDAO.isExterBrowser() ? PublicTadpoleDefine.YES_NO.YES.name()
                : PublicTadpoleDefine.YES_NO.NO.name());
        userDB.setListExternalBrowserdao(otherConnectionDAO.getListExterBroswer());

        userDB.setIs_visible(otherConnectionDAO.isVisible() ? PublicTadpoleDefine.YES_NO.YES.name()
                : PublicTadpoleDefine.YES_NO.NO.name());
        userDB.setIs_summary_report(otherConnectionDAO.isSummaryReport() ? PublicTadpoleDefine.YES_NO.YES.name()
                : PublicTadpoleDefine.YES_NO.NO.name());

        // ? ?? ? .
        userDB.setRole_id(PublicTadpoleDefine.USER_ROLE_TYPE.ADMIN.toString());

        return true;
    }

    public String getTextHost() {
        return textHost.getText();
    }
}