From a99a38632fed2847218689885dfa69282dd83bf9 Mon Sep 17 00:00:00 2001
From: Glenn Van Lint <glenn.vanlint@is4u.be>
Date: Wed, 24 Apr 2013 08:29:02 +0000
Subject: [PATCH] Correction of header copyright. Applied correct formatting style. Class now extends AbstractSynchronousConnection instead of implementing Connection.

---
 opendj3/opendj-virtual/src/main/java/org/forgerock/opendj/virtual/JDBCConnection.java |  702 +++++++++++++++++++++------------------------------------
 1 files changed, 263 insertions(+), 439 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 d7ba372..22473ff 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
@@ -1,30 +1,43 @@
+/*
+ * CDDL HEADER START
+ * 
+ * The contents of this file are subject to the terms of the Common Development and
+ * Distribution License (the License). You may not use this file except in compliance with the
+ * License.
+ *
+ * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
+ * specific language governing permission and limitations under the License.
+ *
+ * When distributing Covered Software, include this CDDL Header Notice in each file and include
+ * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
+ * Header, with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]".
+ *
+ * CDDL HEADER END
+ *
+ * Copyright 2013 ForgeRock AS.
+ * Portions Copyright 2013 IS4U.
+ */
+
 package org.forgerock.opendj.virtual;
 
+import java.io.IOException;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
+import org.forgerock.opendj.ldap.AbstractSynchronousConnection;
 import org.forgerock.opendj.ldap.Attribute;
 import org.forgerock.opendj.ldap.ByteString;
-import org.forgerock.opendj.ldap.Connection;
 import org.forgerock.opendj.ldap.ConnectionEventListener;
-import org.forgerock.opendj.ldap.DN;
-import org.forgerock.opendj.ldap.Entry;
 import org.forgerock.opendj.ldap.ErrorResultException;
-import org.forgerock.opendj.ldap.ErrorResultIOException;
-import org.forgerock.opendj.ldap.FutureResult;
 import org.forgerock.opendj.ldap.IntermediateResponseHandler;
 import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.ResultHandler;
 import org.forgerock.opendj.ldap.SearchResultHandler;
-import org.forgerock.opendj.ldap.SearchResultReferenceIOException;
-import org.forgerock.opendj.ldap.SearchScope;
-import org.forgerock.opendj.ldap.requests.AbandonRequest;
 import org.forgerock.opendj.ldap.requests.AddRequest;
 import org.forgerock.opendj.ldap.requests.BindRequest;
 import org.forgerock.opendj.ldap.requests.CompareRequest;
@@ -32,454 +45,265 @@
 import org.forgerock.opendj.ldap.requests.ExtendedRequest;
 import org.forgerock.opendj.ldap.requests.ModifyDNRequest;
 import org.forgerock.opendj.ldap.requests.ModifyRequest;
-import org.forgerock.opendj.ldap.requests.Requests;
 import org.forgerock.opendj.ldap.requests.SearchRequest;
+import org.forgerock.opendj.ldap.requests.SimpleBindRequest;
 import org.forgerock.opendj.ldap.requests.UnbindRequest;
 import org.forgerock.opendj.ldap.responses.BindResult;
 import org.forgerock.opendj.ldap.responses.CompareResult;
 import org.forgerock.opendj.ldap.responses.ExtendedResult;
-import org.forgerock.opendj.ldap.responses.GenericExtendedResult;
 import org.forgerock.opendj.ldap.responses.Responses;
 import org.forgerock.opendj.ldap.responses.Result;
-import org.forgerock.opendj.ldap.responses.SearchResultEntry;
-import org.forgerock.opendj.ldap.responses.SearchResultReference;
-import org.forgerock.opendj.ldif.ChangeRecord;
-import org.forgerock.opendj.ldif.ConnectionEntryReader;
 
-public final class JDBCConnection implements Connection {
-    private final String driverName = "com.mysql.jdbc.Driver";
-	private java.sql.Connection connection;
-	private String connectionUrl;
-	private String userName;
-	private String userPass;
-	private JDBCMapper jdbcm;
-	private MappingConfigurationManager mcm;
-	/**
-     * Creates a new JDBC connection.
-     *
-     * @param connection
-     *            The SQL Connection using JDBC Driver.
-     */
-    JDBCConnection(final String connectionURL) {
-    	this.connectionUrl = connectionURL;
-    }   
-    
-    public void initializeMapper(JDBCMapper jdbcmapper) throws SQLException, ErrorResultException, ErrorResultIOException, SearchResultReferenceIOException{
-    	jdbcm = jdbcmapper;
-    	jdbcm.fillMaps();
-		mcm = new MappingConfigurationManager(jdbcm);
-		jdbcm.loadMappingConfig(mcm.loadMapping());
+public final class JDBCConnection extends AbstractSynchronousConnection {
+  private final String driverName = "com.mysql.jdbc.Driver";
+  private java.sql.Connection connection;
+  private String connectionUrl;
+  private String userName;
+  private String userPass;
+  private JDBCMapper jdbcm;
+  private MappingConfigurationManager mcm;
+
+  JDBCConnection(final String connectionURL) {
+    this.connectionUrl = connectionURL;
+  }   
+
+  public void initializeMapper(JDBCMapper jdbcmapper) throws SQLException, ErrorResultException, IOException{
+    jdbcm = jdbcmapper;
+    jdbcm.fillMaps();
+    mcm = new MappingConfigurationManager(jdbcm);
+    jdbcm.loadMappingConfig(mcm.loadMapping());
+  }
+
+  private Map<String, Object> getValuesMap(AddRequest request, String tableName, String OUName){
+    final String baseDN = request.getName().toString();
+    Iterable<Attribute> attributesCollection = request.getAllAttributes();
+    Iterator<Attribute> attributeIter = attributesCollection.iterator();
+    Map<String, Object> map = new HashMap<String, Object>();
+
+    while(attributeIter.hasNext()){
+      Attribute att = attributeIter.next();
+      Iterator<ByteString> valueIter = att.iterator();
+      String attributeName = att.getAttributeDescriptionAsString();
+      String columnName = jdbcm.getColumnNameFromMapping(tableName, baseDN, OUName, attributeName);
+      String columnValue = "";
+
+      if (columnName == null) continue;
+
+      while(valueIter.hasNext()){
+        columnValue = columnValue.concat(valueIter.next().toString());
+      }
+      map.put(columnName, columnValue);
     }
-    
-    public java.sql.Connection getSqlConnection(){
-    	return connection;
+    return map;
+  }
+
+  private ArrayList<String> getSQLVariablesStrings(String tableName, Map<String, Object> columnValuesMap){
+    ArrayList<String>columnList = null;
+    try {
+      columnList = jdbcm.getTableColumns(tableName);
+    } catch (SQLException e1) {
+      e1.printStackTrace();
     }
+    String columnNamesString = " (";
+    String columnValuesString = " (";
 
-	@Override
-	public FutureResult<Void> abandonAsync(AbandonRequest request) {
-		// TODO Auto-generated method stub		
-		return null;
-	}
-	
-	private Map<String, Object> getValuesMap(AddRequest request, String tableName, String OUName){
-		Iterable<Attribute> attributesCollection = request.getAllAttributes();
-		Iterator<Attribute> attributeIter = attributesCollection.iterator();
-		Map<String, Object> map = new HashMap<String, Object>();
-		
-		
-		while(attributeIter.hasNext()){
-			Attribute att = attributeIter.next();
-			Iterator<ByteString> valueIter = att.iterator();
-			String attributeName = att.getAttributeDescriptionAsString();
-			String columnName = jdbcm.getColumnNameFromMapping(tableName, OUName, attributeName);
-			String columnValue = "";
-			
-			if (columnName == null) continue;
-			
-			while(valueIter.hasNext()){
-				columnValue = columnValue.concat(valueIter.next().toString());
-			}
-			map.put(columnName, columnValue);
-		}
-		return map;
-	}
-	
-	private ArrayList<String> getSQLVariablesStrings(String tableName, Map columnValuesMap){
-		ArrayList<String>columnList = null;
-		try {
-			columnList = jdbcm.getTableColumns(tableName);
-		} catch (SQLException e1) {
-			e1.printStackTrace();
-		}
-		String columnNamesString = " (";
-		String columnValuesString = " (";
-		
-		for(int i = 0; i < columnList.size(); i++){
-			if (i > 0){
-				columnNamesString = columnNamesString.concat(", ");
-				columnValuesString = columnValuesString.concat(", ");
-			}
-			String columnName = columnList.get(i);
-			Object columnValue = columnValuesMap.get(columnName);
-			Object dataType = jdbcm.getTableColumnDataType(tableName, columnName);
-			if(columnValue == null){
-				if(dataType.equals(Integer.class)) columnValue = "0";
-				else columnValue = "Default Value";
-			}
-			if(dataType.equals(Integer.class)) columnValue = Integer.parseInt(columnValue.toString());
-			
-			columnNamesString = columnNamesString.concat(columnName);
-			columnValuesString = columnValuesString.concat("'" + columnValue + "'");
-		}
-		columnNamesString = columnNamesString.concat(")");
-		columnValuesString = columnValuesString.concat(")");
-		
-		ArrayList<String> newlist = new ArrayList<String>();
-		newlist.add(columnNamesString);
-		newlist.add(columnValuesString);
-		
-		return newlist;
-	}
-	
-	private Result addOperation(AddRequest request){
-		Result r;
-		try {
-			final String DN = request.getName().toString();
-			String[] stringSplitter = DN.split("ou=");
-			stringSplitter = stringSplitter[1].split(",");
-			final String organizationalUnitName = stringSplitter[0];
-			final String tableName = jdbcm.getTableNameFromMapping(organizationalUnitName);
-			final Map<String, Object> columnValuesMap = getValuesMap(request, tableName, organizationalUnitName);
-			final ArrayList<String> SQLStringList = getSQLVariablesStrings(tableName, columnValuesMap);
-			String columnNamesString = SQLStringList.get(0), columnValuesString = SQLStringList.get(1);
-			
-			Statement st = connection.createStatement();
-			String sql = "INSERT INTO " + tableName + columnNamesString + " VALUES" + columnValuesString;
-			st.executeUpdate(sql);
-			r = Responses.newResult(ResultCode.SUCCESS);
-		} catch (SQLException e) {
-			System.out.println(e.toString());
-			r = Responses.newResult(ResultCode.UNWILLING_TO_PERFORM);
-		}
-		return r;
-	}
-	
-	@Override
-	public Result add(AddRequest request) throws ErrorResultException { 
-		return addOperation(request);
-	}
+    for(int i = 0; i < columnList.size(); i++){
+      if (i > 0){
+        columnNamesString = columnNamesString.concat(", ");
+        columnValuesString = columnValuesString.concat(", ");
+      }
+      String columnName = columnList.get(i);
+      Object columnValue = columnValuesMap.get(columnName);
+      Object dataType = jdbcm.getTableColumnDataType(tableName, columnName);
+      if(columnValue == null){
+        if(dataType.equals(Integer.class)) columnValue = "0";
+        else columnValue = "Default Value";
+      }
+      if(dataType.equals(Integer.class)) columnValue = Integer.parseInt(columnValue.toString());
 
-	@Override
-	public Result add(Entry entry) throws ErrorResultException {
-		AddRequest addRequest = Requests.newAddRequest(entry);
-		return addOperation(addRequest);
-	}
+      columnNamesString = columnNamesString.concat(columnName);
+      columnValuesString = columnValuesString.concat("'" + columnValue + "'");
+    }
+    columnNamesString = columnNamesString.concat(")");
+    columnValuesString = columnValuesString.concat(")");
 
-	@Override
-	public Result add(String... ldifLines) throws ErrorResultException {
-		AddRequest addRequest = Requests.newAddRequest(ldifLines);
-		return addOperation(addRequest);
-	}
+    ArrayList<String> newlist = new ArrayList<String>();
+    newlist.add(columnNamesString);
+    newlist.add(columnValuesString);
 
-	@Override
-	public FutureResult<Result> addAsync(AddRequest request,
-			IntermediateResponseHandler intermediateResponseHandler,
-			ResultHandler<? super Result> resultHandler) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    return newlist;
+  }
 
-	@Override
-	public void addConnectionEventListener(ConnectionEventListener listener) {
-		// TODO Auto-generated method stub
-	}
-
-	@Override
-	public Result applyChange(ChangeRecord request) throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public FutureResult<Result> applyChangeAsync(ChangeRecord request,
-			IntermediateResponseHandler intermediateResponseHandler,
-			ResultHandler<? super Result> resultHandler) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public BindResult bind(BindRequest request) throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public BindResult bind(String name, char[] password)
-			throws ErrorResultException {
-		BindResult r;
-		this.userName = name;
-		this.userPass = new String(password);
-		try {
-        	Class.forName(driverName);
-        	this.connection = DriverManager
-			        .getConnection(this.connectionUrl,this.userName,this.userPass);
-        	} catch (ClassNotFoundException e) {
-        	System.out.println(e.toString());
-        	r = Responses.newBindResult(ResultCode.OTHER);
-        	return r;
-        } catch (SQLException e) {
-        	System.out.println(e.toString());
-        	r = Responses.newBindResult(ResultCode.CLIENT_SIDE_CONNECT_ERROR);
-			return r;
-		}
-		r = Responses.newBindResult(ResultCode.SUCCESS);
-		return r;
-	}
-
-	@Override
-	public FutureResult<BindResult> bindAsync(BindRequest request,
-			IntermediateResponseHandler intermediateResponseHandler,
-			ResultHandler<? super BindResult> resultHandler) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public void close() {
-		// TODO Auto-generated method stub
-	}
-
-	@Override
-	public void close(UnbindRequest request, String reason) {
-		// TODO Auto-generated method stub
-	}
-
-	@Override
-	public CompareResult compare(CompareRequest request)
-			throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public CompareResult compare(String name, String attributeDescription,
-			String assertionValue) throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public FutureResult<CompareResult> compareAsync(CompareRequest request,
-			IntermediateResponseHandler intermediateResponseHandler,
-			ResultHandler<? super CompareResult> resultHandler) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Result delete(DeleteRequest request) throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Result delete(String name) throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public FutureResult<Result> deleteAsync(DeleteRequest request,
-			IntermediateResponseHandler intermediateResponseHandler,
-			ResultHandler<? super Result> resultHandler) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public <R extends ExtendedResult> R extendedRequest(
-			ExtendedRequest<R> request) throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public <R extends ExtendedResult> R extendedRequest(
-			ExtendedRequest<R> request, IntermediateResponseHandler handler)
-			throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public GenericExtendedResult extendedRequest(String requestName,
-			ByteString requestValue) throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public <R extends ExtendedResult> FutureResult<R> extendedRequestAsync(
-			ExtendedRequest<R> request,
-			IntermediateResponseHandler intermediateResponseHandler,
-			ResultHandler<? super R> resultHandler) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public boolean isClosed() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public boolean isValid() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public Result modify(ModifyRequest request) throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Result modify(String... ldifLines) throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public FutureResult<Result> modifyAsync(ModifyRequest request,
-			IntermediateResponseHandler intermediateResponseHandler,
-			ResultHandler<? super Result> resultHandler) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Result modifyDN(ModifyDNRequest request) throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Result modifyDN(String name, String newRDN)
-			throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public FutureResult<Result> modifyDNAsync(ModifyDNRequest request,
-			IntermediateResponseHandler intermediateResponseHandler,
-			ResultHandler<? super Result> resultHandler) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public SearchResultEntry readEntry(DN name, String... attributeDescriptions)
-			throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public SearchResultEntry readEntry(String name,
-			String... attributeDescriptions) throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public FutureResult<SearchResultEntry> readEntryAsync(DN name,
-			Collection<String> attributeDescriptions,
-			ResultHandler<? super SearchResultEntry> handler) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public void removeConnectionEventListener(ConnectionEventListener listener) {
-		// TODO Auto-generated method stub
-	}
-
-	@Override
-	public ConnectionEntryReader search(SearchRequest request) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Result search(SearchRequest request,
-			Collection<? super SearchResultEntry> entries)
-			throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Result search(SearchRequest request,
-			Collection<? super SearchResultEntry> entries,
-			Collection<? super SearchResultReference> references)
-			throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Result search(SearchRequest request, SearchResultHandler handler)
-			throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public ConnectionEntryReader search(String baseObject, SearchScope scope,
-			String filter, String... attributeDescriptions) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public FutureResult<Result> searchAsync(SearchRequest request,
-			IntermediateResponseHandler intermediateResponseHandler,
-			SearchResultHandler resultHandler) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public SearchResultEntry searchSingleEntry(SearchRequest request)
-			throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public SearchResultEntry searchSingleEntry(String baseObject,
-			SearchScope scope, String filter, String... attributeDescriptions)
-			throws ErrorResultException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public FutureResult<SearchResultEntry> searchSingleEntryAsync(
-			SearchRequest request,
-			ResultHandler<? super SearchResultEntry> handler) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+  public java.sql.Connection getSqlConnection(){
+    return connection;
+  }
 
   @Override
-  public Result deleteSubtree(String name) throws ErrorResultException
+  public Result add(AddRequest request) throws ErrorResultException
+  {
+    Result r;
+    try {
+      final String baseDN = request.getName().toString();
+      String[] stringSplitter = baseDN.split("ou=");
+      stringSplitter = stringSplitter[1].split(",");
+      final String organizationalUnitName = stringSplitter[0];
+      final String tableName = jdbcm.getTableNameFromMapping(baseDN, organizationalUnitName);
+      final Map<String, Object> columnValuesMap = getValuesMap(request, tableName, organizationalUnitName);
+      final ArrayList<String> SQLStringList = getSQLVariablesStrings(tableName, columnValuesMap);
+      String columnNamesString = SQLStringList.get(0), columnValuesString = SQLStringList.get(1);
+
+      Statement st = connection.createStatement();
+      String sql = "INSERT INTO " + tableName + columnNamesString + " VALUES" + columnValuesString;
+      st.executeUpdate(sql);
+      r = Responses.newResult(ResultCode.SUCCESS);
+    } catch (SQLException e) {
+      System.out.println(e.toString());
+      r = Responses.newResult(ResultCode.OPERATIONS_ERROR);
+    }
+    return r;
+  }
+
+  @Override
+  public void addConnectionEventListener(ConnectionEventListener listener)
+  {
+    // TODO Auto-generated method stub
+  }
+
+  @Override
+  public BindResult bind(BindRequest request) throws ErrorResultException
+  {
+    BindResult r;
+    this.userName = request.getName();
+    byte[] password = null;
+    if (request instanceof SimpleBindRequest) {
+      password = ((SimpleBindRequest) request).getPassword();
+    } else {
+      r = Responses.newBindResult(ResultCode.PROTOCOL_ERROR);
+      return r;
+    }
+    this.userPass = new String(password);
+
+    try {
+      Class.forName(driverName);
+      this.connection = DriverManager
+          .getConnection(this.connectionUrl,this.userName,this.userPass);
+    } catch (ClassNotFoundException e) {
+      System.out.println(e.toString());
+      r = Responses.newBindResult(ResultCode.OTHER);
+      return r;
+    } catch (SQLException e) {
+      System.out.println(e.toString());
+      r = Responses.newBindResult(ResultCode.CLIENT_SIDE_CONNECT_ERROR);
+      return r;
+    }
+    r = Responses.newBindResult(ResultCode.SUCCESS);
+    return r;
+  }
+
+  @Override
+  public void close(UnbindRequest request, String reason)
+  {
+    try
+    {
+      this.connection.close();
+    }
+    catch (SQLException e)
+    {
+      e.printStackTrace();
+    }
+  }
+
+  @Override
+  public CompareResult compare(CompareRequest request)
+      throws ErrorResultException
+      {
+    // TODO Auto-generated method stub
+    return null;
+      }
+
+  @Override
+  public Result delete(DeleteRequest request) throws ErrorResultException
+  {
+    Result r = null;
+    try{
+      final String baseDN = request.getName().toString();
+      String[] stringSplitter = baseDN.split("ou=");
+      stringSplitter = stringSplitter[1].split(",");
+      final String organizationalUnitName = stringSplitter[0];
+      stringSplitter = baseDN.split("cn=");
+      stringSplitter = stringSplitter[1].split(",");
+      final String commonName = stringSplitter[0];
+      final String tableName = jdbcm.getTableNameFromMapping(baseDN, organizationalUnitName);
+      String columnName = jdbcm.getColumnNameFromMapping(tableName, baseDN, organizationalUnitName, "cn");
+
+      Statement st = connection.createStatement();
+      String sql = "DELETE FROM " + tableName + " WHERE " + columnName + "='" + commonName + "'";
+      st.executeUpdate(sql);
+      r = Responses.newResult(ResultCode.SUCCESS);
+    } catch (SQLException e) {
+      System.out.println(e.toString());
+      r = Responses.newResult(ResultCode.OPERATIONS_ERROR);
+    }
+    return r;
+  }
+
+  @Override
+  public <R extends ExtendedResult> R extendedRequest(
+      ExtendedRequest<R> request, IntermediateResponseHandler handler)
+          throws ErrorResultException
+          {
+    // TODO Auto-generated method stub
+    return null;
+          }
+
+  @Override
+  public boolean isClosed()
+  {
+    // TODO Auto-generated method stub
+    return false;
+  }
+
+  @Override
+  public boolean isValid()
+  {
+    // TODO Auto-generated method stub
+    return false;
+  }
+
+  @Override
+  public Result modify(ModifyRequest request) throws ErrorResultException
   {
     // TODO Auto-generated method stub
     return null;
   }
+
+  @Override
+  public Result modifyDN(ModifyDNRequest request) throws ErrorResultException
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public void removeConnectionEventListener(ConnectionEventListener listener)
+  {
+    // 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()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
 }

--
Gitblit v1.10.0