Revision: 4003
Author:   solomax666
Date:     Fri Jul 22 04:23:12 2011
Log:      - id mapping is added to keep data consistent
http://code.google.com/p/openmeetings/source/detail?r=4003

Modified:
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java

=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java Sun Jul 17 11:08:19 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java Fri Jul 22 04:23:12 2011
@@ -82,7 +82,17 @@
 public class BackupImport extends HttpServlet {

private static final Logger log = Red5LoggerFactory.getLogger(BackupImport.class, ScopeApplicationAdapter.webAppRootKey);
-
+
+       private HashMap<Long, Long> usersMap = new HashMap <Long, Long>();
+       private HashMap<Long, Long> organisationsMap = new HashMap <Long, 
Long>();
+       private HashMap<Long, Long> appointmentsMap = new HashMap <Long, 
Long>();
+       private HashMap<Long, Long> roomsMap = new HashMap <Long, Long>();
+ private HashMap<Long, Long> messageFoldersMap = new HashMap <Long, Long>();
+       private HashMap<Long, Long> userContactsMap = new HashMap <Long, 
Long>();
+ private HashMap<Long, Long> fileExplorerItemsMap = new HashMap <Long, Long>();
+
+ private enum Maps {USERS, ORGANISATIONS, APPOINTMENTS, ROOMS, MESSAGEFOLDERS, USERCONTACTS, FILEEXPLORERITEMS};
+
        /* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         */
@@ -776,6 +786,7 @@
                                                us.setUser_id(null);
                                                us.setStarttime(new Date());
Long actualNewUserId = Usermanagement.getInstance().addUserBackup(us);
+                                               usersMap.put(us.getUser_id(), 
actualNewUserId);

for (Iterator<Organisation_Users> orgUserIterator = orgUsers.iterator();orgUserIterator.hasNext();) {

@@ -854,12 +865,12 @@
Integer flvWidth = importIntegerType(flvObject.element("flvWidth").getText()); Integer height = importIntegerType(flvObject.element("height").getText()); Integer width = importIntegerType(flvObject.element("width").getText()); - Long insertedBy = importLongType(flvObject.element("insertedBy").getText()); - Long organization_id = importLongType(flvObject.element("organization_id").getText()); - Long ownerId = importLongType(flvObject.element("ownerId").getText()); - Long parentFileExplorerItemId = importLongType(flvObject.element("parentFileExplorerItemId").getText()); + Long insertedBy = getNewId(importLongType(flvObject.element("insertedBy").getText()), Maps.USERS); + Long organization_id = getNewId(importLongType(flvObject.element("organization_id").getText()), Maps.ORGANISATIONS); + Long ownerId = getNewId(importLongType(flvObject.element("ownerId").getText()), Maps.USERS); + Long parentFileExplorerItemId = getNewId(importLongType(flvObject.element("parentFileExplorerItemId").getText()), Maps.FILEEXPLORERITEMS); Integer progressPostProcessing = importIntegerType(flvObject.element("progressPostProcessing").getText()); - Long room_id = importLongType(flvObject.element("room_id").getText()); + Long room_id = getNewId(importLongType(flvObject.element("room_id").getText()), Maps.ROOMS); Date inserted = CalendarPatterns.parseDateWithHour(flvObject.element("inserted").getText()); Boolean isFolder = importBooleanType(flvObject.element("isFolder").getText()); Boolean isImage = importBooleanType(flvObject.element("isImage").getText());
@@ -966,9 +977,14 @@
List<PrivateMessageFolder> privateMessageFolders = this.getPrivateMessageFoldersByXML(privateMessageFoldersFile);

                for (PrivateMessageFolder privateMessageFolder : 
privateMessageFolders) {
-
- PrivateMessageFolderDaoImpl.getInstance().addPrivateMessageFolderObj(privateMessageFolder);
-
+
+                       Long folderId = 
privateMessageFolder.getPrivateMessageFolderId();
+ PrivateMessageFolder storedFolder = PrivateMessageFolderDaoImpl.getInstance().getPrivateMessageFolderById(folderId);
+                       if (storedFolder == null){
+                       privateMessageFolder.setPrivateMessageFolderId(0);
+ Long newFolderId = PrivateMessageFolderDaoImpl.getInstance().addPrivateMessageFolderObj(privateMessageFolder);
+                               messageFoldersMap.put(folderId, newFolderId);
+                       }
                }

        }
@@ -993,11 +1009,13 @@
                                        Element pmfObject = innerIter.next();

                                        String folderName = 
pmfObject.element("folderName").getText();
- Long userId = importLongType(pmfObject.element("userId").getText()); + Long userId = getNewId(importLongType(pmfObject.element("userId").getText()), Maps.USERS); + Long privateMessageFolderId = importLongType(pmfObject.element("privateMessageFolderId").getText());

PrivateMessageFolder privateMessageFolder = new PrivateMessageFolder();
                                        
privateMessageFolder.setFolderName(folderName);
                                        privateMessageFolder.setUserId(userId);
+ privateMessageFolder.setPrivateMessageFolderId(privateMessageFolderId);

                                        pmfList.add(privateMessageFolder);

@@ -1048,18 +1066,18 @@

                                        String message = 
pmObject.element("message").getText();
                                        String subject = 
pmObject.element("subject").getText();
- Long privateMessageFolderId = importLongType(pmObject.element("privateMessageFolderId").getText()); - Long userContactId = importLongType(pmObject.element("userContactId").getText()); + Long privateMessageFolderId = getNewId(importLongType(pmObject.element("privateMessageFolderId").getText()), Maps.MESSAGEFOLDERS); + Long userContactId = getNewId(importLongType(pmObject.element("userContactId").getText()), Maps.USERCONTACTS); Long parentMessage = importLongType(pmObject.element("parentMessage").getText()); Boolean bookedRoom = importBooleanType(pmObject.element("bookedRoom").getText()); - Users from = Usermanagement.getInstance().getUserById(importLongType(pmObject.element("from").getText())); - Users to = Usermanagement.getInstance().getUserById(importLongType(pmObject.element("to").getText())); + Users from = Usermanagement.getInstance().getUserById(getNewId(importLongType(pmObject.element("from").getText()), Maps.USERS)); + Users to = Usermanagement.getInstance().getUserById(getNewId(importLongType(pmObject.element("to").getText()), Maps.USERS)); Date inserted = CalendarPatterns.parseDateWithHour(pmObject.element("inserted").getText()); Boolean isContactRequest = importBooleanType(pmObject.element("isContactRequest").getText()); Boolean isRead = importBooleanType(pmObject.element("isRead").getText()); Boolean isTrash = importBooleanType(pmObject.element("isTrash").getText()); - Users owner = Usermanagement.getInstance().getUserById(importLongType(pmObject.element("owner").getText())); - Rooms room = Roommanagement.getInstance().getRoomById(importLongType(pmObject.element("room").getText())); + Users owner = Usermanagement.getInstance().getUserById(getNewId(importLongType(pmObject.element("owner").getText()), Maps.USERS)); + Rooms room = Roommanagement.getInstance().getRoomById(getNewId(importLongType(pmObject.element("room").getText()), Maps.ROOMS));

                                        PrivateMessages pm = new 
PrivateMessages();
                                        pm.setMessage(message);
@@ -1098,9 +1116,14 @@
                List<UserContacts> ucList = 
this.getUserContactsByXML(userContactsFile);

                for (UserContacts uc : ucList) {
-
-                       UserContactsDaoImpl.getInstance().addUserContactObj(uc);
-
+                       Long userContactId = uc.getUserContactId();
+ UserContacts storedUC = UserContactsDaoImpl.getInstance().getUserContacts(userContactId);
+
+                       if (storedUC == null){
+                               uc.setUserContactId(0);
+                               Long newId = 
UserContactsDaoImpl.getInstance().addUserContactObj(uc);
+                               this.userContactsMap.put(userContactId, newId);
+                       }
                }
        }

@@ -1123,10 +1146,11 @@
                                        Element usercontact = innerIter.next();

                                        String hash = 
usercontact.element("hash").getText();
- Users contact = Usermanagement.getInstance().getUserById(importLongType(usercontact.element("contact").getText())); - Users owner = Usermanagement.getInstance().getUserById(importLongType(usercontact.element("owner").getText())); + Users contact = Usermanagement.getInstance().getUserById(getNewId(importLongType(usercontact.element("contact").getText()), Maps.USERS)); + Users owner = Usermanagement.getInstance().getUserById(getNewId(importLongType(usercontact.element("owner").getText()), Maps.USERS)); Boolean pending = importBooleanType(usercontact.element("pending").getText()); Boolean shareCalendar = importBooleanType(usercontact.element("shareCalendar").getText()); + Long userContactId = importLongType(usercontact.element("userContactId").getText());

                                        UserContacts userContacts = new 
UserContacts();
                                        userContacts.setHash(hash);
@@ -1134,6 +1158,7 @@
                                        userContacts.setOwner(owner);
                                        userContacts.setPending(pending);
                                        
userContacts.setShareCalendar(shareCalendar);
+                                       
userContacts.setUserContactId(userContactId);

                                        ucList.add(userContacts);

@@ -1156,11 +1181,13 @@
                List<Organisation> orgList = 
this.getOrganisationsByXML(orgFile);

                for (Organisation org : orgList) {
- Organisation orgStored = Organisationmanagement.getInstance().getOrganisationByIdAndDeleted(org.getOrganisation_id());
+                       Long orgId = org.getOrganisation_id();
+ Organisation orgStored = Organisationmanagement.getInstance().getOrganisationByIdAndDeleted(orgId);

                        if (orgStored == null) {
                                org.setOrganisation_id(null);
-                               
Organisationmanagement.getInstance().addOrganisationObj(org);
+ Long newOrgID = Organisationmanagement.getInstance().addOrganisationObj(org);
+                               organisationsMap.put(orgId, newOrgID);
                        }

                }
@@ -1243,8 +1270,8 @@
                                        Element appointmentsObject = 
innerIter.next();

Long meetingMemberId = importLongType(appointmentsObject.element("meetingMemberId").getText()); - Long userid = importLongType(appointmentsObject.element("userid").getText()); - Long appointment = importLongType(appointmentsObject.element("appointment").getText()); + Long userid = getNewId(importLongType(appointmentsObject.element("userid").getText()), Maps.USERS); + Long appointment = getNewId(importLongType(appointmentsObject.element("appointment").getText()), Maps.APPOINTMENTS); String firstname = appointmentsObject.element("firstname").getText(); String lastname = appointmentsObject.element("lastname").getText(); String memberStatus = appointmentsObject.element("memberStatus").getText();
@@ -1349,16 +1376,16 @@
List<Appointment> appointmentList = this.getAppointmentListByXML(appointementListFile);

                for (Appointment appointment : appointmentList) {
-
- Appointment appointmentStored = AppointmentDaoImpl.getInstance().getAppointmentById(appointment.getAppointmentId());
+                       Long appId = appointment.getAppointmentId();
+ Appointment appointmentStored = AppointmentDaoImpl.getInstance().getAppointmentById(appId);

                        if (appointmentStored == null) {

                                //We need to reset this as openJPA reject to 
store them otherwise
                                appointment.setAppointmentId(null);

-                               
AppointmentDaoImpl.getInstance().addAppointmentObj(appointment);
-
+ Long newAppId = AppointmentDaoImpl.getInstance().addAppointmentObj(appointment);
+                               appointmentsMap.put(appId, newAppId);
                        }

                }
@@ -1399,11 +1426,12 @@
Boolean isWeekly = importBooleanType(appointmentsObject.element("isWeekly").getText()); Boolean isMonthly = importBooleanType(appointmentsObject.element("isMonthly").getText()); Boolean isYearly = importBooleanType(appointmentsObject.element("isYearly").getText()); - Long room_id = importLongType(appointmentsObject.element("room_id").getText()); + Long room_id = getNewId(importLongType(appointmentsObject.element("room_id").getText()), Maps.ROOMS);
                                        String icalId = 
appointmentsObject.element("icalId").getText();
Long language_id = importLongType(appointmentsObject.element("language_id").getText()); Boolean isPasswordProtected = importBooleanType(appointmentsObject.element("isPasswordProtected").getText()); String password = appointmentsObject.element("password").getText(); + Long users_id = getNewId(importLongType(appointmentsObject.element("users_id").getText()), Maps.USERS);


                                        Appointment app = new Appointment();
@@ -1426,6 +1454,7 @@
                                        app.setLanguage_id(language_id);
                                        
app.setIsPasswordProtected(isPasswordProtected);
                                        app.setPassword(password);
+ app.setUserId(Usermanagement.getInstance().getUserById(users_id));

                                        appointmentList.add(app);

@@ -1482,8 +1511,8 @@
                                        Element orgRoomObject = 
innerIter.next();

Long rooms_organisation_id = importLongType(orgRoomObject.element("rooms_organisation_id").getText()); - Long organisation_id = importLongType(orgRoomObject.element("organisation_id").getText()); - Long rooms_id = importLongType(orgRoomObject.element("rooms_id").getText()); + Long organisation_id = getNewId(importLongType(orgRoomObject.element("organisation_id").getText()), Maps.ORGANISATIONS); + Long rooms_id = getNewId(importLongType(orgRoomObject.element("rooms_id").getText()), Maps.ROOMS);
                                        String deleted = 
orgRoomObject.element("deleted").getText();

Rooms_Organisation rooms_Organisation = new Rooms_Organisation();
@@ -1552,7 +1581,7 @@

                                        Long ownerId = null;
                                        if (roomObject.element("ownerid") != 
null) {
- ownerId = importLongType(roomObject.element("ownerid").getText()); + ownerId = getNewId(importLongType(roomObject.element("ownerid").getText()), Maps.USERS);
                                        }

                                        Boolean ispublic = false;
@@ -1610,13 +1639,15 @@
                                        room.setHideTopBar(hideTopBar);
                                        room.setAllowRecording(allowRecording);

- Rooms roomStored = Roommanagement.getInstance().getRoomById(room.getRooms_id());
+                                       Long roomId = room.getRooms_id();
+ Rooms roomStored = Roommanagement.getInstance().getRoomById(roomId);

                                        if (roomStored == null) {
//We need to reset this as openJPA reject to store them otherwise
                                                room.setRooms_id(null);

-                                               
Roommanagement.getInstance().addRoom(room);
+                                               Long newRoomId = 
Roommanagement.getInstance().addRoom(room);
+                                               roomsMap.put(roomId, newRoomId);
                                        }

for (Iterator<Element> iterMods = roomObject.elementIterator( "room_moderators" ); iterMods.hasNext(); ) {
@@ -1629,11 +1660,11 @@

                                                        RoomModerators 
roomModerators = new RoomModerators();

- Long user_id = importLongType(room_moderator.element("user_id").getText()); + Long user_id = getNewId(importLongType(room_moderator.element("user_id").getText()), Maps.USERS); Boolean is_supermoderator = importBooleanType(room_moderator.element("is_supermoderator").getText());

                                                        
roomModerators.setDeleted("false");
-                                                       
roomModerators.setRoomId(rooms_id);
+                                                       
roomModerators.setRoomId(getNewId(rooms_id, Maps.ROOMS));
roomModerators.setUser(Usermanagement.getInstance().getUserById(user_id));
                                                        
roomModerators.setIsSuperModerator(is_supermoderator);

@@ -1666,9 +1697,13 @@
                for (FileExplorerItem fileExplorerItem : fileExplorerItems) {

                        //We need to reset this as openJPA reject to store them 
otherwise
-                       fileExplorerItem.setFileExplorerItemId(0);
-
- FileExplorerItemDaoImpl.getInstance().addFileExplorerItem(fileExplorerItem);
+                       long itemId = fileExplorerItem.getFileExplorerItemId();
+ FileExplorerItem storedItem = FileExplorerItemDaoImpl.getInstance().getFileExplorerItemsById(itemId);
+                       if (storedItem == null){
+                               fileExplorerItem.setFileExplorerItemId(0);
+ long newItemId = FileExplorerItemDaoImpl.getInstance().addFileExplorerItem(fileExplorerItem);
+                               fileExplorerItemsMap.put(itemId, newItemId);
+                       }

                }

@@ -1698,13 +1733,13 @@
String fileName = fileExplorerItemObj.element("fileName").getText(); String fileHash = fileExplorerItemObj.element("fileHash").getText(); Long parentFileExplorerItemId = importLongType(fileExplorerItemObj.element("parentFileExplorerItemId").getText()); - Long room_id = importLongType(fileExplorerItemObj.element("room_id").getText()); - Long ownerId = importLongType(fileExplorerItemObj.element("ownerId").getText()); + Long room_id = getNewId(importLongType(fileExplorerItemObj.element("room_id").getText()), Maps.ROOMS); + Long ownerId = getNewId(importLongType(fileExplorerItemObj.element("ownerId").getText()), Maps.USERS); Boolean isFolder = importBooleanType(fileExplorerItemObj.element("isFolder").getText()); Boolean isImage = importBooleanType(fileExplorerItemObj.element("isImage").getText()); Boolean isPresentation = importBooleanType(fileExplorerItemObj.element("isPresentation").getText()); Boolean isVideo = importBooleanType(fileExplorerItemObj.element("isVideo").getText()); - Long insertedBy = importLongType(fileExplorerItemObj.element("insertedBy").getText()); + Long insertedBy = getNewId(importLongType(fileExplorerItemObj.element("insertedBy").getText()), Maps.USERS); Date inserted = CalendarPatterns.parseDateWithHour(fileExplorerItemObj.element("inserted").getText()); Date updated = CalendarPatterns.parseDateWithHour(fileExplorerItemObj.element("updated").getText()); String deleted = fileExplorerItemObj.element("deleted").getText();
@@ -1783,6 +1818,43 @@
                return Boolean.valueOf(value).booleanValue();

        }
-
+
+
+       private Long getNewId(Long oldId, Maps map){
+               Long newId = oldId;
+               switch (map) {
+               case USERS:
+                       if (usersMap.get(oldId) != null)
+                               newId =  usersMap.get(oldId);
+                       break;
+               case ORGANISATIONS:
+                       if (organisationsMap.get(oldId) != null)
+                               newId = organisationsMap.get(oldId);
+                       break;
+               case APPOINTMENTS:
+                       if (appointmentsMap.get(oldId) != null)
+                               newId = appointmentsMap.get(oldId);
+                       break;
+               case ROOMS:
+                       if (roomsMap.get(oldId) != null)
+                               newId = roomsMap.get(oldId);
+                       break;
+               case MESSAGEFOLDERS:
+                       if (messageFoldersMap.get(oldId) != null)
+                               newId = messageFoldersMap.get(oldId);
+                       break;
+               case USERCONTACTS:
+                       if (userContactsMap.get(oldId) != null)
+                               newId = userContactsMap.get(oldId);
+                       break;
+               case FILEEXPLORERITEMS:
+                       if (fileExplorerItemsMap.get(oldId) != null)
+                               newId = fileExplorerItemsMap.get(oldId);
+                       break;
+               default:
+                       break;
+               }
+               return newId;
+       }

 }

--
You received this message because you are subscribed to the Google Groups 
"OpenMeetings developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/openmeetings-dev?hl=en.

Reply via email to