Orbeon custom name for downloaded file - file

I am using Orbeon's feature for generating PDFs and it works fine. But I need to use custom template for some of my forms as well. Since I already have code generating these custom template PDFs I would like to combine it with Orbeon's built in PDF feature.
Currently I have two buttons on my xforms - regular Orbeon PDF button (which genrates PDFs using Orbeon's built in functionality) and custom button, which sends xform data to my custom service generating PDFs using my template and gets back PDF file.
I have my button and service configured like this:
<property as="xs:string" name="oxf.fr.detail.buttons.view.my_app.*">mypdf pdf</property>
<property as="xs:string" name="oxf.fr.resource.my_app.*.cs.buttons.mypdf" value="My PDF"/>
<property as="xs:string" name="oxf.fr.detail.process.mypdf.my_app.*">
send(
uri = "http://localhost:8080/myApp/getPdfXform",
replace = "all",
method = "post",
content = "xml",
annotate = "id",
nonrelevant = "remove"
)
</property>
The problem I have is that mypdf button returns file called "view", which is my custom template PDF, but not with a name I generated in my service. In another words Orbeon replaces my custom filename with "view".
I tried to configure it using this property
<property as="xs:string" name="oxf.fr.detail.pdf.filename.*.*" value="'testname'"/>
but it seems to apply only to PDFs generated by Orbeon, which makes sense.
My question is if there is a way to get file from my service with fileName I gave it?
Thank you.

Related

page goes blank after partial refresh - xpages

I'm getting a wired behavior while uploading file.
I then, in another part of the page activate partial refresh (not related to the upload file section at all). the hole page turn blank.
i found out that it is happening only id a data source is bind to the page.
here is a sample of html:
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoDocument var="document1" formName="Supplier"></xp:dominoDocument>
</xp:this.data>
<xp:fileUpload id="fileAtt" immediate="false" required="true">
</xp:fileUpload>
<xp:br></xp:br>
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="computedField1" immediate="true">
</xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xp:text escape="true" id="computedField1"></xp:text>
</xp:view>
The File Upload control needs to be bound to a field on the datasource. Otherwise, you're asking the end user to upload an attachment without specifying where to store it, which is not an expected development approach.

Configuration file

I need to read some property from configuration file. I don't want to store the property file inside the location. What is best practice
For example, if execute as follows
java -jar payara-micro.jar --deploy demo.jar
I want to keep the parameter file where payara-micro.jar located. I need to read the property file inside the war file. How to achieve it.
Thank you.
You may first start payara-micro with --rootDir path option. Payara treats this dir as working, so it creates `config' dir there. Then just edit domain.xml file as you need and start payara-micro again. All resources you create will be available at you beans as usual. For example you may add some properties like this:
...
<resources>
<jdbc-resource pool-name="DerbyPool" jndi-name="jdbc/__default" object-type="system-all" />
<jdbc-connection-pool is-isolation-level-guaranteed="false" name="DerbyPool" datasource-classname="org.apache.derby.jdbc.EmbeddedDataSource" res-type="javax.sql.DataSource">
<property name="databaseName" value="${com.sun.aas.instanceRoot}/lib/databases/embedded_default" />
<property name="connectionAttributes" value=";create=true" />
</jdbc-connection-pool>
<connector-connection-pool max-pool-size="250" steady-pool-size="1" name="jms/__defaultConnectionFactory-Connection-Pool" resource-adapter-name="jmsra" connection-definition-name="javax.jms.ConnectionFactory"></connector-connection-pool>
<connector-resource pool-name="jms/__defaultConnectionFactory-Connection-Pool" jndi-name="jms/__defaultConnectionFactory" object-type="system-all-req"></connector-resource>
<context-service description="context service" jndi-name="concurrent/__defaultContextService" object-type="system-all"></context-service>
<managed-executor-service maximum-pool-size="200" core-pool-size="1" long-running-tasks="true" keep-alive-seconds="300" hung-after-seconds="300" task-queue-capacity="20000" jndi-name="concurrent/__defaultManagedExecutorService" object-type="system-all"></managed-executor-service>
<managed-scheduled-executor-service core-pool-size="1" long-running-tasks="true" keep-alive-seconds="300" hung-after-seconds="300" jndi-name="concurrent/__defaultManagedScheduledExecutorService" object-type="system-all"></managed-scheduled-executor-service>
<managed-thread-factory description="thread factory" jndi-name="concurrent/__defaultManagedThreadFactory" object-type="system-all"></managed-thread-factory>
<custom-resource factory-class="org.glassfish.resources.custom.factory.PropertiesFactory" res-type="java.util.Properties" jndi-name="myconf">
<property name="some.my.property" value="some.value"></property>
</custom-resource>
</resources>
(see custom-resource tag)
Then just inject it into you bean:
#Resource(type=java.util.Properties.class, name="myconf")
private final Properties parameters;
Also you may specify --domainConfig file to keep configuration anywhere you want.
Use --help to see full options list.
You can pass system properties to the payara micro using a command line argument, like this:
java -jar payara-micro.jar --deploy app.war --systemProperties=sys.properties
Also check out the Payara micro documentation about this option.
You can pass system properties configured in domain.xml file. This overrides the default domain.xml.
java -jar payara-micro.jar --domainConfig domain.xml --deploy app.war
You can get the default domain.xml from the payara-micro.jar

Map static field between nutch and solr

I use nutch 1.4 and I would like to map static field to Solr.
I know there is the index-static plugin. I configured it in nutch-site.xml like this :
<property>
<name>index-static</name>
<value>field:value</value>
</property>
However, the value is not sent to Solr.
Does anyone have a solution ?
It looks like the entry in nutch-default.xml is wrong.
According to the plugin source "index.static" instead of "index-static" is the right name for the property.
String fieldsString = conf.get("index.static", null);
After using that in my nutch-site.xml I was able to send multiple fields to my solr server.
Also make sure that the plugin is added to list of included plugins in the "plugin.includes" property.

Generate and download file with jboss seam

I need to add an 'export' function to an existing web app using seam. The purpose is to export search results to a csv file. I have no problem generating a csv, but I do not know how the send the csv back to the user.
I do not want to store the csv on the server because that would be waisted storage space. How could I achieve this in jboss seam?
Use the Document Store Servlet provided by Seam.
Almost copying and pasting from the reference doc, declare the servlet in web.xml like this:
<servlet>
<servlet-name>Document Store Servlet</servlet-name>
<servlet-class>org.jboss.seam.document.DocumentStoreServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Document Store Servlet</servlet-name>
<url-pattern>/seam/docstore/*</url-pattern>
</servlet-mapping>
Then create a export.xhtml file with only <s:resource> tag:
<s:resource xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
data="#{myComponent.csvData}"
contentType="application/vnd.ms-excel"
fileName="#{myComponent.csvFileName}"/>
Generate link for downloading the file in your page with <s:download>:
<s:download src="/csv/export.xhtml">
<h:outputText value="Download CSV"/>
<f:param name="param1" value="somevalue"/>
<f:param name="param2" value="someOtherValue"/>
</s:download>
Finally, implement getCsvData() and getCsvFileName() methods in your component:
// could be byte[], File or InputStream
public InputStream getCsvData() {
// generate data to be downloaded
}
public String getCsvFileName() {
return "myfile.csv";
}
Note that <s:download> propagates conversation (unless you set propagation=none). If you propagate the conversation context probably you won't need to pass any parameter. For large data set it may be preferable to not propagate the conversation and pass parameter to select the data in a request scoped component.
There's a couple of ways:
1) Check the Seam docs for info on using Seam-Excel to programmatically generate your file and then write it out using a mime-type set for CSV - this is all detailed in the docs.
However, I could not get this to work in the latest version of Seam, as it requires a response object, which used to be available from the Seam context but now only returns null.
2) Code the CSV file you want as an Excel xhtml template (see the Seam docs and example projects) and simply render this as normal using an tag.
I do this regularly and it works well, bar the restriction that you cannot supply a filename.
HTH.

How can I handle an ASX stream which uses features that Silverlight doesn't support (e.g. REPEAT)

I'm trying to display a video feed which is provided as a server side playlist (ASX) by another party. The playlist contains some unsupported features, such as repeat:
<ASX VERSION="3.0">
<REPEAT COUNT="4">
<EntryRef href="http://some-ad-network.com/ad.asx" />
<Entry>
<Ref href="http://video-host/content-primary-source"></Ref>
</Entry>
<Entry>
<Ref href="http://video-host/content-secondary-source"></Ref>
</Entry>
</REPEAT>
</ASX>
Silverlight 2.0 doesn't support the REPEAT element and throws an exception:
REPEAT Element: This is not supported
and will raise a MediaError with
AG _ E _ ASX _ UNSUPPORTED _ ELEMENT.
Is there a workaround? Can I pull the ASX file down via HttpWebRequest, parse it, and request the streams individually? Do you know of a library or some sample code somewhere which handles ASX file parsing?
The Attributes gets the collection of MediaAttribute objects that corresponds to the current entry in the ASX file that Source is set to. here is a javascript example:
http://msdn.microsoft.com/en-us/library/bb412367.aspx
I ended up having to parse the ASX file myself and manually load the elements. Peter's suggestion is helpful if the ASX file will load, but the Silverlight ASX parser throws exceptions when it encounters most unsupported elements so you never get the chance to load from the Attributes property.
I also made a custom asx parser because of bad asx handling in the MediaElement. It corrects several bugs, see http://blog.revolunet.com/index.php/general/wpf-mediaelement-asx-workaround

Resources