便利なコードパーツ集!

やまろうのプログラミングTips

Java

JavaでLDAPアクセスのライブラリを作る ~ 更新・作成・削除

投稿日:

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にキーを指定して実行というとても簡単な設計になってます。
機会があったらぜひ使ってみてくださいね!!

スポンサーリンク

-Java

Copyright© やまろうのプログラミングTips , 2024 AllRights Reserved Powered by AFFINGER4.