1 /**
  2  * @name Fields
  3  * @class Shows the field definitions in MediaBeacon
  4  * @description Displays all of the field definitions in Mediabeacon with their name mappings
  5  * @returns {
  6 			  fieldId: string;
  7 			  name: string;
  8 			  type: string;
  9 			  namespace: string;
 10 			  mapped_namespace: string;
 11 			  mapped_name: string;
 12 			  is_container: boolean
 13 			}
 14  * @example /wf/restapi/v2/fields
 15  *
 16  * Parameters:
 17  *
 18  Response:
 19  [
 20  {
 21     "fieldId": "http://purl.org/dc/elements/1.1/ subject",
 22     "name": "subject",
 23     "type": "list_string",
 24     "namespace": "http://purl.org/dc/elements/1.1/",
 25     "mapped_namespace": "Dublin Core Properties",
 26     "mapped_name": "Keywords",
 27     "is_container": true
 28   },
 29  {
 30     "fieldId": "http://purl.org/dc/elements/1.1/ title",
 31     "name": "title",
 32     "type": "string",
 33     "namespace": "http://purl.org/dc/elements/1.1/",
 34     "mapped_namespace": "Dublin Core Properties",
 35     "mapped_name": "Title",
 36     "is_container": false
 37   },
 38  {
 39     "fieldId": "http://purl.org/dc/elements/1.1/ type",
 40     "name": "type",
 41     "type": "list_string",
 42     "namespace": "http://purl.org/dc/elements/1.1/",
 43     "mapped_namespace": "Dublin Core Properties",
 44     "mapped_name": "Document Type",
 45     "is_container": true
 46   },...
 47  ]
 48 
 49  */
 50 var REST = library.REST.REST();
 51 
 52 var kDBFields = [
 53   { name: "record_id", mapped_name: "Asset ID" },
 54   { name: "file_name", mapped_name: "File Name" },
 55   { name: "directory", mapped_name: "Directory" },
 56   //TODO not sure the below fields make sense.
 57   //We would need to modify
 58   //{"name": "width", "mapped_name": "Width"},
 59   //{"name": "height", "mapped_name": "Height"},
 60   //{"name": "resolution", "mapped_name": "Resolution"},
 61   //{"name": "colorspace", "mapped_name": "Colorspace"},
 62   //{"name": "colorprofile", "mapped_name": "Colorprofile"}
 63 ];
 64 
 65 function getDBFields() {
 66   var aDBFields = [];
 67   for (var i in kDBFields) {
 68     var aField = kDBFields[i];
 69     var anObj = {
 70       fieldId: "database " + aField.name,
 71       name: aField.name,
 72       type: "string",
 73       namespace: "database",
 74       mapped_namespace: "Database",
 75       mapped_name: aField.mapped_name,
 76       is_container: false,
 77       include_readonly: true,
 78     };
 79     aDBFields[aDBFields.length] = anObj;
 80   }
 81   return aDBFields;
 82 }
 83 
 84 (function main() {
 85   try {
 86     var fields = fieldManager.getAllFields();
 87     var objs = [];
 88     for (var i = 0; i < fields.length; i++) {
 89       var field = fields[i];
 90       var obj = {};
 91       obj["fieldId"] = field.fieldId;
 92       obj["name"] = field.name;
 93       obj["type"] = field.getFieldType();
 94       obj["namespace"] = field.namespace;
 95       obj["mapped_namespace"] = field.mappedNamespace;
 96       obj["mapped_name"] = field.mappedName;
 97       obj["is_container"] = field.isContainer();
 98       objs.push(obj);
 99     }
100     return REST.formatResponse(objs.concat(getDBFields()));
101   } catch (e) {
102     logger.error("Error in getFields: \n " + e + "\n" + e.stack);
103     return e;
104   }
105 })();
106