Revision: 4543
Author: seba.wagner
Date: Sun Nov 13 01:26:51 2011
Log: Fixes: Backup Import and Export of RoomPolls and RoomPollAnswers
The Exporter now exports all Date's as tStamp (time in milliseconds since
1970). The previous format (dd.MM.yyyy HH:mm:ss) was no timezone save.
Add new wrapper for Date/Calendar times in the export/import:
The Importer can now and Date's in format dd.MM.yyyy HH:mm:ss dd.MM.yyyy or
as tStamp.
So you can import old backups still, but if the Date is available as
tStamp, tStamp will be used.
http://code.google.com/p/openmeetings/source/detail?r=4543
Modified:
/trunk/singlewebapp/src/app/org/openmeetings/app/data/conference/PollManagement.java
/trunk/singlewebapp/src/app/org/openmeetings/app/remote/PollService.java
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupExport.java
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java
/trunk/singlewebapp/src/app/org/openmeetings/utils/math/CalendarPatterns.java
=======================================
---
/trunk/singlewebapp/src/app/org/openmeetings/app/data/conference/PollManagement.java
Wed Oct 12 10:34:29 2011
+++
/trunk/singlewebapp/src/app/org/openmeetings/app/data/conference/PollManagement.java
Sun Nov 13 01:26:51 2011
@@ -7,6 +7,7 @@
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
+import javax.persistence.TypedQuery;
import org.openmeetings.app.data.basic.Fieldmanagment;
import org.openmeetings.app.data.user.Usermanagement;
@@ -43,9 +44,8 @@
return pt.getPollTypesId();
}
- @SuppressWarnings("unchecked")
public List<PollType> getPollTypes() {
- Query q = em.createQuery("SELECT pt FROM PollType pt");
+ TypedQuery<PollType> q = em.createQuery("SELECT pt FROM PollType
pt",PollType.class);
return q.getResultList();
}
@@ -68,6 +68,11 @@
em.persist(roomP);
return roomP;
}
+
+ public void savePollBackup(RoomPoll rp) {
+ em.persist(rp);
+ }
+
public RoomPoll updatePoll(RoomPoll rp) {
return em.merge(rp);
@@ -100,11 +105,22 @@
return null;
}
- @SuppressWarnings("unchecked")
+ public List<RoomPoll> getPollListBackup() {
+ try {
+ TypedQuery<RoomPoll> q = em.createQuery("SELECT rp FROM RoomPoll
rp",RoomPoll.class);
+ return q.getResultList();
+ } catch (NoResultException nre) {
+ //expected
+ } catch (Exception err) {
+ log.error("[getPoll]", err);
+ }
+ return null;
+ }
+
public List<RoomPoll> getArchivedPollList(Long room_id) {
try {
log.debug(" :: getPoll :: " + room_id);
- Query q = em.createQuery("SELECT rp FROM RoomPoll rp WHERE
rp.room.rooms_id = :room_id AND rp.archived = :archived");
+ TypedQuery<RoomPoll> q = em.createQuery("SELECT rp FROM RoomPoll rp
WHERE rp.room.rooms_id = :room_id AND rp.archived
= :archived",RoomPoll.class);
q.setParameter("room_id", room_id);
q.setParameter("archived", true);
return q.getResultList();
=======================================
---
/trunk/singlewebapp/src/app/org/openmeetings/app/remote/PollService.java
Wed Oct 12 10:34:29 2011
+++
/trunk/singlewebapp/src/app/org/openmeetings/app/remote/PollService.java
Sun Nov 13 01:26:51 2011
@@ -16,6 +16,8 @@
import org.red5.logging.Red5LoggerFactory;
import org.red5.server.api.IConnection;
import org.red5.server.api.Red5;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
import org.red5.server.api.service.IServiceCapableConnection;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,7 +27,7 @@
* @author swagner
*
*/
-public class PollService {
+public class PollService implements IPendingServiceCallback {
private static final Logger log = Red5LoggerFactory.getLogger(
PollService.class,
ScopeApplicationAdapter.webAppRootKey);
@@ -210,4 +212,9 @@
}
return null;
}
-}
+
+ public void resultReceived(IPendingServiceCall arg0) {
+ // TODO Auto-generated method stub
+
+ }
+}
=======================================
---
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupExport.java
Tue Aug 30 13:17:16 2011
+++
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupExport.java
Sun Nov 13 01:26:51 2011
@@ -30,6 +30,7 @@
import org.openmeetings.app.data.basic.dao.LdapConfigDaoImpl;
import org.openmeetings.app.data.calendar.daos.AppointmentDaoImpl;
import org.openmeetings.app.data.calendar.daos.MeetingMemberDaoImpl;
+import org.openmeetings.app.data.conference.PollManagement;
import org.openmeetings.app.data.conference.Roommanagement;
import org.openmeetings.app.data.conference.dao.RoomModeratorsDaoImpl;
import org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl;
@@ -49,6 +50,8 @@
import org.openmeetings.app.persistence.beans.files.FileExplorerItem;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecording;
import
org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData;
+import org.openmeetings.app.persistence.beans.poll.RoomPoll;
+import org.openmeetings.app.persistence.beans.poll.RoomPollAnswers;
import org.openmeetings.app.persistence.beans.rooms.RoomModerators;
import org.openmeetings.app.persistence.beans.rooms.Rooms;
import org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation;
@@ -104,6 +107,8 @@
private UserContactsDaoImpl userContactsDao;
@Autowired
private AuthLevelmanagement authLevelManagement;
+ @Autowired
+ private PollManagement pollManagement;
/*
* (non-Javadoc)
@@ -393,6 +398,24 @@
this.serializetoXML(fos,
"UTF-8", doc);
}
+
+ /*
+ * ##################### Polls
+ */
+ List<RoomPoll> roomPolls =
pollManagement
+ .getPollListBackup();
+
+ if (roomPolls != null) {
+
+ Document doc =
this.createRoomPollDocument(roomPolls);
+
+ String aListXML = backup_dir +
"roompolls.xml";
+
+ FileOutputStream fos = new
FileOutputStream(aListXML);
+
+ this.serializetoXML(fos,
"UTF-8", doc);
+
+ }
if (includeFileOption.equals("yes")) {
@@ -513,6 +536,95 @@
er.printStackTrace();
}
}
+
+ private Document createRoomPollDocument(List<RoomPoll> roomPollList) {
+
+ Document document = DocumentHelper.createDocument();
+ document.setXMLEncoding("UTF-8");
+
document.addComment("###############################################\n"
+ + "This File is auto-generated by the Backup Tool
\n"
+ + "you should use the BackupPanel to modify or
change this file \n"
+ + "see http://code.google.com/p/openmeetings/wiki/BackupPanel for
Details \n"
+ +
"###############################################");
+
+ Element root = document.addElement("root");
+
+ Element roompolls = root.addElement("roompolls");
+
+ for (RoomPoll roomPollItem : roomPollList) {
+
+ Element roompoll = roompolls.addElement("roompoll");
+
+ roompoll.addElement("pollname").addCDATA(
+ formatString("" +
roomPollItem.getPollName()));
+ roompoll.addElement("pollquestion").addCDATA(
+ formatString("" +
roomPollItem.getPollQuestion()));
+ roompoll.addElement("archived").addCDATA(
+ formatString("" +
roomPollItem.isArchived()));
+ roompoll.addElement("created").addCDATA(
+ formatString(""
+ +
CalendarPatterns.getExportDate(roomPollItem
+
.getCreated())));
+ if (roomPollItem.getCreatedBy() != null) {
+ roompoll.addElement("createdbyuserid").addCDATA(
+ formatString(""
+ +
roomPollItem.getCreatedBy().getUser_id()));
+ } else {
+ roompoll.addElement("createdbyuserid").addCDATA(
+ formatString(""));
+ }
+ if (roomPollItem.getPollType() != null) {
+ roompoll.addElement("polltypeid").addCDATA(
+ formatString(""
+ +
roomPollItem.getPollType().getPollTypesId()));
+ } else {
+
roompoll.addElement("polltypeid").addCDATA(formatString(""));
+ }
+ if (roomPollItem.getRoom() != null) {
+ roompoll.addElement("roomid")
+ .addCDATA(
+ formatString(""
+
+ roomPollItem.getRoom().getRooms_id()));
+ } else {
+
roompoll.addElement("roomid").addCDATA(formatString(""));
+ }
+
+ if (roomPollItem.getRoomPollAnswerList() == null) {
+ continue;
+ }
+
+ Element roompollanswers = roompoll
+ .addElement("roompollanswers");
+
+ for (RoomPollAnswers roomPollAnswersItem : roomPollItem
+ .getRoomPollAnswerList()) {
+
+ Element roompollanswer = roompollanswers
+ .addElement("roompollanswer");
+
+ roompollanswer.addElement("pointlist").addCDATA(
+ formatString("" +
roomPollAnswersItem.getPointList()));
+ roompollanswer.addElement("answer").addCDATA(
+ formatString("" +
roomPollAnswersItem.getAnswer()));
+ roompollanswer.addElement("votedate").addCDATA(
+ formatString(""
+ +
CalendarPatterns
+
.getExportDate(roomPollAnswersItem
+
.getVoteDate())));
+ if (roomPollAnswersItem.getVotedUser() != null){
+
roompollanswer.addElement("voteduserid").addCDATA(
+ formatString("" +
roomPollAnswersItem.getVotedUser().getUser_id()));
+ } else {
+
roompollanswer.addElement("voteduserid").addCDATA(
+ formatString(""));
+ }
+
+ }
+
+ }
+
+ return document;
+ }
public boolean deleteDirectory(File path) throws IOException {
@@ -533,43 +645,6 @@
return (path.delete());
}
-
- // private void zipToDir(String backupDir, ZipOutputStream zos) throws
- // Exception {
- //
- // File zipDir = new File(backupDir);
- //
- // String[] dirList = zipDir.list();
- //
- // byte[] readBuffer = new byte[1024];
- //
- // int bytesIn = 0;
- //
- // for (int i=0;i<dirList.length;i++) {
- //
- // File f = new File(zipDir, dirList[i]);
- //
- // if (f.isDirectory()) {
- // String filePath = f.getPath();
- // zipToDir(filePath, zos);
- // } else {
- // FileInputStream fis = new FileInputStream(f);
- // ZipEntry newEntry = new ZipEntry(f.getName());
- //
- // //log.debug("newEntry :: "+f.getPath());
- // //log.debug("newEntry :: "+f.getName());
- //
- // zos.putNextEntry(newEntry);
- // while((bytesIn = fis.read(readBuffer)) != -1 ) {
- // zos.write(readBuffer, 0, bytesIn);
- // }
- // fis.close();
- // }
- //
- //
- // }
- //
- // }
public void getAllFiles(File dir, List<File> fileList) throws IOException
{
try {
@@ -701,12 +776,12 @@
"" + a.getAppointmentLocation());
appointment.addElement("appointmentDescription").addCDATA(
"" + a.getAppointmentDescription());
- appointment.addElement("appointmentStarttime").addCDATA(
-
CalendarPatterns.getDateWithTimeByMiliSeconds(a
-
.getAppointmentStarttime()));
+ appointment.addElement("appointmentStarttime")
+ .addCDATA(
+
CalendarPatterns.getExportDate(a
+
.getAppointmentStarttime()));
appointment.addElement("appointmentEndtime").addCDATA(
-
CalendarPatterns.getDateWithTimeByMiliSeconds(a
-
.getAppointmentEndtime()));
+
CalendarPatterns.getExportDate(a.getAppointmentEndtime()));
if (a.getAppointmentCategory() != null) {
appointment.addElement("categoryId").addCDATA(
"" +
a.getAppointmentCategory().getCategoryId());
@@ -963,10 +1038,11 @@
} else {
privateMessage.addElement("to").addCDATA("0");
}
- privateMessage.addElement("inserted").addCDATA(
- formatString(""
- +
CalendarPatterns.getDateWithTimeByMiliSeconds(pm
-
.getInserted())));
+ privateMessage.addElement("inserted")
+ .addCDATA(
+ formatString(""
+ +
CalendarPatterns.getExportDate(pm
+
.getInserted())));
privateMessage.addElement("isContactRequest").addCDATA(
formatString("" +
pm.getIsContactRequest()));
privateMessage.addElement("isRead").addCDATA(
@@ -1042,20 +1118,14 @@
formatString("" +
fileExplorerItem.getIsVideo()));
fileExplorerItemElement.addElement("insertedBy").addCDATA(
formatString("" +
fileExplorerItem.getInsertedBy()));
- fileExplorerItemElement
- .addElement("inserted")
- .addCDATA(
- formatString(""
- +
CalendarPatterns
-
.getDateWithTimeByMiliSeconds(fileExplorerItem
-
.getInserted())));
- fileExplorerItemElement
- .addElement("updated")
- .addCDATA(
- formatString(""
- +
CalendarPatterns
-
.getDateWithTimeByMiliSeconds(fileExplorerItem
-
.getUpdated())));
+ fileExplorerItemElement.addElement("inserted").addCDATA(
+ formatString(""
+ +
CalendarPatterns.getExportDate(fileExplorerItem
+
.getInserted())));
+ fileExplorerItemElement.addElement("updated").addCDATA(
+ formatString(""
+ +
CalendarPatterns.getExportDate(fileExplorerItem
+
.getUpdated())));
fileExplorerItemElement.addElement("deleted").addCDATA(
formatString("" +
fileExplorerItem.getDeleted()));
fileExplorerItemElement.addElement("fileSize").addCDATA(
@@ -1138,9 +1208,8 @@
formatString("" + flvRec.getRoom_id()));
flvrecording.addElement("inserted").addCDATA(
formatString(""
- + CalendarPatterns
-
.getDateWithTimeByMiliSeconds(flvRec
-
.getInserted())));
+ +
CalendarPatterns.getExportDate(flvRec
+
.getInserted())));
flvrecording.addElement("isFolder").addCDATA(
formatString("" +
flvRec.getIsFolder()));
flvrecording.addElement("isImage").addCDATA(
@@ -1153,14 +1222,12 @@
formatString("" +
flvRec.getIsRecording()));
flvrecording.addElement("recordEnd").addCDATA(
formatString(""
- + CalendarPatterns
-
.getDateWithTimeByMiliSeconds(flvRec
-
.getRecordEnd())));
+ +
CalendarPatterns.getExportDate(flvRec
+
.getRecordEnd())));
flvrecording.addElement("recordStart").addCDATA(
formatString(""
- + CalendarPatterns
-
.getDateWithTimeByMiliSeconds(flvRec
-
.getRecordStart())));
+ +
CalendarPatterns.getExportDate(flvRec
+
.getRecordStart())));
Element flvrecordingmetadatas = flvrecording
.addElement("flvrecordingmetadatas");
@@ -1194,9 +1261,8 @@
formatString("" +
flvMeta.getAudioIsValid()));
flvrecordingmetadata.addElement("inserted").addCDATA(
formatString(""
- +
CalendarPatterns
-
.getDateWithTimeByMiliSeconds(flvMeta
-
.getInserted())));
+ +
CalendarPatterns.getExportDate(flvMeta
+
.getInserted())));
flvrecordingmetadata.addElement("isAudioOnly").addCDATA(
formatString("" +
flvMeta.getIsAudioOnly()));
flvrecordingmetadata.addElement("isScreenData").addCDATA(
@@ -1205,19 +1271,16 @@
formatString("" +
flvMeta.getIsVideoOnly()));
flvrecordingmetadata.addElement("recordEnd").addCDATA(
formatString(""
- +
CalendarPatterns
-
.getDateWithTimeByMiliSeconds(flvMeta
-
.getRecordEnd())));
+ +
CalendarPatterns.getExportDate(flvMeta
+
.getRecordEnd())));
flvrecordingmetadata.addElement("recordStart").addCDATA(
formatString(""
- +
CalendarPatterns
-
.getDateWithTimeByMiliSeconds(flvMeta
-
.getRecordStart())));
+ +
CalendarPatterns.getExportDate(flvMeta
+
.getRecordStart())));
flvrecordingmetadata.addElement("updated").addCDATA(
formatString(""
- +
CalendarPatterns
-
.getDateWithTimeByMiliSeconds(flvMeta
-
.getUpdated())));
+ +
CalendarPatterns.getExportDate(flvMeta
+
.getUpdated())));
}
@@ -1568,8 +1631,7 @@
}
user.addElement("regdate").addCDATA(
formatString(""
- +
CalendarPatterns.getDateWithTimeByMiliSeconds(u
-
.getRegdate())));
+ +
CalendarPatterns.getExportDate(u.getRegdate())));
if (u.getTitle_id() != null) {
user.addElement("title_id").addCDATA(
=======================================
---
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java
Fri Oct 21 06:58:32 2011
+++
/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java
Sun Nov 13 01:26:51 2011
@@ -37,6 +37,7 @@
import org.openmeetings.app.data.calendar.daos.AppointmentDaoImpl;
import
org.openmeetings.app.data.calendar.daos.AppointmentReminderTypDaoImpl;
import org.openmeetings.app.data.calendar.daos.MeetingMemberDaoImpl;
+import org.openmeetings.app.data.conference.PollManagement;
import org.openmeetings.app.data.conference.Roommanagement;
import org.openmeetings.app.data.conference.dao.RoomModeratorsDaoImpl;
import org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl;
@@ -61,6 +62,8 @@
import org.openmeetings.app.persistence.beans.files.FileExplorerItem;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecording;
import
org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData;
+import org.openmeetings.app.persistence.beans.poll.RoomPoll;
+import org.openmeetings.app.persistence.beans.poll.RoomPollAnswers;
import org.openmeetings.app.persistence.beans.rooms.RoomModerators;
import org.openmeetings.app.persistence.beans.rooms.Rooms;
import org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation;
@@ -126,6 +129,8 @@
private ScopeApplicationAdapter scopeApplicationAdapter;
@Autowired
private AuthLevelmanagement authLevelManagement;
+ @Autowired
+ private PollManagement pollManagement;
private final HashMap<Long, Long> usersMap = new HashMap<Long, Long>();
private final HashMap<Long, Long> organisationsMap = new HashMap<Long,
Long>();
@@ -176,7 +181,8 @@
}
ServletMultipartRequest upload = new
ServletMultipartRequest(
- httpServletRequest, ImportHelper.getMaxUploadSize(cfgManagement,
user_level), "UTF8");
+ httpServletRequest,
ImportHelper.getMaxUploadSize(
+ cfgManagement,
user_level), "UTF8");
InputStream is =
upload.getFileContents("Filedata");
String fileSystemName =
upload.getBaseFilename("Filedata");
@@ -460,6 +466,25 @@
this.importFileExplorerItems(fileExplorerListFile);
}
+ log.info("File explorer item import complete, starting file poll
import");
+
+ /*
+ * ##################### Import
File-Explorer Items
+ */
+ String roomPollListXML = completeName +
File.separatorChar
+ + "roompolls.xml";
+ File roomPollListFile = new
File(roomPollListXML);
+ if (!roomPollListFile.exists()) {
+ log.debug("roomPollListFile
missing");
+ } else {
+
this.importRoomPolls(roomPollListFile);
+ }
+
+ log.info("Poll import complete, starting
copy of files and folders");
+
+ /*
+ * ##################### Import real
files and folders
+ */
importFolders(current_dir,
completeName);
log.info("File explorer item import
complete, clearing temp files");
@@ -490,6 +515,114 @@
return;
}
+
+ private void importRoomPolls(File roomPollListFile) {
+ try {
+
+ List<RoomPoll> roomPolls =
this.getRoomPolls(roomPollListFile);
+
+ for (RoomPoll roomPoll : roomPolls) {
+
+ pollManagement.savePollBackup(roomPoll);
+
+ }
+
+ } catch (Exception err) {
+ log.error("[getRoomPolls]", err);
+ }
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private List<RoomPoll> getRoomPolls(File roomPollListFile) throws
Exception {
+
+ List<RoomPoll> roomPollList = new LinkedList<RoomPoll>();
+
+ SAXReader reader = new SAXReader();
+ Document document = reader.read(roomPollListFile);
+
+ Element root = document.getRootElement();
+
+ for (Iterator<Element> i = root.elementIterator();
i.hasNext();) {
+
+ Element itemObject = i.next();
+
+ if (itemObject.getName().equals("roompolls")) {
+
+ for (Iterator<Element> innerIter = itemObject
+ .elementIterator("roompoll");
innerIter.hasNext();) {
+
+ Element roompollObject =
innerIter.next();
+
+ String pollname =
unformatString(roompollObject.element(
+ "pollname").getText());
+ String pollquestion =
unformatString(roompollObject
+
.element("pollquestion").getText());
+ Boolean archived =
importBooleanType(unformatString(roompollObject
+
.element("archived").getText()));
+ Date created = CalendarPatterns
+
.parseImportDate(unformatString(roompollObject
+
.element("created").getText()));
+ Long createdbyuserid =
importLongType(unformatString(roompollObject
+
.element("createdbyuserid").getText()));
+ Long polltypeid =
importLongType(unformatString(roompollObject
+
.element("polltypeid").getText()));
+ Long roomid =
importLongType(unformatString(roompollObject
+
.element("roomid").getText()));
+
+ RoomPoll roomPoll = new RoomPoll();
+ roomPoll.setPollName(pollname);
+ roomPoll.setPollQuestion(pollquestion);
+ if (archived != null) {
+
roomPoll.setArchived(archived.booleanValue());
+ } else {
+ roomPoll.setArchived(true);
+ }
+ roomPoll.setCreated(created);
+ roomPoll.setCreatedBy(usersDao.getUser(getNewId(createdbyuserid,
Maps.USERS)));
+
roomPoll.setPollType(pollManagement.getPollType(polltypeid));
+ roomPoll.setRoom(roommanagement.getRoomById(getNewId(roomid,
Maps.ROOMS)));
+ roomPoll.setRoomPollAnswerList(new
LinkedList<RoomPollAnswers>());
+
+ Element roompollanswers = roompollObject
+
.element("roompollanswers");
+
+ for (Iterator<Element> innerIterAnswers
= roompollanswers
+
.elementIterator("roompollanswer"); innerIterAnswers
+ .hasNext();) {
+
+ Element innerIterAnswerObj =
innerIterAnswers.next();
+
+ Integer pointlist =
importIntegerType(unformatString(innerIterAnswerObj
+
.element("pointlist").getText()));
+ Boolean answer =
importBooleanType(unformatString(innerIterAnswerObj
+
.element("answer").getText()));
+ Date votedate = CalendarPatterns
+
.parseImportDate(unformatString(innerIterAnswerObj
+
.element("votedate").getText()));
+ Long voteduserid =
importLongType(unformatString(innerIterAnswerObj
+
.element("voteduserid").getText()));
+
+ RoomPollAnswers roomPollAnswers
= new RoomPollAnswers();
+
roomPollAnswers.setPointList(pointlist);
+
roomPollAnswers.setAnswer(answer);
+
roomPollAnswers.setVoteDate(votedate);
+ roomPollAnswers.setVotedUser(usersDao.getUser(getNewId(voteduserid,
Maps.USERS)));
+
+
roomPoll.getRoomPollAnswerList().add(roomPollAnswers);
+ }
+
+ roomPollList.add(roomPoll);
+
+ }
+
+ }
+
+ }
+
+ return roomPollList;
+
+ }
public void copyDirectory(File sourceLocation, File targetLocation)
throws IOException {
@@ -581,8 +714,8 @@
.element("user_id").getText()));
us.setAge(CalendarPatterns
-
.parseDate(unformatString(itemUsers.element(
-
"age").getText())));
+
.parseImportDate(unformatString(itemUsers
+
.element("age").getText())));
us.setAvailible(importIntegerType(unformatString(itemUsers
.element("availible").getText())));
us.setDeleted(unformatString(itemUsers.element(
@@ -671,8 +804,8 @@
us.setStatus(importIntegerType(unformatString(itemUsers
.element("status").getText())));
us.setRegdate(CalendarPatterns
-
.parseDate(unformatString(itemUsers.element(
-
"regdate").getText())));
+
.parseImportDate(unformatString(itemUsers
+
.element("regdate").getText())));
us.setTitle_id(importIntegerType(unformatString(itemUsers
.element("title_id").getText())));
us.setLevel_id(importLongType(unformatString(itemUsers
@@ -782,8 +915,11 @@
Element
organisationObject = organisationIterator
.next();
- Long organisation_id =
getNewId(importLongType(unformatString(organisationObject
-
.element("organisation_id").getText())), Maps.ORGANISATIONS);
+ Long
organisation_id = getNewId(
+
importLongType(unformatString(organisationObject
+
.element("organisation_id")
+
.getText())),
+
Maps.ORGANISATIONS);
Long user_id =
importLongType(unformatString(organisationObject
.element("user_id").getText()));
Boolean isModerator =
importBooleanType(unformatString(organisationObject
@@ -934,7 +1070,7 @@
.element("room_id").getText())),
Maps.ROOMS);
Date inserted = CalendarPatterns
-
.parseDateWithHour(unformatString(flvObject
+
.parseImportDate(unformatString(flvObject
.element("inserted").getText()));
Boolean isFolder =
importBooleanType(unformatString(flvObject
.element("isFolder").getText()));
@@ -947,10 +1083,10 @@
Boolean isRecording =
importBooleanType(unformatString(flvObject
.element("isRecording").getText()));
Date recordEnd =
CalendarPatterns
-
.parseDateWithHour(unformatString(flvObject
+
.parseImportDate(unformatString(flvObject
.element("recordEnd").getText()));
Date recordStart =
CalendarPatterns
-
.parseDateWithHour(unformatString(flvObject
+
.parseImportDate(unformatString(flvObject
.element("recordStart").getText()));
FlvRecording flvRecording = new
FlvRecording();
@@ -1013,7 +1149,7 @@
Boolean audioIsValid =
importBooleanType(unformatString(flvrecordingmetadataObj
.element("audioIsValid").getText()));
Date inserted1 =
CalendarPatterns
-
.parseDateWithHour(unformatString(flvrecordingmetadataObj
+
.parseImportDate(unformatString(flvrecordingmetadataObj
.element("inserted").getText()));
Boolean isAudioOnly =
importBooleanType(unformatString(flvrecordingmetadataObj
.element("isAudioOnly").getText()));
@@ -1022,13 +1158,13 @@
Boolean isVideoOnly =
importBooleanType(unformatString(flvrecordingmetadataObj
.element("isVideoOnly").getText()));
Date recordEnd1 =
CalendarPatterns
-
.parseDateWithHour(unformatString(flvrecordingmetadataObj
+
.parseImportDate(unformatString(flvrecordingmetadataObj
.element("recordEnd").getText()));
Date recordStart1 =
CalendarPatterns
-
.parseDateWithHour(unformatString(flvrecordingmetadataObj
+
.parseImportDate(unformatString(flvrecordingmetadataObj
.element("recordStart").getText()));
Date updated =
CalendarPatterns
-
.parseDateWithHour(unformatString(flvrecordingmetadataObj
+
.parseImportDate(unformatString(flvrecordingmetadataObj
.element("updated").getText()));
FlvRecordingMetaData flvrecordingmetadata = new
FlvRecordingMetaData();
@@ -1203,7 +1339,7 @@
importLongType(unformatString(pmObject.element(
"to").getText())), Maps.USERS));
Date inserted = CalendarPatterns
-
.parseDateWithHour(unformatString(pmObject
+
.parseImportDate(unformatString(pmObject
.element("inserted").getText()));
Boolean isContactRequest =
importBooleanType(unformatString(pmObject
.element("isContactRequest").getText()));
@@ -1356,7 +1492,8 @@
organisation.setName(name);
organisation.setDeleted(deleted);
- Long newOrgID =
organisationmanagement.addOrganisationObj(organisation);
+ Long newOrgID =
organisationmanagement
+
.addOrganisationObj(organisation);
organisationsMap.put(organisation_id, newOrgID);
}
}
@@ -1581,11 +1718,11 @@
Long categoryId =
importLongType(unformatString(appointmentsObject
.element("categoryId").getText()));
Date appointmentStarttime =
CalendarPatterns
-
.parseDateWithHour(unformatString(appointmentsObject
+
.parseImportDate(unformatString(appointmentsObject
.element("appointmentStarttime")
.getText()));
Date appointmentEndtime =
CalendarPatterns
-
.parseDateWithHour(unformatString(appointmentsObject
+
.parseImportDate(unformatString(appointmentsObject
.element("appointmentEndtime")
.getText()));
String deleted =
unformatString(appointmentsObject
@@ -1993,10 +2130,10 @@
.element("insertedBy").getText())),
Maps.USERS);
Date inserted = CalendarPatterns
-
.parseDateWithHour(unformatString(fileExplorerItemObj
+
.parseImportDate(unformatString(fileExplorerItemObj
.element("inserted").getText()));
Date updated = CalendarPatterns
-
.parseDateWithHour(unformatString(fileExplorerItemObj
+
.parseImportDate(unformatString(fileExplorerItemObj
.element("updated").getText()));
String deleted =
unformatString(fileExplorerItemObj
.element("deleted").getText());
=======================================
---
/trunk/singlewebapp/src/app/org/openmeetings/utils/math/CalendarPatterns.java
Sun Nov 6 05:52:37 2011
+++
/trunk/singlewebapp/src/app/org/openmeetings/utils/math/CalendarPatterns.java
Sun Nov 13 01:26:51 2011
@@ -64,6 +64,83 @@
dateOld.setTime(timeAdv);
String result = sdf.format(dateOld);
return result;
+ }
+
+ public static String getExportDate(Date t){
+ if (t == null) {
+ return "";
+ }
+ return ""+t.getTime();
+ }
+
+ public static Date parseImportDate(String dateString) {
+ try {
+
+ Date resultDate = null;
+
+ resultDate = validDate(dateFormat__ddMMyyyyHHmmss, dateString);
+
+ if ( resultDate != null ) {
+ return resultDate;
+ }
+
+ resultDate = validDate(dateFormat__ddMMyyyy, dateString);
+
+ if ( resultDate != null ) {
+ return resultDate;
+ }
+
+ resultDate = validDate(dateString);
+
+ if (dateString != null) {
+ return resultDate;
+ }
+
+
+ throw new Exception ("Could not parse date string "+dateString);
+ } catch (Exception e) {
+ log.error("parseDate",e);
+ }
+ return null;
+ }
+
+ private static Date validDate(String testdate) {
+ try {
+
+ Long t = Long.valueOf(testdate);
+
+ if (t != null) {
+ return new Date(t);
+ }
+
+ } catch (Exception err) {
+ }
+ return null;
+ }
+
+ private static Date validDate(SimpleDateFormat sdf, String testdate)
+ {
+ Date resultDate = null;
+ try
+ {
+ resultDate = sdf.parse(testdate);
+ }
+
+ // if the format of the string provided doesn't match the format we
+ // declared in SimpleDateFormat() we will get an exception
+
+ catch (java.text.ParseException e)
+ {
+ return null;
+ }
+
+ if (!sdf.format(resultDate).equals(testdate))
+ {
+ return null;
+ }
+
+ return resultDate;
+
}
public static String getDateWithTimeByMiliSecondsAndTimeZone(Date t,
TimeZone timezone){
--
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.