package digitalwallet;
import com.urbanairship.digitalwallet.client.Template;
import org.apache.commons.lang.StringUtils;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.util.HashMap;
import java.util.Map;
/*
*/
public class TestData {
public static Long createTemplate(String externalId, boolean checkExistence) {
Template t = null;
if (checkExistence) {
try {
t = Template.getTemplate(externalId);
if (t.getId() != null) {
return t.getId();
}
} catch (RuntimeException e) {
}
}
try {
JSONParser p = new JSONParser();
JSONObject json = (JSONObject) p.parse(templateString);
Map<String, Object> headers = (Map<String, Object>) json.get("headers");
Map<String, Object> fields = (Map<String, Object>) json.get("fields");
return Template.createTemplate(externalId, "name_test", "desc_test", "boardingPass", headers, fields);
} catch (Exception e) {
return null;
}
}
private static boolean isHeader(Object val) {
if (val instanceof JSONObject) {
Map<String, Object> fields = (Map<String, Object>) val;
String fieldType = (String) fields.get("fieldType");
if (StringUtils.isBlank(fieldType)) {
return false;
}
if (fieldType.equals("barcode") || fieldType.equals("image") || fieldType.equals("topLevel") || fieldType.equals("passTop")) {
return true;
}
return false;
} else {
return false;
}
}
private static void parseHeadersAndFields(Map<String, Object> headers, Map<String, Object> fields, JSONObject json) {
Map<String, Object> map = (Map<String, Object>) json;
for (Map.Entry<String, Object> current : map.entrySet()) {
Object val = current.getValue();
HashMap<String, Object> v = (HashMap<String, Object>) current;
if (isHeader(v)) {
headers.putAll(v);
} else {
fields.putAll(v);
}
}
}
public static String getCreateTemplateData() {
return templateString;
}
public static JSONObject getCreateTemplateHeaders() {
if (createTemplateJson == null) {
return null;
}
return (JSONObject) createTemplateJson.get("headers");
}
public static JSONObject getCreateTemplateFields() {
if (createTemplateJson == null) {
return null;
}
return (JSONObject) createTemplateJson.get("fields");
}
private static String templateString = "{\n" +
" \"headers\": {\n" +
" \"barcodeAltText\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"barcode\",\n" +
" \"value\": \"123456789\"\n" +
" },\n" +
" \"icon_image\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"topLevel\",\n" +
" \"value\": \"https://s3.amazonaws.com/passtools-localhost/1/images/3c0f1c994b46cfc032147893ed4a00ba75a0d428_logo@2x.png\"\n" +
" },\n" +
" \"transitType\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"passTop\",\n" +
" \"value\": \"transitTypeAir\"\n" +
" },\n" +
" \"footer_image\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"image\",\n" +
" \"value\": \"https://s3.amazonaws.com/passtools-localhost/1/images/default-pass-footer.png\"\n" +
" },\n" +
" \"logo_image\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"topLevel\",\n" +
" \"value\": \"https://s3.amazonaws.com/passtools-localhost/1/images/default-pass-logo.png\"\n" +
" },\n" +
" \"barcode_label\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"barcode\",\n" +
" \"value\": \"Member ID\"\n" +
" },\n" +
" \"logo_color\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"topLevel\",\n" +
" \"value\": \"rgb(24,86,148)\"\n" +
" },\n" +
" \"logo_text\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"topLevel\",\n" +
" \"value\": \"Atlantis Airlines11\"\n" +
" },\n" +
" \"barcode_value\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"barcode\",\n" +
" \"value\": \"123456789\"\n" +
" },\n" +
" \"barcode_encoding\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"barcode\",\n" +
" \"value\": \"iso-8859-1\"\n" +
" },\n" +
" \"barcode_type\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"barcode\",\n" +
" \"value\": \"PKBarcodeFormatPDF417\"\n" +
" },\n" +
" \"background_color\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"topLevel\",\n" +
" \"value\": \"rgb(0,147,201)\"\n" +
" },\n" +
" \"foreground_color\": {\n" +
" \"formatType\": 1,\n" +
" \"fieldType\": \"topLevel\",\n" +
" \"value\": \"rgb(255,255,255)\"\n" +
" }\n" +
" },\n" +
" \"fields\": {\n" +
" \"Merchant Website\": {\n" +
" \"formatType\": \"URL\",\n" +
" \"changeMessage\": \"\",\n" +
" \"order\": 2,\n" +
" \"fieldType\": \"back\",\n" +
" \"value\": \"http://www.test.com\",\n" +
" \"label\": \"Merchant Website\",\n" +
" \"required\": false,\n" +
" \"hideEmpty\": false\n" +
" },\n" +
" \"Seat\": {\n" +
" \"formatType\": \"String\",\n" +
" \"changeMessage\": \"\",\n" +
" \"order\": 2,\n" +
" \"fieldType\": \"secondary\",\n" +
" \"textAlignment\": \"textAlignmentNatural\",\n" +
" \"value\": \"26A\",\n" +
" \"label\": \"Seat\",\n" +
" \"required\": false,\n" +
" \"hideEmpty\": false\n" +
" },\n" +
" \"Class\": {\n" +
" \"formatType\": \"String\",\n" +
" \"changeMessage\": \"\",\n" +
" \"order\": 3,\n" +
" \"fieldType\": \"auxiliary\",\n" +
" \"textAlignment\": \"textAlignmentNatural\",\n" +
" \"value\": \"Econ\",\n" +
" \"label\": \"Class\",\n" +
" \"required\": false,\n" +
" \"hideEmpty\": false\n" +
" },\n" +
" \"Terminal Gate\": {\n" +
" \"formatType\": \"Number\",\n" +
" \"changeMessage\": \"\",\n" +
" \"order\": 1,\n" +
" \"numberStyle\": \"numberStyleDecimal\",\n" +
" \"fieldType\": \"header\",\n" +
" \"textAlignment\": \"textAlignmentNatural\",\n" +
" \"value\": 11,\n" +
" \"label\": \"Terminal Gate\",\n" +
" \"required\": false,\n" +
" \"hideEmpty\": false\n" +
" },\n" +
" \"Arrival Airport\": {\n" +
" \"formatType\": \"String\",\n" +
" \"changeMessage\": \"\",\n" +
" \"order\": 2,\n" +
" \"fieldType\": \"primary\",\n" +
" \"textAlignment\": \"textAlignmentNatural\",\n" +
" \"value\": \"SFO\",\n" +
" \"label\": \"Arrival Airport\",\n" +
" \"required\": false,\n" +
" \"hideEmpty\": false\n" +
" },\n" +
" \"Ticket #\": {\n" +
" \"formatType\": \"Number\",\n" +
" \"changeMessage\": \"\",\n" +
" \"order\": 3,\n" +
" \"numberStyle\": \"numberStyleDecimal\",\n" +
" \"fieldType\": \"secondary\",\n" +
" \"textAlignment\": \"textAlignmentNatural\",\n" +
" \"value\": 384013,\n" +
" \"label\": \"Ticket #\",\n" +
" \"required\": false,\n" +
" \"hideEmpty\": false\n" +
" },\n" +
" \"Flight #\": {\n" +
" \"formatType\": \"String\",\n" +
" \"changeMessage\": \"\",\n" +
" \"order\": 2,\n" +
" \"fieldType\": \"auxiliary\",\n" +
" \"textAlignment\": \"textAlignmentNatural\",\n" +
" \"value\": \"G6A\",\n" +
" \"label\": \"Flight #\",\n" +
" \"required\": false,\n" +
" \"hideEmpty\": false\n" +
" },\n" +
" \"Passenger\": {\n" +
" \"formatType\": \"String\",\n" +
" \"changeMessage\": \"\",\n" +
" \"order\": 1,\n" +
" \"fieldType\": \"secondary\",\n" +
" \"textAlignment\": \"textAlignmentNatural\",\n" +
" \"value\": \"First Last\",\n" +
" \"label\": \"Passenger\",\n" +
" \"required\": false,\n" +
" \"hideEmpty\": false\n" +
" },\n" +
" \"Departure Airport\": {\n" +
" \"formatType\": \"String\",\n" +
" \"changeMessage\": \"\",\n" +
" \"order\": 1,\n" +
" \"fieldType\": \"primary\",\n" +
" \"textAlignment\": \"textAlignmentLeft\",\n" +
" \"value\": \"LAX\",\n" +
" \"label\": \"Departure Airport\",\n" +
" \"required\": true,\n" +
" \"hideEmpty\": false\n" +
" },\n" +
" \"Boarding Pass Details\": {\n" +
" \"formatType\": \"String\",\n" +
" \"changeMessage\": \"\",\n" +
" \"order\": 1,\n" +
" \"fieldType\": \"back\",\n" +
" \"value\": \"Some information about how this boarding pass works and how to use it.\\n\\nAdditional terms and support information.\",\n" +
" \"label\": \"Boarding Pass Details\",\n" +
" \"required\": false,\n" +
" \"hideEmpty\": false\n" +
" },\n" +
" \"Depart Time\": {\n" +
" \"formatType\": \"String\",\n" +
" \"changeMessage\": \"\",\n" +
" \"order\": 1,\n" +
" \"fieldType\": \"auxiliary\",\n" +
" \"textAlignment\": \"textAlignmentNatural\",\n" +
" \"value\": \"10:40 AM\",\n" +
" \"label\": \"Depart Time\",\n" +
" \"required\": false,\n" +
" \"hideEmpty\": false\n" +
" }\n" +
" }\n" +
" \"projectType\": \"boardingPass\",\n" +
" \"type\": \"Boarding Pass\",\n" +
" \"vendorId\": 1,\n" +
" \"description\": \"Test1 With ExternalId\",\n" +
" \"name\": \"Test with ExternalId\",\n" +
"}";
private static String boardingPassFields = "{\n" +
" \"fields\": {\n" +
" \"Passenger\": {\n" +
" \"formatType\": \"String\",\n" +
" \"changeMessage\": \"Issued today\",\n" +
" \"order\": 1,\n" +
" \"fieldType\": \"secondary\",\n" +
" \"textAlignment\": \"textAlignmentNatural\",\n" +
" \"value\": \"Smith Alex\",\n" +
" \"label\": \"Passenger\",\n" +
" \"required\": false,\n" +
" \"hideEmpty\": false\n" +
" }\n" +
" }\n" +
"}";
private static String boardingPassUpdateFields11 = "\"Terminal Gate\":{\n" +
" \"formatType\":\"Number\",\n" +
" \"changeMessage\":\"\",\n" +
" \"order\":1,\n" +
" \"numberStyle\":\"PKNumberStyleDecimal\",\n" +
" \"fieldType\":\"header\",\n" +
" \"textAlignment\":\"textAlignmentNatural\",\n" +
" \"value\":21.0,\n" +
" \"label\":\"Terminal Gate\",\n" +
" \"required\":false,\n" +
" \"hideEmpty\":false\n" +
" }";
private static String boardingPassUpdateFields = "{\n" +
" \"fields\": {\n" +
boardingPassUpdateFields11 +
" }\n" +
"}";
private static JSONObject createTemplateJson = parseCreateTemplateJson(templateString);
private static Map<String, Object> createPassFields = parseCreatePassJson(boardingPassFields);
private static Map<String, Object> updatePassFields = parseCreatePassJson(boardingPassUpdateFields);
private static JSONObject parseCreateTemplateJson(String jsonString) {
if (jsonString == null) {
return null;
}
try {
JSONParser p = new JSONParser();
JSONObject json = (JSONObject) p.parse(templateString);
return json;
} catch (Exception e) {
return null;
}
}
private static Map<String, Object> parseCreatePassJson(String fields) {
if (fields == null) {
return null;
}
try {
JSONParser p = new JSONParser();
JSONObject json = (JSONObject) p.parse(fields);
return json;
} catch (Exception e) {
return null;
}
}
public static Map<String, Object> getCreatePassFields() {
return createPassFields;
}
public static Map<String, Object> getUpdatePassFields() {
return updatePassFields;
}
}