mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Glenn Van Lint
30.28.2013 ffc7f14bb4085a405878455995c79bf2476a374b
Added compare functionality.
1 files modified
68 ■■■■ changed files
opendj3/opendj-virtual/src/main/java/org/forgerock/opendj/virtual/JDBCConnection.java 68 ●●●● patch | view | raw | blame | history
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,11 +203,36 @@
  }
  @Override
  public CompareResult compare(CompareRequest request)
      throws ErrorResultException
  public CompareResult compare(CompareRequest request) throws ErrorResultException
      {
    // TODO Auto-generated method stub
    return null;
    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
@@ -246,20 +273,36 @@
  @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
    try
    {
      return this.connection.isValid(0);
    }
    catch (SQLException e)
    {
      e.printStackTrace();
    return false;
  }
  }
  @Override
  public Result modify(ModifyRequest request)
  {  
    Result r;
    try{
    final DN DN = request.getName();
    final RDN rDN = DN.rdn();
    final String filterAttributeName = rDN.getFirstAVA().getAttributeType().getNameOrOID();
@@ -269,9 +312,6 @@
    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 List<Modification> modificationList = request.getModifications();
      final ListIterator<Modification> listIter = modificationList.listIterator();
      String modificationString = "";
@@ -327,9 +367,9 @@
    // TODO Auto-generated method stub
  }
  @Override
  public Result search(SearchRequest request, SearchResultHandler handler)
      throws ErrorResultException
  public Result search(SearchRequest request, SearchResultHandler handler) throws ErrorResultException
      {
    // TODO Auto-generated method stub
    return null;
@@ -338,8 +378,6 @@
  @Override
  public String toString()
  {
    // TODO Auto-generated method stub
    return null;
    return this.connection.toString();
  }
}