From ffc7f14bb4085a405878455995c79bf2476a374b Mon Sep 17 00:00:00 2001
From: Glenn Van Lint <glenn.vanlint@is4u.be>
Date: Tue, 30 Apr 2013 11:28:59 +0000
Subject: [PATCH] Added compare functionality.
---
opendj3/opendj-virtual/src/main/java/org/forgerock/opendj/virtual/JDBCConnection.java | 98 ++++++++++++++++++++++++++++++++++---------------
1 files changed, 68 insertions(+), 30 deletions(-)
diff --git a/opendj3/opendj-virtual/src/main/java/org/forgerock/opendj/virtual/JDBCConnection.java b/opendj3/opendj-virtual/src/main/java/org/forgerock/opendj/virtual/JDBCConnection.java
index 9cd26a9..0af1d04 100644
--- a/opendj3/opendj-virtual/src/main/java/org/forgerock/opendj/virtual/JDBCConnection.java
+++ b/opendj3/opendj-virtual/src/main/java/org/forgerock/opendj/virtual/JDBCConnection.java
@@ -23,6 +23,7 @@
import java.io.IOException;
import java.sql.DriverManager;
+import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
@@ -38,6 +39,7 @@
import org.forgerock.opendj.ldap.ConnectionEventListener;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.ErrorResultException;
+import org.forgerock.opendj.ldap.Filter;
import org.forgerock.opendj.ldap.IntermediateResponseHandler;
import org.forgerock.opendj.ldap.Modification;
import org.forgerock.opendj.ldap.ModificationType;
@@ -201,12 +203,37 @@
}
@Override
- public CompareResult compare(CompareRequest request)
- throws ErrorResultException
- {
- // TODO Auto-generated method stub
- return null;
- }
+ public CompareResult compare(CompareRequest request) throws ErrorResultException
+ {
+ CompareResult cr;
+ try
+ {
+ final DN DN = request.getName();
+ final RDN rDN = DN.rdn();
+ final String filterAttributeName = rDN.getFirstAVA().getAttributeType().getNameOrOID();
+ final String filterAttributeValue = rDN.getFirstAVA().getAttributeValue().toString();
+ final RDN OU = DN.parent(1).rdn();
+ final String OUName = OU.getFirstAVA().getAttributeValue().toString();
+ final String baseDN = DN.parent(2).toString();
+ final String tableName = jdbcm.getTableNameFromMapping(baseDN, OUName);
+ final String columnName = jdbcm.getColumnNameFromMapping(tableName, baseDN, OUName, filterAttributeName);
+ final String compareAttributeName = request.getAttributeDescription().toString();
+ final String compareAttributeValue = request.getAssertionValueAsString();
+ final String compareColumnName = jdbcm.getColumnNameFromMapping(tableName, baseDN, OUName, compareAttributeName);
+
+ final Statement st = connection.createStatement();
+ final String sql = "SELECT * FROM " + tableName + " WHERE " + columnName + "='" + filterAttributeValue + "' AND " + compareColumnName + "='" + compareAttributeValue + "'";
+ final ResultSet rs = st.executeQuery(sql);
+ if(rs.first()) cr = Responses.newCompareResult(ResultCode.COMPARE_TRUE);
+ else cr = Responses.newCompareResult(ResultCode.COMPARE_FALSE);
+ }
+ catch (SQLException e)
+ {
+ cr = Responses.newCompareResult(ResultCode.OPERATIONS_ERROR);
+ e.printStackTrace();
+ }
+ return cr;
+ }
@Override
public Result delete(DeleteRequest request) throws ErrorResultException
@@ -246,32 +273,45 @@
@Override
public boolean isClosed()
{
- // TODO Auto-generated method stub
- return false;
+ try
+ {
+ return this.connection.isClosed();
+ }
+ catch (SQLException e)
+ {
+ e.printStackTrace();
+ return true;
+ }
}
@Override
public boolean isValid()
{
- // TODO Auto-generated method stub
- return false;
+ try
+ {
+ return this.connection.isValid(0);
+ }
+ catch (SQLException e)
+ {
+ e.printStackTrace();
+ return false;
+ }
}
@Override
public Result modify(ModifyRequest request)
- {
- final DN DN = request.getName();
- final RDN rDN = DN.rdn();
- final String filterAttributeName = rDN.getFirstAVA().getAttributeType().getNameOrOID();
- final String filterAttributeValue = rDN.getFirstAVA().getAttributeValue().toString();
- final RDN OU = DN.parent(1).rdn();
- final String OUName = OU.getFirstAVA().getAttributeValue().toString();
- final String baseDN = DN.parent(2).toString();
- final String tableName = jdbcm.getTableNameFromMapping(baseDN, OUName);
- final String columnName = jdbcm.getColumnNameFromMapping(tableName, baseDN, OUName, filterAttributeName);
+ {
Result r;
-
try{
+ final DN DN = request.getName();
+ final RDN rDN = DN.rdn();
+ final String filterAttributeName = rDN.getFirstAVA().getAttributeType().getNameOrOID();
+ final String filterAttributeValue = rDN.getFirstAVA().getAttributeValue().toString();
+ final RDN OU = DN.parent(1).rdn();
+ final String OUName = OU.getFirstAVA().getAttributeValue().toString();
+ final String baseDN = DN.parent(2).toString();
+ final String tableName = jdbcm.getTableNameFromMapping(baseDN, OUName);
+ final String columnName = jdbcm.getColumnNameFromMapping(tableName, baseDN, OUName, filterAttributeName);
final List<Modification> modificationList = request.getModifications();
final ListIterator<Modification> listIter = modificationList.listIterator();
String modificationString = "";
@@ -326,20 +366,18 @@
{
// TODO Auto-generated method stub
}
+
@Override
- public Result search(SearchRequest request, SearchResultHandler handler)
- throws ErrorResultException
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String toString()
+ public Result search(SearchRequest request, SearchResultHandler handler) throws ErrorResultException
{
// TODO Auto-generated method stub
return null;
}
+ @Override
+ public String toString()
+ {
+ return this.connection.toString();
+ }
}
--
Gitblit v1.10.0