@ -5,14 +5,17 @@ import com.fr.base.TableData;
import com.fr.base.svg.IconUtils ;
import com.fr.data.MultiResultTableData ;
import com.fr.data.TableDataSource ;
import com.fr.data.impl.DBTableData ;
import com.fr.design.DesignModelAdapter ;
import com.fr.design.actions.UpdateAction ;
import com.fr.design.data.datapane.TableDataCreatorProducer ;
import com.fr.design.data.datapane.TableDataNameObjectCreator ;
import com.fr.design.data.datapane.TableDataSourceOP ;
import com.fr.design.data.datapane.TableDataTree ;
import com.fr.design.data.datapane.auth.TableDataAuthHelper ;
import com.fr.design.data.tabledata.ResponseDataSourceChange ;
import com.fr.design.data.tabledata.tabledatapane.AbstractTableDataPane ;
import com.fr.design.data.tabledata.tabledatapane.loading.TableDataLoadingPane ;
import com.fr.design.data.tabledata.wrapper.MultiResultTableDataWrapper ;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper ;
import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper ;
@ -42,6 +45,8 @@ import javax.swing.DefaultCellEditor;
import javax.swing.Icon ;
import javax.swing.JComponent ;
import javax.swing.JTree ;
import javax.swing.SwingUtilities ;
import javax.swing.SwingWorker ;
import javax.swing.event.CellEditorListener ;
import javax.swing.event.ChangeEvent ;
import javax.swing.tree.TreeCellEditor ;
@ -51,6 +56,7 @@ import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent ;
import java.awt.event.KeyAdapter ;
import java.awt.event.KeyEvent ;
import java.util.Collection ;
import java.util.EventObject ;
import java.util.HashMap ;
import java.util.HashSet ;
@ -449,7 +455,45 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp
storeProcedureDataWrapper . previewData ( MultiResultTableDataWrapper . PREVIEW_ALL ) ;
}
} else {
( ( TableDataWrapper ) data ) . previewData ( ) ;
TableDataWrapper wrapper = ( ( TableDataWrapper ) data ) ;
if ( TableDataAuthHelper . needCheckAuthWhenEdit ( wrapper . getTableData ( ) ) ) {
// 先打开一个Loading面板
TableDataLoadingPane loadingPane = new TableDataLoadingPane ( ) ;
BasicDialog loadingDialog = loadingPane . showLargeWindow ( SwingUtilities . getWindowAncestor ( BasicTableDataTreePane . this ) , null ) ;
// 查询权限
new SwingWorker < Boolean , Void > ( ) {
@Override
protected Boolean doInBackground ( ) throws Exception {
// 获取无权限连接名称集合
Collection < String > noAuthConnections = TableDataAuthHelper . getNoAuthConnections ( ) ;
// 获取当前数据集对应的数据连接名称
String connectionName = TableDataAuthHelper . getConnectionNameByDBTableData ( ( DBTableData ) wrapper . getTableData ( ) ) ;
return ! noAuthConnections . contains ( connectionName ) ;
}
@Override
protected void done ( ) {
try {
Boolean hasAuth = get ( ) ;
if ( hasAuth ) {
// 有权限时,关闭Loading面板,打开编辑面板
loadingDialog . setVisible ( false ) ;
wrapper . previewData ( ) ;
} else {
// 无权限时,给出无权限提示
loadingPane . switchTo ( TableDataLoadingPane . NO_AUTH_PANE_NAME ) ;
}
} catch ( Exception e ) {
FineLoggerFactory . getLogger ( ) . error ( "loading connection error in remote design" , e . getMessage ( ) ) ;
// 查询权限失败时,给出报错提示
loadingPane . switchTo ( TableDataLoadingPane . ERROR_NAME ) ;
}
}
} . execute ( ) ;
loadingDialog . setVisible ( true ) ;
} else {
wrapper . previewData ( ) ;
}
}
} catch ( Exception ex ) {