You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by vd...@apache.org on 2013/09/05 09:48:36 UTC

svn commit: r1520246 - in /openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings: persistence/beans/user/Address.java persistence/beans/user/User.java utils/BackupImport.java

Author: vdegtyarev
Date: Thu Sep  5 07:48:36 2013
New Revision: 1520246

URL: http://svn.apache.org/r1520246
Log:
OPENMEETINGS-776 - fix some errors to backup contacts.

Modified:
    openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/persistence/beans/user/Address.java
    openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/persistence/beans/user/User.java
    openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/utils/BackupImport.java

Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/persistence/beans/user/Address.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/persistence/beans/user/Address.java?rev=1520246&r1=1520245&r2=1520246&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/persistence/beans/user/Address.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/persistence/beans/user/Address.java Thu Sep  5 07:48:36 2013
@@ -198,4 +198,11 @@ public class Address implements Serializ
 		this.phone = phone;
 	}
 
+	@Override
+	public String toString() {
+		return "Address [adresses_id=" + adresses_id + ", states=" + states
+				+ ", street=" + street + ", town=" + town + ", zip=" + zip
+				+ ", deleted=" + deleted + ", email=" + email + ", phone="
+				+ phone + "]";
+	}
 }

Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/persistence/beans/user/User.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/persistence/beans/user/User.java?rev=1520246&r1=1520245&r2=1520246&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/persistence/beans/user/User.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/persistence/beans/user/User.java Thu Sep  5 07:48:36 2013
@@ -607,4 +607,14 @@ public class User implements Serializabl
 	public void setOwner_id(Long owner_id){
 		this.owner_id = owner_id;
 	}
+
+	@Override
+	public String toString() {
+		return "User [user_id=" + user_id + ", firstname=" + firstname
+				+ ", lastname=" + lastname + ", login=" + login
+				+ ", pictureuri=" + pictureuri + ", deleted=" + deleted
+				+ ", language_id=" + language_id + ", adresses=" + adresses
+				+ ", externalUserId=" + externalUserId + ", externalUserType="
+				+ externalUserType + ", type=" + type + "]";
+	}
 }

Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/utils/BackupImport.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/utils/BackupImport.java?rev=1520246&r1=1520245&r2=1520246&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/utils/BackupImport.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/utils/BackupImport.java Thu Sep  5 07:48:36 2013
@@ -177,6 +177,7 @@ public class BackupImport {
 	private final HashMap<Long, Long> roomsMap = new HashMap<Long, Long>();
 	private final HashMap<Long, Long> messageFoldersMap = new HashMap<Long, Long>();
 	private final HashMap<Long, Long> userContactsMap = new HashMap<Long, Long>();
+	private final HashMap<String, Integer> userEmailMap = new HashMap<String, Integer>();
 
 	private enum Maps {
 		USERS, ORGANISATIONS, APPOINTMENTS, ROOMS, MESSAGEFOLDERS, USERCONTACTS
@@ -584,15 +585,15 @@ public class BackupImport {
 			
 			List<RoomPoll> list = readList(serializer, f, "roompolls.xml", "roompolls", RoomPoll.class, true);
 			for (RoomPoll rp : list) {
-				if (rp.getRoom().getRooms_id() == null) {
+				if (rp.getRoom() == null || rp.getRoom().getRooms_id() == null) {
 					//room was deleted
 					continue;
 				}
-				if (rp.getCreatedBy().getUser_id() == null) {
+				if (rp.getCreatedBy() == null || rp.getCreatedBy().getUser_id() == null) {
 					rp.setCreatedBy(null);
 				}
 				for (RoomPollAnswers rpa : rp.getRoomPollAnswerList()) {
-					if (rpa.getVotedUser().getUser_id() == null) {
+					if (rpa.getVotedUser() == null || rpa.getVotedUser().getUser_id() == null) {
 						rpa.setVotedUser(null);
 					}
 				}
@@ -718,10 +719,11 @@ public class BackupImport {
 							User u = usersDao.getUserByEmail(email);
 							if (u != null) {
 								mm.setUserid(u);
-							} else {
+							} else if (mm.getAppointment() != null && mm.getAppointment().getUserId() != null) {
 								mm.getUserid().setType(Type.contact);
 								mm.getUserid().getAdresses().setEmail(email);
 								mm.getUserid().setLogin(mm.getAppointment().getUserId().getUser_id() + "_" + email);
+								mm.getUserid().setOwner_id(mm.getAppointment().getUserId().getUser_id());
 							}
 							contactValid = true;
 						}
@@ -760,6 +762,15 @@ public class BackupImport {
 		DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
 		Document doc = dBuilder.parse(xml);
 		NodeList nl = getNode(getNode(doc, "root"), listNodeName).getChildNodes();
+		userEmailMap.clear();
+		//add existence email from database
+		List<User>  users = usersDao.getAllUsers();
+		for (User u : users){
+			if (u.getAdresses() == null || u.getAdresses().getEmail() == null) {
+				continue;
+			}
+			userEmailMap.put(u.getAdresses().getEmail(), -1);
+		}
 		// one of the old OM version created 2 nodes "deleted" this code block handles this
 		for (int i = 0; i < nl.getLength(); ++i) {
 			Node user = nl.item(i);
@@ -814,6 +825,15 @@ public class BackupImport {
 					}
 					item2 = listNode2.getNext(); //HACK to handle old om_time_zone
 				} while (item2 != null && !"user".equals(item2.getName()));
+				// check that email is unique
+				if (u.getAdresses() != null && u.getAdresses().getEmail() != null) {
+					if (userEmailMap.containsKey(u.getAdresses().getEmail())) {
+						log.info("Email is dublicated for user " + u.toString());
+						String updateEmail = "modified_by_import_<" + list.size() + ">" + u.getAdresses().getEmail();
+						u.getAdresses().setEmail(updateEmail);
+					}
+					userEmailMap.put(u.getAdresses().getEmail(), list.size());
+				}
 				list.add(u);
 				item = listNode.getNext();
 			}