Browse Source

Pull request #14875: REPORT-130762 feat:JNDI数据连接提供禁用配置

Merge in DESIGN/design from ~RICHARD.FANG/design:feature/x to feature/x

* commit '89e802b9bc3924d89f0d5c5477e030ef3e3d30b0':
  REPORT-130762 feat:JNDI数据连接提供禁用配置
  REPORT-130762 feat:JNDI数据连接提供禁用配置
feature/x
Richard.Fang-方超 3 months ago
parent
commit
2837c407e6
  1. 6
      designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java
  2. 18
      designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java
  3. 19
      designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java

6
designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java

@ -8,6 +8,7 @@ import com.fr.data.impl.JDBCDatabaseConnection;
import com.fr.data.impl.JNDIDatabaseConnection;
import com.fr.data.metric.utils.DatabaseConnectionMetricHandler;
import com.fr.data.operator.DataOperator;
import com.fr.decision.webservice.exception.security.SecurityRestrictionException;
import com.fr.design.ExtraDesignClassManager;
import com.fr.general.MapCompareUtils;
import com.fr.design.dialog.BasicDialog;
@ -25,6 +26,7 @@ import com.fr.license.database.DBTypes;
import com.fr.license.database.DataBaseTypePointManager;
import com.fr.license.exception.DataBaseNotSupportedException;
import com.fr.log.FineLoggerFactory;
import com.fr.security.SecurityConfig;
import com.fr.stable.ArrayUtils;
import com.fr.stable.Nameable;
import com.fr.stable.StringUtils;
@ -233,6 +235,10 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh
if (connection instanceof JDBCDatabaseConnection) {
DatabaseConnectionMetricHandler.handleSaveConnection((JDBCDatabaseConnection) connection, null);
}
// JNDI禁用提示
if (connection instanceof JNDIDatabaseConnection && SecurityConfig.getInstance().isDisableJNDI()) {
throw new SecurityRestrictionException(Toolkit.i18nText("Fine-Design_Basic_Database_Connection_JNDI_Disabled"));
}
default:
break;
}

18
designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java

@ -14,6 +14,7 @@ import com.fr.data.solution.entity.DriverPage;
import com.fr.data.solution.processor.ClassNotFoundExceptionSolutionProcessor;
import com.fr.data.solution.processor.SolutionProcessor;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icontainer.UIScrollPane;
@ -25,6 +26,7 @@ import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.rpc.ExceptionHandler;
import com.fr.rpc.RPCInvokerExceptionInfo;
import com.fr.security.SecurityConfig;
import com.fr.stable.ArrayUtils;
import com.fr.stable.EncodeConstants;
import com.fr.stable.StringUtils;
@ -42,6 +44,7 @@ import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
import javax.swing.UIManager;
import javax.swing.JOptionPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.BorderLayout;
@ -95,7 +98,11 @@ public abstract class DatabaseConnectionPane<E extends com.fr.data.impl.Connecti
@Override
public void actionPerformed(ActionEvent evt) {
if (mainPanel instanceof JNDIDefPane && SecurityConfig.getInstance().isDisableJNDI()) {
FineJOptionPane.showMessageDialog(mainPanel, Toolkit.i18nText("Fine-Design_Basic_Database_Connection_JNDI_Disabled"),
Toolkit.i18nText("Fine-Design_Basic_Error"), JOptionPane.ERROR_MESSAGE);
return;
}
// Try the java connection.
final SwingWorker<Void, Void> connectionThread = new TestConnectionWorker();
midPane.setVisible(false);
@ -493,7 +500,7 @@ public abstract class DatabaseConnectionPane<E extends com.fr.data.impl.Connecti
driverTips.setText(Toolkit.i18nText("Fine_Designer_Not_Found_Driver"));
gridJpanel.add(driverTips);
UILabel deatail = new UILabel();
String content = Toolkit.i18nText("Fine_Designer_Not_Found") + " " + detailMessage+ " " + Toolkit.i18nText("Fine_Designer_Driver");
String content = Toolkit.i18nText("Fine_Designer_Not_Found") + " " + detailMessage + " " + Toolkit.i18nText("Fine_Designer_Driver");
deatail.setText(content);
deatail.setToolTipText(content);
gridJpanel.add(deatail);
@ -538,7 +545,7 @@ public abstract class DatabaseConnectionPane<E extends com.fr.data.impl.Connecti
jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
Connection con = DatabaseConnectionPane.this.updateBean();
if(con instanceof JDBCDatabaseConnection && WorkContext.getCurrent().isLocal()) {
if (con instanceof JDBCDatabaseConnection && WorkContext.getCurrent().isLocal()) {
String driverPath = JarFileParseUtil.getDriverClassPath((JDBCDatabaseConnection) con);
jta.append(Toolkit.i18nText("Fine_Designer_Current_Driver_Path") + ":" + driverPath + "\n");
JPanel testDriverPanel = generateTestDriverPanel((JDBCDatabaseConnection) con, driverPath);
@ -581,16 +588,17 @@ public abstract class DatabaseConnectionPane<E extends com.fr.data.impl.Connecti
public void mouseExited(MouseEvent e) {
driverTestTip.setCursor(Cursor.getDefaultCursor());
}
@Override
public void mouseClicked(MouseEvent e) {
try {
String path;
if(driverPath.endsWith(JarFileParseUtil.JAR_MARKER)) {
if (driverPath.endsWith(JarFileParseUtil.JAR_MARKER)) {
path = new File(driverPath).getParent();
} else {
path = driverPath;
}
if(hasDuplicateDriver(con.getDriver(), path)) {
if (hasDuplicateDriver(con.getDriver(), path)) {
testResult.setForeground(Color.RED);
testResult.setText(Toolkit.i18nText("Fine_Designer_Driver_Conflict"));
} else {

19
designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java

@ -7,10 +7,14 @@ import com.fr.base.TableData;
import com.fr.base.svg.IconUtils;
import com.fr.data.TableDataSource;
import com.fr.data.desensitize.base.DesensitizationTableData;
import com.fr.data.impl.Connection;
import com.fr.data.impl.DBTableData;
import com.fr.data.impl.EmbeddedTableData;
import com.fr.data.impl.JNDIDatabaseConnection;
import com.fr.data.impl.NameDataModel;
import com.fr.data.impl.NameDatabaseConnection;
import com.fr.data.operator.DataOperator;
import com.fr.decision.webservice.exception.security.SecurityRestrictionException;
import com.fr.design.DesignerEnvManager;
import com.fr.design.data.DesignTableDataManager;
import com.fr.design.data.datapane.preview.desensitization.TableDataPreviewDesensitizeManager;
@ -39,6 +43,7 @@ import com.fr.general.FRFont;
import com.fr.general.data.DataModel;
import com.fr.log.FineLoggerFactory;
import com.fr.security.SecurityConfig;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JComponent;
@ -589,11 +594,25 @@ public class PreviewTablePane extends BasicPane {
if (tableData instanceof DBTableData) {
boolean status = DataOperator.getInstance().testConnection(((DBTableData) tableData).getDatabase());
if (!status) {
validateJndiDisabled(((DBTableData) tableData).getDatabase());
throw new Exception(Toolkit.i18nText("Fine-Design_Basic_Database_Connection_Failed"));
}
}
}
/**
* 校验下是否为JNDI连接且禁用该功能若是显示禁用信息提示
*
* @param connection
*/
private void validateJndiDisabled(Connection connection) throws SecurityRestrictionException {
if (SecurityConfig.getInstance().isDisableJNDI()) {
if (connection instanceof NameDatabaseConnection && ((NameDatabaseConnection) connection).getConnection() instanceof JNDIDatabaseConnection) {
throw new SecurityRestrictionException(Toolkit.i18nText("Fine-Design_Basic_Database_Connection_JNDI_Disabled"));
}
}
}
/**
* 处理预览Model的列类型
*

Loading…
Cancel
Save