Mercurial > hg > NamedIdentityManager
view src/de/mpiwg/itgroup/nimanager/cone/LdapToRDFExporter.java @ 9:866503140b34
LdapToRDFExporter added.
author | dwinter |
---|---|
date | Thu, 26 Apr 2012 09:27:57 +0200 |
parents | |
children |
line wrap: on
line source
package de.mpiwg.itgroup.nimanager.cone; import java.io.FileWriter; import java.io.IOException; import java.util.Hashtable; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; import javax.naming.directory.BasicAttributes; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; public class LdapToRDFExporter { String MPIWG_PERSON_BASE="http://entities.mpiwg-berlin.mpg.de/persons/mpiwg:%s"; String MPIWG_PERSON_TYPE="http://ontologies.mpiwg-berlin.mpg.de/general/MPIWGPerson"; //String MPIWG_PERSON_ONTOLOGY_URL="http://ontologies.mpiwg-berlin.mpg.de/general/MPIWGPerson"; String RDF_TYPE="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"; String MAIL_URL=""; String FIRST_NAME_URL="http://xmlns.com/foaf/0.1/givenName"; String SAME_AS=""; String LAST_NAME_URL="http://xmlns.com/foaf/0.1/familyName"; String FULLNAME_URL="http://xmlns.com/foaf/0.1/name"; String GRAPH="http://entities.mpiwg-berlin.mpg.de/graphs/MPIWGMembers.rdf"; String TRIPLE_FMT_lit="<%s><%s>\"%s\" .\n"; String TRIPLE_FMT_res="<%s><%s><%s>.\n"; private FileWriter outFileWriter; public LdapToRDFExporter(String filename) throws IOException{ outFileWriter = new FileWriter(filename); } public void close() throws IOException{ outFileWriter.close(); } /** * Hole den vollen Benutzernamen aus dem LDAP * @return */ public void getUserNamesFromLdap() { Hashtable<String,String> env = new Hashtable<String,String>(); String sp = "com.sun.jndi.ldap.LdapCtxFactory"; env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, sp); String ldapUrl = "ldap://ldapreplik.mpiwg-berlin.mpg.de/dc=mpiwg-berlin,dc=mpg,dc=de";//TODO should go into config file env.put(javax.naming.Context.PROVIDER_URL, ldapUrl); DirContext dctx; try { dctx = new InitialDirContext(env); } catch (NamingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); return; } String base = "ou=People"; SearchControls sc = new SearchControls(); String[] attributeFilter = { "cn", "mail" }; sc.setReturningAttributes(attributeFilter); sc.setSearchScope(SearchControls.SUBTREE_SCOPE); //String filter = "(uid="+creator+")"; String filter=null; try { Attributes attrs2 = new BasicAttributes(); attrs2.put("mail", null); NamingEnumeration<SearchResult> results = dctx.search(base, attrs2); while (results.hasMore()) { SearchResult sr = (SearchResult) results.next(); javax.naming.directory.Attributes attrs = sr.getAttributes(); Attribute sn = attrs.get("sn"); Attribute givenName = attrs.get("givenName"); Attribute mail = attrs.get("mail"); Attribute cn = attrs.get("cn"); Attribute uid = attrs.get("uid"); String uid_string = (String)uid.get(); if(uid_string.contains(" ")){ System.err.println("WRONG UID IN LDAP:"+uid_string); continue; } String entity_iden=String.format(MPIWG_PERSON_BASE, uid.get()); outFileWriter.write(String.format(TRIPLE_FMT_res,entity_iden,RDF_TYPE,MPIWG_PERSON_TYPE)); outFileWriter.write(String.format(TRIPLE_FMT_lit,entity_iden,LAST_NAME_URL,sn.get())); outFileWriter.write(String.format(TRIPLE_FMT_lit,entity_iden,FIRST_NAME_URL,givenName.get())); outFileWriter.write(String.format(TRIPLE_FMT_lit,entity_iden,FULLNAME_URL,cn.get())); //outFileWriter.write(String.format(TRIPLE_FMT_lit,entity_iden,MAIL_URL,mail.get())); } } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { dctx.close(); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return; } /** * @param args */ public static void main(String[] args) { try { LdapToRDFExporter le = new LdapToRDFExporter("/tmp/ldp.n3t"); le.getUserNamesFromLdap(); le.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }