⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 devicesearch.java

📁 简单的操作ldap的管理系统
💻 JAVA
字号:
/*
 * 创建日期 2007-5-22
 *
 * 更改所生成文件模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
package ldap;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Enumeration;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls ;
import javax.naming.NamingEnumeration;
import javax.naming.directory.SearchResult;
import javax.naming.directory.Attributes ;
import javax.naming.directory.Attribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.ModificationItem;
import java.lang.reflect.Method;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import javax.naming.*;

import mypack.DeviceMeta;
/**
 * @author qzj
 *
 * 更改所生成类型注释的模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
public class DeviceSearch {
	  //public static String	MY_SEARCHBASE="ou=DeviceContainer,ou=MetaEntities, o=MetaSubTree";
		//public static String MY_FILTER="(generalLocalldentifier=NA20041030PMAAAA0000000000)";
	public static String	MY_SEARCHBASE="ou=Test1,ou=MetaEntities, o=MetaSubTree";
		public static String MY_FILTER="(flag=0)";//查询的属性
		DirContext ctx = null;
		int n=0;//记录条目数
	    public DeviceMeta []deviceData;
		public String a1;
		public String a2;
		public String a3;
		public String a4;
		public String a5;
		public String a6;
		public String a7;
		public String a8;
		public String a9;
		public String a10;
		public String a11;
		
   
 /////////////初始化  
	public void init(){
				String account="orcladmin";//操作LDAP的帐户。默认就是Admin。
				String password="welcome";//帐户Admin的密码。
				//String root="(ou=11),ou=NatureContainer, ou=MetaEntities, o=MetaSubTree"; //所操作的WLS域。也就是LDAP的根节点的DC
				Hashtable env = new Hashtable();
				env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");//必须这样写,无论用什么LDAP服务器。
				env.put(Context.PROVIDER_URL, "ldap://210.25.133.32:4032/");//LDAP服务器的地址:端口。对WLS端口就是7001
				env.put(Context.SECURITY_AUTHENTICATION, "simple");//授权界别,可以有三种授权级别,但是如果设为另外两种都无法登录,我也不知道为啥,但是只能设成这个值"none"。
				env.put(Context.SECURITY_PRINCIPAL, "cn=" + account );//载入登陆帐户和登录密码
				env.put(Context.SECURITY_CREDENTIALS, password);
				try{
					ctx = new InitialDirContext(env);//初始化上下文
					System.out.println("认证成功");//这里可以改成异常抛出。
				}catch(javax.naming.AuthenticationException e){
					System.out.println("认证失败");
				}catch(Exception e){
					System.out.println("认证出错:"+e);
				}
		 }
		 
///////////////////连接关闭		 
	public void close(){
				if(ctx != null)
				{
					try
					{
						ctx.close();
						System.out.println("成功关闭");
					}
					catch (NamingException e)
					{
						System.out.println("NamingException in close():"+e);
					}
				}    
			}
			
	public void search(String a){
		
	   
			 String[]AttributeDevice={
				"GTitle",
				"GTaxonomy",
				"gaddressidentifier",
				"Gdescription",
				"equipmentproduceplace",
				"equipmentmanufacturer",
				"equipmentpurchasedate",
				"guridentifier",
				"gtype",
				"equipmentmodel",
			 };
    	
		
		   ArrayList listofValue=new ArrayList();
    
	   try {
	   	   
		   SearchControls constraints = new SearchControls();
		   constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
		   NamingEnumeration results=ctx.search("ou="+a+","+MY_SEARCHBASE,MY_FILTER,constraints);
		   while(results!=null &&results.hasMore()){
//			   java.util.ArrayList list = new ArrayList();
		   String temp[]=new String[AttributeDevice.length];
		   SearchResult sr=(SearchResult)results.next();
//			 list.add(sr);
//			 String dn=sr.getName()+","+MY_SEARCHBASE;
//			 System.out.println("Distinguished name is"+dn);
		   Attributes attrs=sr.getAttributes();
		   for(int i=0;i<AttributeDevice.length;i++){
			   Attribute att=attrs.get(AttributeDevice[i]);
			   NamingEnumeration ne=att.getAll();
			   temp[i]=new String();
			   while(ne.hasMoreElements())
				   temp[i]+=(ne.nextElement()+" ");
//				   list.add((String)(ne.nextElement()+" "));
        	
        
		   }
			   listofValue.add(temp);
		   }
		   deviceData=new DeviceMeta[listofValue.size()];
		   for(int j=0;j<deviceData.length;j++){
//			   deviceData[j].setGTitle()
			   String[] t=(String[])listofValue.get(j);
			
			   int k=0;
			   deviceData[j]=new DeviceMeta();
			   deviceData[j].setGTitle(t[k]);
			   k++;
			   deviceData[j].setGTaxonomy(t[k]);
			   k++;
			   deviceData[j].setGaddressidentifier(t[k]);
			   k++;
			   deviceData[j].setGDescription(t[k]);
			   k++;
			deviceData[j].setEquipmentproduceplace(t[k]);
			k++;
			deviceData[j].setEquipmentmanufacturer(t[k]);
			k++;
			deviceData[j].setEquipmentpurchasedate(t[k]);
			k++;
			deviceData[j].setGuridentifier(t[k]);
			k++;
			deviceData[j].setGtype(t[k]);
			k++;
			deviceData[j].setEquipmentmodel(t[k]);
			k++;
			
			
			
		   }
        
		 /*  for (NamingEnumeration ne=attrs.getAll();ne.hasMoreElements();){
        
		   Attribute attr=(Attribute)ne.g;
		   String attrID=attr.getID();
       
		   System.out.println(attrID+":");
		   for(Enumeration vals=attr.getAll();vals.hasMoreElements();){
        	
			   System.out.println("\t"+vals.nextElement());
			   DeviceMeta dm=new DeviceMeta();
        
		   }
        
		
		   }
		   */
		   n++;//每次返回记录计数器都加一
		
       
	
			}
		   
		   
		   
		   
        
//			 System.out.println("共计返回"+n+"条记录");
		   //list.size();
//		   System.out.println("测试a1为"+a1);
		   /*for(){
			   deviceData[i]=new DeviceMeta();
			   list.get(i)
			   id;
			   name;
			   deviceData[i].setGTitle(name)
			
		   }*/
    
//		 }
           
	   catch(Exception e){
			e.printStackTrace();
			System.exit(1);
						 }
    
    
	   }
	  
//////////////////////////////////主函数/////////////////////////////////
 

public static void  main(String[]args)
	{
		DeviceSearch tt=new DeviceSearch();
		tt.init();
		tt.search("01");
		for(int i=0;i<tt.deviceData.length;i++)
		{
		System.out.println("仪器名称: "+tt.deviceData[i].getGTitle()+"\n"
		                  +"分类号:   "+tt.deviceData[i].getGTaxonomy()+"\n"
		                  +"通信地址: "+tt.deviceData[i].getGaddressidentifier()+"\n"
		                  +"功能描述: "+tt.deviceData[i].getGDescription()+"\n"
		                  +"产地:     "+tt.deviceData[i].getEquipmentproduceplace()+"\n"
		                  +"生产厂商: "+tt.deviceData[i].getEquipmentmanufacturer()+"\n"
		                  +"购置日期: "+tt.deviceData[i].getEquipmentpurchasedate()+"\n"
		                  +"详细信息: "+tt.deviceData[i].getGuridentifier()+"\n"
		                  +"类型:     "+tt.deviceData[i].getGtype()+"\n"
		                  +"规格:     "+tt.deviceData[i].getEquipmentmodel());
		  
		System.out.println("***********************第"+(i+1)+"条记录 ");
		}
		System.out.println("共返回"+tt.deviceData.length+"条记录");
		tt.close();		
			   
	}
	   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -