Seam SVN: r9113 - in trunk/examples: remoting/chatroom/resources and 1 other directory.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2008-09-23 09:06:27 -0400 (Tue, 23 Sep 2008)
New Revision: 9113
Added:
trunk/examples/remoting/chatroom/resources/jboss-seam-chatroom-service.xml
Removed:
trunk/examples/remoting/chatroom/resources/chatroom-service.xml
Modified:
trunk/examples/build.xml
Log:
JBSEAM-3429
Modified: trunk/examples/build.xml
===================================================================
--- trunk/examples/build.xml 2008-09-23 12:44:26 UTC (rev 9112)
+++ trunk/examples/build.xml 2008-09-23 13:06:27 UTC (rev 9113)
@@ -28,6 +28,7 @@
<property name="resources.dir" value="resources" />
<property name="validate.resources.dir" value="${resources.dir}" />
<property name="example.ds" value="${example.name}-ds.xml" />
+ <property name="example.service" value="${example.name}-service.xml" />
<!-- Deployment directories -->
<property name="deploy.dir" value="${jboss.home}/server/default/deploy" />
@@ -679,7 +680,7 @@
</target>
<!-- Deploy the target to JBoss AS -->
- <target name="deploy" depends="archive, datasource, meldware" description="Deploy the example to JBoss AS">
+ <target name="deploy" depends="archive, datasource, service, meldware" description="Deploy the example to JBoss AS">
<fail unless="jboss.home">
jboss.home not set, update build.properties
</fail>
@@ -708,6 +709,7 @@
<target name="undeploy" description="Undeploy the example from JBoss">
<delete file="${deploy.dir}/${example.name}.ear" />
<delete file="${deploy.dir}/${example.ds}" />
+ <delete file="${deploy.dir}/${example.service}" />
<delete>
<fileset dir="${deploy.dir}">
<patternset refid="meldware.files" />
@@ -725,6 +727,16 @@
</copy>
</target>
+ <!-- Copy service file to JBoss AS -->
+ <target name="service">
+ <fail unless="jboss.home">jboss.home not set</fail>
+ <copy todir="${deploy.dir}">
+ <fileset dir="${resources.dir}">
+ <include name="${example.service}" />
+ </fileset>
+ </copy>
+ </target>
+
<target name="explode" depends="jar,jboss.war,ear,datasource, meldware" description="Deploy the exploded archive">
<fail unless="jboss.home">jboss.home not set</fail>
@@ -749,6 +761,7 @@
</fileset>
</delete>
<delete file="${deploy.dir}/${example.name}-ds.xml" failonerror="no" />
+ <delete file="${deploy.dir}/${example.name}-service.xml" failonerror="no" />
<delete dir="${ear.deploy.dir}" failonerror="no" />
<delete failonerror="no">
<fileset dir="${deploy.dir}">
@@ -917,6 +930,7 @@
<target name="jbosswar.unexplode" description="Undeploy the example from JBoss">
<delete dir="${deploy.dir}/${example.name}.war" />
<delete file="${deploy.dir}/${example.name}-ds.xml" failonerror="no" />
+ <delete file="${deploy.dir}/${example.name}-service.xml" failonerror="no" />
</target>
<!-- #################### TEST TARGETS (JBOSS AS) ##################### -->
Deleted: trunk/examples/remoting/chatroom/resources/chatroom-service.xml
===================================================================
--- trunk/examples/remoting/chatroom/resources/chatroom-service.xml 2008-09-23 12:44:26 UTC (rev 9112)
+++ trunk/examples/remoting/chatroom/resources/chatroom-service.xml 2008-09-23 13:06:27 UTC (rev 9113)
@@ -1,16 +0,0 @@
-<server>
-
- <mbean code="org.jboss.mq.server.jmx.Topic"
- name="jboss.mq.destination:service=Topic,name=chatroomTopic">
- <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
- <depends optional-attribute-name="SecurityManager">jboss.mq:service=SecurityManager</depends>
- <attribute name="SecurityConf">
- <security>
- <role name="guest" read="true" write="true"/>
- <role name="publisher" read="true" write="true" create="false"/>
- <role name="durpublisher" read="true" write="true" create="true"/>
- </security>
- </attribute>
- </mbean>
-
-</server>
Added: trunk/examples/remoting/chatroom/resources/jboss-seam-chatroom-service.xml
===================================================================
--- trunk/examples/remoting/chatroom/resources/jboss-seam-chatroom-service.xml (rev 0)
+++ trunk/examples/remoting/chatroom/resources/jboss-seam-chatroom-service.xml 2008-09-23 13:06:27 UTC (rev 9113)
@@ -0,0 +1,16 @@
+<server>
+
+ <mbean code="org.jboss.mq.server.jmx.Topic"
+ name="jboss.mq.destination:service=Topic,name=chatroomTopic">
+ <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
+ <depends optional-attribute-name="SecurityManager">jboss.mq:service=SecurityManager</depends>
+ <attribute name="SecurityConf">
+ <security>
+ <role name="guest" read="true" write="true"/>
+ <role name="publisher" read="true" write="true" create="false"/>
+ <role name="durpublisher" read="true" write="true" create="true"/>
+ </security>
+ </attribute>
+ </mbean>
+
+</server>
16 years, 7 months
Seam SVN: r9112 - trunk/src/main/org/jboss/seam/jms.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2008-09-23 08:44:26 -0400 (Tue, 23 Sep 2008)
New Revision: 9112
Modified:
trunk/src/main/org/jboss/seam/jms/TopicConnection.java
Log:
JBSEAM-3442
Modified: trunk/src/main/org/jboss/seam/jms/TopicConnection.java
===================================================================
--- trunk/src/main/org/jboss/seam/jms/TopicConnection.java 2008-09-23 12:32:58 UTC (rev 9111)
+++ trunk/src/main/org/jboss/seam/jms/TopicConnection.java 2008-09-23 12:44:26 UTC (rev 9112)
@@ -61,7 +61,7 @@
private TopicConnectionFactory getTopicConnectionFactory() throws NamingException
{
- return (TopicConnectionFactory) Naming.getInitialContext().lookup(topicConnectionFactoryJndiName);
+ return (TopicConnectionFactory) Naming.getInitialContext().lookup(getTopicConnectionFactoryJndiName());
}
@Unwrap
@@ -78,7 +78,7 @@
@Override
public String toString()
{
- return "TopicConnection(" + topicConnectionFactoryJndiName + ")";
+ return "TopicConnection(" + getTopicConnectionFactoryJndiName() + ")";
}
}
16 years, 7 months
Seam SVN: r9111 - trunk/build.
by seam-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-09-23 08:32:58 -0400 (Tue, 23 Sep 2008)
New Revision: 9111
Modified:
trunk/build/ci.build.xml
Log:
Fix nightly build deploy
Modified: trunk/build/ci.build.xml
===================================================================
--- trunk/build/ci.build.xml 2008-09-23 07:17:39 UTC (rev 9110)
+++ trunk/build/ci.build.xml 2008-09-23 12:32:58 UTC (rev 9111)
@@ -26,7 +26,7 @@
<deploySnapshot pom="${jul.pom}" jar="${lib.dir}/interop/jboss-seam-jul.jar" srcjar="${lib.dir}/interop/src/jboss-seam-jul-sources.jar"/>
<deploySnapshot pom="${wicket.pom}" jar="${lib.dir}/jboss-seam-wicket.jar" srcjar="${lib.dir}/src/jboss-seam-wicket-sources.jar"/>
<deploySnapshot pom="${resteasy.pom}" jar="${lib.dir}/jboss-seam-resteasy.jar" srcjar="${lib.dir}/src/jboss-seam-resteasy-sources.jar"/>
- <deploySnapshot pom="${gen.pom}" jar="${lib.dir}/jboss-seam-gen.jar" srcjar="${lib.dir}/src/jboss-seam-gen-sources.jar"/>
+ <deploySnapshot pom="${gen.pom}" jar="${lib.dir}/gen/jboss-seam-gen.jar" srcjar="${lib.dir}/gen/src/jboss-seam-gen-sources.jar"/>
<deploySnapshot pom="${ioc.pom}" jar="${lib.dir}/jboss-seam-ioc.jar" srcjar="${lib.dir}/src/jboss-seam-ioc-sources.jar"/>
<deploySnapshot pom="${mail.pom}" jar="${lib.dir}/jboss-seam-mail.jar" srcjar="${lib.dir}/src/jboss-seam-mail-sources.jar"/>
<deploySnapshot pom="${pdf.pom}" jar="${lib.dir}/jboss-seam-pdf.jar" srcjar="${lib.dir}/src/jboss-seam-pdf-sources.jar"/>
16 years, 7 months
Seam SVN: r9110 - trunk/examples/seamdiscs/resources.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2008-09-23 03:17:39 -0400 (Tue, 23 Sep 2008)
New Revision: 9110
Modified:
trunk/examples/seamdiscs/resources/import.sql
Log:
release column changed to _release, but script was not updated
Modified: trunk/examples/seamdiscs/resources/import.sql
===================================================================
(Binary files differ)
16 years, 7 months
Seam SVN: r9109 - trunk/examples.
by seam-commits@lists.jboss.org
Author: nickarls
Date: 2008-09-23 03:12:30 -0400 (Tue, 23 Sep 2008)
New Revision: 9109
Modified:
trunk/examples/build.xml
Log:
included commons-collections in rss example fileset
Modified: trunk/examples/build.xml
===================================================================
--- trunk/examples/build.xml 2008-09-22 22:53:24 UTC (rev 9108)
+++ trunk/examples/build.xml 2008-09-23 07:12:30 UTC (rev 9109)
@@ -166,6 +166,7 @@
<include name="jboss-seam-rss.jar" if="seam.rss.lib" />
<include name="yarfraw.jar" if="seam.rss.lib" />
<include name="commons-lang.jar" if="seam.rss.lib" />
+ <include name="commons-collections.jar" if="seam.rss.lib" />
</fileset>
<!-- Seam debug, with required dependencies -->
16 years, 7 months
Seam SVN: r9108 - in trunk/examples/remoting/chatroom: src/org/jboss/seam/example/remoting/chatroom and 1 other directory.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2008-09-22 18:53:24 -0400 (Mon, 22 Sep 2008)
New Revision: 9108
Modified:
trunk/examples/remoting/chatroom/
trunk/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/chatroom/ChatroomUsers.java
Log:
cache refactorings
Property changes on: trunk/examples/remoting/chatroom
___________________________________________________________________
Name: svn:ignore
+ dist
exploded-archives
Modified: trunk/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/chatroom/ChatroomUsers.java
===================================================================
--- trunk/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/chatroom/ChatroomUsers.java 2008-09-22 22:51:54 UTC (rev 9107)
+++ trunk/examples/remoting/chatroom/src/org/jboss/seam/example/remoting/chatroom/ChatroomUsers.java 2008-09-22 22:53:24 UTC (rev 9108)
@@ -3,8 +3,8 @@
import java.util.HashSet;
import java.util.Set;
+import org.jboss.seam.cache.CacheProvider;
import org.jboss.cache.CacheException;
-import org.jboss.cache.aop.PojoCache;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
@@ -15,17 +15,18 @@
@Scope(ScopeType.STATELESS)
public class ChatroomUsers
{
- @In
- private PojoCache pojoCache;
+ @SuppressWarnings("unchecked")
+ @In CacheProvider cacheProvider;
+ @SuppressWarnings("unchecked")
@Unwrap
public Set<String> getUsers() throws CacheException
{
- Set<String> userList = (Set<String>) pojoCache.get("chatroom", "userList");
+ Set<String> userList = (Set<String>) cacheProvider.get("chatroom", "userList");
if (userList==null)
{
userList = new HashSet<String>();
- pojoCache.put("chatroom", "userList", userList);
+ cacheProvider.put("chatroom", "userList", userList);
}
return userList;
}
16 years, 7 months
Seam SVN: r9107 - trunk/src/remoting/org/jboss/seam/remoting/messaging.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2008-09-22 18:51:54 -0400 (Mon, 22 Sep 2008)
New Revision: 9107
Removed:
trunk/src/remoting/org/jboss/seam/remoting/messaging/JBossConnectionProvider.java
trunk/src/remoting/org/jboss/seam/remoting/messaging/JMSConnectionProvider.java
Modified:
trunk/src/remoting/org/jboss/seam/remoting/messaging/SubscriptionRegistry.java
Log:
delegate to TopicConnection factory for JMS connections
Deleted: trunk/src/remoting/org/jboss/seam/remoting/messaging/JBossConnectionProvider.java
===================================================================
--- trunk/src/remoting/org/jboss/seam/remoting/messaging/JBossConnectionProvider.java 2008-09-22 22:45:52 UTC (rev 9106)
+++ trunk/src/remoting/org/jboss/seam/remoting/messaging/JBossConnectionProvider.java 2008-09-22 22:51:54 UTC (rev 9107)
@@ -1,22 +0,0 @@
-package org.jboss.seam.remoting.messaging;
-
-import javax.jms.TopicConnection;
-import javax.jms.TopicConnectionFactory;
-import javax.naming.InitialContext;
-
-/**
- *
- * @author Shane Bryzak
- */
-public class JBossConnectionProvider implements JMSConnectionProvider
-{
- private static final String FACTORY_JNDI_NAME = "UIL2ConnectionFactory";
-
- public TopicConnection createConnection()
- throws Exception
- {
- InitialContext ctx = new InitialContext();
- TopicConnectionFactory f = (TopicConnectionFactory) ctx.lookup(FACTORY_JNDI_NAME);
- return f.createTopicConnection();
- }
-}
Deleted: trunk/src/remoting/org/jboss/seam/remoting/messaging/JMSConnectionProvider.java
===================================================================
--- trunk/src/remoting/org/jboss/seam/remoting/messaging/JMSConnectionProvider.java 2008-09-22 22:45:52 UTC (rev 9106)
+++ trunk/src/remoting/org/jboss/seam/remoting/messaging/JMSConnectionProvider.java 2008-09-22 22:51:54 UTC (rev 9107)
@@ -1,11 +0,0 @@
-package org.jboss.seam.remoting.messaging;
-
-import javax.jms.TopicConnection;
-
-/**
- *
- * @author Shane Bryzak
- */
-public interface JMSConnectionProvider {
- public TopicConnection createConnection() throws Exception;
-}
Modified: trunk/src/remoting/org/jboss/seam/remoting/messaging/SubscriptionRegistry.java
===================================================================
--- trunk/src/remoting/org/jboss/seam/remoting/messaging/SubscriptionRegistry.java 2008-09-22 22:45:52 UTC (rev 9106)
+++ trunk/src/remoting/org/jboss/seam/remoting/messaging/SubscriptionRegistry.java 2008-09-22 22:51:54 UTC (rev 9107)
@@ -22,7 +22,6 @@
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
-import org.jboss.seam.util.Reflections;
/**
*
@@ -34,9 +33,6 @@
@Install(value = false, precedence=BUILT_IN)
public class SubscriptionRegistry
{
- private static final String DEFAULT_CONNECTION_PROVIDER =
- "org.jboss.seam.remoting.messaging.JBossConnectionProvider";
-
public static final String CONTEXT_USER_TOKENS =
"org.jboss.seam.remoting.messaging.SubscriptionRegistry.userTokens";
@@ -96,13 +92,8 @@
{
if (topicConnection == null)
{
- String providerName = connectionProvider != null ?
- connectionProvider : DEFAULT_CONNECTION_PROVIDER;
- try {
- Class providerClass = Reflections.classForName(providerName);
- JMSConnectionProvider provider = (JMSConnectionProvider) providerClass.newInstance();
- topicConnection = provider.createConnection();
-
+ topicConnection = org.jboss.seam.jms.TopicConnection.instance();
+
topicConnection.setExceptionListener(new ExceptionListener() {
public void onException(JMSException ex)
{
@@ -110,19 +101,6 @@
}
});
topicConnection.start();
- }
- catch (ClassNotFoundException ex)
- {
- log.error(String.format("Topic connection provider class [%s] not found",
- providerName));
- throw ex;
- }
- catch (InstantiationException ex)
- {
- log.error(String.format("Failed to create connection provider [%s]",
- providerName));
- throw ex;
- }
}
}
}
16 years, 7 months
Seam SVN: r9106 - trunk/src/main/org/jboss/seam/cache.
by seam-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-09-22 18:45:52 -0400 (Mon, 22 Sep 2008)
New Revision: 9106
Modified:
trunk/src/main/org/jboss/seam/cache/CacheProvider.java
Log:
Add typesafe getters
Modified: trunk/src/main/org/jboss/seam/cache/CacheProvider.java
===================================================================
--- trunk/src/main/org/jboss/seam/cache/CacheProvider.java 2008-09-22 21:25:58 UTC (rev 9105)
+++ trunk/src/main/org/jboss/seam/cache/CacheProvider.java 2008-09-22 22:45:52 UTC (rev 9106)
@@ -62,6 +62,19 @@
{
return get(null, key);
}
+
+ /**
+ * Fetches an object for the given key from the cache and returns it if
+ * found. Only the default cache region will be searched.
+ *
+ * @param key - a key to identify the object.
+ * @param type - the type of the object to return
+ * @return - the object if found or null if not
+ */
+ public <E> E get(String key, E type)
+ {
+ return (E) get(null, key);
+ }
/**
* Fetches an object for the given key from the cache and returns it if
@@ -72,6 +85,21 @@
* @return - the object if found or null if not
*/
public abstract Object get(String region, String key);
+
+ /**
+ * Fetches an object for the given key from the cache and returns it if
+ * found. Only the specified cache region will be searched.
+ *
+ * @param region - the name of a cache region
+ * @param key - a key to identify the object.
+ * @param type - the type of object to return
+ *
+ * @return - the object if found or null if not
+ */
+ public <E> E get(String region, String key, E type)
+ {
+ return (E) get(region, key);
+ }
/**
* Put an object into the cache. The object is placed in the default cache
16 years, 7 months
Seam SVN: r9105 - in trunk/src: test/excel/unit/org/jboss/seam/test/excel/unit and 1 other directory.
by seam-commits@lists.jboss.org
Author: danielc.roth
Date: 2008-09-22 17:25:58 -0400 (Mon, 22 Sep 2008)
New Revision: 9105
Added:
trunk/src/test/excel/unit/org/jboss/seam/test/excel/unit/TestCsvWorkbook.java
Modified:
trunk/src/excel/org/jboss/seam/excel/csv/CsvExcelWorkbook.java
trunk/src/test/excel/unit/org/jboss/seam/test/excel/unit/testng.xml
Log:
Added som CSV Export unit tests
Modified: trunk/src/excel/org/jboss/seam/excel/csv/CsvExcelWorkbook.java
===================================================================
--- trunk/src/excel/org/jboss/seam/excel/csv/CsvExcelWorkbook.java 2008-09-22 20:21:44 UTC (rev 9104)
+++ trunk/src/excel/org/jboss/seam/excel/csv/CsvExcelWorkbook.java 2008-09-22 21:25:58 UTC (rev 9105)
@@ -28,6 +28,7 @@
private int currentRow = 0;
private int maxRow = 0;
private int maxColumn = 0;
+ private int sheetStartRow = 0;
private final String COLUMN_DELIMITER = "\"";
private final String LINEBREAK = "\n";
@@ -52,7 +53,7 @@
private void createOrSelectWorksheet(String worksheetName, Integer startRow, Integer startColumn)
{
- if (sheetName != null && sheetName.equals(worksheetName))
+ if (sheetName != null && !sheetName.equals(worksheetName))
{
throw new RuntimeException("You cannot export multiple sheet workbooks to excel.");
}
@@ -60,6 +61,7 @@
sheetName = worksheetName;
currentColumn = (startColumn == null) ? 0 : startColumn;
currentRow = (startRow == null) ? 0 : startRow;
+ sheetStartRow = currentRow;
}
public byte[] getBytes()
@@ -83,7 +85,7 @@
public void nextColumn()
{
currentColumn++;
- currentRow = 0;
+ currentRow = sheetStartRow;
}
public DocumentType getDocumentType()
Added: trunk/src/test/excel/unit/org/jboss/seam/test/excel/unit/TestCsvWorkbook.java
===================================================================
--- trunk/src/test/excel/unit/org/jboss/seam/test/excel/unit/TestCsvWorkbook.java (rev 0)
+++ trunk/src/test/excel/unit/org/jboss/seam/test/excel/unit/TestCsvWorkbook.java 2008-09-22 21:25:58 UTC (rev 9105)
@@ -0,0 +1,141 @@
+package org.jboss.seam.test.excel.unit;
+
+import org.jboss.seam.excel.csv.CsvExcelWorkbook;
+import org.jboss.seam.excel.ui.UICell;
+import org.jboss.seam.excel.ui.UIWorkbook;
+import org.jboss.seam.excel.ui.UIWorksheet;
+import org.testng.annotations.Test;
+
+@Test
+public class TestCsvWorkbook
+{
+
+ @Test(expectedExceptions = { RuntimeException.class })
+ public void testOneSheetOnly()
+ {
+ CsvExcelWorkbook wb = new CsvExcelWorkbook();
+ UIWorkbook uiWorkbook = new UIWorkbook();
+ wb.createWorkbook(uiWorkbook);
+
+ UIWorksheet sheet = new UIWorksheet();
+ sheet.setName("sheet");
+ wb.createOrSelectWorksheet(sheet);
+
+ UIWorksheet sheet2 = new UIWorksheet();
+ sheet2.setName("sheet2");
+ wb.createOrSelectWorksheet(sheet2);
+
+ }
+
+ @Test
+ public void testSimpleAdd()
+ {
+ CsvExcelWorkbook wb = new CsvExcelWorkbook();
+ UIWorkbook uiWorkbook = new UIWorkbook();
+ wb.createWorkbook(uiWorkbook);
+
+ UIWorksheet sheet = new UIWorksheet();
+ sheet.setName("sheet");
+ wb.createOrSelectWorksheet(sheet);
+
+ for (int i = 0; i < 2; i++)
+ {
+ for (int j = 0; j < 2; j++)
+ {
+ UICell cell = new UICell();
+ cell.setValue(i + "_" + j);
+ wb.addItem(cell);
+ }
+ wb.nextColumn();
+ }
+
+ byte[] correct = new String("\"0_0\",\"1_0\"\n\"0_1\",\"1_1\"\n").getBytes();
+ byte[] created = wb.getBytes();
+
+ for (int i = 0; i < created.length; i++)
+ {
+ assert correct[i] == created[i];
+ }
+
+ }
+
+ public void testAddExplicit()
+ {
+ CsvExcelWorkbook wb = new CsvExcelWorkbook();
+ UIWorkbook uiWorkbook = new UIWorkbook();
+ wb.createWorkbook(uiWorkbook);
+
+ UIWorksheet sheet = new UIWorksheet();
+ sheet.setName("sheet");
+ wb.createOrSelectWorksheet(sheet);
+
+ UICell cell = new UICell();
+ cell.setValue("A1");
+ cell.setColumn(0);
+ cell.setRow(0);
+ wb.addItem(cell);
+ cell.setValue("C2");
+ cell.setColumn(2);
+ cell.setRow(1);
+ wb.addItem(cell);
+
+ byte[] correct = new String("\"A1\",\"\",\"\"\n\"\",\"\",\"C2\"\n").getBytes();
+ byte[] created = wb.getBytes();
+
+ System.out.println(new String(created));
+
+ for (int i = 0; i < created.length; i++)
+ {
+ assert correct[i] == created[i];
+ }
+
+ }
+
+ @Test
+ public void testOverlapAdd()
+ {
+ CsvExcelWorkbook wb = new CsvExcelWorkbook();
+ UIWorkbook uiWorkbook = new UIWorkbook();
+ wb.createWorkbook(uiWorkbook);
+
+ UIWorksheet sheet = new UIWorksheet();
+ sheet.setName("sheet");
+ wb.createOrSelectWorksheet(sheet);
+
+ for (int i = 0; i < 2; i++)
+ {
+ for (int j = 0; j < 2; j++)
+ {
+ UICell cell = new UICell();
+ cell.setValue(i + "_" + j);
+ wb.addItem(cell);
+ }
+ wb.nextColumn();
+ }
+
+ sheet.setStartColumn(1);
+ sheet.setStartRow(1);
+ wb.createOrSelectWorksheet(sheet);
+
+ for (int i = 0; i < 2; i++)
+ {
+ for (int j = 0; j < 2; j++)
+ {
+ UICell cell = new UICell();
+ cell.setValue(i + "_" + j);
+ wb.addItem(cell);
+ }
+ wb.nextColumn();
+ }
+
+ byte[] correct = new String("\"0_0\",\"1_0\",\"\"\n\"0_1\",\"0_0\",\"1_0\"\n\"\",\"0_1\",\"1_1\"\n").getBytes();
+ byte[] created = wb.getBytes();
+
+ for (int i = 0; i < created.length; i++)
+ {
+ assert correct[i] == created[i];
+ }
+
+ }
+
+}
Modified: trunk/src/test/excel/unit/org/jboss/seam/test/excel/unit/testng.xml
===================================================================
--- trunk/src/test/excel/unit/org/jboss/seam/test/excel/unit/testng.xml 2008-09-22 20:21:44 UTC (rev 9104)
+++ trunk/src/test/excel/unit/org/jboss/seam/test/excel/unit/testng.xml 2008-09-22 21:25:58 UTC (rev 9105)
@@ -2,7 +2,8 @@
<suite name="Seam Mail Unit Testsuite" verbose="2" parallel="false">
<test name="Seam Unit Tests: Excel">
- <classes>
+ <classes>
+ <class name="org.jboss.seam.test.excel.unit.TestCsvWorkbook"/>
</classes>
</test>
</suite>
16 years, 7 months
Seam SVN: r9104 - in trunk/src/excel/org/jboss/seam/excel: ui and 1 other directory.
by seam-commits@lists.jboss.org
Author: danielc.roth
Date: 2008-09-22 16:21:44 -0400 (Mon, 22 Sep 2008)
New Revision: 9104
Modified:
trunk/src/excel/org/jboss/seam/excel/csv/CsvExcelWorkbook.java
trunk/src/excel/org/jboss/seam/excel/ui/UIWorkbook.java
Log:
Improved CsvExcelBook and removed some old comments
Modified: trunk/src/excel/org/jboss/seam/excel/csv/CsvExcelWorkbook.java
===================================================================
--- trunk/src/excel/org/jboss/seam/excel/csv/CsvExcelWorkbook.java 2008-09-22 19:41:51 UTC (rev 9103)
+++ trunk/src/excel/org/jboss/seam/excel/csv/CsvExcelWorkbook.java 2008-09-22 20:21:44 UTC (rev 9104)
@@ -1,9 +1,8 @@
package org.jboss.seam.excel.csv;
-import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.TreeMap;
import org.jboss.seam.document.DocumentData;
import org.jboss.seam.document.DocumentData.DocumentType;
@@ -12,7 +11,7 @@
import org.jboss.seam.excel.WorksheetItem;
import org.jboss.seam.excel.ui.UICell;
import org.jboss.seam.excel.ui.UIColumn;
-import org.jboss.seam.excel.ui.UIImage;
+import org.jboss.seam.excel.ui.UIHyperlink;
import org.jboss.seam.excel.ui.UILink;
import org.jboss.seam.excel.ui.UIWorkbook;
import org.jboss.seam.excel.ui.UIWorksheet;
@@ -21,33 +20,27 @@
import org.jboss.seam.log.Logging;
/**
- * 10 minute (quite poor) implementation of csv excel workbook... Perhaps better
- * would be to use some kind of library for this.
- *
- * Use at own risk.. :)
- *
* @author Daniel Roth (danielc.roth(a)gmail.com)
*/
public class CsvExcelWorkbook implements ExcelWorkbook
{
- private int column = 0;
- private int row = 0;
- private int sheet = -1;
- private int maxrow = 0;
- private int maxcolumn = 0;
- private int maxsheet = 0;
-
+ private int currentColumn = 0;
+ private int currentRow = 0;
+ private int maxRow = 0;
+ private int maxColumn = 0;
+
private final String COLUMN_DELIMITER = "\"";
private final String LINEBREAK = "\n";
-
- private Map<Integer, Map<Integer, List<String>>> table = null;
- private List<String> sheets = new ArrayList<String>();
-
+ private final String COMMA = ",";
+
+ private Map<String, String> table = null;
+ private String sheetName = null;
+
private Log log = Logging.getLog(getClass());
public void createWorkbook(UIWorkbook uiWorkbook) throws ExcelWorkbookException
{
- table = new TreeMap<Integer, Map<Integer, List<String>>>();
+ table = new HashMap<String, String>();
}
@@ -59,84 +52,92 @@
private void createOrSelectWorksheet(String worksheetName, Integer startRow, Integer startColumn)
{
- column = 0;
- row = 0;
- if (sheets.contains(worksheetName))
+ if (sheetName != null && sheetName.equals(worksheetName))
{
- sheet = sheets.indexOf(sheets);
- column = startColumn;
- row = startRow;
+ throw new RuntimeException("You cannot export multiple sheet workbooks to excel.");
}
- else
- {
- sheet++;
- sheets.add(worksheetName);
- }
+ sheetName = worksheetName;
+ currentColumn = (startColumn == null) ? 0 : startColumn;
+ currentRow = (startRow == null) ? 0 : startRow;
}
public byte[] getBytes()
{
StringBuffer buffer = new StringBuffer();
- for (int i = 0; i <= maxsheet; i++)
+ for (int i = 0; i <= maxRow; i++)
{
- Map<Integer, List<String>> sheet = table.get(i);
- if (sheet != null)
+ for (int j = 0; j <= maxColumn; j++)
{
- for (int j = 0; j <= maxrow; j++)
- {
- for (List<String> col : sheet.values())
- {
- if (col.get(j) != null)
- buffer.append(COLUMN_DELIMITER).append(String.valueOf(col.get(j))).append(COLUMN_DELIMITER).append(",");
- }
-
- buffer.append(LINEBREAK);
- }
-
+ String value = table.get(hash(i, j));
+ value = (value == null) ? "" : value;
+ buffer.append(COLUMN_DELIMITER).append(value).append(COLUMN_DELIMITER).append(COMMA);
}
+ buffer.deleteCharAt(buffer.length() - 1);
+ buffer.append(LINEBREAK);
}
+
return buffer.toString().getBytes();
}
- private void addCell(int sheet, int column, int row, UICell uiCell) throws ExcelWorkbookException
+ public void nextColumn()
{
- if (table.get(sheet) == null)
- table.put(sheet, new TreeMap<Integer, List<String>>());
+ currentColumn++;
+ currentRow = 0;
+ }
- Map<Integer, List<String>> columns = table.get(sheet);
- if (columns.get(column) == null)
- columns.put(column, new ArrayList<String>());
+ public DocumentType getDocumentType()
+ {
+ return new DocumentData.DocumentType("csv", "text/csv");
+ }
- List<String> rows = columns.get(column);
-
- rows.add(String.valueOf(uiCell.getValue()));
- maxrow = (row > maxrow) ? row : maxrow;
- maxcolumn = (column > maxcolumn) ? column : maxcolumn;
- maxsheet = (sheet > maxsheet) ? sheet : maxsheet;
-
+ public void addItem(WorksheetItem item)
+ {
+ switch (item.getItemType())
+ {
+ case cell:
+ addCell((UICell) item);
+ break;
+ case hyperlink:
+ addHyperLink((UIHyperlink) item);
+ break;
+ case image:
+ log.trace("You cannot export an image to CSV", new Object[0]);
+ break;
+ }
}
- public void nextColumn()
+ private void addCell(UICell cell)
{
- column++;
- row = 0;
+ int row = (cell.getRow() == null) ? currentRow : cell.getRow();
+ int column = (cell.getColumn() == null) ? currentColumn : cell.getColumn();
+ addCsvCell(column, row, String.valueOf(cell.getValue()));
+
+ if (cell.getColumn() == null && cell.getRow() == null)
+ currentRow++;
}
- public DocumentType getDocumentType()
+ private void addHyperLink(UIHyperlink link)
{
- return new DocumentData.DocumentType("csv", "text/csv");
+ int row = (link.getStartRow() == null) ? currentRow : link.getStartRow();
+ int column = (link.getStartColumn() == null) ? currentColumn : link.getStartColumn();
+ if (link.getEndColumn() != null || link.getEndRow() != null)
+ log.warn("endColumn/endRow is not supported by csv exporter", new Object[0]);
+ addCsvCell(column, row, String.valueOf(link.getURL()));
}
- public void addImage(UIImage uiImage)
+ private void addCsvCell(int column, int row, String value) throws ExcelWorkbookException
{
- log.warn("addImage() is not supported by CSV exporter", new Object[0]);
+ table.put(hash(row, column), value);
+ maxRow = (row > maxRow) ? row : maxRow;
+ maxColumn = (column > maxColumn) ? column : maxColumn;
}
- public void addItem(WorksheetItem item)
+ private String hash(int row, int column)
{
- UICell cell = (UICell) item;
- addCell(sheet, column, row++, cell);
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(row).append(COMMA).append(column);
+ return buffer.toString();
}
public void applyWorksheetSettings(UIWorksheet uiWorksheet)
@@ -156,20 +157,22 @@
public void addWorksheetFooter(WorksheetItem item, int colspan)
{
- // TODO Auto-generated method stub
-
+ if (colspan > 0)
+ log.warn("footer colspan are not supported by CSV exporter", new Object[0]);
+ addItem(item);
}
public void addWorksheetHeader(WorksheetItem item, int colspan)
{
- // TODO Auto-generated method stub
-
+ if (colspan > 0)
+ log.warn("header colspan are not supported by CSV exporter", new Object[0]);
+ addItem(item);
+
}
public void setStylesheets(List<UILink> stylesheets)
{
- // TODO Auto-generated method stub
-
+ log.trace("styleSheets are not supported by CSV exporter", new Object[0]);
}
}
Modified: trunk/src/excel/org/jboss/seam/excel/ui/UIWorkbook.java
===================================================================
--- trunk/src/excel/org/jboss/seam/excel/ui/UIWorkbook.java 2008-09-22 19:41:51 UTC (rev 9103)
+++ trunk/src/excel/org/jboss/seam/excel/ui/UIWorkbook.java 2008-09-22 20:21:44 UTC (rev 9104)
@@ -313,10 +313,6 @@
DocumentType type = excelWorkbook.getDocumentType();
- /**
- * Code below is the same as for PDF generation. With a seam core document
- * store (or equivalent), this might need modifications
- */
String viewId = Pages.getViewId(context);
String baseName = baseNameForViewId(viewId);
16 years, 7 months