package org.safehaus.penrose.nis; import org.safehaus.penrose.ldap.LDAP; import org.safehaus.penrose.ldap.RDN; import org.safehaus.penrose.ldap.SearchResponse; import org.safehaus.penrose.ldap.SearchResult; import org.safehaus.penrose.util.TextUtil; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.Hashtable; import java.util.Map; public class NISLocalClient extends NISClient { public Hashtable<String,String> parameters; public File dir; public NISLocalClient() throws Exception { } public void init(Map<String,String> parameters) throws Exception { this.parameters = new Hashtable<String,String>(); this.parameters.putAll(parameters); String s = parameters.get("dir"); if (s != null) dir = new File(s); } public void lookup( String base, RDN rdn, String type, SearchResponse response ) throws Exception { boolean debug = log.isDebugEnabled(); if (debug) { log.debug(TextUtil.displaySeparator(70)); log.debug(TextUtil.displayLine("LOOKUP", 70)); log.debug(TextUtil.displayLine(" - Base: "+base, 70)); log.debug(TextUtil.displayLine(" - Name: "+rdn, 70)); log.debug(TextUtil.displayLine(" - Type: "+type, 70)); log.debug(TextUtil.displaySeparator(70)); } try { File file = dir == null ? new File(base) : new File(dir, base); BufferedReader in = new BufferedReader(new FileReader(file)); String line; if (debug) log.debug("Records:"); while ((line = in.readLine()) != null) { if (debug) log.debug(" - "+line); SearchResult searchResult = createSearchResult(base, type, null, line); if (searchResult == null) continue; if (!rdn.equals(searchResult.getDn().getRdn())) continue; if (debug) { searchResult.print(); } response.add(searchResult); break; } in.close(); if (line == null) { throw LDAP.createException(LDAP.NO_SUCH_OBJECT); } } finally { response.close(); } } public void list( String base, String type, SearchResponse response ) throws Exception { boolean debug = log.isDebugEnabled(); if (debug) { log.debug(TextUtil.displaySeparator(70)); log.debug(TextUtil.displayLine("LIST", 70)); log.debug(TextUtil.displayLine(" - Base: "+base, 70)); log.debug(TextUtil.displayLine(" - Type: "+type, 70)); log.debug(TextUtil.displaySeparator(70)); } try { File file = dir == null ? new File(base) : new File(dir, base); BufferedReader in = new BufferedReader(new FileReader(file)); String line; while ((line = in.readLine()) != null) { SearchResult searchResult = createSearchResult(base, type, null, line); if (searchResult == null) continue; if (debug) { searchResult.print(); } response.add(searchResult); } in.close(); } finally { response.close(); } } }