Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Code Block
FormTypeEntry ftEntry = setUpFormType(appEntry);
try {
System.out.println("Default State: " + ftEntry.getDeployState());
ftEntry.setDeployState(DeployState.PRODUCTION);
ftEntry = ftEntry.update();
ftEntry = ftEntry.getSelf();
assertEquals("Should be PRODUCTION state", ftEntry.getDeployState(), DeployState.PRODUCTION);

ftEntry.setDeployState(DeployState.DEVELOPMENT);
ftEntry = ftEntry.update();
ftEntry = ftEntry.getSelf();
assertEquals("Should be DEVELOPMENT state", ftEntry.getDeployState(), DeployState.DEVELOPMENT);

FormTypeFeed ftFeed = appEntry.getFormTypeFeed();
FormTypeEntry newEntry = ftFeed.createEntry();
newEntry.setTitle(new PlainTextConstruct("MyForm123"));
newEntry.setSummary(new PlainTextConstruct("MyForm123 Description"));
newEntry.setVisibility(Visibility.PUBLICTENANT);
newEntry.setDeployState(DeployState.PRODUCTION);
newEntry = ftFeed.insert(newEntry);
assertNotNull(newEntry.getSelf());
assertEquals("Should be PRODUCTION state", newEntry.getDeployState(), DeployState.PRODUCTION);
newEntry.delete();

Why are

...

deleted submissions showing up in the submissions feed?

The submissions feed will retrieve all type of submissions: submitted, saved, deleted (Deleted submissions are soft deleted meaning they are marked in the database as deleted, but the records are still present in your the DB and so they will be returned in your SubmissonFeedthe SubmissionFeed). The   Submissions Submissions UI page, by design, shows only the submissions which are completed.

Let's say you want to sort submissions that are saved versus those that are submitted. You can use the SubmissionEntry.getState() parametermethod. This will return the current state of that particular a SubmissionEntry (SAVED or SUBMITTED) and you . You can use this property to distinguish between your submissions.

How do I get a form submission PDF when Save PDF is not enabled?

Using API, you can instantiate each form submission, get the PDF for that instance and then cancel the form instance. Note that the PDF will not show up in the form submission when using this approach as the instance is canceled.

Here is an example API script that will download PDF's for all form submissions to disc:

Code Block
/ formTypeID of your form. You can get the formTypeId of a form by looking at its Share URL. For example, if your forms Raw URL is: http://localhost:8082/frevvo/web/tn/qa/user/fd/app/_S5QyQQ8GEeKoZPV3UpCRog/formtype/_W03sMA8GEeKoZPV3UpCRog?_method=post&embed=true&locale=, then the part of this URL between formtype/ and ?_method is your formTypeId.
String formTypeId = "_W03sMA8GEeKoZPV3UpCRog";  

// Get the Forms Service.
FormsService service = new FormsService("http", "localhost", 8082, null);
service.login("designer@tutorial", "designerpswd");

// Get Submission Feed
SubmissionQuery q = new SubmissionQuery(service.getFeedURL(SubmissionFeed.class));
q.setFilter("$formTypeId eq " + formTypeId);
q.setOrderby("$updated");  
SubmissionFeed sFeed = service.getFeed(q, SubmissionFeed.class);

int counter = 1;
// Download PDF for each submission
for (SubmissionEntry contact : sFeed.getEntries()) {
       // re-instantiate the form from the submission
       URL fUrl = contact.createFormInstance(null, null);
       // Construct the URL which will generate the PDF
       String pdfUrl = fUrl.toString() + "&print=true&format=pdf";
       String filename = "E:\\myFormPDF" + counter + ".PDF";
       BufferedInputStream in = null;
       FileOutputStream fout = null;
       try
       {
             in = new BufferedInputStream(new URL(pdfUrl).openStream());
             fout = new FileOutputStream(filename);

             byte data[] = new byte[1024];
             int count;
             while ((count = in.read(data, 0, 1024)) != -1)
             {
                    fout.write(data, 0, count);
             }
       }
       finally
       {
             if (in != null)
                    in.close();
             if (fout != null)
                    fout.close();
       }      
       counter ++;
       // Cancel the instance
       Helper.cancelInstance(service, fUrl);    
}