2004/02
前回に引き続き、LDAPアクセスのライブラリを作ります。今回は更新系です。
前回の属性の取得を行うクラス同様、Command型の設計にしました。
更新を行うModifyAttributesCommandクラス、
作成を行うCreateSubcontextCommandクラス、
削除を行うDestroySubcontextCommandクラス、
です。
それじゃ、ソースいってみよう!
スポンサーリンク
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
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にキーを指定して実行というとても簡単な設計になってます。
機会があったらぜひ使ってみてくださいね!!