Reading data from data set

Example below shows loading dataset object, reading data and putting them into JSONArray, which is then sent as response to the client.

package com.example;
 
import com.belladati.extension.BaseExtensionEndpoint;
import org.apache.tapestry5.StreamResponse;
import com.belladati.json.JSONArray;
import com.belladati.json.JSONObject;

public class MyEndpoint extends BaseExtensionEndpoint {
  def row
  def values
  public StreamResponse doGet() {
    try {
      def dataset = loadDataset(123456);
      JSONArray data = new JSONArray();
      readDatasetData(dataset, null) { //loads data per row
          JSONObject d = new JSONObject();
          def rowID = row.getRowId();
          d.put("rowID", String.valueOf(rowID));
          for (e in values) {
            def k = e.key
            def v = e.value
            d.put(k, String.valueOf(v));
      	  }
          data.add(d);
      }
      return createStreamResponse(data.toJSONString());
    } catch (Exception e) {
      return createStreamResponse("error: " + e);
    }
  }
}

Reading filtered and sorted data from data set

package com.example;
import com.belladati.extension.BaseExtensionEndpoint;
import org.apache.tapestry5.StreamResponse;
import com.belladati.bi.biz.report.view.settings.Filter;
import com.belladati.bi.biz.report.view.settings.OperationType;
import com.belladati.json.JSON;
import com.belladati.json.JSONArray;
import com.belladati.json.JSONObject;
public class MyEndpoint extends BaseExtensionEndpoint {
def row
  def values
	@Override
	public StreamResponse doGet() {
        try {
          //console.log(param);
          def dataset = loadDataset(123456);
           def attribute = getDatasetAttribute(dataset, "L_CURRENCY");
          Filter f = new Filter()
          f.and(attribute, OperationType.IN, "HDK");
          String filter = buildFilter(dataset, f);
                JSONArray data = new JSONArray();
          def key = readDatasetData(dataset,filter,1,10,"L_CUSTOMER DESC") {//loads data per row
              JSONObject d = new JSONObject();
              def rowID = row.getRowId();
              d.put("id", String.valueOf(rowID));
              for (e in values) {
                def k = e.key
                def v = e.value
                if (v != null) {
                  d.put(k, String.valueOf(v)); 
                }
              }
                data.add(d);
        }
          return createStreamResponse(data.toJSONString());
          } catch (Exception e) {
          return createStreamResponse("error: " + e);
        }
	}
	@Override
	public StreamResponse doPost() {
		// TODO Auto-generated method stub. Please insert here your code for POST operation.
		return createStreamResponse("OK", "text/plain", 200);
	}
	
}

 

Sending SOAP request to 3rd party system

Following example reads JSON data from HTTP paramater data, parse it into JSONObject and retrieves the testId field from it. Consequently, testId is sent inside the SOAP body.

package com.example;
import com.belladati.extension.BaseExtensionEndpoint;
import org.apache.tapestry5.StreamResponse;
import com.belladati.bi.biz.dataImport.source.URLImportTableSource;
import org.apache.commons.io.IOUtils;
import com.belladati.json.JSON;
import com.belladati.json.JSONArray;
import com.belladati.json.JSONObject;

public class WriteResults extends BaseExtensionEndpoint {

	@Override
	public StreamResponse doPost() {
		def s = new URLImportTableSource("http://soap_endpoint_url", URLImportTableSource.MethodType.POST)
        s.addHeader("AUTHUSER", "admin")
        s.addHeader("AUTHPASSWORD", "XYZ")
        s.addHeader("SOAPaction", "Test")
      
        JSONObject data = JSON.fromJSONString(getParameter("data"))
        String testId = "Test" + data.getString("testId")
   
        s.setContent("""
        <SOAP-ENV:Envelope encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
            <SOAP-ENV:Body>
                        <Item type="Document" action="add">
                            <item_number>"""+ testId +"""</item_number>
                        </Item>
            </SOAP-ENV:Body>
        </SOAP-ENV:Envelope>
        """)
      
		return createStreamResponse(IOUtils.toString(s.getStream(null)))
	}
}
  • No labels