package cherniak.bpmonline.com;
import java.io.OutputStream;
import java.net.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Attr;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
/**
* OData insert request for bpmonline
*
*/
public class App
{
private static final String SERVICE_URL = "http://int- web/Amdocs_T/0/ServiceModel/EntityDataService.svc/";
private static final String AUTH_URL = "http://int-web/Amdocs_T/ServiceModel/AuthService.svc/Login";
private static final String DS = "http://schemas.microsoft.com/ado/2007/08/dataservices";
private static final String DSMD = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
private static final String ATOM = "http://www.w3.org/2005/Atom";
public static void main( String[] args ) throws Exception
{
CookieManager msCookieManager = new CookieManager();
CookieHandler.setDefault(msCookieManager);
if(GetAuthCookie("Supervisor", "Supervisor")) {
CreateBpmEntityByOdataHttpExample(msCookieManager);
}
}
public static boolean GetAuthCookie(String login, String password) {
try{
URL urlAuth = new URL(AUTH_URL);
HttpURLConnection connection1Auth = (HttpURLConnection) urlAuth.openConnection();
connection1Auth.setDoOutput(true);
connection1Auth.setRequestMethod("POST");
connection1Auth.setRequestProperty("Content-Type","application/json");
String authJson = String.format("{\"UserName\": \"%s\", \"UserPassword\":\"%s\"}", login, password);
byte[] outputBytes = authJson.getBytes("UTF-8");
OutputStream os = connection1Auth.getOutputStream();
os.write(outputBytes);
os.close();
int responseCode = connection1Auth.getResponseCode();
return responseCode == 200;
} catch (Exception e) {
return false;
}
}
public static void CreateBpmEntityByOdataHttpExample(CookieManager manager) {
try{
//Create xml document
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element entry = doc.createElement("entry");
Attr attrAtom = doc.createAttribute("xmlns");
attrAtom.setValue(ATOM);
entry.setAttributeNode(attrAtom);
doc.appendChild(entry);
Element content = doc.createElement("content");
Attr attrType = doc.createAttribute("type");
attrType.setValue("application/xml");
content.setAttributeNode(attrType);
entry.appendChild(content);
Element properties = doc.createElement("properties");
Attr attrMetadata = doc.createAttribute("xmlns");
attrMetadata.setValue(DSMD);
properties.setAttributeNode(attrMetadata);
content.appendChild(properties);
//Set Name of Contact
Element name = doc.createElement("Name");
Attr attrProp = doc.createAttribute("xmlns");
attrProp.setValue(DS);
name.setAttributeNode(attrProp);
name.appendChild(doc.createTextNode("Test Person"));
properties.appendChild(name);
//Set Dear of Contact
Element dear = doc.createElement("Dear");
Attr attrOppo = doc.createAttribute("xmlns");
attrOppo.setValue(DS);
dear.setAttributeNode(attrOppo);
dear.appendChild(doc.createTextNode("Mister"));
properties.appendChild(dear);
doc.setXmlStandalone(true);
//Send insert request
URL url = new URL(SERVICE_URL + "ContactCollection/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept", "application/atom+xml");
connection.setRequestProperty("Content-Type","application/atom+xml;type=entry");
//Add BPMCSRF
for(HttpCookie cookie : manager.getCookieStore().getCookies()) {
if(cookie.getName().equals("BPMCSRF")) {
connection.setRequestProperty("BPMCSRF", cookie.getValue());
}
}
OutputStream os = connection.getOutputStream();
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(new DOMSource(doc), new StreamResult(os));
os.close();
int responseCode = connection.getResponseCode();
System.out.println(responseCode);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}