You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Max Grigoriev <da...@mail.ru> on 2003/09/16 12:25:54 UTC

Show a picture from DB

Hello tapestry-user,

  I try to implememt my own service for showing pictures:

  My Service:

public class ViewDocumentService extends AbstractService {
  public static final String VIEW_DOC_SERVICE = "viewdoc";

  public String getName() {
    return VIEW_DOC_SERVICE;
  }

  public void service(IEngineServiceView iEngineServiceView, IRequestCycle cycle,
                      ResponseOutputStream responseOutputStream)
      throws ServletException, IOException {
    HttpServletResponse response = cycle.getRequestContext().getResponse();
    String[] params = getServiceContext(cycle.getRequestContext());
    if (params == null || params.length != 1) {
      throw new ApplicationRuntimeException(
          Tapestry.format("service-single-context-parameter", VIEW_DOC_SERVICE));
    }
    Visit visit = (Visit) cycle.getEngine().getVisit();
    try {
      //My picture holder
      ExternalDocument extDoc = ReportHome.getExternalDocument(params[0],
          visit.getReport(), null);
      response.setContentType("image/jpeg");
      byte[] buf = extDoc.getValue();
      response.getOutputStream().write(buf);

      //for debug only...
      File f = new File(extDoc.getName());
      FileOutputStream out = new FileOutputStream(f);
      out.write(buf);
      out.close();
      //end for debug...
    } catch (MiddleException e) {
      e.printStackTrace();
    }
  }

  public ILink getLink(IRequestCycle cycle, IComponent iComponent, Object[] objects) {
    if (objects == null || objects.length == 0)
      throw new ApplicationRuntimeException(
          Tapestry.format("service-requires-parameters", VIEW_DOC_SERVICE));

    String docName = (String) objects[0];
    String[] context = new String[]{docName};

    return constructLink(cycle, VIEW_DOC_SERVICE, context, new Object[0], true);

  }  

  And i invoke this service like this:
  
<a jwcid="@ServiceLink"
   service="ognl:@com.clearview.feedback.web.ViewDocumentService@VIEW_DOC_SERVICE"
   parameters="ognl:bean.currExtDocName"><span jwcid="@Insert" value="ognl:bean.currExtDocName"/></a>

But i don't see a picture. I tried to show picture and write it to
file. The picture saved in the file is OK, so i think i do something
wrong with tapestry.

Has someone done such thing already ? And where is my fault ?

Thank's

-- 
Best regards,
 Max                          mailto:darkit@mail.ru


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


Re[2]: Show a picture from DB

Posted by Max Grigoriev <da...@mail.ru>.
But if i want to show not only images but also word documents, pdf and
etc. It will not work.


Tuesday, September 16, 2003, 3:24:03 PM, you wrote:

HK> Take a look at the ChartService in the workbench. Basically, you change
HK> your service link to an Image and create an Asset that returns the URL
HK> to your ViewDocService. Something like the following...

HK> Template:
HK> <img jwcid="@Image" image="ognl:externalDocAsset"..../>

HK> Asset:
HK> public class ExternalDocAsset extends AbstractAsset
HK> {
HK>     // Take a look at ChartAsset in workbench to see what methods to
HK> implement
HK> }

HK> Service:
HK> ... you already have this.

HK> Page:
HK> .....
HK>     public IAsset getExternalDocAsset()
HK>     {
HK>        return new ExternalDocAsset(getRequestCycle(), this);
HK>     }
HK> .....

HK> -Harish


HK> Max Grigoriev wrote:

>>Hello tapestry-user,
>>
>>  I try to implememt my own service for showing pictures:
>>
>>  My Service:
>>
>>public class ViewDocumentService extends AbstractService {
>>  public static final String VIEW_DOC_SERVICE = "viewdoc";
>>
>>  public String getName() {
>>    return VIEW_DOC_SERVICE;
>>  }
>>
>>  public void service(IEngineServiceView iEngineServiceView, IRequestCycle cycle,
>>                      ResponseOutputStream responseOutputStream)
>>      throws ServletException, IOException {
>>    HttpServletResponse response =
>> cycle.getRequestContext().getResponse();
>>    String[] params = getServiceContext(cycle.getRequestContext());
>>    if (params == null || params.length != 1) {
>>      throw new ApplicationRuntimeException(
>>          Tapestry.format("service-single-context-parameter", VIEW_DOC_SERVICE));
>>    }
>>    Visit visit = (Visit) cycle.getEngine().getVisit();
>>    try {
>>      //My picture holder
>>      ExternalDocument extDoc =
>> ReportHome.getExternalDocument(params[0],
>>          visit.getReport(), null);
>>      response.setContentType("image/jpeg");
>>      byte[] buf = extDoc.getValue();
>>      response.getOutputStream().write(buf);
>>
>>      //for debug only...
>>      File f = new File(extDoc.getName());
>>      FileOutputStream out = new FileOutputStream(f);
>>      out.write(buf);
>>      out.close();
>>      //end for debug...
>>    } catch (MiddleException e) {
>>      e.printStackTrace();
>>    }
>>  }
>>
>>  public ILink getLink(IRequestCycle cycle, IComponent iComponent, Object[] objects) {
>>    if (objects == null || objects.length == 0)
>>      throw new ApplicationRuntimeException(
>>          Tapestry.format("service-requires-parameters", VIEW_DOC_SERVICE));
>>
>>    String docName = (String) objects[0];
>>    String[] context = new String[]{docName};
>>
>>    return constructLink(cycle, VIEW_DOC_SERVICE, context, new Object[0], true);
>>
>>  }  
>>
>>  And i invoke this service like this:
>>  
>><a jwcid="@ServiceLink"
>>  
>> service="ognl:@com.clearview.feedback.web.ViewDocumentService@VIEW_DOC_SERVICE"
>>   parameters="ognl:bean.currExtDocName"><span jwcid="@Insert"
>> value="ognl:bean.currExtDocName"/></a>
>>
>>But i don't see a picture. I tried to show picture and write it to
>>file. The picture saved in the file is OK, so i think i do something
>>wrong with tapestry.
>>
>>Has someone done such thing already ? And where is my fault ?
>>
>>Thank's
>>
>>  
>>


HK> ---------------------------------------------------------------------
HK> To unsubscribe, e-mail:
HK> tapestry-user-unsubscribe@jakarta.apache.org
HK> For additional commands, e-mail:
HK> tapestry-user-help@jakarta.apache.org




-- 
Best regards,
 Max                            mailto:darkit@mail.ru


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


Re: Show a picture from DB

Posted by Harish Krishnaswamy <hk...@comcast.net>.
Take a look at the ChartService in the workbench. Basically, you change 
your service link to an Image and create an Asset that returns the URL 
to your ViewDocService. Something like the following...

Template:
<img jwcid="@Image" image="ognl:externalDocAsset"..../>

Asset:
public class ExternalDocAsset extends AbstractAsset
{
    // Take a look at ChartAsset in workbench to see what methods to 
implement
}

Service:
... you already have this.

Page:
.....
    public IAsset getExternalDocAsset()
    {
       return new ExternalDocAsset(getRequestCycle(), this);
    }
.....

-Harish


Max Grigoriev wrote:

>Hello tapestry-user,
>
>  I try to implememt my own service for showing pictures:
>
>  My Service:
>
>public class ViewDocumentService extends AbstractService {
>  public static final String VIEW_DOC_SERVICE = "viewdoc";
>
>  public String getName() {
>    return VIEW_DOC_SERVICE;
>  }
>
>  public void service(IEngineServiceView iEngineServiceView, IRequestCycle cycle,
>                      ResponseOutputStream responseOutputStream)
>      throws ServletException, IOException {
>    HttpServletResponse response = cycle.getRequestContext().getResponse();
>    String[] params = getServiceContext(cycle.getRequestContext());
>    if (params == null || params.length != 1) {
>      throw new ApplicationRuntimeException(
>          Tapestry.format("service-single-context-parameter", VIEW_DOC_SERVICE));
>    }
>    Visit visit = (Visit) cycle.getEngine().getVisit();
>    try {
>      //My picture holder
>      ExternalDocument extDoc = ReportHome.getExternalDocument(params[0],
>          visit.getReport(), null);
>      response.setContentType("image/jpeg");
>      byte[] buf = extDoc.getValue();
>      response.getOutputStream().write(buf);
>
>      //for debug only...
>      File f = new File(extDoc.getName());
>      FileOutputStream out = new FileOutputStream(f);
>      out.write(buf);
>      out.close();
>      //end for debug...
>    } catch (MiddleException e) {
>      e.printStackTrace();
>    }
>  }
>
>  public ILink getLink(IRequestCycle cycle, IComponent iComponent, Object[] objects) {
>    if (objects == null || objects.length == 0)
>      throw new ApplicationRuntimeException(
>          Tapestry.format("service-requires-parameters", VIEW_DOC_SERVICE));
>
>    String docName = (String) objects[0];
>    String[] context = new String[]{docName};
>
>    return constructLink(cycle, VIEW_DOC_SERVICE, context, new Object[0], true);
>
>  }  
>
>  And i invoke this service like this:
>  
><a jwcid="@ServiceLink"
>   service="ognl:@com.clearview.feedback.web.ViewDocumentService@VIEW_DOC_SERVICE"
>   parameters="ognl:bean.currExtDocName"><span jwcid="@Insert" value="ognl:bean.currExtDocName"/></a>
>
>But i don't see a picture. I tried to show picture and write it to
>file. The picture saved in the file is OK, so i think i do something
>wrong with tapestry.
>
>Has someone done such thing already ? And where is my fault ?
>
>Thank's
>
>  
>


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


Re: Show a picture from DB

Posted by Erik Hatcher <er...@ehatchersolutions.com>.
Also as a plug for Howard's forthcoming Tapestry book, he develops a 
banner ad service that does something similar to this.  I've been lucky 
enough to have learned what I did about Tapestry through versions of 
his manuscript and it has been very helpful to me.

	Erik


On Tuesday, September 16, 2003, at 06:25  AM, Max Grigoriev wrote:
> Hello tapestry-user,
>
>   I try to implememt my own service for showing pictures:


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org