|
|
@ -4,6 +4,7 @@ import com.fr.data.impl.Connection; |
|
|
|
import com.fr.data.impl.JDBCDatabaseConnection; |
|
|
|
import com.fr.data.impl.JDBCDatabaseConnection; |
|
|
|
import com.fr.data.impl.JNDIDatabaseConnection; |
|
|
|
import com.fr.data.impl.JNDIDatabaseConnection; |
|
|
|
import com.fr.design.ExtraDesignClassManager; |
|
|
|
import com.fr.design.ExtraDesignClassManager; |
|
|
|
|
|
|
|
import com.fr.design.data.MapCompareUtils; |
|
|
|
import com.fr.design.dialog.FineJOptionPane; |
|
|
|
import com.fr.design.dialog.FineJOptionPane; |
|
|
|
import com.fr.design.fun.ConnectionProvider; |
|
|
|
import com.fr.design.fun.ConnectionProvider; |
|
|
|
import com.fr.design.gui.controlpane.JListControlPane; |
|
|
|
import com.fr.design.gui.controlpane.JListControlPane; |
|
|
@ -14,6 +15,7 @@ import com.fr.design.i18n.Toolkit; |
|
|
|
import com.fr.file.ConnectionConfig; |
|
|
|
import com.fr.file.ConnectionConfig; |
|
|
|
import com.fr.general.ComparatorUtils; |
|
|
|
import com.fr.general.ComparatorUtils; |
|
|
|
import com.fr.general.NameObject; |
|
|
|
import com.fr.general.NameObject; |
|
|
|
|
|
|
|
import com.fr.log.FineLoggerFactory; |
|
|
|
import com.fr.stable.ArrayUtils; |
|
|
|
import com.fr.stable.ArrayUtils; |
|
|
|
import com.fr.stable.Nameable; |
|
|
|
import com.fr.stable.Nameable; |
|
|
|
import com.fr.stable.StringUtils; |
|
|
|
import com.fr.stable.StringUtils; |
|
|
@ -23,6 +25,7 @@ import javax.swing.SwingUtilities; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Arrays; |
|
|
|
import java.util.Arrays; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.HashMap; |
|
|
|
|
|
|
|
import java.util.LinkedHashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Set; |
|
|
|
import java.util.Set; |
|
|
@ -34,7 +37,8 @@ import java.util.UUID; |
|
|
|
public class ConnectionListPane extends JListControlPane implements ConnectionShowPane { |
|
|
|
public class ConnectionListPane extends JListControlPane implements ConnectionShowPane { |
|
|
|
public static final String TITLE_NAME = Toolkit.i18nText("Fine-Design_Basic_Server_Define_Data_Connection"); |
|
|
|
public static final String TITLE_NAME = Toolkit.i18nText("Fine-Design_Basic_Server_Define_Data_Connection"); |
|
|
|
private boolean isNamePermitted = true; |
|
|
|
private boolean isNamePermitted = true; |
|
|
|
private HashMap<String, String> renameMap = new HashMap<String, String>(); |
|
|
|
private final HashMap<String, String> renameMap = new HashMap<>(); |
|
|
|
|
|
|
|
private final Map<String, Connection> populatedConnectionsSnapshot = new LinkedHashMap<>(); |
|
|
|
|
|
|
|
|
|
|
|
public ConnectionListPane() { |
|
|
|
public ConnectionListPane() { |
|
|
|
renameMap.clear(); |
|
|
|
renameMap.clear(); |
|
|
@ -138,11 +142,16 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public void populate(ConnectionConfig connectionConfig) { |
|
|
|
public void populate(ConnectionConfig connectionConfig) { |
|
|
|
List<NameObject> nameObjectList = new ArrayList<NameObject>(); |
|
|
|
List<NameObject> nameObjectList = new ArrayList<NameObject>(); |
|
|
|
|
|
|
|
populatedConnectionsSnapshot.clear(); |
|
|
|
for (Map.Entry<String, Connection> entry : connectionConfig.getConnections().entrySet()) { |
|
|
|
for (Map.Entry<String, Connection> entry : connectionConfig.getConnections().entrySet()) { |
|
|
|
nameObjectList.add(new NameObject(entry.getKey(), entry.getValue())); |
|
|
|
nameObjectList.add(new NameObject(entry.getKey(), entry.getValue())); |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
populatedConnectionsSnapshot.put(entry.getKey(), (Connection) entry.getValue().clone()); |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); |
|
|
|
this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -151,15 +160,21 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh |
|
|
|
public void update(ConnectionConfig connectionConfig) { |
|
|
|
public void update(ConnectionConfig connectionConfig) { |
|
|
|
// Nameable[]居然不能强转成NameObject[],一定要这么写...
|
|
|
|
// Nameable[]居然不能强转成NameObject[],一定要这么写...
|
|
|
|
Nameable[] res = this.update(); |
|
|
|
Nameable[] res = this.update(); |
|
|
|
NameObject[] res_array = new NameObject[res.length]; |
|
|
|
Map<String, Connection> updatedMap = new LinkedHashMap<>(); |
|
|
|
java.util.Arrays.asList(res).toArray(res_array); |
|
|
|
Arrays.stream(res).map(n -> (NameObject) n).forEach(no -> updatedMap.put(no.getName(), (Connection) no.getObject())); |
|
|
|
|
|
|
|
|
|
|
|
connectionConfig.removeAllConnection(); |
|
|
|
MapCompareUtils.contrastMapEntries(populatedConnectionsSnapshot, updatedMap, (entryEventKind, s, connection) -> { |
|
|
|
|
|
|
|
switch (entryEventKind) { |
|
|
|
for (int i = 0; i < res_array.length; i++) { |
|
|
|
case REMOVED: |
|
|
|
NameObject nameObject = res_array[i]; |
|
|
|
connectionConfig.removeConnection(s); |
|
|
|
connectionConfig.addConnection(nameObject.getName(), (Connection) nameObject.getObject()); |
|
|
|
break; |
|
|
|
} |
|
|
|
case ADDED: |
|
|
|
|
|
|
|
case UPDATED: |
|
|
|
|
|
|
|
connectionConfig.addConnection(s, connection); |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|