2004/02
前回に引き続き、LDAPアクセスのライブラリを作ります。今回は更新系です。
前回の属性の取得を行うクラス同様、Command型の設計にしました。
更新を行うModifyAttributesCommandクラス、
作成を行うCreateSubcontextCommandクラス、
削除を行うDestroySubcontextCommandクラス、
です。
それじゃ、ソースいってみよう!
package jp.gr.java_conf.yamarou.ldap; import java.util.*; import javax.naming.directory.DirContext; import javax.naming.directory.ModificationItem; import javax.naming.directory.BasicAttribute; import javax.naming.directory.BasicAttributes; import javax.naming.NamingException; /** * LDAPのディレクトリ属性を更新するクラス。 * @author yamarou */ public class ModifyAttributesCommand { private BasicAttributes attrs = new BasicAttributes(); /** * 更新する属性を設定する。 * @param attrID 属性名 * @param value 更新値 */ public void putAttribute(String attrID, Object value) { attrs.put(attrID, value); } /** * putAttributeメソッドで設定された内容でLDAPを更新する。 * @param name * @throws Exception */ public void execute(String name) { DirContext context = DirContextFactory.getDirContext(); try { context.modifyAttributes(name, DirContext.REPLACE_ATTRIBUTE, attrs); } catch (NamingException ex) { throw new RuntimeException(ex); } } } package jp.gr.java_conf.yamarou.ldap; import java.util.*; import javax.naming.directory.DirContext; import javax.naming.directory.BasicAttributes; import javax.naming.NamingException; /** * LDAPのSubcontextを作成するクラス。 * @author yamarou */ public class CreateSubcontextCommand { private BasicAttributes attrs = new BasicAttributes(); /** * 属性を設定する。 * @param attrID 属性名 * @param value 更新値 */ public void putAttribute(String attrID, Object value) { attrs.put(attrID, value); } /** * putAttributeメソッドで設定された内容でLDAPにSubcontextを作成する。 * @param name * @throws Exception */ public void execute(String name) { DirContext context = DirContextFactory.getDirContext(); try { context.createSubcontext(name, attrs); } catch (NamingException ex) { throw new RuntimeException(ex); } } } package jp.gr.java_conf.yamarou.ldap; import javax.naming.directory.DirContext; import javax.naming.NamingException; /** * LDAPのSubcontextを削除するクラス。 * @author yamarou */ public class DestroySubcontextCommand { /** * nameのSubcontextを削除する。 * @param name * @throws Exception */ public void execute(String name) { DirContext context = DirContextFactory.getDirContext(); try { context.destroySubcontext(name); } catch (NamingException ex) { throw new RuntimeException(ex); } } } package jp.gr.java_conf.yamarou.ldap; import junit.framework.*; public class LDAPTest extends TestCase { public LDAPTest(String name) { super(name); } public void testModifyAttributes() { ModifyAttributesCommand modify = new ModifyAttributesCommand(); modify.putAttribute("userName;lang-ja", "ベッカム"); modify.putAttribute("sex", "man"); modify.execute("uid=USER0008"); GetAttributesCommand get = new GetAttributesCommand(); get.execute("uid=USER0008"); String userName = get.getString("userName;lang-ja"); assertEquals("ベッカム", userName); String sex = get.getString("sex"); assertEquals("man", sex); } public void testCreate() { CreateSubcontextCommand create = new CreateSubcontextCommand(); create.putAttribute("userName;lang-ja", "ボブサップ"); create.putAttribute("objectClass", "person"); create.execute("uid=00000099"); DestroySubcontextCommand destroy = new DestroySubcontextCommand(); destroy.execute("uid=00000099"); } }
使い方はLDAPTestクラスを見ると分かるんですが、
Commandをnewして
putAttributeで属性を設定して、
executeにキーを指定して実行というとても簡単な設計になってます。
機会があったらぜひ使ってみてくださいね!!