Author: seba.wagner
Date: Thu Dec 25 02:56:01 2008
New Revision: 1735
Modified:
trunk/webapp/filetest.keystore
trunk/webapp/src/app/hibernate.cfg.xml
trunk/webapp/src/app/org/openmeetings/app/data/record/BatikMethods.java
trunk/webapp/src/app/org/openmeetings/app/data/record/WhiteboardConvertionJobManager.java
trunk/webapp/src/app/org/openmeetings/app/data/record/WhiteboardMapToSVG.java
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RecordingConversionJobDaoImpl.java
trunk/webapp/src/app/org/openmeetings/app/documents/GenerateImage.java
trunk/webapp/src/app/org/openmeetings/app/documents/GenerateSWF.java
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RecordingConversionJob.hbm.xml
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RecordingConversionJob.java
Log:
Fixes:
Issue 550 Rework of Recorder
Part PNG to SWF Conversion
Modified: trunk/webapp/filetest.keystore
==============================================================================
Binary files. No diff available.
Modified: trunk/webapp/src/app/hibernate.cfg.xml
==============================================================================
--- trunk/webapp/src/app/hibernate.cfg.xml (original)
+++ trunk/webapp/src/app/hibernate.cfg.xml Thu Dec 25 02:56:01 2008
@@ -3,42 +3,13 @@
<hibernate-configuration>
<session-factory>
- <!-- User / Password -->
- <property name="connection.username">root</property>
- <property name="connection.password"></property>
-
- <!-- Database Settings -->
- <property
name="connection.driver_class">com.mysql.jdbc.Driver</property>
- <property
name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
- <property
name="connection.url">jdbc:mysql://localhost/openmeetings_lps42?useUnicode=true&createDatabaseIfNotExist=true&characterEncoding=utf-8</property>
-
- <property name="hibernate.connection.CharSet">utf8</property>
- <property
name="hibernate.connection.characterEncoding">utf8</property>
- <property name="hibernate.connection.useUnicode">true</property>
-
-
- <!-- Database Scheme Auto Update -->
- <property name="hbm2ddl.auto">update</property>
-
- <!-- properties -->
-
- <property name="show_sql">false</property>
- <property name="format_sql">false</property>
- <property name="use_outer_join">false</property>
- <property
name="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</property>
- <property
name="connection.provider_class
">org.hibernate.connection.C3P0ConnectionProvider</property>
- <property
name="cache.provider_class">org.hibernate.cache.NoCacheProvider </property>
- <property name="cache.use_query_cache">false </property>
- <property name="cache.use_second_level_cache">false </property>
- <property name="generate_statistics">false</property>
- <property name="cache.use_structured_entries">false</property>
-
-
- <property name="c3p0.max_size">20</property>
- <property name="c3p0.min_size">2</property>
- <property name="c3p0.max_statements">100</property>
- <property name="c3p0.timeout">3600</property>
-
+ <property
name="hibernate.connection.driver_class">org.postgresql.Driver</property>
+ <property
name="hibernate.connection.url">jdbc:postgresql://localhost/xmlcrm</property>
+ <property name="hibernate.connection.username">postgres</property>
+ <property name="hibernate.connection.password">*****</property>
+ <property
name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
+ <property name="hibernate.show_sql">true</property>
+ <property name="hibernate.hbm2ddl.auto">update</property>
<mapping
resource="org/openmeetings/app/hibernate/beans/adresses/Adresses.hbm.xml"/>
<mapping
resource="org/openmeetings/app/hibernate/beans/adresses/Adresses_Emails.hbm.xml"/>
<mapping
resource="org/openmeetings/app/hibernate/beans/adresses/Emails.hbm.xml"/>
Modified:
trunk/webapp/src/app/org/openmeetings/app/data/record/BatikMethods.java
==============================================================================
--- trunk/webapp/src/app/org/openmeetings/app/data/record/BatikMethods.java
(original)
+++ trunk/webapp/src/app/org/openmeetings/app/data/record/BatikMethods.java
Thu Dec 25 02:56:01 2008
@@ -59,11 +59,11 @@
for (Iterator iter =
pointsList.keySet().iterator();iter.hasNext();) {
Map<Integer,Object> point = (Map<Integer,Object>)
pointsList.get(iter.next());
- log.debug("POINT FROM TO :" +
-
Double.valueOf(point.get(1).toString()).doubleValue()+","+
-
Double.valueOf(point.get(2).toString()).doubleValue()+","+
-
Double.valueOf(point.get(3).toString()).doubleValue()+","+
-
Double.valueOf(point.get(4).toString()).doubleValue());
+// log.debug("POINT FROM TO :" +
+//
Double.valueOf(point.get(1).toString()).doubleValue()+","+
+//
Double.valueOf(point.get(2).toString()).doubleValue()+","+
+//
Double.valueOf(point.get(3).toString()).doubleValue()+","+
+//
Double.valueOf(point.get(4).toString()).doubleValue());
this.drawThickLine2DPaint(g2d,
Double.valueOf(point.get(1).toString()).doubleValue(),
Double.valueOf(point.get(2).toString()).doubleValue(),
Modified:
trunk/webapp/src/app/org/openmeetings/app/data/record/WhiteboardConvertionJobManager.java
==============================================================================
---
trunk/webapp/src/app/org/openmeetings/app/data/record/WhiteboardConvertionJobManager.java
(original)
+++
trunk/webapp/src/app/org/openmeetings/app/data/record/WhiteboardConvertionJobManager.java
Thu Dec 25 02:56:01 2008
@@ -5,6 +5,7 @@
import java.io.StringWriter;
import java.util.Date;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -17,6 +18,7 @@
import org.openmeetings.app.data.record.dao.RecordingDaoImpl;
import org.openmeetings.app.data.record.dao.WhiteBoardEventDaoImpl;
import org.openmeetings.app.documents.GenerateImage;
+import org.openmeetings.app.documents.GenerateSWF;
import org.openmeetings.app.hibernate.beans.recording.Recording;
import
org.openmeetings.app.hibernate.beans.recording.RecordingConversionJob;
import org.openmeetings.app.hibernate.beans.recording.WhiteBoardEvent;
@@ -90,6 +92,9 @@
//Do SVG to PNG Batch Conversion
this.processConvertionJobs();
+ //Do PNG to SWF Conversion
+ this.processConvertionSWFJobs();
+
isRunning = false;
} else {
@@ -228,7 +233,9 @@
for (RecordingConversionJob recordingConversionJob :
listOfConversionJobs) {
- int maxFolder =
Math.round(recordingConversionJob.getImageNumber() /
100);
+ Double maxFolderDoub =
Math.floor(recordingConversionJob.getImageNumber() / 100);
+
+ int maxFolder = maxFolderDoub.intValue();
if (maxFolder >=
recordingConversionJob.getBatchProcessCounter()) {
@@ -243,10 +250,10 @@
-
GenerateImage.getInstance().convertImageByTypeAndSize(
+
GenerateImage.getInstance().convertImageByTypeAndSizeAndDepth(
outputFileNames.get("input"),
outputFileNames.get("output"),
- 660, 580);
+ 660, 580, 8);
//Add Count For next Round
recordingConversionJob.setBatchProcessCounter(recordingConversionJob.getBatchProcessCounter()+1);
@@ -257,6 +264,7 @@
log.debug("Batch Processing Done");
recordingConversionJob.setEndPngConverted(new Date());
+
recordingConversionJob.setStartedSWFConverted(new Date());
RecordingConversionJobDaoImpl.getInstance().updateRecordingConversionJobs(recordingConversionJob);
}
@@ -268,6 +276,63 @@
}
}
+ public synchronized void processConvertionSWFJobs() {
+ try {
+
+ List<RecordingConversionJob> listOfSWFConversionJobs =
RecordingConversionJobDaoImpl.getInstance().getRecordingConversionSWFConversionJobs();
+
+ log.debug("processSWFJobs SIZE:
"+listOfSWFConversionJobs.size());
+
+ for (RecordingConversionJob recordingConversionJob :
listOfSWFConversionJobs) {
+
+ //Get All Images
+
+ Double maxFolderDoub =
Math.floor(recordingConversionJob.getImageNumber() / 100);
+ long maxFolder = maxFolderDoub.longValue();
+
+ List<String> images = new LinkedList<String>();
+
+ for (long i=0;i<maxFolder;i++) {
+
+ String folderName =
this.getBatchFileFolder(recordingConversionJob.getRecordingConversionJobId(),
i);
+
+ for (int k=0;k<100;k++) {
+
+ images.add(folderName+k+".png");
+
+ }
+
+ }
+
+ //restImages will be always smaller then 100
+ long restImages =
recordingConversionJob.getImageNumber() -
(maxFolder*100);
+
+ log.debug("restImages: "+restImages);
+
+ for (int k=0;k<restImages;k++) {
+
+ String folderName =
this.getBatchFileFolder(recordingConversionJob.getRecordingConversionJobId(),
maxFolder);
+
+ images.add(folderName+k+".png");
+
+ }
+
+ log.debug("images: "+images);
+
+ String output =
this.getSWFFileForResult(recordingConversionJob.getRecordingConversionJobId());
+
+
GenerateSWF.getInstance().generateSWFByImages(images, output, 10);
+
+ recordingConversionJob.setEndSWFConverted(new
Date());
+
RecordingConversionJobDaoImpl.getInstance().updateRecordingConversionJobs(recordingConversionJob);
+
+ }
+
+ } catch (Exception err) {
+ log.error("[processConvertionSWFJobs]",err);
+ }
+ }
+
private void generateFileAsSVG(Map whiteBoardObjects, String
roomRecordingInXML, RecordingConversionJob recordingConversionJob) throws
Exception {
// Get a DOMImplementation.
@@ -415,14 +480,12 @@
Map<String, String> returnMap = new HashMap<String, String>();
returnMap.put("input", batchFileSVGDir + File.separatorChar +
"*.svg");
- returnMap
- .put("output", batchFilePNGDir +
File.separatorChar + "%d.png");
+ returnMap.put("output", batchFilePNGDir + File.separatorChar +
"%d.png");
return returnMap;
}
- private String generateSVGFileName(Long conversionJobId, Long
imageNumber)
- throws Exception {
+ private String generateSVGFileName(Long conversionJobId, Long
imageNumber) throws Exception {
String recordingRootDir = Application.webAppPath +
File.separatorChar
+ "upload" + File.separatorChar
@@ -448,6 +511,40 @@
}
return batchFileSVGDir + File.separatorChar + imageNumber +
".svg";
+ }
+
+ private String getBatchFileFolder(Long conversionJobId,
+ Long folderNumber) throws Exception {
+
+ String recordingRootDir = Application.webAppPath +
File.separatorChar
+ + "upload" + File.separatorChar
+ + StreamService.folderForRecordings;
+
+ // The Folders must already exist here otherwise no Image could
exist
+ // here, so no need to
+ // check for existance
+ String recordingFileDir = recordingRootDir + File.separatorChar
+
conversionJobId;
+ String batchFileSVGDir = recordingFileDir + File.separatorChar
+
folderNumber;
+ String batchFilePNGDir = batchFileSVGDir + File.separatorChar +
"PNG" +
File.separatorChar;
+
+ File f = new File(batchFilePNGDir);
+ return f.getAbsolutePath() + File.separatorChar;
+ }
+
+ private String getSWFFileForResult(Long conversionJobId) throws
Exception
{
+
+ String recordingRootDir = Application.webAppPath +
File.separatorChar
+ + "upload" + File.separatorChar
+ + StreamService.folderForRecordings;
+
+ // The Folders must already exist here otherwise no Image could
exist
+ // here, so no need to
+ // check for existance
+ String recordingFileDir = recordingRootDir + File.separatorChar
+
conversionJobId;
+ String recordingFileDirAbsolute = (new
File(recordingFileDir)).getAbsolutePath();
+
+ String swfFile = recordingFileDirAbsolute + File.separatorChar
+ "whiteboard.swf";
+ return swfFile;
}
}
Modified:
trunk/webapp/src/app/org/openmeetings/app/data/record/WhiteboardMapToSVG.java
==============================================================================
---
trunk/webapp/src/app/org/openmeetings/app/data/record/WhiteboardMapToSVG.java
(original)
+++
trunk/webapp/src/app/org/openmeetings/app/data/record/WhiteboardMapToSVG.java
Thu Dec 25 02:56:01 2008
@@ -57,7 +57,7 @@
Double width =
Double.valueOf(graphObject.get(graphObject.size()-3).toString()).doubleValue();
Double height =
Double.valueOf(graphObject.get(graphObject.size()-2).toString()).doubleValue();
- log.debug("x,y,width,height:
"+x+","+y+","+width+","+height);
+ //log.debug("x,y,width,height:
"+x+","+y+","+width+","+height);
//Draw a Painting
SVGGraphics2D svgGenerator_temp = new
SVGGraphics2D(svgGenerator);
Modified:
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RecordingConversionJobDaoImpl.java
==============================================================================
---
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RecordingConversionJobDaoImpl.java
(original)
+++
trunk/webapp/src/app/org/openmeetings/app/data/record/dao/RecordingConversionJobDaoImpl.java
Thu Dec 25 02:56:01 2008
@@ -116,6 +116,32 @@
return null;
}
+
+ public List<RecordingConversionJob>
getRecordingConversionSWFConversionJobs() {
+ try {
+
+ String hql = "select c from RecordingConversionJob as c
" +
+ "where c.endPngConverted IS NOT
NULL " +
+ "AND c.endSWFConverted IS NULL";
+
+ Object idf = HibernateUtil.createSession();
+ Session session = HibernateUtil.getSession();
+ Transaction tx = session.beginTransaction();
+ Query query = session.createQuery(hql);
+ List<RecordingConversionJob> ll = query.list();
+ tx.commit();
+ HibernateUtil.closeSession(idf);
+
+ return ll;
+
+ } catch (HibernateException ex) {
+ log.error("[getRecordingConversionJobs]: " , ex);
+ } catch (Exception ex2) {
+ log.error("[getRecordingConversionJobs]: " , ex2);
+ }
+ return null;
+ }
+
public void updateRecordingConversionJobs(RecordingConversionJob
recordingConversionJob) {
try {
Modified:
trunk/webapp/src/app/org/openmeetings/app/documents/GenerateImage.java
==============================================================================
--- trunk/webapp/src/app/org/openmeetings/app/documents/GenerateImage.java
(original)
+++ trunk/webapp/src/app/org/openmeetings/app/documents/GenerateImage.java
Thu Dec 25 02:56:01 2008
@@ -304,4 +304,95 @@
}
}
+
+ public HashMap<String,Object> convertImageByTypeAndSizeAndDepth(String
inputFile, String outputfile,
+ int width, int height, int depth) {
+ HashMap<String,Object> returnMap = new HashMap<String,Object>();
+ returnMap.put("process", "convertSingleJpg");
+ try {
+
+ //Init variables
+ String[] cmd;
+ String executable_fileName = "";
+ String pathToIMagick =
Configurationmanagement.getInstance().getConfKey(3,"imagemagick_path").getConf_value();
+ if(!pathToIMagick.equals("")
&& !pathToIMagick.endsWith(File.separator)){
+ pathToIMagick = pathToIMagick + File.separator;
+ }
+
+ log.debug("##### convertSingleJpg pngconverter: ");
+
+
+ //If no Windows Platform
+ if
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") ==
-1) {
+ String runtimeFile = "thumbnail.sh";
+ executable_fileName =
Application.batchFileFir+"THUMB_"
+ +
CalendarPatterns.getTimeForStreamId(new Date()) +"_"+ runtimeFile;
+
+ cmd = new String[1];
+ cmd[0] = executable_fileName;
+ } else {
+ String runtimeFile = "thumbnail.bat";
+ executable_fileName =
Application.batchFileFir+"THUMB_"
+ +
CalendarPatterns.getTimeForStreamId(new Date()) +"_"+ runtimeFile;
+
+ cmd = new String[4];
+ cmd[0] = "cmd.exe";
+ cmd[1] = "/C";
+ cmd[2] = "start";
+ cmd[3] = executable_fileName;
+ }
+ log.debug("executable_fileName: "+executable_fileName);
+
+ Runtime rt = Runtime.getRuntime();
+
+ log.debug("cmd: "+cmd);
+
+ //Create the Content of the Converter Script (.bat or
.sh File)
+ String fileContent = pathToIMagick + "convert " +
+ " " + "-size "+width+"x"+height+" " +
+ " " + "-depth "+depth+" " +
+ " " + "\"" + inputFile + "\"" +
+ " " + "\"" + outputfile+"\"" +
+ Application.lineSeperator + "exit";
+
+ //execute the Script
+ FileOutputStream fos = new
FileOutputStream(executable_fileName);
+ fos.write(fileContent.getBytes());
+ fos.close();
+
+ //make new shell script executable
+ //in JAVA6 this can be done directly through the api
+ if
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") ==
-1) {
+
MakeExectuable.getInstance().setExecutable(executable_fileName);
+ }
+
+ for (int i=0;i<cmd.length;i++){
+ log.debug("cmd: "+cmd[i]);
+ }
+
+ returnMap.put("command", cmd.toString());
+ Process proc = rt.exec(cmd);
+ InputStream stderr = proc.getErrorStream();
+ InputStreamReader isr = new InputStreamReader(stderr);
+ BufferedReader br = new BufferedReader(isr);
+ String line = null;
+ String error = "";
+ while ((line = br.readLine()) != null)
+ error += line;
+ returnMap.put("error", error);
+ int exitVal = proc.waitFor();
+ returnMap.put("exitValue", exitVal);
+
+ log.debug("DEBUG: "+error);
+
+ return returnMap;
+ } catch (Throwable t) {
+ t.printStackTrace();
+ returnMap.put("error",t.getMessage());
+ returnMap.put("exitValue", -1);
+ return returnMap;
+ }
+ }
+
+
}
Modified:
trunk/webapp/src/app/org/openmeetings/app/documents/GenerateSWF.java
==============================================================================
--- trunk/webapp/src/app/org/openmeetings/app/documents/GenerateSWF.java
(original)
+++ trunk/webapp/src/app/org/openmeetings/app/documents/GenerateSWF.java
Thu Dec 25 02:56:01 2008
@@ -2,6 +2,8 @@
import java.util.Date;
import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
import java.io.BufferedReader;
import java.io.File;
@@ -71,6 +73,91 @@
+ " " + "\"" + originalFolder +
fileNamePure + ".pdf\""
+ " " + "\"" + destinationFolder +
fileNamePure+".swf\""
+ Application.lineSeperator + "exit";
+
+ //execute the Script
+ FileOutputStream fos = new
FileOutputStream(executable_fileName);
+ fos.write(fileContent.getBytes());
+ fos.close();
+
+ //make new shell script executable
+ //in JAVA6 this can be done directly through the api
+ if
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") ==
-1) {
+
MakeExectuable.getInstance().setExecutable(executable_fileName);
+ }
+
+ Runtime rt = Runtime.getRuntime();
+
+ for (int i=0;i<cmd.length;i++){
+ log.debug("cmd: "+cmd[i]);
+ }
+
+ returnMap.put("command", cmd.toString());
+ Process proc = rt.exec(cmd);
+ InputStream stderr = proc.getErrorStream();
+ InputStreamReader isr = new InputStreamReader(stderr);
+ BufferedReader br = new BufferedReader(isr);
+ String line = null;
+ String error = "";
+ while ((line = br.readLine()) != null)
+ error += line;
+ returnMap.put("error", error);
+ int exitVal = proc.waitFor();
+ returnMap.put("exitValue", exitVal);
+ return returnMap;
+ } catch (Throwable t) {
+ t.printStackTrace();
+ returnMap.put("error", t.getMessage());
+ returnMap.put("exitValue", -1);
+ return returnMap;
+ }
+ }
+
+ public HashMap<String,Object> generateSWFByImages(List<String> images,
String outputfile, int fps) {
+ HashMap<String,Object> returnMap = new HashMap<String,Object>();
+ returnMap.put("process", "generateSWFByImages");
+ try {
+
+ //Init variables
+ String[] cmd;
+ String executable_fileName = "";
+ String pathToSWFTools =
Configurationmanagement.getInstance().getConfKey(3,"swftools_path").getConf_value();
+ //If SWFTools Path is not blank a File.seperator at the
end of the path
is needed
+ if(!pathToSWFTools.equals("")
&& !pathToSWFTools.endsWith(File.separator)){
+ pathToSWFTools = pathToSWFTools +
File.separator;
+ }
+
+
+ //If no Windows Platform
+ if
(System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") ==
-1) {
+ String runtimeFile = "swfconverter.sh";
+ executable_fileName =
Application.batchFileFir+"SWFIMAGECONVERT_"
+ +
CalendarPatterns.getTimeForStreamId(new Date()) +"_"+ runtimeFile;
+
+ cmd = new String[1];
+ cmd[0] = executable_fileName;
+ } else {
+ String runtimeFile = "swfconverter.bat";
+ executable_fileName =
Application.batchFileFir+"SWFIMAGECONVERT_"
+ +
CalendarPatterns.getTimeForStreamId(new Date()) +"_"+ runtimeFile;
+
+ cmd = new String[4];
+ cmd[0] = "cmd.exe";
+ cmd[1] = "/C";
+ cmd[2] = "start";
+ cmd[3] = executable_fileName;
+ }
+ log.debug("executable_fileName: "+executable_fileName);
+
+ //Create the Content of the Converter Script (.bat or
.sh File)
+ String fileContent = pathToSWFTools + "png2swf"
+ + " -o " + "\"" + outputfile + "\""
+ + " -r " + fps;
+
+ for (Iterator<String> iter =
images.iterator();iter.hasNext();) {
+ fileContent += " " + "\"" + iter.next() +"\"";
+ }
+
+ fileContent += Application.lineSeperator + "exit";
//execute the Script
FileOutputStream fos = new
FileOutputStream(executable_fileName);
Modified:
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RecordingConversionJob.hbm.xml
==============================================================================
---
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RecordingConversionJob.hbm.xml
(original)
+++
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RecordingConversionJob.hbm.xml
Thu Dec 25 02:56:01 2008
@@ -15,5 +15,7 @@
<property name="startedPngConverted" type="java.util.Date"
column="startedpngconverted"/>
<property name="endPngConverted" type="java.util.Date"
column="endpngconverted"/>
<property name="batchProcessCounter" type="long"
column="batchprocesscounter"/>
+ <property name="startedSWFConverted" type="java.util.Date"
column="startedswfconverted"/>
+ <property name="endSWFConverted" type="java.util.Date"
column="endswfconverted"/>
</class>
</hibernate-mapping>
Modified:
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RecordingConversionJob.java
==============================================================================
---
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RecordingConversionJob.java
(original)
+++
trunk/webapp/src/app/org/openmeetings/app/hibernate/beans/recording/RecordingConversionJob.java
Thu Dec 25 02:56:01 2008
@@ -21,6 +21,9 @@
private Date startedPngConverted;
private Date endPngConverted;
private Long batchProcessCounter = 0L;
+ private Date startedSWFConverted;
+ private Date endSWFConverted;
+
/**
*
@@ -145,6 +148,30 @@
}
public void setBatchProcessCounter(Long batchProcessCounter) {
this.batchProcessCounter = batchProcessCounter;
+ }
+
+ /**
+ * @hibernate.property
+ * column="startedswfconverted"
+ * type="java.util.Date"
+ */
+ public Date getStartedSWFConverted() {
+ return startedSWFConverted;
+ }
+ public void setStartedSWFConverted(Date startedSWFConverted) {
+ this.startedSWFConverted = startedSWFConverted;
+ }
+
+ /**
+ * @hibernate.property
+ * column="endswfconverted"
+ * type="java.util.Date"
+ */
+ public Date getEndSWFConverted() {
+ return endSWFConverted;
+ }
+ public void setEndSWFConverted(Date endSWFConverted) {
+ this.endSWFConverted = endSWFConverted;
}
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---