Python help

Erik Price erikprice at mac.com
Sat Feb 7 09:33:19 EST 2004


On Feb 5, 2004, at 10:47 AM, Paul Lussier wrote:

> I'm not overly interesting in shell, perl, tcl, or other language 
> solutions
> to this problem, since I already know how to write this in the first 3.
> (a java or c implementation might be interesting :)

Here's the Java implementation.  You can see that the way I went about 
it is just like the Python version, except Java requires even more 
verbosity.  It took longer to write, even though I had already 
prototyped the design in Python (the two designs are nearly identical), 
and IMHO would also be more work to modify/extend.  That said, if 
handed a several million-line application written by some other 
development team, I would rather the application be written in Java 
than Python.



import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;


class Group {


     private static final int NAME_INDEX = 0;
     private static final int GID_INDEX = 2;
     private static final int MEMBERS_INDEX = 3;


     private String name;
     private int gid;
     private List members;


     Group(String name, int gid, List members) {

         this.name = name;
         this.gid = gid;
         this.members = members;

     }


     Group (String lineFromFile) {

         String[] record = lineFromFile.split(":");
         this.name = record[NAME_INDEX];
         this.gid = Integer.parseInt(record[GID_INDEX]);

         if (hasMembers(record)) {
             String[] membersArray =
                 record[MEMBERS_INDEX].split(",");
             this.members = Arrays.asList(membersArray);
         }

     }


     private boolean hasMembers(String[] record) {
         return (record.length == MEMBERS_INDEX + 1);
     }


     String toLdifFormat() {

         String memberString = "";

         if (this.members != null) {
             SortedSet sorted = new TreeSet(this.members);

             for (Iterator i = sorted.iterator(); i.hasNext();) {
                 memberString += (String)i.next();
                 if (i.hasNext()) {
                     memberString += ",";
                 }
             }
         }

         return this.name + ":" + this.gid + ":" + memberString;
     }

}





public class EtcGroupToLdif {

     public static void main(String[] args) throws IOException {

         File etcGroup = new File(args[0]);
         BufferedReader br =
             new BufferedReader(new FileReader(etcGroup));

         String line;
         while ((line = br.readLine()) != null) {

             if (line.startsWith("#")) {
                 continue;
             }

             Group group = new Group(line);
             System.out.println(group.toLdifFormat());

         }

         br.close();

     }
}




More information about the gnhlug-discuss mailing list