KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > openedit > modules > admin > users > UserImport


1 /*
2  * Created on Jan 9, 2006
3  */

4 package com.openedit.modules.admin.users;
5
6 import java.io.BufferedReader JavaDoc;
7 import java.io.File JavaDoc;
8 import java.io.FileReader JavaDoc;
9 import java.io.IOException JavaDoc;
10 import java.util.ArrayList JavaDoc;
11 import java.util.Iterator JavaDoc;
12 import java.util.List JavaDoc;
13
14 import org.dom4j.Document;
15 import org.dom4j.Element;
16 import org.dom4j.io.SAXReader;
17
18 import com.openedit.OpenEditException;
19 import com.openedit.users.User;
20 import com.openedit.users.UserManager;
21 import com.openedit.util.FileUtils;
22
23 public class UserImport
24 {
25     protected UserManager fieldUserManager;
26     
27     //we are passed in a text file name and return
28

29     public List JavaDoc listUsers(File JavaDoc inFile) throws OpenEditException
30     {
31         try
32         {
33             //check to see if its XML
34
BufferedReader JavaDoc reader = null;
35             String JavaDoc text;
36             try
37             {
38                 reader = new BufferedReader JavaDoc(new FileReader JavaDoc( inFile ) );
39                 text = reader.readLine();
40             }
41             finally
42             {
43                 FileUtils.safeClose(reader);
44             }
45             if( text == null)
46             {
47                 throw new OpenEditException("Empty input file");
48             }
49             if ( text.startsWith("<?xml"))
50             {
51                 //parse with XML and return
52
return parseXml( inFile );
53             }
54             else
55             {
56                 return parseTabs( inFile );
57             }
58         }
59         catch ( IOException JavaDoc ex)
60         {
61             throw new OpenEditException( ex);
62         }
63     }
64     protected String JavaDoc cleanId( String JavaDoc inId)
65     {
66         //remove spaces
67
//replace &
68
if ( inId != null)
69         {
70             inId = inId.replaceAll(" ","");
71             inId = inId.replaceAll("&","");
72             inId = inId.replaceAll("/","");
73             inId = inId.replaceAll("\\\\","");
74
75         }
76         
77         return inId;
78     }
79
80     protected List JavaDoc parseTabs(File JavaDoc inText) throws OpenEditException
81     {
82         
83         List JavaDoc accounts = new ArrayList JavaDoc();
84         //take off the headers
85
Header header = new Header();
86
87         try
88         {
89             header.loadColumns(inText);
90
91             Row row = header.getNextRow();
92             while( row != null )
93             {
94                 String JavaDoc id = row.getData("id");
95                 if ( id == null)
96                 {
97                     id = cleanId( row.getData("email") );
98                 }
99                 User user = null;
100                 //this uses ID if it finds it otherwise it uses email address
101
if ( id != null)
102                 {
103                     user = getUserManager().getUser(id);
104                     if( user == null)
105                     {
106                         String JavaDoc password = row.getData("password");
107                         user = getUserManager().createUser(id,password);
108                     }
109                 }
110                 user.setEmail( row.getData("email") );
111                 user.setFirstName(row.getData("firstname") );
112                 user.setLastName(row.getData("lastname") );
113                 for (int i = 0; i < header.getSize(); i++)
114                 {
115                     String JavaDoc prop = (String JavaDoc) header.getColumn(i);
116                     if ( prop.startsWith("property."))
117                     {
118                         String JavaDoc name = prop.substring("property.".length());
119                         user.put(name,row.getData(i));
120                     }
121                 }
122                 accounts.add( user );
123                 getUserManager().saveUser(user);
124
125                 row = header.getNextRow();
126             }
127         }
128         catch ( Exception JavaDoc ex)
129         {
130             throw new OpenEditException(ex);
131         }
132         return accounts;
133     }
134
135     protected List JavaDoc parseXml(File JavaDoc inText) throws OpenEditException
136     {
137         List JavaDoc accounts = new ArrayList JavaDoc();
138         try
139         {
140             Document doc = new SAXReader().read(new FileReader JavaDoc( inText ) );
141             for (Iterator JavaDoc iter = doc.getRootElement().elementIterator("account"); iter.hasNext();)
142             {
143                 Element element = (Element) iter.next();
144                 String JavaDoc id = element.attributeValue("id");
145                 String JavaDoc password = element.attributeValue("password");
146                 
147                 User user = null;
148                 //this uses ID if it finds it otherwise it uses email address
149
if ( id != null)
150                 {
151                     user = getUserManager().getUser(id);
152                     if( user == null)
153                     {
154                         user = getUserManager().createUser(id,password);
155                     }
156                 }
157                 user.setEmail( element.attributeValue("email") );
158                 user.setFirstName(element.attributeValue("firstname") );
159                 user.setLastName(element.attributeValue("lastname") );
160                 for (Iterator JavaDoc iterator = element.elementIterator("property"); iterator.hasNext();)
161                 {
162                     Element prop = (Element) iterator.next();
163                     user.put(prop.attributeValue("id"),prop.getTextTrim());
164                 }
165                 getUserManager().saveUser(user);
166
167                 accounts.add( user );
168             }
169         }
170         catch ( Exception JavaDoc ex)
171         {
172             throw new OpenEditException(ex);
173         }
174         return accounts;
175     }
176
177     public UserManager getUserManager()
178     {
179         return fieldUserManager;
180     }
181
182     public void setUserManager(UserManager inUserManager)
183     {
184         fieldUserManager = inUserManager;
185     }
186     
187 }
188
Popular Tags