1 4 package com.openedit.modules.admin.users; 5 6 import java.io.BufferedReader ; 7 import java.io.File ; 8 import java.io.FileReader ; 9 import java.io.IOException ; 10 import java.util.ArrayList ; 11 import java.util.Iterator ; 12 import java.util.List ; 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 29 public List listUsers(File inFile) throws OpenEditException 30 { 31 try 32 { 33 BufferedReader reader = null; 35 String text; 36 try 37 { 38 reader = new BufferedReader (new FileReader ( 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 return parseXml( inFile ); 53 } 54 else 55 { 56 return parseTabs( inFile ); 57 } 58 } 59 catch ( IOException ex) 60 { 61 throw new OpenEditException( ex); 62 } 63 } 64 protected String cleanId( String inId) 65 { 66 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 parseTabs(File inText) throws OpenEditException 81 { 82 83 List accounts = new ArrayList (); 84 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 id = row.getData("id"); 95 if ( id == null) 96 { 97 id = cleanId( row.getData("email") ); 98 } 99 User user = null; 100 if ( id != null) 102 { 103 user = getUserManager().getUser(id); 104 if( user == null) 105 { 106 String 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 prop = (String ) header.getColumn(i); 116 if ( prop.startsWith("property.")) 117 { 118 String 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 ex) 129 { 130 throw new OpenEditException(ex); 131 } 132 return accounts; 133 } 134 135 protected List parseXml(File inText) throws OpenEditException 136 { 137 List accounts = new ArrayList (); 138 try 139 { 140 Document doc = new SAXReader().read(new FileReader ( inText ) ); 141 for (Iterator iter = doc.getRootElement().elementIterator("account"); iter.hasNext();) 142 { 143 Element element = (Element) iter.next(); 144 String id = element.attributeValue("id"); 145 String password = element.attributeValue("password"); 146 147 User user = null; 148 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 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 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 |