Newer
Older
/* **************************************************************************
*
* Copyright (C) 2002-2005 Octet String, Inc. All Rights Reserved.
*
* THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND
* TREATIES. USE, MODIFICATION, AND REDISTRIBUTION OF THIS WORK IS SUBJECT
* TO VERSION 2.0.1 OF THE OPENLDAP PUBLIC LICENSE, A COPY OF WHICH IS
* AVAILABLE AT HTTP://WWW.OPENLDAP.ORG/LICENSE.HTML OR IN THE FILE "LICENSE"
* IN THE TOP-LEVEL DIRECTORY OF THE DISTRIBUTION. ANY USE OR EXPLOITATION
* OF THIS WORK OTHER THAN AS AUTHORIZED IN VERSION 2.0.1 OF THE OPENLDAP
* PUBLIC LICENSE, OR OTHER PRIOR WRITTEN CONSENT FROM OCTET STRING, INC.,
* COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND CIVIL LIABILITY.
******************************************************************************/
/*
* Update.java
*
* Created on May 24, 2002, 12:56 PM
*/
package com.octetstring.jdbcLdap.jndi;
import com.octetstring.jdbcLdap.sql.statements.*;
import com.octetstring.jdbcLdap.sql.*;
import java.sql.*;
/**
*Contains logic for updating records in the directory
*@author Marc Boorshtein, OctetString
*/
public class Update {
RetrieveResults res = new RetrieveResults();
public int doUpdateJldap(JdbcLdapUpdate update) throws SQLException {
LDAPConnection con = update.getConnection();
LDAPEntry seres;
StringBuffer buf = new StringBuffer();
SqlStore store = update.getSqlStore();
int count = 0;
LDAPModification[] mods;
String[] fields,vals;
//build ModificationItem array
mods = new LDAPModification[store.getFields().length];
fields = store.getFields();
vals = update.getVals();
String name;
for (int i=0,m=mods.length;i<m;i++) {
mods[i] = new LDAPModification(LDAPModification.REPLACE,new LDAPAttribute(fields[i],vals[i]));
}
try {
if (update.getSearchScope() != 0) {
LDAPSearchResults entries = res.searchUpInsJldap(update);
//System.out.println("entries.hasMore : " + entries.hasMore());
while (entries.hasMore()) {
seres = entries.next();
buf.setLength(0);
name = seres.getDN();
//System.out.println("name : " + name);
con.modify(name,mods);
count++;
//System.out.println("count : " + count);
}
} else {
con.modify(update.getBaseContext(),mods);
count++;
}
//System.out.println("final count : " + count);
return count;
}
catch (LDAPException ne) {
throw new SQLNamingException(ne);
}
}