Bonjour à tous,
Je suis en train d'écrire une application pour travailler sur des bases de données chiffrées avec les clées de chiffrement côté client et j'effectue donc le déchiffrement côté client.
Le but est d'être le plus transparent possible (proxy) et de faire en sorte que l'utilisateur final récupère un ResultSet en clair. Je souhaite donc fournir une fonction avec la signature suivante :
public ResultSet processSQLRequest(String sqlRequest);
ou
public CachedRowSet processSQLRequest(String sqlRequest);
De manière générale pour gérer le chiffrement/déchiffrement je dois générer plusieurs requêtes à partir de la requête fournie par le client.
Mon problème est le suivant. Dans mon code de transformation, je récupère deux (ou plusieurs) ResultSet par requête avec des colones exactement identiques mais des lignes différentes (et disjointes). Je dois modifier le contenu de chaque ligne (déchiffrement) et je souhaite ne renvoyer qu'un seul ResultSet et je dois donc fusionner les résultats (impossible de le faire dans la requête SQL directement , contraintes de structure de la base de données, je dois le faire en Java).
Ce ResultSet renvoyé au client "n'existant" pas tel quel dans la base de données (qui ne contient que des données chiffrées) je pense renvoyer un nouveau RowSet déconnecté pour que le client puisse itérer dessus comme si il s'agissait d'un "vrai" RowSet venant de la base de données.
------- question -------
Comment faire pour "construire" un RowSet déconnecté à partir de deux ResultSet ayant exactement les mêmes colonnes (je veux concaténer les résultats en fait) ?
(j'ai essayé avec la méthode populate() de CachedRowSetImpl sans grand succès)
------- /question -------
Merci d'avance pour vos conseils.
PS : Question subsidiaire, les sources de l'implémentation des CachedRowSet, FilteredRowSet, etc ... fournie par Sun dans le com.sun.rowset sont-elles disponibles ? Existe-t-il d'autres implémentations open sources plus complètes (notamment de FilteredRowSet)
Partager