in database-jones/Adapter/api/TableMapping.js [396:461]
TableMapping.prototype.mapField = function(nameOrLiteral) {
var i, arg, fieldMapping, fieldName, fieldMappingLiteral, errors;
switch(typeof nameOrLiteral) {
case 'string':
fieldMappingLiteral = { "fieldName" : nameOrLiteral };
for(i = 1; i < arguments.length ; i++) {
arg = arguments[i];
switch(typeof arg) {
case 'string':
fieldMappingLiteral.columnName = arg;
break;
case 'boolean':
fieldMappingLiteral.persistent = arg;
break;
case 'object':
if (isMeta(arg)) {
fieldMappingLiteral.meta = arg;
} else if(isLiteralMeta(arg)) {
fieldMappingLiteral.meta = Meta.fromLiteralMeta(arg);
} else if(isConverter(arg)) {
fieldMappingLiteral.converter = arg;
} else if(isArrayOf(isString)(arg)) {
fieldMappingLiteral.toManyColumns = arg;
} else {
this.error += "mapField(): Invalid argument " + arg;
}
break;
default:
this.error += "mapField(): Invalid argument " + arg;
}
}
break;
case 'object':
fieldMappingLiteral = nameOrLiteral;
break;
default:
this.error += "mapField() expects a literal FieldMapping or valid arguments list";
return this;
}
errors = fieldMappingProperties.getErrors(fieldMappingLiteral);
if(errors.length) {
this.error += errors;
udebug.log("mapField() Errors: ", errors);
} else {
fieldName = fieldMappingLiteral.fieldName;
if(this.getFieldMapping(fieldName)) {
udebug.log("mapField(): Duplicate fieldName error");
this.error += '\nmapField(): "' + fieldName + '" is duplicated; it cannot replace an existing field.';
} else {
fieldMapping = new FieldMapping(fieldName);
fieldMappingProperties.buildObjectFromLiteral(fieldMapping, fieldMappingLiteral);
this.fields.push(fieldMapping);
if (!fieldMapping.persistent) {
this.excludedFieldNames.push(fieldMapping.fieldName);
}
udebug.log("mapField success: field", fieldMapping);
}
}
return this;
};