You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Alejandro Tapia Lazcano <li...@alejandrotapia.cl> on 2007/11/28 04:48:05 UTC
[T5] CSV in Tapestry 5
Hello!
I have a grid made with tapestry5 and I need to pass this data to a CSV
(comma separated values). After searching I found this component but
for T4.
http://www.tapestrycomponents.org/Tassel/app?service=direct/1/Search/viewComponent&sp=SmschnyderCSV+Export
It is possible to migrate this T4 to T5?
How??
I need the guide "Migrating components T4 to T5 for dummies" jajajaja
Thanks for your help
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: [T5] CSV in Tapestry 5
Posted by Alejandro Tapia Lazcano <li...@alejandrotapia.cl>.
Works perfect!
Thanks for the help!
Francois Armand escribió:
> Alejandro Tapia Lazcano wrote:
>> Hello!
>
> Hello,
>> I have a grid made with tapestry5 and I need to pass this data to a
>> CSV (comma separated values). After searching I found this component
>> but for T4.
>> http://www.tapestrycomponents.org/Tassel/app?service=direct/1/Search/viewComponent&sp=SmschnyderCSV+Export
>>
>> It is possible to migrate this T4 to T5?
> No.
>> How??
>> I need the guide "Migrating components T4 to T5 for dummies" jajajaja
> There is no easy migration path, see
> http://tapestry.apache.org/tapestry5/ , Backwards Compatibility.
>
> So, you have a list of elements (say, a list of map) and you want to
> export there values to CSV ?
> Just create a simple T5 page that return "onActivate()" a
> StreamResponse :
> (note after writting the code : the code is not very clean (awful
> cpoy/paste), I wrote it straight in the mail, so it should contains
> some mistakes and mispellings and that sort of things :).
> But it's just an example, and event if I haven't tested it, I really
> think it should work. The main ideas are here, I think
> Obviously, it would be better to make a component that takes as
> parameter a list of beans, a bean model, etc. I let
> it to you as an exercise ;P ).
>
> 8<--------------------
> public class CsvExport {
> public static final String CSV_CONTENT_TYPE = "text/plain";
> public static final String DEFAULT_ATTRIBUTE_SEPARATOR = ",";
> private static final String linebreak =
> System.getProperty("line.separator");
>
> //the list of element to export to CSV
> private List<Map<String, String>> elements;
>
> //the list of value names to export : ex: name,age
> private List<String> colomns;
>
> //the main response, that will export to csv your values
> public StreamResponse onActivate() {
> if(null == values || null == colomns || colomns.size() < 1) {
> return new TextStreamResponse(CSV_CONTENT_TYPE, "");
> }
>
> csvLines = new StringBuilder();
> //print the first line of the CSV
> for(String header : colomns) {
> csvLines.append(header).append(DEFAULT_ATTRIBUTE_SEPARATOR);
> }
> csvLines.deleteCharAt(csvLines.length()-1);
> csvLines.append(linebreak);
>
> //loop over lines and print values
> for(Map<String,String> values : elements) {
> for(String header : colomns) {
>
> csvLines.append(values.get(header)).append(DEFAULT_ATTRIBUTE_SEPARATOR);
> }
> csvLines.deleteCharAt(csvLines.length()-1);
> csvLines.append(linebreak);
> }
>
> //ok, so now we have the file to return, so we return it.
>
> return new StreamResponse() {
>
> public String getContentType() {
> return CSV_CONTENT_TYPE;
> }
>
> public InputStream getStream() throws IOException {
> return new
> ByteArrayInputStream(csvLines.toString().getBytes());
> }
>
> public void prepareResponse(Response response) {
> response.setContentLength(csvLines.length());
> response.setHeader("Content-disposition", "attachment;
> filename=myCSVexortedFile.csv");
> response.setHeader("Pragma","no-cache");
> response.setHeader("Cache-Control","must-revalidate,
> post-check=0, pre-check=0, public");
> response.setIntHeader("Expires", 0);
> }
> };
> }
>
> }
>
> 8<---------------------
>
> Hope it will help you.
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: [T5] CSV in Tapestry 5
Posted by Francois Armand <fa...@linagora.com>.
Alejandro Tapia Lazcano wrote:
> Hello!
Hello,
> I have a grid made with tapestry5 and I need to pass this data to a
> CSV (comma separated values).
> After searching I found this component but for T4.
> http://www.tapestrycomponents.org/Tassel/app?service=direct/1/Search/viewComponent&sp=SmschnyderCSV+Export
>
> It is possible to migrate this T4 to T5?
No.
> How??
> I need the guide "Migrating components T4 to T5 for dummies" jajajaja
There is no easy migration path, see
http://tapestry.apache.org/tapestry5/ , Backwards Compatibility.
So, you have a list of elements (say, a list of map) and you want to
export there values to CSV ?
Just create a simple T5 page that return "onActivate()" a StreamResponse :
(note after writting the code : the code is not very clean (awful
cpoy/paste), I wrote it straight in the mail, so it should contains some
mistakes and mispellings and that sort of things :).
But it's just an example, and event if I haven't tested it, I really
think it should work. The main ideas are here, I think
Obviously, it would be better to make a component that takes as
parameter a list of beans, a bean model, etc. I let
it to you as an exercise ;P ).
8<--------------------
public class CsvExport {
public static final String CSV_CONTENT_TYPE = "text/plain";
public static final String DEFAULT_ATTRIBUTE_SEPARATOR = ",";
private static final String linebreak =
System.getProperty("line.separator");
//the list of element to export to CSV
private List<Map<String, String>> elements;
//the list of value names to export : ex: name,age
private List<String> colomns;
//the main response, that will export to csv your values
public StreamResponse onActivate() {
if(null == values || null == colomns || colomns.size() < 1) {
return new TextStreamResponse(CSV_CONTENT_TYPE, "");
}
csvLines = new StringBuilder();
//print the first line of the CSV
for(String header : colomns) {
csvLines.append(header).append(DEFAULT_ATTRIBUTE_SEPARATOR);
}
csvLines.deleteCharAt(csvLines.length()-1);
csvLines.append(linebreak);
//loop over lines and print values
for(Map<String,String> values : elements) {
for(String header : colomns) {
csvLines.append(values.get(header)).append(DEFAULT_ATTRIBUTE_SEPARATOR);
}
csvLines.deleteCharAt(csvLines.length()-1);
csvLines.append(linebreak);
}
//ok, so now we have the file to return, so we return it.
return new StreamResponse() {
public String getContentType() {
return CSV_CONTENT_TYPE;
}
public InputStream getStream() throws IOException {
return new
ByteArrayInputStream(csvLines.toString().getBytes());
}
public void prepareResponse(Response response) {
response.setContentLength(csvLines.length());
response.setHeader("Content-disposition", "attachment;
filename=myCSVexortedFile.csv");
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","must-revalidate,
post-check=0, pre-check=0, public");
response.setIntHeader("Expires", 0);
}
};
}
}
8<---------------------
Hope it will help you.
--
Francois Armand
Etudes & Développements J2EE
Groupe Linagora - http://www.linagora.com
Tél.: +33 (0)1 58 18 68 28
-----------
InterLDAP - http://interldap.org
FederID - http://www.federid.org/
Open Source identities management and federation
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org